public void BindMessagingChannel(IMessagingChannel channel)
        {
            Contract.Requires(channel != null);
            Contract.Assert(this.messagingChannel == null);

            this.messagingChannel = channel;
            var closedCause = Volatile.Read(ref this.closedCause);

            if (closedCause != null)
            {
                channel.Close(closedCause);
            }
            foreach (var source in this.sources)
            {
                source.BindMessagingChannel(channel);
            }
        }