anchor.diff:              i:"implements"! nls!
               classOrInterfaceType[true] ( COMMA! nls! classOrInterfaceType[true] )* nls!
           )?
  -        {#implementsClause = #(create(IMPLEMENTS_CLAUSE,"IMPLEMENTS_CLAUSE",first,LT(1)),
  -                               #implementsClause);}
  +        {#implementsClause = #(create(IMPLEMENTS_CLAUSE,"IMPLEMENTS_CLAUSE",first,LT(1)), #implementsClause);}
       ;
   
   // Now the various things that can be defined inside a class
  
positive.code: // Wildcard type indicating all types (with possible constraint)
  wildcardType
      :   QUESTION
          (("extends" | "super")=> typeArgumentBounds)?
          {#wildcardType.setType(WILDCARD_TYPE);}
      ;
  
  typeArgumentsDiamond
  {Token first = LT(1);}
      :   LT! GT! nls!
      {#typeArgumentsDiamond = #(create(TYPE_ARGUMENTS, "TYPE_ARGUMENTS",first,LT(1)), #typeArgumentsDiamond);}
      ;
  
  // Type arguments to a class or interface type
  
negative.code:                 SEMI! sce=strictContextExpression[true]
             |    SEMI! {astFactory.addASTChild(currentAST,astFactory.create(EMPTY_STAT, "EMPTY_STAT"));}
          )+
          {#closureList = #(create(CLOSURE_LIST,"CLOSURE_LIST",first,LT(1)), #closureList);}
      ;
  
  forInClause
      :   (   (declarationStart)=>
  