anchor.diff:  typedMethodOrAttributeDeclaration
       : inferrableType memberName
       ( 
  -      methodParameters (memberBody | specifier? ';')
  +      methodParameters (memberBody[$inferrableType.tree] | specifier? ';')
       -> ^(METHOD_DECL inferrableType memberName methodParameters memberBody? specifier?)
       | (specifier | initializer)? ';'
       -> ^(ATTRIBUTE_DECL inferrableType memberName specifier? initializer?)
  -    | memberBody
  +    | memberBody[$inferrableType.tree]
       -> ^(ATTRIBUTE_GETTER inferrableType memberName memberBody)      
       )
       ;
  
positive.code: //can't tell whether a member body is a block
  //or a named argument list until after we
  //finish parsing it
  memberBody options {memoize=true;}
      : (namedArguments) => namedArguments //first try to match with no directives or control structures
      | (block) => block //if there is a "return" directives control structures, it must be a block
      //if it doesn't match as a block or as a named argument
      //list, then there must be an error somewhere, so parse
  
negative.code: typedMethodOrGetterArgument
      : inferrableType parameterName
      ( 
        (formalParameters+ memberBody[$inferrableType.tree])
      -> parameterName ^(METHOD_ARG inferrableType parameterName formalParameters+ memberBody)
      | memberBody[$inferrableType.tree]
      -> parameterName ^(ATTRIBUTE_ARG inferrableType parameterName memberBody)      
      )
      ;
  