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

#include <lib/fidl/internal.h>


__LOCAL extern const struct FidlCodedBits zx_rightsTable;
__LOCAL extern const struct FidlCodedEnum zx_obj_typeTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_WithProtocolEndsServerEndsTopResponseTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_WithProtocolEndsServerEndsRequestTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_WithProtocolEndsClientEndsTopResponseTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_WithProtocolEndsClientEndsRequestTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_WithErrorSyntax_ResponseAsStruct_ResponseTable;
__LOCAL extern const struct FidlCodedXUnion test_protocols_WithErrorSyntax_ResponseAsStruct_ResultTable;
__LOCAL extern const struct FidlCodedXUnion test_protocols_WithErrorSyntax_ResponseAsStruct_ResultNullableRefTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_WithErrorSyntaxResponseAsStructTopResponseTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_WithErrorSyntax_HandleInResult_ResponseTable;
__LOCAL extern const struct FidlCodedXUnion test_protocols_WithErrorSyntax_HandleInResult_ResultTable;
__LOCAL extern const struct FidlCodedXUnion test_protocols_WithErrorSyntax_HandleInResult_ResultNullableRefTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_WithErrorSyntaxHandleInResultTopResponseTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_WithErrorSyntax_ErrorAsPrimitive_ResponseTable;
__LOCAL extern const struct FidlCodedXUnion test_protocols_WithErrorSyntax_ErrorAsPrimitive_ResultTable;
__LOCAL extern const struct FidlCodedXUnion test_protocols_WithErrorSyntax_ErrorAsPrimitive_ResultNullableRefTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_WithErrorSyntaxErrorAsPrimitiveTopResponseTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_WithErrorSyntax_ErrorAsEnum_ResponseTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_WithAndWithoutRequestResponseWithRequestWithResponseTopResponseTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_WithAndWithoutRequestResponseWithRequestWithResponseRequestTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_WithAndWithoutRequestResponseWithRequestNoResponseRequestTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_WithAndWithoutRequestResponseWithRequestEmptyResponseRequestTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_WithAndWithoutRequestResponseOnWithResponseRequestTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_WithAndWithoutRequestResponseNoRequestWithResponseTopResponseTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_WithAndWithoutRequestResponseNoRequestWithResponseResponseMessageTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_WithAndWithoutRequestResponseWithRequestNoResponseRequestMessageTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_WithAndWithoutRequestResponseWithRequestEmptyResponseRequestMessageTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_WithAndWithoutRequestResponseWithRequestWithResponseRequestMessageTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_WithAndWithoutRequestResponseWithRequestWithResponseResponseMessageTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_WithAndWithoutRequestResponseOnWithResponseEventMessageTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_TransitionalRequestTopResponseTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_TransitionalRequestRequestTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_TransitionalOneWayRequestTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_TransitionalEventRequestTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_TransitionalRequestRequestMessageTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_TransitionalRequestResponseMessageTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_TransitionalOneWayRequestMessageTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_TransitionalEventEventMessageTable;
__LOCAL extern const struct FidlCodedXUnion test_protocols_TheUnionTable;
__LOCAL extern const struct FidlCodedXUnion test_protocols_TheUnionNullableRefTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_MethodWithUnionUnionMethodRequestTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_SyscallProtocolMethodCRequestTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_SyscallProtocolMethodCRequestMessageTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_ProtocolEndsTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_WithProtocolEndsStructContainingEndsTopResponseTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_WithProtocolEndsStructContainingEndsRequestTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_WithProtocolEndsClientEndsRequestMessageTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_WithProtocolEndsClientEndsResponseMessageTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_WithProtocolEndsServerEndsRequestMessageTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_WithProtocolEndsServerEndsResponseMessageTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_WithProtocolEndsStructContainingEndsRequestMessageTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_WithProtocolEndsStructContainingEndsResponseMessageTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_MethodWithUnionUnionMethodTopResponseTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_MethodWithUnionUnionMethodRequestMessageTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_MethodWithUnionUnionMethodResponseMessageTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_ManyParametersFifteenRequestTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_ManyParametersFifteenRequestMessageTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_HandleRightsProtocolResponseMethodTopResponseTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_HandleRightsProtocolResponseMethodRequestTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_HandleRightsProtocolNoResponseMethodRequestTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_HandleRightsProtocolAnEventRequestTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_HandleRightsProtocolNoResponseMethodRequestMessageTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_HandleRightsProtocolResponseMethodRequestMessageTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_HandleRightsProtocolResponseMethodResponseMessageTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_HandleRightsProtocolAnEventEventMessageTable;
__LOCAL extern const struct FidlCodedEnum test_protocols_ErrorEnumTable;
__LOCAL extern const struct FidlCodedXUnion test_protocols_WithErrorSyntax_ErrorAsEnum_ResultTable;
__LOCAL extern const struct FidlCodedXUnion test_protocols_WithErrorSyntax_ErrorAsEnum_ResultNullableRefTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_WithErrorSyntaxErrorAsEnumTopResponseTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_WithErrorSyntaxResponseAsStructResponseMessageTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_WithErrorSyntaxErrorAsPrimitiveResponseMessageTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_WithErrorSyntaxErrorAsEnumResponseMessageTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_WithErrorSyntaxHandleInResultResponseMessageTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_ChannelProtocolTakeHandleRequestTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_ChannelProtocolMutateSocketTopResponseTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_ChannelProtocolMutateSocketRequestTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_ChannelProtocolMethodBTopResponseTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_ChannelProtocolMethodBRequestTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_ChannelProtocolMethodARequestTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_ChannelProtocolEventARequestTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_ChannelProtocolMethodARequestMessageTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_ChannelProtocolEventAEventMessageTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_ChannelProtocolMethodBRequestMessageTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_ChannelProtocolMethodBResponseMessageTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_ChannelProtocolTakeHandleRequestMessageTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_ChannelProtocolMutateSocketRequestMessageTable;
__LOCAL extern const struct FidlCodedStruct test_protocols_ChannelProtocolMutateSocketResponseMessageTable;


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

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

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 Protocol35test_protocols_DiscoverableProtocolnonnullableTable = {.tag=kFidlTypeHandle, .handle_subtype=ZX_OBJ_TYPE_CHANNEL, .handle_rights=ZX_DEFAULT_CHANNEL_RIGHTS, .nullable=kFidlNullability_Nonnullable};

static const struct FidlCodedHandle Handlehandle2147483648nonnullableTable = {.tag=kFidlTypeHandle, .handle_subtype=ZX_OBJ_TYPE_NONE, .handle_rights=2147483648u, .nullable=kFidlNullability_Nonnullable};

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

static const struct FidlCodedHandle Handlesocket2nonnullableTable = {.tag=kFidlTypeHandle, .handle_subtype=ZX_OBJ_TYPE_SOCKET, .handle_rights=2u, .nullable=kFidlNullability_Nonnullable};

static const struct FidlCodedHandle Handlesocket3nonnullableTable = {.tag=kFidlTypeHandle, .handle_subtype=ZX_OBJ_TYPE_SOCKET, .handle_rights=3u, .nullable=kFidlNullability_Nonnullable};

static const struct FidlCodedHandle Handlesocket2147483648nonnullableTable = {.tag=kFidlTypeHandle, .handle_subtype=ZX_OBJ_TYPE_SOCKET, .handle_rights=2147483648u, .nullable=kFidlNullability_Nonnullable};


static const struct FidlStructElement Fields52test_protocols_WithProtocolEndsServerEndsTopResponse[] = {
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_Resource},.offset_v2=0u, .field_type=(fidl_type_t*)(&Request35test_protocols_DiscoverableProtocolnonnullableTable)}}
};
const struct FidlCodedStruct test_protocols_WithProtocolEndsServerEndsTopResponseTable = {.tag=kFidlTypeStruct, .contains_envelope=kFidlContainsEnvelope_DoesNotContainEnvelope, .is_empty=kFidlEmpty_IsNotEmpty, .elements=Fields52test_protocols_WithProtocolEndsServerEndsTopResponse, .element_count=1u, .size_v2=4u, .name="test.protocols/WithProtocolEndsServerEndsTopResponse"};

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

static const struct FidlStructElement Fields52test_protocols_WithProtocolEndsClientEndsTopResponse[] = {
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_Resource},.offset_v2=0u, .field_type=(fidl_type_t*)(&Protocol35test_protocols_DiscoverableProtocolnullableTable)}}
};
const struct FidlCodedStruct test_protocols_WithProtocolEndsClientEndsTopResponseTable = {.tag=kFidlTypeStruct, .contains_envelope=kFidlContainsEnvelope_DoesNotContainEnvelope, .is_empty=kFidlEmpty_IsNotEmpty, .elements=Fields52test_protocols_WithProtocolEndsClientEndsTopResponse, .element_count=1u, .size_v2=4u, .name="test.protocols/WithProtocolEndsClientEndsTopResponse"};

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

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

static const struct FidlXUnionField Fields54test_protocols_WithErrorSyntax_ResponseAsStruct_Result[] = {
    /*FidlXUnionField*/{.type=(fidl_type_t*)(&test_protocols_WithErrorSyntax_ResponseAsStruct_ResponseTable)},
    /*FidlXUnionField*/{.type=(fidl_type_t*)(&fidl_internal_kUint32Table)}
};
const struct FidlCodedXUnion test_protocols_WithErrorSyntax_ResponseAsStruct_ResultTable = {.tag=kFidlTypeXUnion, .field_count=2u, .fields=Fields54test_protocols_WithErrorSyntax_ResponseAsStruct_Result, .nullable=kFidlNullability_Nonnullable, .name="test.protocols/WithErrorSyntax_ResponseAsStruct_Result", .strictness=kFidlStrictness_Strict, .is_resource=kFidlIsResource_NotResource};
static const struct FidlXUnionField Fields65test_protocols_WithErrorSyntax_ResponseAsStruct_ResultNullableRef[] = {
    /*FidlXUnionField*/{.type=(fidl_type_t*)(&test_protocols_WithErrorSyntax_ResponseAsStruct_ResponseTable)},
    /*FidlXUnionField*/{.type=(fidl_type_t*)(&fidl_internal_kUint32Table)}
};
const struct FidlCodedXUnion test_protocols_WithErrorSyntax_ResponseAsStruct_ResultNullableRefTable = {.tag=kFidlTypeXUnion, .field_count=2u, .fields=Fields65test_protocols_WithErrorSyntax_ResponseAsStruct_ResultNullableRef, .nullable=kFidlNullability_Nullable, .name="test.protocols/WithErrorSyntax_ResponseAsStruct_Result", .strictness=kFidlStrictness_Strict, .is_resource=kFidlIsResource_NotResource};
static const struct FidlStructElement Fields57test_protocols_WithErrorSyntaxResponseAsStructTopResponse[] = {
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_NotResource},.offset_v2=0u, .field_type=(fidl_type_t*)(&test_protocols_WithErrorSyntax_ResponseAsStruct_ResultTable)}}
};
const struct FidlCodedStruct test_protocols_WithErrorSyntaxResponseAsStructTopResponseTable = {.tag=kFidlTypeStruct, .contains_envelope=kFidlContainsEnvelope_ContainsEnvelope, .is_empty=kFidlEmpty_IsNotEmpty, .elements=Fields57test_protocols_WithErrorSyntaxResponseAsStructTopResponse, .element_count=1u, .size_v2=16u, .name="test.protocols/WithErrorSyntaxResponseAsStructTopResponse"};

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

static const struct FidlXUnionField Fields52test_protocols_WithErrorSyntax_HandleInResult_Result[] = {
    /*FidlXUnionField*/{.type=(fidl_type_t*)(&test_protocols_WithErrorSyntax_HandleInResult_ResponseTable)},
    /*FidlXUnionField*/{.type=(fidl_type_t*)(&fidl_internal_kUint32Table)}
};
const struct FidlCodedXUnion test_protocols_WithErrorSyntax_HandleInResult_ResultTable = {.tag=kFidlTypeXUnion, .field_count=2u, .fields=Fields52test_protocols_WithErrorSyntax_HandleInResult_Result, .nullable=kFidlNullability_Nonnullable, .name="test.protocols/WithErrorSyntax_HandleInResult_Result", .strictness=kFidlStrictness_Strict, .is_resource=kFidlIsResource_Resource};
static const struct FidlXUnionField Fields63test_protocols_WithErrorSyntax_HandleInResult_ResultNullableRef[] = {
    /*FidlXUnionField*/{.type=(fidl_type_t*)(&test_protocols_WithErrorSyntax_HandleInResult_ResponseTable)},
    /*FidlXUnionField*/{.type=(fidl_type_t*)(&fidl_internal_kUint32Table)}
};
const struct FidlCodedXUnion test_protocols_WithErrorSyntax_HandleInResult_ResultNullableRefTable = {.tag=kFidlTypeXUnion, .field_count=2u, .fields=Fields63test_protocols_WithErrorSyntax_HandleInResult_ResultNullableRef, .nullable=kFidlNullability_Nullable, .name="test.protocols/WithErrorSyntax_HandleInResult_Result", .strictness=kFidlStrictness_Strict, .is_resource=kFidlIsResource_Resource};
static const struct FidlStructElement Fields55test_protocols_WithErrorSyntaxHandleInResultTopResponse[] = {
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_Resource},.offset_v2=0u, .field_type=(fidl_type_t*)(&test_protocols_WithErrorSyntax_HandleInResult_ResultTable)}}
};
const struct FidlCodedStruct test_protocols_WithErrorSyntaxHandleInResultTopResponseTable = {.tag=kFidlTypeStruct, .contains_envelope=kFidlContainsEnvelope_ContainsEnvelope, .is_empty=kFidlEmpty_IsNotEmpty, .elements=Fields55test_protocols_WithErrorSyntaxHandleInResultTopResponse, .element_count=1u, .size_v2=16u, .name="test.protocols/WithErrorSyntaxHandleInResultTopResponse"};

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

static const struct FidlXUnionField Fields54test_protocols_WithErrorSyntax_ErrorAsPrimitive_Result[] = {
    /*FidlXUnionField*/{.type=(fidl_type_t*)(&test_protocols_WithErrorSyntax_ErrorAsPrimitive_ResponseTable)},
    /*FidlXUnionField*/{.type=(fidl_type_t*)(&fidl_internal_kUint32Table)}
};
const struct FidlCodedXUnion test_protocols_WithErrorSyntax_ErrorAsPrimitive_ResultTable = {.tag=kFidlTypeXUnion, .field_count=2u, .fields=Fields54test_protocols_WithErrorSyntax_ErrorAsPrimitive_Result, .nullable=kFidlNullability_Nonnullable, .name="test.protocols/WithErrorSyntax_ErrorAsPrimitive_Result", .strictness=kFidlStrictness_Strict, .is_resource=kFidlIsResource_NotResource};
static const struct FidlXUnionField Fields65test_protocols_WithErrorSyntax_ErrorAsPrimitive_ResultNullableRef[] = {
    /*FidlXUnionField*/{.type=(fidl_type_t*)(&test_protocols_WithErrorSyntax_ErrorAsPrimitive_ResponseTable)},
    /*FidlXUnionField*/{.type=(fidl_type_t*)(&fidl_internal_kUint32Table)}
};
const struct FidlCodedXUnion test_protocols_WithErrorSyntax_ErrorAsPrimitive_ResultNullableRefTable = {.tag=kFidlTypeXUnion, .field_count=2u, .fields=Fields65test_protocols_WithErrorSyntax_ErrorAsPrimitive_ResultNullableRef, .nullable=kFidlNullability_Nullable, .name="test.protocols/WithErrorSyntax_ErrorAsPrimitive_Result", .strictness=kFidlStrictness_Strict, .is_resource=kFidlIsResource_NotResource};
static const struct FidlStructElement Fields57test_protocols_WithErrorSyntaxErrorAsPrimitiveTopResponse[] = {
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_NotResource},.offset_v2=0u, .field_type=(fidl_type_t*)(&test_protocols_WithErrorSyntax_ErrorAsPrimitive_ResultTable)}}
};
const struct FidlCodedStruct test_protocols_WithErrorSyntaxErrorAsPrimitiveTopResponseTable = {.tag=kFidlTypeStruct, .contains_envelope=kFidlContainsEnvelope_ContainsEnvelope, .is_empty=kFidlEmpty_IsNotEmpty, .elements=Fields57test_protocols_WithErrorSyntaxErrorAsPrimitiveTopResponse, .element_count=1u, .size_v2=16u, .name="test.protocols/WithErrorSyntaxErrorAsPrimitiveTopResponse"};

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

static const struct FidlStructElement Fields78test_protocols_WithAndWithoutRequestResponseWithRequestWithResponseTopResponse[] = {
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_NotResource},.offset_v2=0u, .field_type=(fidl_type_t*)(&String4294967295nonnullableTable)}}
};
const struct FidlCodedStruct test_protocols_WithAndWithoutRequestResponseWithRequestWithResponseTopResponseTable = {.tag=kFidlTypeStruct, .contains_envelope=kFidlContainsEnvelope_DoesNotContainEnvelope, .is_empty=kFidlEmpty_IsNotEmpty, .elements=Fields78test_protocols_WithAndWithoutRequestResponseWithRequestWithResponseTopResponse, .element_count=1u, .size_v2=16u, .name="test.protocols/WithAndWithoutRequestResponseWithRequestWithResponseTopResponse"};

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

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

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

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

static const struct FidlStructElement Fields76test_protocols_WithAndWithoutRequestResponseNoRequestWithResponseTopResponse[] = {
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_NotResource},.offset_v2=0u, .field_type=(fidl_type_t*)(&String4294967295nonnullableTable)}}
};
const struct FidlCodedStruct test_protocols_WithAndWithoutRequestResponseNoRequestWithResponseTopResponseTable = {.tag=kFidlTypeStruct, .contains_envelope=kFidlContainsEnvelope_DoesNotContainEnvelope, .is_empty=kFidlEmpty_IsNotEmpty, .elements=Fields76test_protocols_WithAndWithoutRequestResponseNoRequestWithResponseTopResponse, .element_count=1u, .size_v2=16u, .name="test.protocols/WithAndWithoutRequestResponseNoRequestWithResponseTopResponse"};

static const struct FidlStructElement Fields80test_protocols_WithAndWithoutRequestResponseNoRequestWithResponseResponseMessage[] = {
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_NotResource},.offset_v2=0u, .field_type=(fidl_type_t*)(&String4294967295nonnullableTable)}}
};
const struct FidlCodedStruct test_protocols_WithAndWithoutRequestResponseNoRequestWithResponseResponseMessageTable = {.tag=kFidlTypeStruct, .contains_envelope=kFidlContainsEnvelope_DoesNotContainEnvelope, .is_empty=kFidlEmpty_IsNotEmpty, .elements=Fields80test_protocols_WithAndWithoutRequestResponseNoRequestWithResponseResponseMessage, .element_count=1u, .size_v2=16u, .name="test.protocols/WithAndWithoutRequestResponseNoRequestWithResponseResponseMessage"};

static const struct FidlStructElement Fields79test_protocols_WithAndWithoutRequestResponseWithRequestNoResponseRequestMessage[] = {
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_NotResource},.offset_v2=0u, .field_type=(fidl_type_t*)(&String4294967295nonnullableTable)}}
};
const struct FidlCodedStruct test_protocols_WithAndWithoutRequestResponseWithRequestNoResponseRequestMessageTable = {.tag=kFidlTypeStruct, .contains_envelope=kFidlContainsEnvelope_DoesNotContainEnvelope, .is_empty=kFidlEmpty_IsNotEmpty, .elements=Fields79test_protocols_WithAndWithoutRequestResponseWithRequestNoResponseRequestMessage, .element_count=1u, .size_v2=16u, .name="test.protocols/WithAndWithoutRequestResponseWithRequestNoResponseRequestMessage"};

static const struct FidlStructElement Fields82test_protocols_WithAndWithoutRequestResponseWithRequestEmptyResponseRequestMessage[] = {
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_NotResource},.offset_v2=0u, .field_type=(fidl_type_t*)(&String4294967295nonnullableTable)}}
};
const struct FidlCodedStruct test_protocols_WithAndWithoutRequestResponseWithRequestEmptyResponseRequestMessageTable = {.tag=kFidlTypeStruct, .contains_envelope=kFidlContainsEnvelope_DoesNotContainEnvelope, .is_empty=kFidlEmpty_IsNotEmpty, .elements=Fields82test_protocols_WithAndWithoutRequestResponseWithRequestEmptyResponseRequestMessage, .element_count=1u, .size_v2=16u, .name="test.protocols/WithAndWithoutRequestResponseWithRequestEmptyResponseRequestMessage"};

static const struct FidlStructElement Fields81test_protocols_WithAndWithoutRequestResponseWithRequestWithResponseRequestMessage[] = {
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_NotResource},.offset_v2=0u, .field_type=(fidl_type_t*)(&String4294967295nonnullableTable)}}
};
const struct FidlCodedStruct test_protocols_WithAndWithoutRequestResponseWithRequestWithResponseRequestMessageTable = {.tag=kFidlTypeStruct, .contains_envelope=kFidlContainsEnvelope_DoesNotContainEnvelope, .is_empty=kFidlEmpty_IsNotEmpty, .elements=Fields81test_protocols_WithAndWithoutRequestResponseWithRequestWithResponseRequestMessage, .element_count=1u, .size_v2=16u, .name="test.protocols/WithAndWithoutRequestResponseWithRequestWithResponseRequestMessage"};

static const struct FidlStructElement Fields82test_protocols_WithAndWithoutRequestResponseWithRequestWithResponseResponseMessage[] = {
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_NotResource},.offset_v2=0u, .field_type=(fidl_type_t*)(&String4294967295nonnullableTable)}}
};
const struct FidlCodedStruct test_protocols_WithAndWithoutRequestResponseWithRequestWithResponseResponseMessageTable = {.tag=kFidlTypeStruct, .contains_envelope=kFidlContainsEnvelope_DoesNotContainEnvelope, .is_empty=kFidlEmpty_IsNotEmpty, .elements=Fields82test_protocols_WithAndWithoutRequestResponseWithRequestWithResponseResponseMessage, .element_count=1u, .size_v2=16u, .name="test.protocols/WithAndWithoutRequestResponseWithRequestWithResponseResponseMessage"};

static const struct FidlStructElement Fields70test_protocols_WithAndWithoutRequestResponseOnWithResponseEventMessage[] = {
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_NotResource},.offset_v2=0u, .field_type=(fidl_type_t*)(&String4294967295nonnullableTable)}}
};
const struct FidlCodedStruct test_protocols_WithAndWithoutRequestResponseOnWithResponseEventMessageTable = {.tag=kFidlTypeStruct, .contains_envelope=kFidlContainsEnvelope_DoesNotContainEnvelope, .is_empty=kFidlEmpty_IsNotEmpty, .elements=Fields70test_protocols_WithAndWithoutRequestResponseOnWithResponseEventMessage, .element_count=1u, .size_v2=16u, .name="test.protocols/WithAndWithoutRequestResponseOnWithResponseEventMessage"};

const struct FidlCodedStruct test_protocols_TransitionalRequestTopResponseTable = {.tag=kFidlTypeStruct, .contains_envelope=kFidlContainsEnvelope_DoesNotContainEnvelope, .is_empty=kFidlEmpty_IsNotEmpty, .elements=NULL, .element_count=0u, .size_v2=8u, .name="test.protocols/TransitionalRequestTopResponse"};

const struct FidlCodedStruct test_protocols_TransitionalRequestRequestTable = {.tag=kFidlTypeStruct, .contains_envelope=kFidlContainsEnvelope_DoesNotContainEnvelope, .is_empty=kFidlEmpty_IsNotEmpty, .elements=NULL, .element_count=0u, .size_v2=8u, .name="test.protocols/TransitionalRequestRequest"};

const struct FidlCodedStruct test_protocols_TransitionalOneWayRequestTable = {.tag=kFidlTypeStruct, .contains_envelope=kFidlContainsEnvelope_DoesNotContainEnvelope, .is_empty=kFidlEmpty_IsNotEmpty, .elements=NULL, .element_count=0u, .size_v2=8u, .name="test.protocols/TransitionalOneWayRequest"};

const struct FidlCodedStruct test_protocols_TransitionalEventRequestTable = {.tag=kFidlTypeStruct, .contains_envelope=kFidlContainsEnvelope_DoesNotContainEnvelope, .is_empty=kFidlEmpty_IsNotEmpty, .elements=NULL, .element_count=0u, .size_v2=8u, .name="test.protocols/TransitionalEventRequest"};

const struct FidlCodedStruct test_protocols_TransitionalRequestRequestMessageTable = {.tag=kFidlTypeStruct, .contains_envelope=kFidlContainsEnvelope_DoesNotContainEnvelope, .is_empty=kFidlEmpty_IsNotEmpty, .elements=NULL, .element_count=0u, .size_v2=8u, .name="test.protocols/TransitionalRequestRequestMessage"};

const struct FidlCodedStruct test_protocols_TransitionalRequestResponseMessageTable = {.tag=kFidlTypeStruct, .contains_envelope=kFidlContainsEnvelope_DoesNotContainEnvelope, .is_empty=kFidlEmpty_IsNotEmpty, .elements=NULL, .element_count=0u, .size_v2=8u, .name="test.protocols/TransitionalRequestResponseMessage"};

const struct FidlCodedStruct test_protocols_TransitionalOneWayRequestMessageTable = {.tag=kFidlTypeStruct, .contains_envelope=kFidlContainsEnvelope_DoesNotContainEnvelope, .is_empty=kFidlEmpty_IsNotEmpty, .elements=NULL, .element_count=0u, .size_v2=8u, .name="test.protocols/TransitionalOneWayRequestMessage"};

const struct FidlCodedStruct test_protocols_TransitionalEventEventMessageTable = {.tag=kFidlTypeStruct, .contains_envelope=kFidlContainsEnvelope_DoesNotContainEnvelope, .is_empty=kFidlEmpty_IsNotEmpty, .elements=NULL, .element_count=0u, .size_v2=8u, .name="test.protocols/TransitionalEventEventMessage"};

static const struct FidlXUnionField Fields23test_protocols_TheUnion[] = {
    /*FidlXUnionField*/{.type=(fidl_type_t*)(&fidl_internal_kUint32Table)}
};
const struct FidlCodedXUnion test_protocols_TheUnionTable = {.tag=kFidlTypeXUnion, .field_count=1u, .fields=Fields23test_protocols_TheUnion, .nullable=kFidlNullability_Nonnullable, .name="test.protocols/TheUnion", .strictness=kFidlStrictness_Flexible, .is_resource=kFidlIsResource_NotResource};
static const struct FidlXUnionField Fields34test_protocols_TheUnionNullableRef[] = {
    /*FidlXUnionField*/{.type=(fidl_type_t*)(&fidl_internal_kUint32Table)}
};
const struct FidlCodedXUnion test_protocols_TheUnionNullableRefTable = {.tag=kFidlTypeXUnion, .field_count=1u, .fields=Fields34test_protocols_TheUnionNullableRef, .nullable=kFidlNullability_Nullable, .name="test.protocols/TheUnion", .strictness=kFidlStrictness_Flexible, .is_resource=kFidlIsResource_NotResource};
static const struct FidlStructElement Fields48test_protocols_MethodWithUnionUnionMethodRequest[] = {
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_NotResource},.offset_v2=0u, .field_type=(fidl_type_t*)(&test_protocols_TheUnionTable)}}
};
const struct FidlCodedStruct test_protocols_MethodWithUnionUnionMethodRequestTable = {.tag=kFidlTypeStruct, .contains_envelope=kFidlContainsEnvelope_ContainsEnvelope, .is_empty=kFidlEmpty_IsNotEmpty, .elements=Fields48test_protocols_MethodWithUnionUnionMethodRequest, .element_count=1u, .size_v2=16u, .name="test.protocols/MethodWithUnionUnionMethodRequest"};

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

const struct FidlCodedStruct test_protocols_SyscallProtocolMethodCRequestMessageTable = {.tag=kFidlTypeStruct, .contains_envelope=kFidlContainsEnvelope_DoesNotContainEnvelope, .is_empty=kFidlEmpty_IsNotEmpty, .elements=NULL, .element_count=0u, .size_v2=16u, .name="test.protocols/SyscallProtocolMethodCRequestMessage"};

static const struct FidlStructElement Fields27test_protocols_ProtocolEnds[] = {
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_Resource},.offset_v2=0u, .field_type=(fidl_type_t*)(&Protocol35test_protocols_DiscoverableProtocolnonnullableTable)}},
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_Resource},.offset_v2=4u, .field_type=(fidl_type_t*)(&Request35test_protocols_DiscoverableProtocolnonnullableTable)}},
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_Resource},.offset_v2=8u, .field_type=(fidl_type_t*)(&Protocol35test_protocols_DiscoverableProtocolnullableTable)}},
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_Resource},.offset_v2=12u, .field_type=(fidl_type_t*)(&Request35test_protocols_DiscoverableProtocolnullableTable)}}
};
const struct FidlCodedStruct test_protocols_ProtocolEndsTable = {.tag=kFidlTypeStruct, .contains_envelope=kFidlContainsEnvelope_DoesNotContainEnvelope, .is_empty=kFidlEmpty_IsNotEmpty, .elements=Fields27test_protocols_ProtocolEnds, .element_count=4u, .size_v2=16u, .name="test.protocols/ProtocolEnds"};

static const struct FidlStructElement Fields62test_protocols_WithProtocolEndsStructContainingEndsTopResponse[] = {
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_Resource},.offset_v2=0u, .field_type=(fidl_type_t*)(&Protocol35test_protocols_DiscoverableProtocolnonnullableTable)}},
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_Resource},.offset_v2=4u, .field_type=(fidl_type_t*)(&Request35test_protocols_DiscoverableProtocolnonnullableTable)}},
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_Resource},.offset_v2=8u, .field_type=(fidl_type_t*)(&Protocol35test_protocols_DiscoverableProtocolnullableTable)}},
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_Resource},.offset_v2=12u, .field_type=(fidl_type_t*)(&Request35test_protocols_DiscoverableProtocolnullableTable)}}
};
const struct FidlCodedStruct test_protocols_WithProtocolEndsStructContainingEndsTopResponseTable = {.tag=kFidlTypeStruct, .contains_envelope=kFidlContainsEnvelope_DoesNotContainEnvelope, .is_empty=kFidlEmpty_IsNotEmpty, .elements=Fields62test_protocols_WithProtocolEndsStructContainingEndsTopResponse, .element_count=4u, .size_v2=16u, .name="test.protocols/WithProtocolEndsStructContainingEndsTopResponse"};

static const struct FidlStructElement Fields58test_protocols_WithProtocolEndsStructContainingEndsRequest[] = {
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_Resource},.offset_v2=0u, .field_type=(fidl_type_t*)(&Protocol35test_protocols_DiscoverableProtocolnonnullableTable)}},
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_Resource},.offset_v2=4u, .field_type=(fidl_type_t*)(&Request35test_protocols_DiscoverableProtocolnonnullableTable)}},
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_Resource},.offset_v2=8u, .field_type=(fidl_type_t*)(&Protocol35test_protocols_DiscoverableProtocolnullableTable)}},
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_Resource},.offset_v2=12u, .field_type=(fidl_type_t*)(&Request35test_protocols_DiscoverableProtocolnullableTable)}}
};
const struct FidlCodedStruct test_protocols_WithProtocolEndsStructContainingEndsRequestTable = {.tag=kFidlTypeStruct, .contains_envelope=kFidlContainsEnvelope_DoesNotContainEnvelope, .is_empty=kFidlEmpty_IsNotEmpty, .elements=Fields58test_protocols_WithProtocolEndsStructContainingEndsRequest, .element_count=4u, .size_v2=16u, .name="test.protocols/WithProtocolEndsStructContainingEndsRequest"};

static const struct FidlStructElement Fields55test_protocols_WithProtocolEndsClientEndsRequestMessage[] = {
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_Resource},.offset_v2=0u, .field_type=(fidl_type_t*)(&Protocol35test_protocols_DiscoverableProtocolnonnullableTable)}}
};
const struct FidlCodedStruct test_protocols_WithProtocolEndsClientEndsRequestMessageTable = {.tag=kFidlTypeStruct, .contains_envelope=kFidlContainsEnvelope_DoesNotContainEnvelope, .is_empty=kFidlEmpty_IsNotEmpty, .elements=Fields55test_protocols_WithProtocolEndsClientEndsRequestMessage, .element_count=1u, .size_v2=4u, .name="test.protocols/WithProtocolEndsClientEndsRequestMessage"};

static const struct FidlStructElement Fields56test_protocols_WithProtocolEndsClientEndsResponseMessage[] = {
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_Resource},.offset_v2=0u, .field_type=(fidl_type_t*)(&Protocol35test_protocols_DiscoverableProtocolnullableTable)}}
};
const struct FidlCodedStruct test_protocols_WithProtocolEndsClientEndsResponseMessageTable = {.tag=kFidlTypeStruct, .contains_envelope=kFidlContainsEnvelope_DoesNotContainEnvelope, .is_empty=kFidlEmpty_IsNotEmpty, .elements=Fields56test_protocols_WithProtocolEndsClientEndsResponseMessage, .element_count=1u, .size_v2=4u, .name="test.protocols/WithProtocolEndsClientEndsResponseMessage"};

static const struct FidlStructElement Fields55test_protocols_WithProtocolEndsServerEndsRequestMessage[] = {
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_Resource},.offset_v2=0u, .field_type=(fidl_type_t*)(&Request35test_protocols_DiscoverableProtocolnullableTable)}}
};
const struct FidlCodedStruct test_protocols_WithProtocolEndsServerEndsRequestMessageTable = {.tag=kFidlTypeStruct, .contains_envelope=kFidlContainsEnvelope_DoesNotContainEnvelope, .is_empty=kFidlEmpty_IsNotEmpty, .elements=Fields55test_protocols_WithProtocolEndsServerEndsRequestMessage, .element_count=1u, .size_v2=4u, .name="test.protocols/WithProtocolEndsServerEndsRequestMessage"};

static const struct FidlStructElement Fields56test_protocols_WithProtocolEndsServerEndsResponseMessage[] = {
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_Resource},.offset_v2=0u, .field_type=(fidl_type_t*)(&Request35test_protocols_DiscoverableProtocolnonnullableTable)}}
};
const struct FidlCodedStruct test_protocols_WithProtocolEndsServerEndsResponseMessageTable = {.tag=kFidlTypeStruct, .contains_envelope=kFidlContainsEnvelope_DoesNotContainEnvelope, .is_empty=kFidlEmpty_IsNotEmpty, .elements=Fields56test_protocols_WithProtocolEndsServerEndsResponseMessage, .element_count=1u, .size_v2=4u, .name="test.protocols/WithProtocolEndsServerEndsResponseMessage"};

static const struct FidlStructElement Fields65test_protocols_WithProtocolEndsStructContainingEndsRequestMessage[] = {
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_Resource},.offset_v2=0u, .field_type=(fidl_type_t*)(&Protocol35test_protocols_DiscoverableProtocolnonnullableTable)}},
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_Resource},.offset_v2=4u, .field_type=(fidl_type_t*)(&Request35test_protocols_DiscoverableProtocolnonnullableTable)}},
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_Resource},.offset_v2=8u, .field_type=(fidl_type_t*)(&Protocol35test_protocols_DiscoverableProtocolnullableTable)}},
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_Resource},.offset_v2=12u, .field_type=(fidl_type_t*)(&Request35test_protocols_DiscoverableProtocolnullableTable)}}
};
const struct FidlCodedStruct test_protocols_WithProtocolEndsStructContainingEndsRequestMessageTable = {.tag=kFidlTypeStruct, .contains_envelope=kFidlContainsEnvelope_DoesNotContainEnvelope, .is_empty=kFidlEmpty_IsNotEmpty, .elements=Fields65test_protocols_WithProtocolEndsStructContainingEndsRequestMessage, .element_count=4u, .size_v2=16u, .name="test.protocols/WithProtocolEndsStructContainingEndsRequestMessage"};

static const struct FidlStructElement Fields66test_protocols_WithProtocolEndsStructContainingEndsResponseMessage[] = {
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_Resource},.offset_v2=0u, .field_type=(fidl_type_t*)(&Protocol35test_protocols_DiscoverableProtocolnonnullableTable)}},
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_Resource},.offset_v2=4u, .field_type=(fidl_type_t*)(&Request35test_protocols_DiscoverableProtocolnonnullableTable)}},
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_Resource},.offset_v2=8u, .field_type=(fidl_type_t*)(&Protocol35test_protocols_DiscoverableProtocolnullableTable)}},
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_Resource},.offset_v2=12u, .field_type=(fidl_type_t*)(&Request35test_protocols_DiscoverableProtocolnullableTable)}}
};
const struct FidlCodedStruct test_protocols_WithProtocolEndsStructContainingEndsResponseMessageTable = {.tag=kFidlTypeStruct, .contains_envelope=kFidlContainsEnvelope_DoesNotContainEnvelope, .is_empty=kFidlEmpty_IsNotEmpty, .elements=Fields66test_protocols_WithProtocolEndsStructContainingEndsResponseMessage, .element_count=4u, .size_v2=16u, .name="test.protocols/WithProtocolEndsStructContainingEndsResponseMessage"};

static const struct FidlStructElement Fields52test_protocols_MethodWithUnionUnionMethodTopResponse[] = {
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_NotResource},.offset_v2=0u, .field_type=(fidl_type_t*)(&test_protocols_TheUnionNullableRefTable)}}
};
const struct FidlCodedStruct test_protocols_MethodWithUnionUnionMethodTopResponseTable = {.tag=kFidlTypeStruct, .contains_envelope=kFidlContainsEnvelope_ContainsEnvelope, .is_empty=kFidlEmpty_IsNotEmpty, .elements=Fields52test_protocols_MethodWithUnionUnionMethodTopResponse, .element_count=1u, .size_v2=16u, .name="test.protocols/MethodWithUnionUnionMethodTopResponse"};

static const struct FidlStructElement Fields55test_protocols_MethodWithUnionUnionMethodRequestMessage[] = {
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_NotResource},.offset_v2=0u, .field_type=(fidl_type_t*)(&test_protocols_TheUnionTable)}}
};
const struct FidlCodedStruct test_protocols_MethodWithUnionUnionMethodRequestMessageTable = {.tag=kFidlTypeStruct, .contains_envelope=kFidlContainsEnvelope_ContainsEnvelope, .is_empty=kFidlEmpty_IsNotEmpty, .elements=Fields55test_protocols_MethodWithUnionUnionMethodRequestMessage, .element_count=1u, .size_v2=16u, .name="test.protocols/MethodWithUnionUnionMethodRequestMessage"};

static const struct FidlStructElement Fields56test_protocols_MethodWithUnionUnionMethodResponseMessage[] = {
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_NotResource},.offset_v2=0u, .field_type=(fidl_type_t*)(&test_protocols_TheUnionNullableRefTable)}}
};
const struct FidlCodedStruct test_protocols_MethodWithUnionUnionMethodResponseMessageTable = {.tag=kFidlTypeStruct, .contains_envelope=kFidlContainsEnvelope_ContainsEnvelope, .is_empty=kFidlEmpty_IsNotEmpty, .elements=Fields56test_protocols_MethodWithUnionUnionMethodResponseMessage, .element_count=1u, .size_v2=16u, .name="test.protocols/MethodWithUnionUnionMethodResponseMessage"};

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

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

static const struct FidlStructElement Fields60test_protocols_HandleRightsProtocolResponseMethodTopResponse[] = {
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_Resource},.offset_v2=0u, .field_type=(fidl_type_t*)(&Handlesocket2nonnullableTable)}}
};
const struct FidlCodedStruct test_protocols_HandleRightsProtocolResponseMethodTopResponseTable = {.tag=kFidlTypeStruct, .contains_envelope=kFidlContainsEnvelope_DoesNotContainEnvelope, .is_empty=kFidlEmpty_IsNotEmpty, .elements=Fields60test_protocols_HandleRightsProtocolResponseMethodTopResponse, .element_count=1u, .size_v2=4u, .name="test.protocols/HandleRightsProtocolResponseMethodTopResponse"};

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

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

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

static const struct FidlStructElement Fields65test_protocols_HandleRightsProtocolNoResponseMethodRequestMessage[] = {
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_Resource},.offset_v2=0u, .field_type=(fidl_type_t*)(&Handlesocket3nonnullableTable)}}
};
const struct FidlCodedStruct test_protocols_HandleRightsProtocolNoResponseMethodRequestMessageTable = {.tag=kFidlTypeStruct, .contains_envelope=kFidlContainsEnvelope_DoesNotContainEnvelope, .is_empty=kFidlEmpty_IsNotEmpty, .elements=Fields65test_protocols_HandleRightsProtocolNoResponseMethodRequestMessage, .element_count=1u, .size_v2=4u, .name="test.protocols/HandleRightsProtocolNoResponseMethodRequestMessage"};

static const struct FidlStructElement Fields63test_protocols_HandleRightsProtocolResponseMethodRequestMessage[] = {
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_Resource},.offset_v2=0u, .field_type=(fidl_type_t*)(&Handlesocket3nonnullableTable)}}
};
const struct FidlCodedStruct test_protocols_HandleRightsProtocolResponseMethodRequestMessageTable = {.tag=kFidlTypeStruct, .contains_envelope=kFidlContainsEnvelope_DoesNotContainEnvelope, .is_empty=kFidlEmpty_IsNotEmpty, .elements=Fields63test_protocols_HandleRightsProtocolResponseMethodRequestMessage, .element_count=1u, .size_v2=4u, .name="test.protocols/HandleRightsProtocolResponseMethodRequestMessage"};

static const struct FidlStructElement Fields64test_protocols_HandleRightsProtocolResponseMethodResponseMessage[] = {
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_Resource},.offset_v2=0u, .field_type=(fidl_type_t*)(&Handlesocket2nonnullableTable)}}
};
const struct FidlCodedStruct test_protocols_HandleRightsProtocolResponseMethodResponseMessageTable = {.tag=kFidlTypeStruct, .contains_envelope=kFidlContainsEnvelope_DoesNotContainEnvelope, .is_empty=kFidlEmpty_IsNotEmpty, .elements=Fields64test_protocols_HandleRightsProtocolResponseMethodResponseMessage, .element_count=1u, .size_v2=4u, .name="test.protocols/HandleRightsProtocolResponseMethodResponseMessage"};

static const struct FidlStructElement Fields54test_protocols_HandleRightsProtocolAnEventEventMessage[] = {
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_Resource},.offset_v2=0u, .field_type=(fidl_type_t*)(&Handlesocket3nonnullableTable)}}
};
const struct FidlCodedStruct test_protocols_HandleRightsProtocolAnEventEventMessageTable = {.tag=kFidlTypeStruct, .contains_envelope=kFidlContainsEnvelope_DoesNotContainEnvelope, .is_empty=kFidlEmpty_IsNotEmpty, .elements=Fields54test_protocols_HandleRightsProtocolAnEventEventMessage, .element_count=1u, .size_v2=4u, .name="test.protocols/HandleRightsProtocolAnEventEventMessage"};

static bool EnumValidatorFor_test_protocols_ErrorEnum(uint64_t v) {
  switch (v) {
    case 1ul:
    case 2ul:
      return true;
    default:
      return false;
  }
}

const struct FidlCodedEnum test_protocols_ErrorEnumTable = {.tag=kFidlTypeEnum, .underlying_type=kFidlCodedPrimitiveSubtype_Uint32, .strictness=kFidlStrictness_Strict, .validate=&EnumValidatorFor_test_protocols_ErrorEnum, .name="test.protocols/ErrorEnum"};

static const struct FidlXUnionField Fields49test_protocols_WithErrorSyntax_ErrorAsEnum_Result[] = {
    /*FidlXUnionField*/{.type=(fidl_type_t*)(&test_protocols_WithErrorSyntax_ErrorAsEnum_ResponseTable)},
    /*FidlXUnionField*/{.type=(fidl_type_t*)(&test_protocols_ErrorEnumTable)}
};
const struct FidlCodedXUnion test_protocols_WithErrorSyntax_ErrorAsEnum_ResultTable = {.tag=kFidlTypeXUnion, .field_count=2u, .fields=Fields49test_protocols_WithErrorSyntax_ErrorAsEnum_Result, .nullable=kFidlNullability_Nonnullable, .name="test.protocols/WithErrorSyntax_ErrorAsEnum_Result", .strictness=kFidlStrictness_Strict, .is_resource=kFidlIsResource_NotResource};
static const struct FidlXUnionField Fields60test_protocols_WithErrorSyntax_ErrorAsEnum_ResultNullableRef[] = {
    /*FidlXUnionField*/{.type=(fidl_type_t*)(&test_protocols_WithErrorSyntax_ErrorAsEnum_ResponseTable)},
    /*FidlXUnionField*/{.type=(fidl_type_t*)(&test_protocols_ErrorEnumTable)}
};
const struct FidlCodedXUnion test_protocols_WithErrorSyntax_ErrorAsEnum_ResultNullableRefTable = {.tag=kFidlTypeXUnion, .field_count=2u, .fields=Fields60test_protocols_WithErrorSyntax_ErrorAsEnum_ResultNullableRef, .nullable=kFidlNullability_Nullable, .name="test.protocols/WithErrorSyntax_ErrorAsEnum_Result", .strictness=kFidlStrictness_Strict, .is_resource=kFidlIsResource_NotResource};
static const struct FidlStructElement Fields52test_protocols_WithErrorSyntaxErrorAsEnumTopResponse[] = {
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_NotResource},.offset_v2=0u, .field_type=(fidl_type_t*)(&test_protocols_WithErrorSyntax_ErrorAsEnum_ResultTable)}}
};
const struct FidlCodedStruct test_protocols_WithErrorSyntaxErrorAsEnumTopResponseTable = {.tag=kFidlTypeStruct, .contains_envelope=kFidlContainsEnvelope_ContainsEnvelope, .is_empty=kFidlEmpty_IsNotEmpty, .elements=Fields52test_protocols_WithErrorSyntaxErrorAsEnumTopResponse, .element_count=1u, .size_v2=16u, .name="test.protocols/WithErrorSyntaxErrorAsEnumTopResponse"};

static const struct FidlStructElement Fields61test_protocols_WithErrorSyntaxResponseAsStructResponseMessage[] = {
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_NotResource},.offset_v2=0u, .field_type=(fidl_type_t*)(&test_protocols_WithErrorSyntax_ResponseAsStruct_ResultTable)}}
};
const struct FidlCodedStruct test_protocols_WithErrorSyntaxResponseAsStructResponseMessageTable = {.tag=kFidlTypeStruct, .contains_envelope=kFidlContainsEnvelope_ContainsEnvelope, .is_empty=kFidlEmpty_IsNotEmpty, .elements=Fields61test_protocols_WithErrorSyntaxResponseAsStructResponseMessage, .element_count=1u, .size_v2=16u, .name="test.protocols/WithErrorSyntaxResponseAsStructResponseMessage"};

static const struct FidlStructElement Fields61test_protocols_WithErrorSyntaxErrorAsPrimitiveResponseMessage[] = {
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_NotResource},.offset_v2=0u, .field_type=(fidl_type_t*)(&test_protocols_WithErrorSyntax_ErrorAsPrimitive_ResultTable)}}
};
const struct FidlCodedStruct test_protocols_WithErrorSyntaxErrorAsPrimitiveResponseMessageTable = {.tag=kFidlTypeStruct, .contains_envelope=kFidlContainsEnvelope_ContainsEnvelope, .is_empty=kFidlEmpty_IsNotEmpty, .elements=Fields61test_protocols_WithErrorSyntaxErrorAsPrimitiveResponseMessage, .element_count=1u, .size_v2=16u, .name="test.protocols/WithErrorSyntaxErrorAsPrimitiveResponseMessage"};

static const struct FidlStructElement Fields56test_protocols_WithErrorSyntaxErrorAsEnumResponseMessage[] = {
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_NotResource},.offset_v2=0u, .field_type=(fidl_type_t*)(&test_protocols_WithErrorSyntax_ErrorAsEnum_ResultTable)}}
};
const struct FidlCodedStruct test_protocols_WithErrorSyntaxErrorAsEnumResponseMessageTable = {.tag=kFidlTypeStruct, .contains_envelope=kFidlContainsEnvelope_ContainsEnvelope, .is_empty=kFidlEmpty_IsNotEmpty, .elements=Fields56test_protocols_WithErrorSyntaxErrorAsEnumResponseMessage, .element_count=1u, .size_v2=16u, .name="test.protocols/WithErrorSyntaxErrorAsEnumResponseMessage"};

static const struct FidlStructElement Fields59test_protocols_WithErrorSyntaxHandleInResultResponseMessage[] = {
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_Resource},.offset_v2=0u, .field_type=(fidl_type_t*)(&test_protocols_WithErrorSyntax_HandleInResult_ResultTable)}}
};
const struct FidlCodedStruct test_protocols_WithErrorSyntaxHandleInResultResponseMessageTable = {.tag=kFidlTypeStruct, .contains_envelope=kFidlContainsEnvelope_ContainsEnvelope, .is_empty=kFidlEmpty_IsNotEmpty, .elements=Fields59test_protocols_WithErrorSyntaxHandleInResultResponseMessage, .element_count=1u, .size_v2=16u, .name="test.protocols/WithErrorSyntaxHandleInResultResponseMessage"};

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

static const struct FidlStructElement Fields53test_protocols_ChannelProtocolMutateSocketTopResponse[] = {
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_Resource},.offset_v2=0u, .field_type=(fidl_type_t*)(&Handlesocket2147483648nonnullableTable)}}
};
const struct FidlCodedStruct test_protocols_ChannelProtocolMutateSocketTopResponseTable = {.tag=kFidlTypeStruct, .contains_envelope=kFidlContainsEnvelope_DoesNotContainEnvelope, .is_empty=kFidlEmpty_IsNotEmpty, .elements=Fields53test_protocols_ChannelProtocolMutateSocketTopResponse, .element_count=1u, .size_v2=4u, .name="test.protocols/ChannelProtocolMutateSocketTopResponse"};

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

const struct FidlCodedStruct test_protocols_ChannelProtocolMethodBTopResponseTable = {.tag=kFidlTypeStruct, .contains_envelope=kFidlContainsEnvelope_DoesNotContainEnvelope, .is_empty=kFidlEmpty_IsNotEmpty, .elements=NULL, .element_count=0u, .size_v2=8u, .name="test.protocols/ChannelProtocolMethodBTopResponse"};

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

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

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

const struct FidlCodedStruct test_protocols_ChannelProtocolMethodARequestMessageTable = {.tag=kFidlTypeStruct, .contains_envelope=kFidlContainsEnvelope_DoesNotContainEnvelope, .is_empty=kFidlEmpty_IsNotEmpty, .elements=NULL, .element_count=0u, .size_v2=16u, .name="test.protocols/ChannelProtocolMethodARequestMessage"};

const struct FidlCodedStruct test_protocols_ChannelProtocolEventAEventMessageTable = {.tag=kFidlTypeStruct, .contains_envelope=kFidlContainsEnvelope_DoesNotContainEnvelope, .is_empty=kFidlEmpty_IsNotEmpty, .elements=NULL, .element_count=0u, .size_v2=16u, .name="test.protocols/ChannelProtocolEventAEventMessage"};

const struct FidlCodedStruct test_protocols_ChannelProtocolMethodBRequestMessageTable = {.tag=kFidlTypeStruct, .contains_envelope=kFidlContainsEnvelope_DoesNotContainEnvelope, .is_empty=kFidlEmpty_IsNotEmpty, .elements=NULL, .element_count=0u, .size_v2=16u, .name="test.protocols/ChannelProtocolMethodBRequestMessage"};

const struct FidlCodedStruct test_protocols_ChannelProtocolMethodBResponseMessageTable = {.tag=kFidlTypeStruct, .contains_envelope=kFidlContainsEnvelope_DoesNotContainEnvelope, .is_empty=kFidlEmpty_IsNotEmpty, .elements=NULL, .element_count=0u, .size_v2=8u, .name="test.protocols/ChannelProtocolMethodBResponseMessage"};

static const struct FidlStructElement Fields54test_protocols_ChannelProtocolTakeHandleRequestMessage[] = {
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_Resource},.offset_v2=0u, .field_type=(fidl_type_t*)(&Handlehandle2147483648nonnullableTable)}}
};
const struct FidlCodedStruct test_protocols_ChannelProtocolTakeHandleRequestMessageTable = {.tag=kFidlTypeStruct, .contains_envelope=kFidlContainsEnvelope_DoesNotContainEnvelope, .is_empty=kFidlEmpty_IsNotEmpty, .elements=Fields54test_protocols_ChannelProtocolTakeHandleRequestMessage, .element_count=1u, .size_v2=4u, .name="test.protocols/ChannelProtocolTakeHandleRequestMessage"};

static const struct FidlStructElement Fields56test_protocols_ChannelProtocolMutateSocketRequestMessage[] = {
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_Resource},.offset_v2=0u, .field_type=(fidl_type_t*)(&Handlesocket2147483648nonnullableTable)}}
};
const struct FidlCodedStruct test_protocols_ChannelProtocolMutateSocketRequestMessageTable = {.tag=kFidlTypeStruct, .contains_envelope=kFidlContainsEnvelope_DoesNotContainEnvelope, .is_empty=kFidlEmpty_IsNotEmpty, .elements=Fields56test_protocols_ChannelProtocolMutateSocketRequestMessage, .element_count=1u, .size_v2=4u, .name="test.protocols/ChannelProtocolMutateSocketRequestMessage"};

static const struct FidlStructElement Fields57test_protocols_ChannelProtocolMutateSocketResponseMessage[] = {
    /*FidlStructPadding*/{.field=/*FidlStructField*/{.header=/*FidlStructElementHeader*/{.element_type=kFidlStructElementType_Field, .is_resource=kFidlIsResource_Resource},.offset_v2=0u, .field_type=(fidl_type_t*)(&Handlesocket2147483648nonnullableTable)}}
};
const struct FidlCodedStruct test_protocols_ChannelProtocolMutateSocketResponseMessageTable = {.tag=kFidlTypeStruct, .contains_envelope=kFidlContainsEnvelope_DoesNotContainEnvelope, .is_empty=kFidlEmpty_IsNotEmpty, .elements=Fields57test_protocols_ChannelProtocolMutateSocketResponseMessage, .element_count=1u, .size_v2=4u, .name="test.protocols/ChannelProtocolMutateSocketResponseMessage"};

