/// <summary>
        /// Send a <paramref name="request "/>on the specified <paramref name="connector"/>
        /// and await a response
        /// </summary>
        public IGraphable SendReceive(ISendReceiveConnector connector, IGraphable request)
        {

            // Ensure the connector is open
            if (!connector.IsOpen())
                connector.Open();

            // Send the request
            ISendResult sendResult = connector.Send(request);

            // Was the send successful?
            if (sendResult.Code != ResultCode.Accepted &&
                sendResult.Code != ResultCode.AcceptedNonConformant)
                return null;

            // Await the response
            IReceiveResult receiveResult = connector.Receive(sendResult);

            // Debug information
            #if DEBUG
            foreach (var itm in receiveResult.Details)
                Trace.WriteLine(String.Format("{0}: {1} @ {2}", itm.Type, itm.Message, itm.Location));
            #endif
            // Structure
            return receiveResult.Structure;

        }
        /// <summary>
        /// Send a <paramref name="request "/>on the specified <paramref name="connector"/>
        /// and await a response
        /// </summary>
        public IGraphable SendReceive(ISendReceiveConnector connector, IGraphable request)
        {
            // Ensure the connector is open
            if (!connector.IsOpen())
            {
                connector.Open();
            }

            // Send the request
            ISendResult sendResult = connector.Send(request);

            // Was the send successful?
            if (sendResult.Code != ResultCode.Accepted &&
                sendResult.Code != ResultCode.AcceptedNonConformant)
            {
                return(null);
            }

            // Await the response
            IReceiveResult receiveResult = connector.Receive(sendResult);

            // Debug information
            #if DEBUG
            foreach (var itm in receiveResult.Details)
            {
                Trace.WriteLine(String.Format("{0}: {1} @ {2}", itm.Type, itm.Message, itm.Location));
            }
            #endif
            // Structure
            return(receiveResult.Structure);
        }