anchor.diff:  //Note that = is not really an assignment operator, but 
   //can be used to init locals
   expression 
  -    : methodExpression 
  +    : implicationExpression 
         ( ('=' | ':=' | '.=' | '+=' | '-=' | '*=' | '/=' | '%=' | '&=' | '|=' | '^=' | '&&=' | '||=' | '?=') assignable )?
  -    ;
  -
  -methodExpression
  -    : implicationExpression undelimitedNamedArgument*
  -    ;
  -
  -undelimitedNamedArgument
  -    : ( memberName | 'case' '(' expressions ')' ) 
  -      undelimitedNamedArgumentDefinition 
       ;
       
   implicationExpression
  
positive.code:     : typeParameters? formalParameters+ typeConstraints?
      ;
  
  memberDefinition
      : memberParameters? block
      //allow omission of braces:
      /*: ( (memberParameterStart) => memberParameters )? 
        ( ('{') => block | implicationExpression ';' )*/
      | (specifier | initializer)? ';'
      ;
  
  //shortcut functor expression that makes the parameter list 
  //optional, but can appear only using the special smalltalk
  //style method protocol
  undelimitedNamedArgumentDefinition
      : ( (formalParameterStart) => formalParameters )? 
        ( ('{') => block | implicationExpression )
      ;
      
  interfaceDeclaration
      :
          'interface'
  
negative.code:     | assignable
      ;
  
  //a smalltalk-style parameter to a positional parameter
  //invocation
  undelimitedNamedArgument
      : ( memberName | 'case' '(' expressions ')' )
      ( (formalParameterStart)=> formalParameters )? 
      ( block | parExpression | literal | specialValue )
      ;
      
  specialArgument
      : type memberName (containment|specifier)
      //| isCondition
  