anchor.diff:  <% end -%>
     }
   
  +<% if (repository.imit? && repository.keycloak?) || repository.serviceworker? -%>
  +  @arez.annotations.PreDispose
  +  protected void preDispose()
  +  {
  +<% if repository.imit? && repository.keycloak? -%>
  +    if ( null != _updateReplicantTokenTask )
  +    {
  +      _updateReplicantTokenTask.cancel();
  +      _updateReplicantTokenTask = null;
  +    }
  +<% end -%>
  +<% if repository.serviceworker? -%>
  +    if ( null != _serviceWorkerUpdateTask )
  +    {
  +      _serviceWorkerUpdateTask.cancel();
  +      _serviceWorkerUpdateTask = null;
  +    }
  +<% end -%>
  +  }
  +
  +<% end -%>
     @javax.annotation.Nonnull
     protected final String getApplicationURL()
     {
  
positive.code:     elemental2.dom.DomGlobal.window.addEventListener( "beforeunload", e -> replicant.Replicant.context().deactivate(), true );
  <% if repository.keycloak? -%>
      updateReplicantToken();
      elemental2.dom.DomGlobal.setInterval( e -> getKeycloak().updateToken( 30, this::updateReplicantToken ), 5000 );
  <% end -%>
    }
  <% end -%>
  
negative.code:   @javax.annotation.Nonnull
    private final org.realityforge.gwt.keycloak.Keycloak _keycloak;
  <% end -%>
  <% if repository.imit? && repository.keycloak? -%>
    private zemeckis.Cancelable _updateReplicantTokenTask;
  <% end -%>
  <% if repository.serviceworker? -%>
    private zemeckis.Cancelable _serviceWorkerUpdateTask;
  <% end -%>
  
    protected <%= repository.gwt.abstract_application_name %>(<% if repository.keycloak? -%> @javax.annotation.Nonnull final String keycloakClient <% end -%>)
    {
  