anchor.diff:      ;
   
   memberSelector
  -    : ('.' | '?.' | SPREAD) ( nameAndTypeArguments | 'outer' )
  +    : ('.' | '?.' | SPREAD) nameAndTypeArguments
       ;
   
   nameAndTypeArguments
  -    : typeNameAndTypeArguments | memberNameAndTypeArguments
  +    : typeNameAndTypeArguments 
  +    | memberNameAndTypeArguments 
  +    | 'subtype' 
  +    | 'outer'
       ;
   
   typeNameAndTypeArguments
  -    : ( typeName | 'subtype' ) 
  -      ( (typeArguments) => typeArguments )?
  +    : typeName ( (typeArguments) => typeArguments )?
         //(ARRAY | ('?') => '?' )*
       ;
   
   memberNameAndTypeArguments
  -    : memberName 
  -      ( (typeArguments) => typeArguments )?
  +    : memberName ( (typeArguments) => typeArguments )?
       ;
   
   elementSelector
  
positive.code: selfReference
      : 'this' //typeName?
      | 'super'
      | 'outer'
      ;
  
  enumeration
  
negative.code:     -> ^(TYPE typeNameWithArguments+ abbreviation*)
      | 'subtype' abbreviation*
      -> ^(TYPE 'subtype' abbreviation*)
      | parameterName '.' 'subtype' abbreviation*
      -> ^(TYPE parameterName 'subtype' abbreviation*)
      ;
  
  abbreviation
  