anchor.diff:            typeSpecifier
             { dec.setTypeSpecifier($typeSpecifier.typeSpecifier); }
           )?
  -        { $declaration = dec; }
           SEMICOLON
           { $declaration.setEndToken($SEMICOLON); }
         //-> ^(CLASS_DECLARATION[$CLASS_DEFINITION] typeName classParameters? typeSpecifier?)
  
positive.code:           initializer
            { 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); }
        //-> ^(ATTRIBUTE_GETTER_DEFINITION unionType memberName memberBody)      
        )
  
negative.code:           dec.setTypeConstraintList($typeConstraints.typeConstraintList); }
        )?
        (
          { $declaration = def; }
          interfaceBody
          { def.setInterfaceBody($interfaceBody.interfaceBody); }
        //-> ^(INTERFACE_DEFINITION typeName interfaceParameters? interfaceBody)
  