// WARNING: This file is machine generated by fidlgen.

// fidl_experiment = output_index_json

#include <lib/fidl/internal.h>

static const struct FidlCodedHandle Handlesocket2147483648notnullableTable;
static const struct FidlCodedHandle Handlehandle2147483648notnullableTable;
static const struct FidlCodedHandle Handlesocket3notnullableTable;
static const struct FidlCodedHandle Handlesocket2notnullableTable;
const struct FidlCodedUnion test_protocols_TheUnionTable;
const struct FidlCodedUnion test_protocols_TheUnionNullableRefTable;
static const struct FidlCodedHandle Protocol35test_protocols_DiscoverableProtocolnotnullableTable;
static const struct FidlCodedHandle Request0notnullableTable;
static const struct FidlCodedHandle Protocol35test_protocols_DiscoverableProtocolnullableTable;
static const struct FidlCodedHandle Request0nullableTable;
static const struct FidlCodedString StringunboundednotnullableTable;
const struct FidlCodedStruct test_protocols_WithErrorSyntax_ErrorAsEnum_ResponseTable;
const struct FidlCodedEnum test_protocols_ErrorEnumTable;
const struct FidlCodedStruct test_protocols_WithErrorSyntax_ErrorAsPrimitive_ResponseTable;
const struct FidlCodedStruct test_protocols_WithErrorSyntax_HandleInResult_ResponseTable;
const struct FidlCodedStruct test_protocols_WithErrorSyntax_ResponseAsStruct_ResponseTable;

static bool EnumValidatorFor_test_protocols_ErrorEnum(uint64_t v) {
  switch (v) {
    case 1u:
    case 2u:
      return true;
    default:
      return false;
  }
}
const struct FidlCodedEnum test_protocols_ErrorEnumTable = {
    .tag = kFidlTypeEnum,
    .name = "test.protocols/ErrorEnum",
    .underlying_type = kFidlCodedPrimitiveSubtype_Uint32,
    .strictness = kFidlStrictness_Strict,
    .validate = EnumValidatorFor_test_protocols_ErrorEnum,
};

const struct FidlCodedStruct test_protocols_ChannelProtocolEventARequestTable = {
    .tag = kFidlTypeStruct,
    .name = "test.protocols/ChannelProtocolEventARequest",
    .is_empty = kFidlEmpty_IsNotEmpty,
    .size_v2 = 16,
    .elements = NULL,
    .element_count = 0,
};

const struct FidlCodedStruct test_protocols_ChannelProtocolMethodARequestTable = {
    .tag = kFidlTypeStruct,
    .name = "test.protocols/ChannelProtocolMethodARequest",
    .is_empty = kFidlEmpty_IsNotEmpty,
    .size_v2 = 16,
    .elements = NULL,
    .element_count = 0,
};

const struct FidlCodedStruct test_protocols_ChannelProtocolMethodBRequestTable = {
    .tag = kFidlTypeStruct,
    .name = "test.protocols/ChannelProtocolMethodBRequest",
    .is_empty = kFidlEmpty_IsNotEmpty,
    .size_v2 = 16,
    .elements = NULL,
    .element_count = 0,
};

const struct FidlCodedStruct test_protocols_ChannelProtocolMethodBResponseTable = {
    .tag = kFidlTypeStruct,
    .name = "test.protocols/ChannelProtocolMethodBResponse",
    .is_empty = kFidlEmpty_IsNotEmpty,
    .size_v2 = 8,
    .elements = NULL,
    .element_count = 0,
};

static const struct FidlStructElement Fields49test_protocols_ChannelProtocolMutateSocketRequest[] = {
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_Resource,
            },
            .offset_v2 = 0,
            .field_type = (const fidl_type_t*)&Handlesocket2147483648notnullableTable,
        },
    },
};
const struct FidlCodedStruct test_protocols_ChannelProtocolMutateSocketRequestTable = {
    .tag = kFidlTypeStruct,
    .name = "test.protocols/ChannelProtocolMutateSocketRequest",
    .is_empty = kFidlEmpty_IsNotEmpty,
    .size_v2 = 4,
    .elements = Fields49test_protocols_ChannelProtocolMutateSocketRequest,
    .element_count = 1,
};

static const struct FidlStructElement Fields50test_protocols_ChannelProtocolMutateSocketResponse[] = {
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_Resource,
            },
            .offset_v2 = 0,
            .field_type = (const fidl_type_t*)&Handlesocket2147483648notnullableTable,
        },
    },
};
const struct FidlCodedStruct test_protocols_ChannelProtocolMutateSocketResponseTable = {
    .tag = kFidlTypeStruct,
    .name = "test.protocols/ChannelProtocolMutateSocketResponse",
    .is_empty = kFidlEmpty_IsNotEmpty,
    .size_v2 = 4,
    .elements = Fields50test_protocols_ChannelProtocolMutateSocketResponse,
    .element_count = 1,
};

static const struct FidlStructElement Fields47test_protocols_ChannelProtocolTakeHandleRequest[] = {
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_Resource,
            },
            .offset_v2 = 0,
            .field_type = (const fidl_type_t*)&Handlehandle2147483648notnullableTable,
        },
    },
};
const struct FidlCodedStruct test_protocols_ChannelProtocolTakeHandleRequestTable = {
    .tag = kFidlTypeStruct,
    .name = "test.protocols/ChannelProtocolTakeHandleRequest",
    .is_empty = kFidlEmpty_IsNotEmpty,
    .size_v2 = 4,
    .elements = Fields47test_protocols_ChannelProtocolTakeHandleRequest,
    .element_count = 1,
};

static const struct FidlStructElement Fields49test_protocols_HandleRightsProtocolAnEventRequest[] = {
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_Resource,
            },
            .offset_v2 = 0,
            .field_type = (const fidl_type_t*)&Handlesocket3notnullableTable,
        },
    },
};
const struct FidlCodedStruct test_protocols_HandleRightsProtocolAnEventRequestTable = {
    .tag = kFidlTypeStruct,
    .name = "test.protocols/HandleRightsProtocolAnEventRequest",
    .is_empty = kFidlEmpty_IsNotEmpty,
    .size_v2 = 4,
    .elements = Fields49test_protocols_HandleRightsProtocolAnEventRequest,
    .element_count = 1,
};

static const struct FidlStructElement Fields58test_protocols_HandleRightsProtocolNoResponseMethodRequest[] = {
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_Resource,
            },
            .offset_v2 = 0,
            .field_type = (const fidl_type_t*)&Handlesocket3notnullableTable,
        },
    },
};
const struct FidlCodedStruct test_protocols_HandleRightsProtocolNoResponseMethodRequestTable = {
    .tag = kFidlTypeStruct,
    .name = "test.protocols/HandleRightsProtocolNoResponseMethodRequest",
    .is_empty = kFidlEmpty_IsNotEmpty,
    .size_v2 = 4,
    .elements = Fields58test_protocols_HandleRightsProtocolNoResponseMethodRequest,
    .element_count = 1,
};

static const struct FidlStructElement Fields56test_protocols_HandleRightsProtocolResponseMethodRequest[] = {
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_Resource,
            },
            .offset_v2 = 0,
            .field_type = (const fidl_type_t*)&Handlesocket3notnullableTable,
        },
    },
};
const struct FidlCodedStruct test_protocols_HandleRightsProtocolResponseMethodRequestTable = {
    .tag = kFidlTypeStruct,
    .name = "test.protocols/HandleRightsProtocolResponseMethodRequest",
    .is_empty = kFidlEmpty_IsNotEmpty,
    .size_v2 = 4,
    .elements = Fields56test_protocols_HandleRightsProtocolResponseMethodRequest,
    .element_count = 1,
};

static const struct FidlStructElement Fields57test_protocols_HandleRightsProtocolResponseMethodResponse[] = {
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_Resource,
            },
            .offset_v2 = 0,
            .field_type = (const fidl_type_t*)&Handlesocket2notnullableTable,
        },
    },
};
const struct FidlCodedStruct test_protocols_HandleRightsProtocolResponseMethodResponseTable = {
    .tag = kFidlTypeStruct,
    .name = "test.protocols/HandleRightsProtocolResponseMethodResponse",
    .is_empty = kFidlEmpty_IsNotEmpty,
    .size_v2 = 4,
    .elements = Fields57test_protocols_HandleRightsProtocolResponseMethodResponse,
    .element_count = 1,
};

static const struct FidlStructElement Fields43test_protocols_ManyParametersFifteenRequest[] = {
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_NotResource,
            },
            .offset_v2 = 0,
            .field_type = (const fidl_type_t*)&fidl_internal_kBoolTable,
        },
    },
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_NotResource,
            },
            .offset_v2 = 1,
            .field_type = (const fidl_type_t*)&fidl_internal_kBoolTable,
        },
    },
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_NotResource,
            },
            .offset_v2 = 2,
            .field_type = (const fidl_type_t*)&fidl_internal_kBoolTable,
        },
    },
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_NotResource,
            },
            .offset_v2 = 3,
            .field_type = (const fidl_type_t*)&fidl_internal_kBoolTable,
        },
    },
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_NotResource,
            },
            .offset_v2 = 4,
            .field_type = (const fidl_type_t*)&fidl_internal_kBoolTable,
        },
    },
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_NotResource,
            },
            .offset_v2 = 5,
            .field_type = (const fidl_type_t*)&fidl_internal_kBoolTable,
        },
    },
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_NotResource,
            },
            .offset_v2 = 6,
            .field_type = (const fidl_type_t*)&fidl_internal_kBoolTable,
        },
    },
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_NotResource,
            },
            .offset_v2 = 7,
            .field_type = (const fidl_type_t*)&fidl_internal_kBoolTable,
        },
    },
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_NotResource,
            },
            .offset_v2 = 8,
            .field_type = (const fidl_type_t*)&fidl_internal_kBoolTable,
        },
    },
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_NotResource,
            },
            .offset_v2 = 9,
            .field_type = (const fidl_type_t*)&fidl_internal_kBoolTable,
        },
    },
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_NotResource,
            },
            .offset_v2 = 10,
            .field_type = (const fidl_type_t*)&fidl_internal_kBoolTable,
        },
    },
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_NotResource,
            },
            .offset_v2 = 11,
            .field_type = (const fidl_type_t*)&fidl_internal_kBoolTable,
        },
    },
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_NotResource,
            },
            .offset_v2 = 12,
            .field_type = (const fidl_type_t*)&fidl_internal_kBoolTable,
        },
    },
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_NotResource,
            },
            .offset_v2 = 13,
            .field_type = (const fidl_type_t*)&fidl_internal_kBoolTable,
        },
    },
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_NotResource,
            },
            .offset_v2 = 14,
            .field_type = (const fidl_type_t*)&fidl_internal_kBoolTable,
        },
    },
};
const struct FidlCodedStruct test_protocols_ManyParametersFifteenRequestTable = {
    .tag = kFidlTypeStruct,
    .name = "test.protocols/ManyParametersFifteenRequest",
    .is_empty = kFidlEmpty_IsNotEmpty,
    .size_v2 = 15,
    .elements = Fields43test_protocols_ManyParametersFifteenRequest,
    .element_count = 15,
};

static const struct FidlStructElement Fields48test_protocols_MethodWithUnionUnionMethodRequest[] = {
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_NotResource,
            },
            .offset_v2 = 0,
            .field_type = (const fidl_type_t*)&test_protocols_TheUnionTable,
        },
    },
};
const struct FidlCodedStruct test_protocols_MethodWithUnionUnionMethodRequestTable = {
    .tag = kFidlTypeStruct,
    .name = "test.protocols/MethodWithUnionUnionMethodRequest",
    .is_empty = kFidlEmpty_IsNotEmpty,
    .size_v2 = 16,
    .elements = Fields48test_protocols_MethodWithUnionUnionMethodRequest,
    .element_count = 1,
};

static const struct FidlStructElement Fields49test_protocols_MethodWithUnionUnionMethodResponse[] = {
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_NotResource,
            },
            .offset_v2 = 0,
            .field_type = (const fidl_type_t*)&test_protocols_TheUnionNullableRefTable,
        },
    },
};
const struct FidlCodedStruct test_protocols_MethodWithUnionUnionMethodResponseTable = {
    .tag = kFidlTypeStruct,
    .name = "test.protocols/MethodWithUnionUnionMethodResponse",
    .is_empty = kFidlEmpty_IsNotEmpty,
    .size_v2 = 16,
    .elements = Fields49test_protocols_MethodWithUnionUnionMethodResponse,
    .element_count = 1,
};

static const struct FidlStructElement Fields27test_protocols_ProtocolEnds[] = {
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_Resource,
            },
            .offset_v2 = 0,
            .field_type = (const fidl_type_t*)&Protocol35test_protocols_DiscoverableProtocolnotnullableTable,
        },
    },
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_Resource,
            },
            .offset_v2 = 4,
            .field_type = (const fidl_type_t*)&Request0notnullableTable,
        },
    },
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_Resource,
            },
            .offset_v2 = 8,
            .field_type = (const fidl_type_t*)&Protocol35test_protocols_DiscoverableProtocolnullableTable,
        },
    },
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_Resource,
            },
            .offset_v2 = 12,
            .field_type = (const fidl_type_t*)&Request0nullableTable,
        },
    },
};
const struct FidlCodedStruct test_protocols_ProtocolEndsTable = {
    .tag = kFidlTypeStruct,
    .name = "test.protocols/ProtocolEnds",
    .is_empty = kFidlEmpty_IsNotEmpty,
    .size_v2 = 16,
    .elements = Fields27test_protocols_ProtocolEnds,
    .element_count = 4,
};

const struct FidlCodedStruct test_protocols_SyscallProtocolMethodCRequestTable = {
    .tag = kFidlTypeStruct,
    .name = "test.protocols/SyscallProtocolMethodCRequest",
    .is_empty = kFidlEmpty_IsNotEmpty,
    .size_v2 = 16,
    .elements = NULL,
    .element_count = 0,
};

static const struct FidlStructElement Fields73test_protocols_WithAndWithoutRequestResponseNoRequestWithResponseResponse[] = {
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_NotResource,
            },
            .offset_v2 = 0,
            .field_type = (const fidl_type_t*)&StringunboundednotnullableTable,
        },
    },
};
const struct FidlCodedStruct test_protocols_WithAndWithoutRequestResponseNoRequestWithResponseResponseTable = {
    .tag = kFidlTypeStruct,
    .name = "test.protocols/WithAndWithoutRequestResponseNoRequestWithResponseResponse",
    .is_empty = kFidlEmpty_IsNotEmpty,
    .size_v2 = 16,
    .elements = Fields73test_protocols_WithAndWithoutRequestResponseNoRequestWithResponseResponse,
    .element_count = 1,
};

static const struct FidlStructElement Fields65test_protocols_WithAndWithoutRequestResponseOnWithResponseRequest[] = {
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_NotResource,
            },
            .offset_v2 = 0,
            .field_type = (const fidl_type_t*)&StringunboundednotnullableTable,
        },
    },
};
const struct FidlCodedStruct test_protocols_WithAndWithoutRequestResponseOnWithResponseRequestTable = {
    .tag = kFidlTypeStruct,
    .name = "test.protocols/WithAndWithoutRequestResponseOnWithResponseRequest",
    .is_empty = kFidlEmpty_IsNotEmpty,
    .size_v2 = 16,
    .elements = Fields65test_protocols_WithAndWithoutRequestResponseOnWithResponseRequest,
    .element_count = 1,
};

static const struct FidlStructElement Fields75test_protocols_WithAndWithoutRequestResponseWithRequestEmptyResponseRequest[] = {
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_NotResource,
            },
            .offset_v2 = 0,
            .field_type = (const fidl_type_t*)&StringunboundednotnullableTable,
        },
    },
};
const struct FidlCodedStruct test_protocols_WithAndWithoutRequestResponseWithRequestEmptyResponseRequestTable = {
    .tag = kFidlTypeStruct,
    .name = "test.protocols/WithAndWithoutRequestResponseWithRequestEmptyResponseRequest",
    .is_empty = kFidlEmpty_IsNotEmpty,
    .size_v2 = 16,
    .elements = Fields75test_protocols_WithAndWithoutRequestResponseWithRequestEmptyResponseRequest,
    .element_count = 1,
};

static const struct FidlStructElement Fields72test_protocols_WithAndWithoutRequestResponseWithRequestNoResponseRequest[] = {
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_NotResource,
            },
            .offset_v2 = 0,
            .field_type = (const fidl_type_t*)&StringunboundednotnullableTable,
        },
    },
};
const struct FidlCodedStruct test_protocols_WithAndWithoutRequestResponseWithRequestNoResponseRequestTable = {
    .tag = kFidlTypeStruct,
    .name = "test.protocols/WithAndWithoutRequestResponseWithRequestNoResponseRequest",
    .is_empty = kFidlEmpty_IsNotEmpty,
    .size_v2 = 16,
    .elements = Fields72test_protocols_WithAndWithoutRequestResponseWithRequestNoResponseRequest,
    .element_count = 1,
};

static const struct FidlStructElement Fields74test_protocols_WithAndWithoutRequestResponseWithRequestWithResponseRequest[] = {
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_NotResource,
            },
            .offset_v2 = 0,
            .field_type = (const fidl_type_t*)&StringunboundednotnullableTable,
        },
    },
};
const struct FidlCodedStruct test_protocols_WithAndWithoutRequestResponseWithRequestWithResponseRequestTable = {
    .tag = kFidlTypeStruct,
    .name = "test.protocols/WithAndWithoutRequestResponseWithRequestWithResponseRequest",
    .is_empty = kFidlEmpty_IsNotEmpty,
    .size_v2 = 16,
    .elements = Fields74test_protocols_WithAndWithoutRequestResponseWithRequestWithResponseRequest,
    .element_count = 1,
};

static const struct FidlStructElement Fields75test_protocols_WithAndWithoutRequestResponseWithRequestWithResponseResponse[] = {
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_NotResource,
            },
            .offset_v2 = 0,
            .field_type = (const fidl_type_t*)&StringunboundednotnullableTable,
        },
    },
};
const struct FidlCodedStruct test_protocols_WithAndWithoutRequestResponseWithRequestWithResponseResponseTable = {
    .tag = kFidlTypeStruct,
    .name = "test.protocols/WithAndWithoutRequestResponseWithRequestWithResponseResponse",
    .is_empty = kFidlEmpty_IsNotEmpty,
    .size_v2 = 16,
    .elements = Fields75test_protocols_WithAndWithoutRequestResponseWithRequestWithResponseResponse,
    .element_count = 1,
};

const struct FidlCodedStruct test_protocols_WithErrorSyntax_ErrorAsEnum_ResponseTable = {
    .tag = kFidlTypeStruct,
    .name = "test.protocols/WithErrorSyntax_ErrorAsEnum_Response",
    .is_empty = kFidlEmpty_IsEmpty,
    .size_v2 = 1,
    .elements = NULL,
    .element_count = 0,
};

const struct FidlCodedStruct test_protocols_WithErrorSyntax_ErrorAsPrimitive_ResponseTable = {
    .tag = kFidlTypeStruct,
    .name = "test.protocols/WithErrorSyntax_ErrorAsPrimitive_Response",
    .is_empty = kFidlEmpty_IsEmpty,
    .size_v2 = 1,
    .elements = NULL,
    .element_count = 0,
};

static const struct FidlStructElement Fields54test_protocols_WithErrorSyntax_HandleInResult_Response[] = {
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_Resource,
            },
            .offset_v2 = 0,
            .field_type = (const fidl_type_t*)&Handlehandle2147483648notnullableTable,
        },
    },
};
const struct FidlCodedStruct test_protocols_WithErrorSyntax_HandleInResult_ResponseTable = {
    .tag = kFidlTypeStruct,
    .name = "test.protocols/WithErrorSyntax_HandleInResult_Response",
    .is_empty = kFidlEmpty_IsNotEmpty,
    .size_v2 = 4,
    .elements = Fields54test_protocols_WithErrorSyntax_HandleInResult_Response,
    .element_count = 1,
};

const struct FidlCodedStruct test_protocols_WithErrorSyntax_ResponseAsStruct_ResponseTable = {
    .tag = kFidlTypeStruct,
    .name = "test.protocols/WithErrorSyntax_ResponseAsStruct_Response",
    .is_empty = kFidlEmpty_IsNotEmpty,
    .size_v2 = 24,
    .elements = NULL,
    .element_count = 0,
};

static const struct FidlStructElement Fields48test_protocols_WithProtocolEndsClientEndsRequest[] = {
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_Resource,
            },
            .offset_v2 = 0,
            .field_type = (const fidl_type_t*)&Protocol35test_protocols_DiscoverableProtocolnotnullableTable,
        },
    },
};
const struct FidlCodedStruct test_protocols_WithProtocolEndsClientEndsRequestTable = {
    .tag = kFidlTypeStruct,
    .name = "test.protocols/WithProtocolEndsClientEndsRequest",
    .is_empty = kFidlEmpty_IsNotEmpty,
    .size_v2 = 4,
    .elements = Fields48test_protocols_WithProtocolEndsClientEndsRequest,
    .element_count = 1,
};

static const struct FidlStructElement Fields49test_protocols_WithProtocolEndsClientEndsResponse[] = {
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_Resource,
            },
            .offset_v2 = 0,
            .field_type = (const fidl_type_t*)&Protocol35test_protocols_DiscoverableProtocolnullableTable,
        },
    },
};
const struct FidlCodedStruct test_protocols_WithProtocolEndsClientEndsResponseTable = {
    .tag = kFidlTypeStruct,
    .name = "test.protocols/WithProtocolEndsClientEndsResponse",
    .is_empty = kFidlEmpty_IsNotEmpty,
    .size_v2 = 4,
    .elements = Fields49test_protocols_WithProtocolEndsClientEndsResponse,
    .element_count = 1,
};

static const struct FidlStructElement Fields48test_protocols_WithProtocolEndsServerEndsRequest[] = {
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_Resource,
            },
            .offset_v2 = 0,
            .field_type = (const fidl_type_t*)&Request0nullableTable,
        },
    },
};
const struct FidlCodedStruct test_protocols_WithProtocolEndsServerEndsRequestTable = {
    .tag = kFidlTypeStruct,
    .name = "test.protocols/WithProtocolEndsServerEndsRequest",
    .is_empty = kFidlEmpty_IsNotEmpty,
    .size_v2 = 4,
    .elements = Fields48test_protocols_WithProtocolEndsServerEndsRequest,
    .element_count = 1,
};

static const struct FidlStructElement Fields49test_protocols_WithProtocolEndsServerEndsResponse[] = {
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_Resource,
            },
            .offset_v2 = 0,
            .field_type = (const fidl_type_t*)&Request0notnullableTable,
        },
    },
};
const struct FidlCodedStruct test_protocols_WithProtocolEndsServerEndsResponseTable = {
    .tag = kFidlTypeStruct,
    .name = "test.protocols/WithProtocolEndsServerEndsResponse",
    .is_empty = kFidlEmpty_IsNotEmpty,
    .size_v2 = 4,
    .elements = Fields49test_protocols_WithProtocolEndsServerEndsResponse,
    .element_count = 1,
};

static const struct FidlStructElement Fields58test_protocols_WithProtocolEndsStructContainingEndsRequest[] = {
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_Resource,
            },
            .offset_v2 = 0,
            .field_type = (const fidl_type_t*)&Protocol35test_protocols_DiscoverableProtocolnotnullableTable,
        },
    },
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_Resource,
            },
            .offset_v2 = 4,
            .field_type = (const fidl_type_t*)&Request0notnullableTable,
        },
    },
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_Resource,
            },
            .offset_v2 = 8,
            .field_type = (const fidl_type_t*)&Protocol35test_protocols_DiscoverableProtocolnullableTable,
        },
    },
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_Resource,
            },
            .offset_v2 = 12,
            .field_type = (const fidl_type_t*)&Request0nullableTable,
        },
    },
};
const struct FidlCodedStruct test_protocols_WithProtocolEndsStructContainingEndsRequestTable = {
    .tag = kFidlTypeStruct,
    .name = "test.protocols/WithProtocolEndsStructContainingEndsRequest",
    .is_empty = kFidlEmpty_IsNotEmpty,
    .size_v2 = 16,
    .elements = Fields58test_protocols_WithProtocolEndsStructContainingEndsRequest,
    .element_count = 4,
};

static const struct FidlStructElement Fields59test_protocols_WithProtocolEndsStructContainingEndsResponse[] = {
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_Resource,
            },
            .offset_v2 = 0,
            .field_type = (const fidl_type_t*)&Protocol35test_protocols_DiscoverableProtocolnotnullableTable,
        },
    },
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_Resource,
            },
            .offset_v2 = 4,
            .field_type = (const fidl_type_t*)&Request0notnullableTable,
        },
    },
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_Resource,
            },
            .offset_v2 = 8,
            .field_type = (const fidl_type_t*)&Protocol35test_protocols_DiscoverableProtocolnullableTable,
        },
    },
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_Resource,
            },
            .offset_v2 = 12,
            .field_type = (const fidl_type_t*)&Request0nullableTable,
        },
    },
};
const struct FidlCodedStruct test_protocols_WithProtocolEndsStructContainingEndsResponseTable = {
    .tag = kFidlTypeStruct,
    .name = "test.protocols/WithProtocolEndsStructContainingEndsResponse",
    .is_empty = kFidlEmpty_IsNotEmpty,
    .size_v2 = 16,
    .elements = Fields59test_protocols_WithProtocolEndsStructContainingEndsResponse,
    .element_count = 4,
};

static const struct FidlUnionField Fields23test_protocols_TheUnion[] = {
    {.type = (const fidl_type_t*)&fidl_internal_kUint32Table},
};
const struct FidlCodedUnion test_protocols_TheUnionTable = {
    .tag = kFidlTypeUnion,
    .name = "test.protocols/TheUnion",
    .strictness = kFidlStrictness_Flexible,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nonnullable,
    .fields = Fields23test_protocols_TheUnion,
    .field_count = 1,
};
const struct FidlCodedUnion test_protocols_TheUnionNullableRefTable = {
    .tag = kFidlTypeUnion,
    .name = "test.protocols/TheUnion",
    .strictness = kFidlStrictness_Flexible,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nullable,
    .fields = Fields23test_protocols_TheUnion,
    .field_count = 1,
};

static const struct FidlUnionField Fields49test_protocols_WithErrorSyntax_ErrorAsEnum_Result[] = {
    {.type = (const fidl_type_t*)&test_protocols_WithErrorSyntax_ErrorAsEnum_ResponseTable},
    {.type = (const fidl_type_t*)&test_protocols_ErrorEnumTable},
};
const struct FidlCodedUnion test_protocols_WithErrorSyntax_ErrorAsEnum_ResultTable = {
    .tag = kFidlTypeUnion,
    .name = "test.protocols/WithErrorSyntax_ErrorAsEnum_Result",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nonnullable,
    .fields = Fields49test_protocols_WithErrorSyntax_ErrorAsEnum_Result,
    .field_count = 2,
};
const struct FidlCodedUnion test_protocols_WithErrorSyntax_ErrorAsEnum_ResultNullableRefTable = {
    .tag = kFidlTypeUnion,
    .name = "test.protocols/WithErrorSyntax_ErrorAsEnum_Result",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nullable,
    .fields = Fields49test_protocols_WithErrorSyntax_ErrorAsEnum_Result,
    .field_count = 2,
};

static const struct FidlUnionField Fields54test_protocols_WithErrorSyntax_ErrorAsPrimitive_Result[] = {
    {.type = (const fidl_type_t*)&test_protocols_WithErrorSyntax_ErrorAsPrimitive_ResponseTable},
    {.type = (const fidl_type_t*)&fidl_internal_kUint32Table},
};
const struct FidlCodedUnion test_protocols_WithErrorSyntax_ErrorAsPrimitive_ResultTable = {
    .tag = kFidlTypeUnion,
    .name = "test.protocols/WithErrorSyntax_ErrorAsPrimitive_Result",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nonnullable,
    .fields = Fields54test_protocols_WithErrorSyntax_ErrorAsPrimitive_Result,
    .field_count = 2,
};
const struct FidlCodedUnion test_protocols_WithErrorSyntax_ErrorAsPrimitive_ResultNullableRefTable = {
    .tag = kFidlTypeUnion,
    .name = "test.protocols/WithErrorSyntax_ErrorAsPrimitive_Result",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nullable,
    .fields = Fields54test_protocols_WithErrorSyntax_ErrorAsPrimitive_Result,
    .field_count = 2,
};

static const struct FidlUnionField Fields52test_protocols_WithErrorSyntax_HandleInResult_Result[] = {
    {.type = (const fidl_type_t*)&test_protocols_WithErrorSyntax_HandleInResult_ResponseTable},
    {.type = (const fidl_type_t*)&fidl_internal_kUint32Table},
};
const struct FidlCodedUnion test_protocols_WithErrorSyntax_HandleInResult_ResultTable = {
    .tag = kFidlTypeUnion,
    .name = "test.protocols/WithErrorSyntax_HandleInResult_Result",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_Resource,
    .nullable = kFidlNullability_Nonnullable,
    .fields = Fields52test_protocols_WithErrorSyntax_HandleInResult_Result,
    .field_count = 2,
};
const struct FidlCodedUnion test_protocols_WithErrorSyntax_HandleInResult_ResultNullableRefTable = {
    .tag = kFidlTypeUnion,
    .name = "test.protocols/WithErrorSyntax_HandleInResult_Result",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_Resource,
    .nullable = kFidlNullability_Nullable,
    .fields = Fields52test_protocols_WithErrorSyntax_HandleInResult_Result,
    .field_count = 2,
};

static const struct FidlUnionField Fields54test_protocols_WithErrorSyntax_ResponseAsStruct_Result[] = {
    {.type = (const fidl_type_t*)&test_protocols_WithErrorSyntax_ResponseAsStruct_ResponseTable},
    {.type = (const fidl_type_t*)&fidl_internal_kUint32Table},
};
const struct FidlCodedUnion test_protocols_WithErrorSyntax_ResponseAsStruct_ResultTable = {
    .tag = kFidlTypeUnion,
    .name = "test.protocols/WithErrorSyntax_ResponseAsStruct_Result",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nonnullable,
    .fields = Fields54test_protocols_WithErrorSyntax_ResponseAsStruct_Result,
    .field_count = 2,
};
const struct FidlCodedUnion test_protocols_WithErrorSyntax_ResponseAsStruct_ResultNullableRefTable = {
    .tag = kFidlTypeUnion,
    .name = "test.protocols/WithErrorSyntax_ResponseAsStruct_Result",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nullable,
    .fields = Fields54test_protocols_WithErrorSyntax_ResponseAsStruct_Result,
    .field_count = 2,
};

static const struct FidlCodedString StringunboundednotnullableTable = {
    .tag = kFidlTypeString,
    .max_size = 4294967295,
    .nullable = kFidlNullability_Nonnullable,
};

static const struct FidlCodedHandle Handlesocket2147483648notnullableTable = {
    .tag = kFidlTypeHandle,
    .handle_subtype = ZX_OBJ_TYPE_SOCKET,
    .handle_rights = 0x80000000,
    .nullable = kFidlNullability_Nonnullable,
};

static const struct FidlCodedHandle Handlehandle2147483648notnullableTable = {
    .tag = kFidlTypeHandle,
    .handle_subtype = ZX_OBJ_TYPE_NONE,
    .handle_rights = 0x80000000,
    .nullable = kFidlNullability_Nonnullable,
};

static const struct FidlCodedHandle Handlesocket3notnullableTable = {
    .tag = kFidlTypeHandle,
    .handle_subtype = ZX_OBJ_TYPE_SOCKET,
    .handle_rights = 0x3,
    .nullable = kFidlNullability_Nonnullable,
};

static const struct FidlCodedHandle Handlesocket2notnullableTable = {
    .tag = kFidlTypeHandle,
    .handle_subtype = ZX_OBJ_TYPE_SOCKET,
    .handle_rights = 0x2,
    .nullable = kFidlNullability_Nonnullable,
};

static const struct FidlCodedHandle Protocol35test_protocols_DiscoverableProtocolnotnullableTable = {
    .tag = kFidlTypeHandle,
    .handle_subtype = ZX_OBJ_TYPE_CHANNEL,
    .handle_rights = ZX_DEFAULT_CHANNEL_RIGHTS,
    .nullable = kFidlNullability_Nonnullable,
};

static const struct FidlCodedHandle Request0notnullableTable = {
    .tag = kFidlTypeHandle,
    .handle_subtype = ZX_OBJ_TYPE_CHANNEL,
    .handle_rights = ZX_DEFAULT_CHANNEL_RIGHTS,
    .nullable = kFidlNullability_Nonnullable,
};

static const struct FidlCodedHandle Protocol35test_protocols_DiscoverableProtocolnullableTable = {
    .tag = kFidlTypeHandle,
    .handle_subtype = ZX_OBJ_TYPE_CHANNEL,
    .handle_rights = ZX_DEFAULT_CHANNEL_RIGHTS,
    .nullable = kFidlNullability_Nullable,
};

static const struct FidlCodedHandle Request0nullableTable = {
    .tag = kFidlTypeHandle,
    .handle_subtype = ZX_OBJ_TYPE_CHANNEL,
    .handle_rights = ZX_DEFAULT_CHANNEL_RIGHTS,
    .nullable = kFidlNullability_Nullable,
};
