/// <summary>
        /// Starts the channel and initializes the MessageDispatcher.
        /// </summary>
        /// <param name="messageProtocolType">The type of message protocol used by the channel.</param>
        public void Start(MessageProtocolType messageProtocolType)
        {
            IMessageSerializer messageSerializer = null;
            if (messageProtocolType == MessageProtocolType.LanguageServer)
            {
                messageSerializer = new JsonRpcMessageSerializer();
            }
            else
            {
                messageSerializer = new V8MessageSerializer();
            }

            this.Initialize(messageSerializer);

            if (this.MessageDispatcher == null)
            {
                this.MessageDispatcher =
                    new MessageDispatcher(
                        this.MessageReader,
                        this.MessageWriter);

                this.MessageDispatcher.Start();
            }
        }