anchor.diff:      ;
   
   typedMethodOrAttributeDeclaration
  -    : inferableType memberName
  -    ( 
  -      methodParameters 
  -      (
  -        memberBody[$inferableType.tree] 
  -      -> ^(METHOD_DEFINITION inferableType memberName methodParameters memberBody)
  +    : FUNCTION_MODIFIER memberName methodParameters?
  +      ( 
  +        block
  +      -> ^(METHOD_DEFINITION FUNCTION_MODIFIER memberName methodParameters? block)
         | specifier? ';'
  -      -> ^(METHOD_DECLARATION inferableType memberName methodParameters specifier?)
  -    )
  -    | (specifier | initializer)? ';'
  -    -> ^(ATTRIBUTE_DECLARATION inferableType memberName specifier? initializer?)
  -    | memberBody[$inferableType.tree]
  -    -> ^(ATTRIBUTE_GETTER_DEFINITION inferableType memberName memberBody)      
  -    )
  -    ;
  -
  -inferableType
  -    : unionType 
  -    | 'value' 
  -    | 'function'
  +      -> ^(METHOD_DECLARATION FUNCTION_MODIFIER memberName methodParameters? specifier?)
  +       )
  +    | VALUE_MODIFIER memberName
  +      ( 
  +        (specifier | initializer)? ';'
  +        -> ^(ATTRIBUTE_DECLARATION VALUE_MODIFIER memberName specifier? initializer?)
  +        | block
  +        -> ^(ATTRIBUTE_GETTER_DEFINITION VALUE_MODIFIER memberName block)
  +      )
  +    | unionType memberName
  +      ( 
  +        methodParameters 
  +        ( 
  +          memberBody[$unionType.tree] 
  +        -> ^(METHOD_DEFINITION unionType memberName methodParameters memberBody)
  +        | specifier? ';'
  +        -> ^(METHOD_DECLARATION unionType memberName methodParameters specifier?)
  +        )
  +      | (specifier | initializer)? ';'
  +      -> ^(ATTRIBUTE_DECLARATION unionType memberName specifier? initializer?)
  +      | memberBody[$unionType.tree]
  +      -> ^(ATTRIBUTE_GETTER_DEFINITION unionType memberName memberBody)      
  +      )
       ;
   
   interfaceDeclaration
  
positive.code: //Support "T x in arg" in positional argument lists
  //Note that we don't need to support this yet
  specialArgument
      : inferableType memberName (containment | specifier)
      -> ^(SPECIAL_ARGUMENT inferableType memberName containment? specifier?)
      //| isCondition
      //| existsCondition
      ;
  
negative.code:     ;
  
  methodParameters
      : typeParameters? parameters+ extraParameters? 
        metatypes? 
        typeConstraints?
      ;
  