anchor.diff:  
   // Backtracking here is needed for exactly the same reason as localOrStatement.
   condition
  -    : ('exists' | 'nonempty')? (expression | type memberName initializer)
  +    : ('exists' | 'nonempty')? (expression | variable initializer)
       | 'is' type ((memberName initializer) => memberName initializer | expression)
       ;
   	
   controlStructure
  -    : ifElse | switchCaseElse | doWhile | forFail | tryCatchFinally;
  +    : ifElse | switchCaseElse | doWhile | forFail | tryCatchFinally
  +    ;
       
   ifElse
       : 'if' '(' condition ')' block ('else' block)?
  
positive.code:     ;
  
  doIterator
      : localDeclaration
      ;
  
  tryCatchFinally
      :
      'try' ('(' resource ')')?
      block
      ('catch' '(' localDeclaration ')' block)*
      ('finally' block)?
      ;
      
  resource
      : localDeclaration | expression
      ;
  
  // Lexer
  
negative.code: forFail
      : 'for' '(' forIterator ')' block ('fail' block)?
      ;
  
  //TODO: check this!
  forIterator
      : formalParameter //controllingVariable 'in' (expression|enumeration)
      ;
      
  controllingVariable
  