anchor.diff:      ;
   
   staticType
  -    : typeNameWithArguments ('.' typeNameWithArguments)* abbreviation*
  -    -> ^(TYPE typeNameWithArguments+ abbreviation*)
  +    : typeNameWithArguments ('.' typeNameWithArguments)* typeAbbreviation*
  +    -> ^(TYPE typeNameWithArguments+ typeAbbreviation*)
       ;
   
   runtimeType
  -    : 'subtype' abbreviation*
  -    -> ^(TYPE 'subtype' abbreviation*)
  +    : 'subtype' typeAbbreviation*
  +    -> ^(TYPE 'subtype' typeAbbreviation*)
       /*| parameterName '.' 'subtype' abbreviation*
       -> ^(TYPE parameterName 'subtype' abbreviation*)*/
       ;
   
  -abbreviation
  +typeAbbreviation
       : '?' | '[]' //| '[' dimension ']'
       ;
  -
   
   typeNameWithArguments
       : typeName typeArguments?
  
positive.code:     | typedMethodOrGetterArgument
      ;
      
      /*'assign' memberName block
      -> ^(ATTRIBUTE_SETTER memberName block)*/
  
  objectArgument
      : 'object' parameterName extendedType? satisfiedTypes? classBody
      -> parameterName ^(OBJECT_ARG parameterName extendedType? satisfiedTypes? classBody)
  
negative.code:     | argumentsWithFunctionalArguments
      -> ^(CALL_EXPR argumentsWithFunctionalArguments)
      | elementSelector
      -> ^(SUBSCRIPT_EXPR elementSelector)
      | postfixOperator 
      -> ^(POSTFIX_EXPR postfixOperator)
      ;
  