/// <summary>
 /// Creates a new channeled connection.
 /// </summary>
 /// <remarks>
 /// As channels acquire their identifier automatically, CreateChannel()
 /// must be called in the same sequence at all sites, as to ensure
 /// that local channels correspond to the correct remote channels.
 /// </remarks>
 /// <returns>The channeled connection.</returns>
 public IConnection CreateChannel()
 {
     int channelId = channels.Count;
     var channel = new TunneledConnection(this);
     channels[channelId] = channel;
     channelIds[channel] = channelId;
     return channel;
 }
 internal void Send(TunneledConnection channel, object o)
 {
     int id = channelIds[channel];
     Connection.Send(new MultichannelMessage(id, o));
 }