anchor.diff:  }
   	:	^(CLASS m=modifiers? t=TypeIdentifier p=parameters? typeSpecifier* classBlock?) 
   	{ 
  -	classDef.name_$eq($t.text);
  +	classDef.name_\$eq($t.text);
   	if ($p.parameters != null) {
  -	  classDef.parameters().$plus$plus$eq($p.parameters);
  +	  classDef.parameters().\$plus\$plus\$eq($p.parameters);
   	}
   	if ($m.modifiers != null) {
  -	  classDef.modifiers().$plus$plus$eq($m.modifiers);
  +	  classDef.modifiers().\$plus\$plus\$eq($m.modifiers);
   	}
   	}
   	;
  
positive.code: 	  if ($exp != null) {
    	  for (Object item : $exp) {
  	      Expression expression = ((expression_return)item).exp;
  	      $args.$plus$eq(expression);
  	    }
  	  }
  	}
  
negative.code: 	:	^(PARAM modifiers? t=TypeIdentifier v=VariableIdentifier)
  
  	{ Parameter param = new Parameter($v.text, $t.text);
  	  $parameters.\$plus\$eq(param);
  	}
  	;
  
  typeSpecifier
  	:	^(IMPL i=qualifiedType)
  	{
     $SourceFile::file.classDef().interfaces().\$plus\$eq($i.text);
  	}
  	;
  
  