anchor.diff:  memberDeclaration
       : 'assign' memberName block
       -> ^(ATTRIBUTE_SETTER memberName block)
  -    | memberType memberName
  +    | 'void' memberName methodParameters voidMethodDefinition
  +    -> ^(METHOD_DECL 'void' memberName methodParameters voidMethodDefinition?)
  +    | inferrableType memberName
         ( 
  -        memberParameters methodDefinition
  -      -> ^(METHOD_DECL memberType memberName memberParameters methodDefinition?)
  +        methodParameters methodDefinition
  +      -> ^(METHOD_DECL inferrableType memberName methodParameters methodDefinition?)
         | attributeDefinition 
  -      -> ^(ATTRIBUTE_DECL memberType memberName attributeDefinition?)
  +      -> ^(ATTRIBUTE_DECL inferrableType memberName attributeDefinition?)
         | memberBody
  -      -> ^(ATTRIBUTE_GETTER memberType memberName memberBody)      
  +      -> ^(ATTRIBUTE_GETTER inferrableType memberName memberBody)      
         )
       ;
   
  +inferrableType
  +    : type | 'local'
  +    ;
  +
   memberType
  -    : type | 'void' | 'local'
  -    ;
  -
  -memberParameters
  +    : inferrableType | 'void'
  +    ;
  +
  +methodParameters
       : 
           typeParameters? 
           formalParameters+ 
  
positive.code: blockDeclarationsAndStatements
      : controlStructure blockDeclarationsAndStatements?
      | directiveStatement
      | (specificationStart) => specificationStatement blockDeclarationsAndStatements?
      | (annotatedDeclarationStart) => annotatedDeclaration blockDeclarationsAndStatements?
      | expression 
      (
  
negative.code: //Support "T x in arg" in positional argument lists
  //Note that we don't need to support this yet
  specialArgument
      : inferrableType memberName (containment | specifier)
      -> ^(SPECIAL_ARG inferrableType memberName containment? specifier?)
      //| isCondition
      //| existsCondition
      ;
  