package arez;

import javax.annotation.Nonnull;

/**
 * Interface that accepts an {@link Observer} that has been scheduled and
 * performs the actions required to run observer.
 */
@FunctionalInterface
interface Reaction
{
  /**
   * React to changes, or throw an exception if unable to do so.
   *
   * @param observer the observer of changes.
   * @throws Throwable if there is an error reacting to changes.
   */
  void react( @Nonnull Observer observer )
    throws Throwable;
}

@@ -40,16 +40,57 @@
 Nonnull;
+%0Aimport jsinterop.annotations.JsFunction;
 %0A%0A/**%0A *
@@ -213,17 +213,265 @@
 rver.%0A *
-/
+%0A * %3Cp%3EThe interface is marked with the %7B@link JsFunction%7D annotation to communicate%0A * to the GWT2 compiler that it is not necessary to generate class information%0A * for the implementing methods which reduces code size somewhat.%3C/p%3E%0A */%0A@JsFunction
 %0A@Functi

Mark Reaction annotation as JsFunction to reduce code size of compiled code