anchor.diff:  
     public void set<%= name %>( final <%= type %> value )
     {
  -<%= iris_immutable_check(attribute.name) if attribute.immutable? %>
  +<% if attribute.immutable? %>
  +    if( isLinked() && !isNew() && !isLoading() )
  +    {
  +       throw new IllegalStateException( "Attempting to modify immutable attribute <%= attribute.name %> on non-new object" );
  +    }
  +<% end %>
   <%= iris_nullable_check(attribute.name) if (!attribute.nullable? && !attribute.java.primitive?) %>
   <%= j_return_if_value_same(name, attribute.java.primitive?,attribute.nullable?) %>
   <%= j_remove_from_inverse(attribute) %>
  
positive.code: %>  public static final String COLUMN_<%= uppercase_constantize(attribute.name) %> = "<%= attribute.sql.column_name %>";
  <% end %>
  <% object_type.declared_attributes.select{|a|!a.override? && !a.persistent?}.each do |attribute|
  %>  public static final String COLUMN_<%= uppercase_constantize(attribute.name) %> = "<%= attribute.name %>"; /* Not Persistent */ 
  <% end %>
  <% object_type.declared_attributes.select{|a|!a.override? && !a.length.nil? && !a.iris.runtime_managed?}.each do |attribute|
  %>  public static final int COLUMN_<%= uppercase_constantize(attribute.name) %>_MAX_LENGTH = <%= attribute.length %>;
  
negative.code:      fireObjectLinked();
    }
  
    @Override
    public int getClientToServerAttributeMask()
    {
      return <%= object_type.schema.name %>Codec.<%= uppercase_constantize(object_type.name) %>_CLIENT_TO_SERVER_ATTR_MASK;
    }
  
    @Override
    public int getServerToServerAttributeMask()
    {
      return <%= object_type.schema.name %>Codec.<%= uppercase_constantize(object_type.name) %>_SERVER_TO_SERVER_ATTR_MASK;
    }
  
    @Override
    public int getPersistChangeMask()
    {
      return <%= object_type.schema.name %>Codec.<%= uppercase_constantize(object_type.name) %>_SERVER_TO_SERVER_ATTR_MASK;
    }
  
    @Override
    public void writeTo( final java.io.ObjectOutput output, final boolean includeToDate, final int attributesMask )
       throws java.io.IOException
    {
      output.writeByte( <%= schema.name %>Codec.<%= uppercase_constantize(object_type.name) %>_TYPE_CODE );
      output.writeObject( get<%= object_type.primary_key.name %>() );
  
      if ( includeToDate )
      {
        final iris.busobj.BusObjEntry entry = iris.busobj.BusObjEntry.getEntry( this );
        if ( entry.getToDate() == null )
        {
          output.writeLong( 0 );
        }
        else
        {
          output.writeLong( entry.getToDate().getTime() );
        }
      }
      else
      {
        output.writeInt( attributesMask );
      }
  <% object_type.attributes.select{|a| !a.iris.runtime_managed? && a.persistent? && a.iris.client_side? }.each do |attribute|
       name = attribute.reference? ? attribute.referencing_link_name : attribute.java.field_name
       attr_type = attribute.reference? ? attribute.referenced_object.primary_key.attribute_type : attribute.attribute_type
  