anchor.diff:      ;
   
   forFail
  -    : 'for' '(' forIterator ')' block ('fail' block)?
  +    : forBlock failBlock?
  +    ;
  +
  +forBlock
  +    : 'for' '(' forIterator ')' block
  +    ;
  +
  +failBlock
  +    : 'fail' block
       ;
   
   forIterator
  
positive.code:     ;
      
  ifElse
      : 'if' '(' condition ')' block ('else' 'if' '(' condition ')' block)* ('else' block)?
      ;
      
  switchCaseElse
      : 'switch' '(' expression ')' ( '{' cases '}' | cases )
      ;
      
  cases 
      : caseItem+ defaultCaseItem?
      ;
  
  caseItem
      : 'case' '(' caseCondition ')' block
      ;
  
negative.code:     ;
      
  doWhile
      : doBlock? whileBlock
      ;
  
  doBlock
      : 'do' ('(' doIterator ')')? block?
      ;
  
  whileBlock
      : 'while' '(' condition ')' (block | ';')
      ;
  
  //do iterators are allowed to be mutable and/or optional
  