anchor.diff:      ;
       
   cases 
  -    : ('case' 'null' block)? ('case' '(' caseList ')' block)+ ('else' block)?
  -    ;
  -    
  -caseList
  -    : expression (',' expression)* | 'is' type
  -    ;
  -    
  +    : ('case' 'null' block)? ('case' '(' caseCondition ')' block)+ ('else' block)?
  +    ;
  +    
  +caseCondition
  +    : expressions | isCaseCondition
  +    ;
  +
  +expressions
  +    : expression (',' expression)*
  +    ;
  +
  +isCaseCondition
  +    : 'is' type
  +    ;
  +
   forFail
       : 'for' '(' forIterator ')' block ('fail' block)?
       ;
  
positive.code:     : LIDENTIFIER
      ;
  
  varargArguments
      : assignable (',' assignable)*
      ;
  
  namedArguments
      : '{' ((namedArgument ';') => namedArgument ';')* varargArguments? '}'
      ;
  
  parExpression 
  
negative.code:     ;
  
  specialMethodArgument
      :(  methodOrParameterName | 'case' '(' expressions ')' ) specialFunctor 
      ;
  
  methodOrParameterName
  