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 %> )
     {
       final <%= repository.imit.qualified_session_name %> session = ensureSession( sessionID );
  -    if ( !session.<%= check_method %> )
  +    if ( !session.<%= graph.instance_root? ? "is#{graph.name}Interesting" : "isInterestedIn#{graph.name}" %> )
       {
   <% if graph.instance_root? -%>
         session.registerInterestIn<%= graph.name %>( <%= pk_accessor %><%= graph.filter_parameter.nil? ? '' : ", filter" %> );
  
positive.code: 
    param = ''
    type = 'Boolean'
    check_method = "isInterestedIn#{graph.name}"
    instance_root = nil
    if graph.instance_root?
      # Names are fully qualified so take any random data module
      instance_root = repository.entity_by_name(graph.instance_root)
      type = instance_root.primary_key.jpa.non_primitive_java_type
      param = " #{graph.name} "
      check_method = "is#{graph.name}Interesting"
    end
  %>
  
  
negative.code:         {
            for ( final <%= repository.imit.qualified_session_name %> session : values )
            {
              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 %> ) );
  <% if graph.instance_root? %>
  