anchor.diff:        | { displayRecognitionError(getTokenNames(), 
                 new MismatchedTokenException(LBRACE, input)); }
           SEMICOLON
  +        { $declaration.setEndToken($SEMICOLON); }
         )
       //-> ^(OBJECT_ARGUMENT[$OBJECT_DEFINITION] VALUE_MODIFIER memberName extendedType? satisfiedTypes? classBody?)
       ;
  
positive.code:            { mdec.setSpecifierExpression($ms.specifierExpression); }
            )?
            { $declaration = mdec; }
            SEMICOLON
            { $declaration.setEndToken($SEMICOLON); }
          //-> ^(METHOD_DECLARATION unionType memberName methodParameters specifier?)
          )
        | 
  
negative.code:           { adec.setSpecifierOrInitializerExpression($initializer.initializerExpression); }
          )?
          { $declaration = adec; }
          s2=SEMICOLON
          { $declaration.setEndToken($s2); }
        //-> ^(ATTRIBUTE_DECLARATION unionType memberName specifier? initializer?)
        | ab=memberBody[$unionType.type]
          { adef.setBlock($ab.block); }
  