docs: function trigger () {
    debug('trigger %j', arguments);
    if (!arguments.length) return;
    var args = slice.call(arguments);
    switch(args.length) {
    case 1:
      debug('one argument');
      emit.apply(this, args);
      break;
    case 2:
      debug('two arguments');
      if (args[1] && args[1].isMessage) {
        debug('it is a message %s', args[1].data.id);
        var msg = common.Message(args[1]);
        debug('vivified %s', msg.id());
        emit.apply(this, [args[0], msg ]); 
      }
      else {
        debug('it is not a message');
        emit.apply(this, args);
      }
      break;
    default:
      debug('more than one argument');
      emit.apply(this, args);
      break;
    }
  }