anchor.diff:      ;
   
   objectDeclaration
  -    : 'object' memberName objectDefinition
  +    : 'object' memberName extendedType? satisfiedTypes? classBody
       ;
   
   voidMethodDeclaration
  -    : 'void' memberName voidMethodDefinition
  +    : 'void' memberName methodParameters (block | specifier? ';'!)
       ;
   
   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?)
  +      methodParameters (memberBody | specifier? ';')
  +    -> ^(METHOD_DECL inferrableType memberName methodParameters memberBody? specifier?)
  +    | (specifier | initializer)? ';'
  +    -> ^(ATTRIBUTE_DECL inferrableType memberName specifier? initializer?)
       | memberBody
       -> ^(ATTRIBUTE_GETTER inferrableType memberName memberBody)      
       )
  
positive.code:         extendedType?
          satisfiedTypes?
          typeConstraints?
          classDefinition
      ;
  
  classDefinition
      : classBody | typeSpecifier? ';'!
      ;
  
  classBody
  
negative.code:         metatypes?
          satisfiedTypes?
          typeConstraints?
          (interfaceBody | typeSpecifier ';'!)
      ;
  
  interfaceBody
  