anchor.diff:      doUnsubscribeFrom<%= graph.name %>( session<%= pk_accessor.size == 0 ? '' : ", #{pk_accessor}" %> );
     }
   
  -  private void doUnsubscribeFrom<%= graph.name %>( @javax.annotation.Nonnull final <%= repository.imit.qualified_session_name %> session<%= graph.instance_root? ? ", #{repository.entity_by_name(graph.instance_root).primary_key.imit.java_type} id" : '' %> )
  +  private void doUnsubscribeFrom<%= graph.name %>( @javax.annotation.Nonnull final org.realityforge.replicant.server.ChangeAccumulator accumulator, @javax.annotation.Nonnull final <%= repository.imit.qualified_session_name %> session<%= graph.instance_root? ? ", #{repository.entity_by_name(graph.instance_root).primary_key.imit.java_type} id" : '' %> )
     {
   <% if graph.instance_root? -%>
       if ( session.is<%= graph.name %>Interesting( id ) )
  
positive.code:     try
      {
        final java.util.Collection<<%= repository.imit.qualified_session_name %>> values = sessions.values();
        for ( final org.realityforge.replicant.server.EntityMessage message : messages )
        {
          final java.util.Map<String, java.io.Serializable> routingKeys = message.getRoutingKeys();
  
negative.code:             if ( session.<%= graph.instance_root? ? "is#{graph.name}Interesting" : "isInterestedIn#{graph.name}" %>(<%= param %> ) <%= extra_interest_filter %>)
              {
                accumulator.addChange( session, new org.realityforge.replicant.server.Change( message, <%= repository.imit.qualified_graph_enum_name %>.<%= Domgen::Naming.uppercase_constantize(graph.name) %>.ordinal(), <%= graph.instance_root? ? graph.name : 0 %> ) );
              }
            }
          }
  