anchor.diff:  returns [boolean hasDeclaration=false]
   {Token first = LT(1);}
       :
  -        (   ({allowDeclaration}? declarationStart)=>
  +        (   ({allowDeclaration}? declarationStart) =>
               {hasDeclaration=true;} singleDeclaration  // used for both binding and value, as: while (String xx = nextln()) { println xx }
           |   expression[0]
           |   branchStatement // useful to embed inside expressions (cf. C++ throw)
           |   annotation      // creates an annotation value
           )
           // For the sake of the AST walker, mark nodes like this very clearly.
  -        {#strictContextExpression = #(create(EXPR,"EXPR",first,LT(1)),#strictContextExpression);}
  +        {#strictContextExpression = #(create(EXPR,"EXPR",first,LT(1)), #strictContextExpression);}
       ;
   
   assignmentLessExpression  {Token first = LT(1);}
  
positive.code:         nls!
  
          // A compilation unit starts with an optional package definition
          (   (annotationsOpt "package")=> packageDefinition
          |   (statement[EOF])?
          )
  
  
negative.code:             |   BXOR_ASSIGN^
              |   BOR_ASSIGN^
              |   STAR_STAR_ASSIGN^
              )
              nls!
              expressionStatementNoCheck
  