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