anchor.diff:      : 'case'! memberName arguments? (','|';'|'...')
       ;
       
  -
   typeConstraint
  -    : typeName ( ('>='^ type) | ('<='^ type) | ('='^ 'subtype') | formalParameters )
  +    : 'where' type formalParameters? satisfiedTypes?
  +    -> ^(TYPE_CONSTRAINT type formalParameters? satisfiedTypes?)
       ;
       
   typeConstraints
  -    //TODO: should it be 'for'?
  -    : 'where' typeConstraint ('&' typeConstraint)*
  -    -> ^(TYPE_CONSTRAINT_LIST ^(TYPE_CONSTRAINT typeConstraint)+)
  +    : typeConstraint+
  +    -> ^(TYPE_CONSTRAINT_LIST typeConstraint+)
       ;
       
   satisfiedTypes
  
positive.code:     ;
  
  controlStructure
      : ifElse | switchCaseElse | doWhile | forFail | tryCatchFinally
      ;
      
  ifElse
  
negative.code:     ;
      
  doWhile
      : doBlock loopCondition ';'
      -> ^(WHILE_STMT doBlock loopCondition)
      ;
  
  while
      : loopCondition whileBlock
      -> ^(WHILE_STMT loopCondition whileBlock)?
      ;
  
  loopCondition
      : 'while' '(' condition ')'
      -> ^(CONDITION condition)
      ;
  
  whileBlock
      : block
      -> ^(WHILE_BLOCK block)
      ;
  
  doBlock
      : 'do' block?
      -> ^(DO_BLOCK block)?
      ;
  
  tryCatchFinally
  