anchor.diff:   *  and expressions.
    */
   statement[int prevToken]
  -{boolean sce=false; Token first = LT(1); AST casesGroup_AST = null;}
  +{boolean sce = false; Token first = LT(1); AST casesGroup_AST = null;}
       // prevToken is NLS if previous statement is separated only by a newline
   
       :  (genericMethodStart)=>
  
positive.code:  */
  constructorStart!
      :
          modifiersOpt! id:IDENT! {isConstructorIdent(id)}? nls! LPAREN! //...
      ;
  
  
  /** Used only as a lookahead predicate for nested type definitions. */
  
  typeDefinitionStart!
      :   modifiersOpt! ("class" | "interface" | "enum" | "trait" | AT "interface")
      ;
  
negative.code:         (s:SEMI! | while_cbs:compatibleBodyStatement!)
          {
              if (#s != null)
                  #statement = #(create(LITERAL_while,"Literal_while",first,LT(1)), while_sce, s);
              else
                  #statement = #(create(LITERAL_while,"Literal_while",first,LT(1)), while_sce, while_cbs);
          }
  
      // Import statement.  Can be used in any scope.  Has "import x as y" also.
      |   (annotationsOpt "import") => importStatement
  