anchor.diff:      ;
   
   declarations
  -    :   (typeblock | parameterblock | classdefine)*
  +    :   (typeblock | parameterblock | classdefine | enumdefine)*
       ;
   
   // Documentation preceeding a definition, with single newline
  
positive.code:     PARAMETERDEF;
      TYPE='type';
      TYPEDEF;
  }
  
  // target specific code
  
negative.code: parameterblock
      :   PARAMETER! blockbegin! parameterdefine+ blockend!
      ;
  
  enumdefine
      :   longdoc? ENUM alias=TYPENAME '(' orig=TYPENAME ')' blockbegin enumconstant+ blockend
          -> ^(ENUMDEF ^(DOC longdoc?) $alias $orig enumconstant+);
  
  enumconstant
      :   longdoc? CONSTANTNAME '=' INT SHORTDOC? NEWLINE+
          -> ^(ENUMCONSTDEF ^(DOC longdoc? SHORTDOC?) CONSTANTNAME INT);
  
  classdefine
      :   longdoc? CLASS TYPENAME blockbegin declarations class_fielddefines blockend
  