anchor.diff:    public <%= graph.cacheable? ? 'boolean': 'void' %> subscribeTo<%= graph.name %>( @javax.annotation.Nonnull final String sessionID<%= update_param %><% if graph.cacheable? -%>, @javax.annotation.Nullable final String cacheKey<% end %> )
       throws <%= repository.exception_by_name(repository.imit.invalid_session_exception).ee.qualified_name %>
     {
  -    <%= graph.cacheable? ? 'final CacheStatus status = ': '' %>subscribe( sessionID, new org.realityforge.replicant.server.ChannelDescriptor( <%= repository.imit.qualified_graph_enum_name %>.<%= Reality::Naming.uppercase_constantize(graph.name) %>.ordinal(), <%= graph.instance_root? ? "#{pk_accessor}" : 'null' %> ), <%= graph.filter_parameter.nil? ? 'null' : 'filter' %>, <%= graph.cacheable? ? 'cacheKey' : 'null' %> );
  +    <%= graph.cacheable? ? 'final CacheStatus status = ': '' %>subscribe( sessionID, new org.realityforge.replicant.server.ChannelDescriptor( <%= repository.imit.qualified_graph_enum_name %>.<%= Reality::Naming.uppercase_constantize(graph.name) %>.ordinal(), <%= graph.instance_root? ? "#{pk_accessor}" : 'null' %> ), <%= graph.filter_parameter.nil? ? 'null' : 'filter' %>, <%= graph.cacheable? ? 'cacheKey' : 'null' %>, org.realityforge.replicant.server.ee.EntityMessageCacheUtil.getSessionChanges() );
   <% if graph.cacheable? -%>
       return status != CacheStatus.USE;
   <% end -%>
  
positive.code:           {
              if( m.isDelete() && <%= repository.imit.qualified_message_constants_name %>.<%= Reality::Naming.uppercase_constantize(instance_root.data_module.name.to_s) %>_<%= Reality::Naming.uppercase_constantize(instance_root.name.to_s) %> == m.getTypeID() )
              {
                performUnsubscribe( session, entry, true );
              }
            }
          }
  
negative.code:   }
  
    @java.lang.Override
    protected void processDeleteMessages( @javax.annotation.Nonnull final org.realityforge.replicant.server.EntityMessage message, @javax.annotation.Nonnull final java.util.Collection<org.realityforge.replicant.server.transport.ReplicantSession> sessions, @javax.annotation.Nonnull final org.realityforge.replicant.server.ChangeAccumulator accumulator )
    {
      final java.util.Map<String, java.io.Serializable> routingKeys = message.getRoutingKeys();
  <%
  