anchor.diff:      | COMPLEMENT_OP
       ;
       
  +compilerAnnotation returns [CompilerAnnotation annotation]
  +    : COMPILER_ANNOTATION 
  +      { $annotation=new CompilerAnnotation($COMPILER_ANNOTATION); }
  +      annotationName 
  +      { $annotation.setIdentifier($annotationName.identifier); }
  +      ( 
  +          LBRACKET
  +          stringLiteral
  +          { $annotation.setStringLiteral($stringLiteral.stringLiteral); }
  +          RBRACKET
  +      )?
  +    ;
  +
   // Lexer
   
   fragment
  
positive.code:       )
      ;
  
  typedMethodOrAttributeDeclaration
      : | unionType memberName
        ( 
          typeParameters? 
          parameters+
          //metatypes? 
          typeConstraints?
          ( 
            //memberBody[$unionType.tree] 
          //-> ^(METHOD_DEFINITION unionType memberName methodParameters memberBody)
          | specifier? ';'
          //-> ^(METHOD_DECLARATION unionType memberName methodParameters specifier?)
          )
        | (specifier | initializer)? ';'
        //-> ^(ATTRIBUTE_DECLARATION unionType memberName specifier? initializer?)
        | //memberBody[$unionType.tree]
        //-> ^(ATTRIBUTE_GETTER_DEFINITION unionType memberName memberBody)      
        )
      ;
  
negative.code:         parameters
          { def.addParameterList($parameters.parameterList); 
            dec.addParameterList($parameters.parameterList); }
        )+
        //metatypes? 
        (
          typeConstraints
  