anchor.diff:  typeConstraints
       : typeConstraint+
       -> ^(TYPE_CONSTRAINT_LIST typeConstraint+)
  +    ;
  +
  +union
  +    : type ('|' type)*
       ;
   
   type
  
positive.code: fragment FLOATLITERAL :;
  NATURALLITERAL
      : Digits
        ( Magnitude | { input.LA(2) != '.' }? => '.' Digits (Exponent|Magnitude|FractionalMagnitude)? { $type = FLOATLITERAL; } )?
      | '.' ( '..' { $type = ELLIPSIS; } | '.'  { $type = RANGE; } | { $type = DOT; } )
      ;
      
  fragment SPREAD :;
  
negative.code:     ;
  
  typeArgument
      : union '...'? | '#'! dimension
      ;
  
  dimension
  