public static ResponseMessage DeserializeResponse( IEnumerable<byte> input )
        {
            ResponseMessage result;
            var error =
                new ResponseMessageSerializer(
                        Arrays<IFilterProvider<ResponseMessageSerializationFilter>>.Empty,
                        Arrays<IFilterProvider<SerializedMessageFilter<MessageSerializationContext>>>.Empty,
                        Arrays<IFilterProvider<SerializedMessageFilter<MessageDeserializationContext>>>.Empty,
                        Arrays<IFilterProvider<ResponseMessageDeserializationFilter>>.Empty,
                        null
                ).Deserialize( input, out result );
            if ( !error.IsSuccess )
            {
                throw error.ToException();
            }

            return result;
        }
        public static RpcOutputBuffer SerializeResponse( int messageId, RpcException exception )
        {
            var result = new RpcOutputBuffer( ChunkBuffer.CreateDefault() );
            var error =
                new ResponseMessageSerializer(
                        Arrays<IFilterProvider<ResponseMessageSerializationFilter>>.Empty,
                        Arrays<IFilterProvider<SerializedMessageFilter<MessageSerializationContext>>>.Empty,
                        Arrays<IFilterProvider<SerializedMessageFilter<MessageDeserializationContext>>>.Empty,
                        Arrays<IFilterProvider<ResponseMessageDeserializationFilter>>.Empty,
                        null
                ).Serialize( messageId, null, false, exception, result );
            if ( !error.IsSuccess )
            {
                throw error.ToException();
            }

            return result;
        }