anchor.diff:  
   objectDefinition
       : extendedType? satisfiedTypes? classBody
  -    ;
  -
  -//TODO: should we allow the shortcut style of method
  -//      definition for a method or getter which returns
  -//      a parExpression, just like we do for Smalltalk
  -//      style parameters below?
  -methodDefinition
  -    : memberBody | specifier? ';'!
  -    ;
  -
  -voidMethodDefinition
  -    : block | specifier? ';'!
  -    ;
  -
  -attributeDefinition
  -    : (specifier | initializer)? ';'!
       ;
       
   interfaceDeclaration
  
positive.code:     ;
  
  namedArgumentDeclaration
      : 'object' parameterName objectDefinition
      -> parameterName ^(OBJECT_ARG parameterName objectDefinition)
      /*'assign' memberName block
      -> ^(ATTRIBUTE_SETTER memberName block)*/
      | 'void' parameterName formalParameters+ block
      -> parameterName ^(METHOD_ARG 'void' parameterName formalParameters+ block)
      | inferrableType parameterName
        ( 
          formalParameters+ memberBody
        -> parameterName ^(METHOD_ARG inferrableType parameterName formalParameters+ memberBody)
        | memberBody
        ->parameterName ^(ATTRIBUTE_ARG inferrableType parameterName memberBody)      
        )
      ;
      
  namedSpecifiedArgument
      : parameterName specifier ';'
      -> ^(SPEC_ARG parameterName specifier)
  
negative.code:     -> ^(RETRY_STMT)
      ;
  
  //TODO: should we allow the shortcut style of method
  //      definition for a method or getter which returns
  //      a parExpression, just like we do for Smalltalk
  //      style parameters below?
  memberDeclaration
      : objectDeclaration
      -> ^(OBJECT_DECL objectDeclaration)
      | setterDeclaration
      -> ^(ATTRIBUTE_SETTER setterDeclaration)
      | voidMethodDeclaration
      -> ^(METHOD_DECL voidMethodDeclaration)
      | typedMethodOrAttributeDeclaration
      ;
  
  objectDeclaration
      : 'object' memberName objectDefinition
      ;
  
  voidMethodDeclaration
      : 'void' memberName voidMethodDefinition
      ;
  
  setterDeclaration
      : 'assign' memberName block
      ;
  
  voidMethodDefinition
      : methodParameters (block | specifier? ';'!)
      ;
  
  methodDefinition
      : methodParameters (memberBody | specifier? ';'!)
      ;
  
  attributeDefinition
      : (specifier | initializer)? ';'!
      ;
  
  typedMethodOrAttributeDeclaration
      : inferrableType memberName
      ( 
        methodDefinition
      -> ^(METHOD_DECL inferrableType memberName methodDefinition)
      | attributeDefinition
      -> ^(ATTRIBUTE_DECL inferrableType memberName attributeDefinition?)
      | memberBody
      -> ^(ATTRIBUTE_GETTER inferrableType memberName memberBody)      
      )
      ;
  
  inferrableType
  