docs: function ChannelRegistry(options) {
      if ('object' !== typeof options) {
          throw new TypeError('ChannelRegistry: options must be object. Found: ' +
                              options);
      }
      if ('string' !== typeof options.channelName) {
          throw new TypeError('ChannelRegistry: options.channelName must ' +
                              'be string. Found: ' + options.channelName);
      }
  
      /**
       * ### ChannelRegistry.channelName
       *
       * Name of the channel
       */
      this.channelName = options.channelName;
  
      /**
       * ### ChannelRegistry.clients
       *
       * List of registered clients
       *
       * @see PlayerList
       */
      this.clients = new PlayerList({
          name: 'registry_' + options.channelName,
          I: {
              admin: function(p) {
                  return p.admin ? p.id : undefined;
              },
              player: function(p) {
                  return !p.admin ? p.id : undefined;
              },
              disconnected: function(p) {
                  return p.disconnected ? p.id : undefined;
              },
              connected: function(p) {
                  return p.connected ? p.id : undefined;
              },
              disconnectedAdmin: function(p) {
                  return p.disconnected && p.admin ? p.id : undefined;
              },
              disconnectedPlayer: function(p) {
                  return p.disconnected && !p.admin ? p.id : undefined;
              },
              connectedAdmin: function(p) {
                  return !p.disconnected && p.admin ? p.id : undefined;
              },
              connectedPlayer: function(p) {
                  return p.connected && !p.admin ? p.id : undefined;
              },
              sid: function(p) {
                  return p.sid ? p.sid : undefined;
              }
          }
      });
  
      // TODO: update when the options are passed correctly.
      // Add another index, if required so.
      if (true || options.tagClients) {
          this.clients.index('tagged', function(o) {
              return o.tag;
          });
      }
  
      /**
       * ### ChannelRegistry.roomStacks
       *
       * Room membership of players
       *
       * key: clientID,  value: array of roomIDs, last ID is current room
       */
      this.roomStacks = {};
  
      /**
       * ### ChannelRegistry.roomAliases
       *
       * Per-room client aliases
       *
       * key: roomID,  value: map from aliases to aliases/clientIDs
       */
      this.roomAliases = {};
  
      /**
       * ### ChannelRegistry.gameAliases
       *
       * Game-global client aliases
       *
       * key: alias,  value: alias/clientID
       */
      this.gameAliases = {};
  }