anchor.diff:  
   atomtype
     : 'this'
  -  | 'box'
  +  | cap
     | ('(' | LPAREN_NEW) (infixtype | '_') tupletype? ')'
     | nominal
     ;
  
positive.code:   ;
  
  typeargs
    : '[' type (',' type)* ']'
    ;
  
  typeparams
    : ('[' | LSQUARE_NEW) typeparam (',' typeparam)* ']'
    ;
  
  params
    : (param | '...') (',' (param | '...'))*
    ;
  
  typeparam
  
negative.code:   | '@' (ID | STRING) typeargs? ('(' | LPAREN_NEW) positional? named? ')' '?'?
    ;
  
  tuple
    : ',' (rawseq | '_') (',' (rawseq | '_'))*
    ;
  