anchor.diff:     ;
   
   type_set
  -   : (idn | idn 'has' oper_decl (',' oper_decl)* equate*)*
  +   : (idn | (idn 'has' oper_decl (',' oper_decl)* equate*))*
      | idn
      ;
   
   oper_decl
  -   : op_name (',' op_name)* type_spec
  +   : op_name (',' op_name)* ':' type_spec
      ;
   
   op_name
  -   : name (constant (',' constant)*)?
  +   : name '[' (constant (',' constant)*)? ']'
      ;
   
   constant
  -   : expression ':' type_spec
  +   : expression
  +   | type_spec
      ;
   
   routine_body
  
positive.code:    ;
  
  cluster
     : idn '=' 'cluster' parms? 'is' idn (',' idn) where? cluster_body 'end' idn
     ;
  
  parms
     : param (',' param)*
     ;
  
  param
     : idn (',' idn)* ('type' | type_spec)
     ;
  
  args
  
negative.code:    ;
  
  cluster_body
     : equate* 'rep' '=' type_spec equate* own_var* 'routine' routine*
     ;
  
  routine
  