protected override void EnqueueAndDispatch(IChannelListener listener, RequestContext request, Action dequeuedCallback, bool canDispatchOnThisThread)
        {
            SingletonChannelListener <IInputChannel, InputChannel, Message> listener2 = listener as SingletonChannelListener <IInputChannel, InputChannel, Message>;

            if (listener2 != null)
            {
                listener2.EnqueueAndDispatch(request.RequestMessage, dequeuedCallback, canDispatchOnThisThread);
                try
                {
                    request.Close();
                }
                catch (CommunicationException exception)
                {
                    if (DiagnosticUtility.ShouldTraceInformation)
                    {
                        DiagnosticUtility.ExceptionUtility.TraceHandledException(exception, TraceEventType.Information);
                    }
                }
                catch (TimeoutException exception2)
                {
                    if (DiagnosticUtility.ShouldTraceInformation)
                    {
                        DiagnosticUtility.ExceptionUtility.TraceHandledException(exception2, TraceEventType.Information);
                    }
                }
            }
            SingletonChannelListener <IReplyChannel, ReplyChannel, RequestContext> listener3 = listener as SingletonChannelListener <IReplyChannel, ReplyChannel, RequestContext>;

            if (listener3 == null)
            {
                throw Fx.AssertAndThrow("ReplyChannelDemuxer.EnqueueAndDispatch (false)");
            }
            listener3.EnqueueAndDispatch(request, dequeuedCallback, canDispatchOnThisThread);
        }
        protected override void Dispatch(IChannelListener listener)
        {
            SingletonChannelListener <IInputChannel, InputChannel, Message> listener2 = listener as SingletonChannelListener <IInputChannel, InputChannel, Message>;

            if (listener2 != null)
            {
                listener2.Dispatch();
            }
            else
            {
                SingletonChannelListener <IReplyChannel, ReplyChannel, RequestContext> listener3 = listener as SingletonChannelListener <IReplyChannel, ReplyChannel, RequestContext>;
                if (listener3 == null)
                {
                    throw Fx.AssertAndThrow("ReplyChannelDemuxer.Dispatch (false)");
                }
                listener3.Dispatch();
            }
        }
        protected override void EnqueueAndDispatch(IChannelListener listener, Exception exception, Action dequeuedCallback, bool canDispatchOnThisThread)
        {
            SingletonChannelListener <IInputChannel, InputChannel, Message> listener2 = listener as SingletonChannelListener <IInputChannel, InputChannel, Message>;

            if (listener2 != null)
            {
                listener2.EnqueueAndDispatch(exception, dequeuedCallback, canDispatchOnThisThread);
            }
            else
            {
                SingletonChannelListener <IReplyChannel, ReplyChannel, RequestContext> listener3 = listener as SingletonChannelListener <IReplyChannel, ReplyChannel, RequestContext>;
                if (listener3 == null)
                {
                    throw Fx.AssertAndThrow("ReplyChannelDemuxer.EnqueueAndDispatch (false)");
                }
                listener3.EnqueueAndDispatch(exception, dequeuedCallback, canDispatchOnThisThread);
            }
        }