anchor.diff:      -> ^(WHILE_STMT doBlock loopCondition)
       ;
   
  -while
  +simpleWhile
       : loopCondition whileBlock
       -> ^(WHILE_STMT loopCondition whileBlock)
       ;
  
positive.code: reflectedLiteral 
      : '#' ( memberName | ( parameterizedType ('.' memberName)? ) )
      -> ^(REFLECTED_LITERAL parameterizedType? memberName?)
      ;
  
  qualifiedTypeName
      : UIDENTIFIER ('.' UIDENTIFIER)*
      -> ^(TYPE_NAME UIDENTIFIER+) 
      ;
  
  typeName
  
negative.code:     ;
      
  type
      : parameterizedType ('.' parameterizedType)*//( '[' parameterizedType? ']' )?
      -> ^(TYPE parameterizedType+)
      | 'subtype'
      -> ^(TYPE 'subtype')
      ;
  
  parameterizedType
      : typeName typeArguments?
      ;
      
  annotations
      : annotation+
      -> ^(ANNOTATION_LIST annotation+)
  