anchor.diff:      -> ^(TYPE parameterName 'subtype' abbreviation*)*/
       ;
   
  -typeAsArgument
  -    : unabbreviatedType
  -    -> ^(TYPE_ARG_LIST unabbreviatedType)
  -    ;
  -
  -typeAbbreviationAsArgument
  -    : typeAbbreviation
  -    -> ^(TYPE_ARG_LIST typeAbbreviation)
  -    ;
  -
   typeAbbreviation
  -    : QMARK -> ^(TYPE QMARK)
  -    | ARRAY -> ^(TYPE ARRAY)
  +    : '?' | '[]'
       //| '[' dimension ']'
       ;
   
  
positive.code:     ;
  
  type
      : (unabbreviatedType typeAbbreviation) => 
            typeAsArgument (typeAbbreviationAsArgument^)* typeAbbreviation^
      | unabbreviatedType
      ;
  
  unabbreviatedType
  
negative.code: //expressions
  declarationStart
      : declarationKeyword 
      | type '...'? LIDENTIFIER
      ;
  
  declarationKeyword
  