anchor.diff:      ;
       
   doWhile
  -    : ('do' ('(' doIterator ')')? block? )?  
  -      'while' '(' condition ')' (block | ';')
  +    : doBlock? whileBlock
  +    ;
  +
  +doBlock
  +    : 'do' ('(' doIterator ')')? block?
  +    ;
  +
  +whileBlock
  +    : 'while' '(' condition ')' (block | ';')
       ;
   
   //do iterators are allowed to be mutable and/or optional
  
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:     ;
  
  forFail
      : forBlock failBlock?
      ;
  
  forBlock
      : 'for' '(' forIterator ')' block
      ;
  
  failBlock
      : 'fail' block
      ;
  
  forIterator
  