anchor.diff:      ;
   
   assignable 
  -    : (assignableFunctorStart) => assignableFunctor
  +    : (functorStart) => functor
       | expression
       ;
   
  -//This one is fully general
   //Even though it looks like this is non-associative
   //assignment, it is actually right associative because
   //assignable can be an assignment
  +//Note that = is not really an assignment operator, but 
  +//can be used to init locals
   expression 
  -    : implicationExpression 
  -      (assignmentOp assignable | specialFunctorArguments)?
  -    ;
  -
  -//This one is for use as a functor body
  -functorBodyExpression
  -    : implicationExpression 
  -      ( assignmentOp ( (assignableFunctorStart) => assignableFunctor | functorBodyExpression ) )?
  -    ;
  -    
  -assignmentOp
  -    : '=' //not really an assignment operator, but can be used to init locals
  -    | ':='
  -    | '+=' 
  -    | '-=' 
  -    | '*=' 
  -    | '/=' 
  -    | '%=' 
  -    | '&=' 
  -    | '|=' 
  -    | '^=' 
  -    | '&&=' 
  -    | '||=' 
  -    | '?='
  +    : methodExpression 
  +      ( ('=' | ':=' | '+=' | '-=' | '*=' | '/=' | '%=' | '&=' | '|=' | '^=' | '&&=' | '||=' | '?=') assignable )?
  +    ;
  +
  +methodExpression
  +    : implicationExpression (methodOrParameterName specialFunctor)*
  +    ;
  +
  +methodOrParameterName
  +    : LIDENTIFIER
       ;
   
   implicationExpression
  
positive.code:     : declarationModifier | userAnnotation
      ;
  
  userAnnotation 
      : annotationName ( arguments | literal | reflectedBase (reflectedMember)* )?
      ;
  
negative.code:     : regularType
      | memberName
      | literal
      //| (primaryFunctorStart) => primaryFunctor
      | parExpression
      | enumeration
      | 'this' 
  