internal ResultResponse(ResponseFrame frame) : base(frame)
        {
            //Handle result flags
            if ((frame.Header.Flags & FrameHeader.HeaderFlag.Warning) != 0)
            {
                Warnings = BeBinaryReader.ReadStringList();
            }
            if ((frame.Header.Flags & FrameHeader.HeaderFlag.CustomPayload) != 0)
            {
                CustomPayload = BeBinaryReader.ReadBytesMap();
            }

            Kind = (ResultResponseKind)BeBinaryReader.ReadInt32();
            switch (Kind)
            {
            case ResultResponseKind.Void:
                Output = new OutputVoid(TraceId);
                break;

            case ResultResponseKind.Rows:
                Output = new OutputRows(frame.Header.Version, BeBinaryReader, TraceId);
                break;

            case ResultResponseKind.SetKeyspace:
                Output = new OutputSetKeyspace(BeBinaryReader.ReadString());
                break;

            case ResultResponseKind.Prepared:
                Output = new OutputPrepared(frame.Header.Version, BeBinaryReader);
                break;

            case ResultResponseKind.SchemaChange:
                Output = new OutputSchemaChange(BeBinaryReader, TraceId);
                break;

            default:
                throw new DriverInternalError("Unknown ResultResponseKind Type");
            }
        }