jsinterop.annotations

## Annotation Type JsOverlay

    @Retention(value=RUNTIME)
     @Target(value={METHOD,FIELD})
     @Documented
    public @interface JsOverlay

JsOverlay is used to enhance Java API of the native JsTypes and JsFunctions so richer and more Java friendly abstractions could be provided.

      @JsType(isNative=true)
     class Person {
        @JsOverlay
       private static final Person NO_BODY = new Person();

       private String name;
       private String lastName;

        @JsOverlay
       public String getFullName() {
         return (name + " " + lastName).trim();
       }
     }

Note that:

- JsOverlay methods cannot override any existing methods.
- JsOverlay methods should be effectively final.
- JsOverlay methods cannot be called from JavaScript

These restrictions are in place to avoid polymorphism because underneath the original type is not modified and the overlay fields/methods are simply turned into static dispatches.