anchor.diff:  
   rule field_or_method_or_signal_decl:
                                                   {{ signal = false; fargs = []; daux = () }}
  -        [ 'signal'                              {{ signal = true }}
  -        ]
  +        [ 'signal'                              {{ signal = true; coll = 'void' }}
  +          [ '<' IDENT '>'                       {{ coll = IDENT; ASC (coll) }}
  +          ] ]
           ( 'void'                                {{ dtname = 'void' }}
           | typename                              {{ dtname = typename }}
           )
  
positive.code: def ANS (issignal, identifier): # assert non-signal decl
    if issignal:
      raise TypeError ('non-method invalidly declared as \'signal\': %s' % identifier)
  
  class Error (Exception):
    def __init__ (self, msg, ecaret = None):
  
negative.code: import AuxData
  
  reservedwords = ('class', 'signal', 'void')
  collectors = ('void', 'sum', 'last', 'until0', 'while0')
  keywords = ('TRUE', 'True', 'true', 'FALSE', 'False', 'false',
              'namespace', 'enum', 'enumeration', 'Const', 'typedef', 'interface',
              'record', 'sequence', 'Bool', 'Num', 'Real', 'String')
  