anchor.diff:    ;
   
   class_def
  -  : ('type' | 'interface' | 'trait' | 'primitive' | 'class' | 'actor') '@'? ID typeparams? cap? ('is' types)? STRING? members
  +  : ('type' | 'interface' | 'trait' | 'primitive' | 'class' | 'actor') '@'? ID typeparams? cap? ('is' type)? STRING? members
     ;
   
   members
  
positive.code:   | literal
    | ('(' | LPAREN_NEW) (rawseq | '_') tuple? ')'
    | ('[' | LSQUARE_NEW) ('as' type ':')? rawseq (',' rawseq)* ']'
    | 'object' ('is' types)? members 'end'
    | 'lambda' typeparams? ('(' | LPAREN_NEW) params? ')' (':' type)? '?'? '=>' rawseq 'end'
    | '@' (ID | STRING) typeargs? ('(' | LPAREN_NEW) positional? named? ')' '?'?
    ;
  
negative.code:   | literal
    | LPAREN_NEW (rawseq | '_') tuple? ')'
    | LSQUARE_NEW ('as' type ':')? rawseq (',' rawseq)* ']'
    | 'object' ('is' type)? members 'end'
    | 'lambda' typeparams? ('(' | LPAREN_NEW) params? ')' (':' type)? '?'? '=>' rawseq 'end'
    | '@' (ID | STRING) typeargs? ('(' | LPAREN_NEW) positional? named? ')' '?'?
    ;
  