anchor.diff:    public void update<%= graph.name %>Subscription( @javax.annotation.Nonnull final String sessionID<%= update_param %> )
       throws <%= repository.exception_by_name(repository.imit.invalid_session_exception).ee.qualified_name %>
     {
  -    updateSubscription( 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' %> ), filter );
  +    updateSubscription( 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' %> ), filter, org.realityforge.replicant.server.ee.EntityMessageCacheUtil.getSessionChanges() );
   <%
     processed = []
     graph.outward_graph_links.select{|graph_link| graph_link.auto?}.each do |graph_link|
  
positive.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 )
    {
      final java.util.Map<String, java.io.Serializable> routingKeys = message.getRoutingKeys();
  <%
  
negative.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, accumulator.getChangeSet( session ) );
              }
            }
          }
  