package org.realityforge.replicant.client;

/**
 * Container that defies a deferred action on listener set.
 */
final class DeferredListenerAction
{
  static enum ActionType
  {
    ADD, REMOVE, PURGE
  }

  private final Object _key;
  private final EntityChangeListener _listener;
  private final ActionType _actionType;

  DeferredListenerAction( final Object key, final EntityChangeListener listener, final ActionType actionType )
  {
    _key = key;
    _listener = listener;
    _actionType = actionType;
  }

  public Object getKey()
  {
    return _key;
  }

  public EntityChangeListener getListener()
  {
    return _listener;
  }

  public boolean isRemove()
  {
    return _actionType == ActionType.REMOVE;
  }

  public boolean isAdd()
  {
    return _actionType == ActionType.ADD;
  }

  public boolean isPurge()
  {
    return _actionType == ActionType.PURGE;
  }
}

@@ -37,16 +37,84 @@
 lient;%0A%0A
+import javax.annotation.Nonnull;%0Aimport javax.annotation.Nullable;%0A%0A
 /**%0A * C
@@ -410,16 +410,26 @@
 rAction(
+ @Nullable
  final O
@@ -438,16 +438,52 @@
 ect key,
+%0A                          @Nullable
  final E
@@ -511,16 +511,51 @@
 istener,
+%0A                          @Nonnull
  final A
@@ -654,24 +654,36 @@
 nType;%0A  %7D%0A%0A
+  @Nullable%0A
   public Obj
@@ -717,24 +717,36 @@
  _key;%0A  %7D%0A%0A
+  @Nullable%0A
   public Ent

Add som enullability annotations