anchor.diff:  // but how to disallow constructors and static initializers...
   enumConstantField! {Token first = LT(1);}
       :   (
  -            (typeDeclarationStart)=>
  +            (typeDefinitionStart)=>
               mods:modifiersOpt!
               td:typeDefinitionInternal[#mods]
               {#enumConstantField = #td;}
  
positive.code:     ;
  
  
  /** Used only as a lookahead predicate for nested type declarations. */
  
  /*TODO* The lookahead in typeDeclarationStart needs to skip annotations, not
  just stop at '@', because variable and method declarations can also be
  annotated.
  > typeDeclarationStart!
  >     :   (modifier!)* ("class" | "interface" | "enum" | "trait" | AT )
  S.B. something like
  >     :   (modifier! | annotationTokens!)* ("class" | "interface" |
  > "enum" )
  (And maybe @interface, if Java 5 allows nested annotation types? Don't
  know offhand.)
  Where annotationTokens can be a quick paren-skipper, as in other
  places: '@' ident '(' balancedTokens ')'.
  */
  
  typeDeclarationStart!
      :   modifiersOpt! ("class" | "interface" | "enum" | "trait" | AT "interface")
      ;
  
  
negative.code:         { currentClass = prevCurrentClass; }
      ;
  
  // Definition of a Java Interface
  interfaceDefinition![AST modifiers]  {Token first = cloneToken(LT(1));
                                        if (modifiers != null) {
  