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

// fidl_experiment = output_index_json

#include <lib/fidl/internal.h>

const struct FidlCodedUnion test_protocollayoutssamelibrary_ComposedProtocol_TwoWayAnonComposedWithError_ResponseTable;
const struct FidlCodedUnion test_protocollayoutssamelibrary_UnionPayloadTable;
const struct FidlCodedUnion test_protocollayoutssamelibrary_MainProtocol_TwoWayAnonWithError_ResponseTable;

static const struct FidlTableField Fields73test_protocollayoutssamelibrary_ComposedProtocolOneWayAnonComposedRequest[] = {
    {.ordinal = 1, .type = (const fidl_type_t*)&fidl_internal_kUint16Table},
};
const struct FidlCodedTable test_protocollayoutssamelibrary_ComposedProtocolOneWayAnonComposedRequestTable = {
    .tag = kFidlTypeTable,
    .name = "test.protocollayoutssamelibrary/ComposedProtocolOneWayAnonComposedRequest",
    .is_resource = kFidlIsResource_NotResource,
    .fields = Fields73test_protocollayoutssamelibrary_ComposedProtocolOneWayAnonComposedRequest,
    .field_count = 1,
};

static const struct FidlTableField Fields74test_protocollayoutssamelibrary_ComposedProtocolTwoWayAnonComposedResponse[] = {
    {.ordinal = 1, .type = (const fidl_type_t*)&fidl_internal_kUint16Table},
};
const struct FidlCodedTable test_protocollayoutssamelibrary_ComposedProtocolTwoWayAnonComposedResponseTable = {
    .tag = kFidlTypeTable,
    .name = "test.protocollayoutssamelibrary/ComposedProtocolTwoWayAnonComposedResponse",
    .is_resource = kFidlIsResource_NotResource,
    .fields = Fields74test_protocollayoutssamelibrary_ComposedProtocolTwoWayAnonComposedResponse,
    .field_count = 1,
};

static const struct FidlTableField Fields82test_protocollayoutssamelibrary_ComposedProtocolTwoWayAnonComposedWithErrorRequest[] = {
    {.ordinal = 1, .type = (const fidl_type_t*)&fidl_internal_kUint16Table},
};
const struct FidlCodedTable test_protocollayoutssamelibrary_ComposedProtocolTwoWayAnonComposedWithErrorRequestTable = {
    .tag = kFidlTypeTable,
    .name = "test.protocollayoutssamelibrary/ComposedProtocolTwoWayAnonComposedWithErrorRequest",
    .is_resource = kFidlIsResource_NotResource,
    .fields = Fields82test_protocollayoutssamelibrary_ComposedProtocolTwoWayAnonComposedWithErrorRequest,
    .field_count = 1,
};

static const struct FidlTableField Fields61test_protocollayoutssamelibrary_MainProtocolOneWayAnonRequest[] = {
    {.ordinal = 1, .type = (const fidl_type_t*)&fidl_internal_kUint16Table},
};
const struct FidlCodedTable test_protocollayoutssamelibrary_MainProtocolOneWayAnonRequestTable = {
    .tag = kFidlTypeTable,
    .name = "test.protocollayoutssamelibrary/MainProtocolOneWayAnonRequest",
    .is_resource = kFidlIsResource_NotResource,
    .fields = Fields61test_protocollayoutssamelibrary_MainProtocolOneWayAnonRequest,
    .field_count = 1,
};

static const struct FidlTableField Fields62test_protocollayoutssamelibrary_MainProtocolTwoWayAnonResponse[] = {
    {.ordinal = 1, .type = (const fidl_type_t*)&fidl_internal_kUint16Table},
};
const struct FidlCodedTable test_protocollayoutssamelibrary_MainProtocolTwoWayAnonResponseTable = {
    .tag = kFidlTypeTable,
    .name = "test.protocollayoutssamelibrary/MainProtocolTwoWayAnonResponse",
    .is_resource = kFidlIsResource_NotResource,
    .fields = Fields62test_protocollayoutssamelibrary_MainProtocolTwoWayAnonResponse,
    .field_count = 1,
};

static const struct FidlTableField Fields70test_protocollayoutssamelibrary_MainProtocolTwoWayAnonWithErrorRequest[] = {
    {.ordinal = 1, .type = (const fidl_type_t*)&fidl_internal_kUint16Table},
};
const struct FidlCodedTable test_protocollayoutssamelibrary_MainProtocolTwoWayAnonWithErrorRequestTable = {
    .tag = kFidlTypeTable,
    .name = "test.protocollayoutssamelibrary/MainProtocolTwoWayAnonWithErrorRequest",
    .is_resource = kFidlIsResource_NotResource,
    .fields = Fields70test_protocollayoutssamelibrary_MainProtocolTwoWayAnonWithErrorRequest,
    .field_count = 1,
};

static const struct FidlTableField Fields44test_protocollayoutssamelibrary_TablePayload[] = {
    {.ordinal = 1, .type = (const fidl_type_t*)&fidl_internal_kUint16Table},
};
const struct FidlCodedTable test_protocollayoutssamelibrary_TablePayloadTable = {
    .tag = kFidlTypeTable,
    .name = "test.protocollayoutssamelibrary/TablePayload",
    .is_resource = kFidlIsResource_NotResource,
    .fields = Fields44test_protocollayoutssamelibrary_TablePayload,
    .field_count = 1,
};

static const struct FidlUnionField Fields69test_protocollayoutssamelibrary_ComposedProtocolOnAnonComposedRequest[] = {
    {.type = (const fidl_type_t*)&fidl_internal_kBoolTable},
};
const struct FidlCodedUnion test_protocollayoutssamelibrary_ComposedProtocolOnAnonComposedRequestTable = {
    .tag = kFidlTypeUnion,
    .name = "test.protocollayoutssamelibrary/ComposedProtocolOnAnonComposedRequest",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nonnullable,
    .fields = Fields69test_protocollayoutssamelibrary_ComposedProtocolOnAnonComposedRequest,
    .field_count = 1,
};
const struct FidlCodedUnion test_protocollayoutssamelibrary_ComposedProtocolOnAnonComposedRequestNullableRefTable = {
    .tag = kFidlTypeUnion,
    .name = "test.protocollayoutssamelibrary/ComposedProtocolOnAnonComposedRequest",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nullable,
    .fields = Fields69test_protocollayoutssamelibrary_ComposedProtocolOnAnonComposedRequest,
    .field_count = 1,
};

static const struct FidlUnionField Fields73test_protocollayoutssamelibrary_ComposedProtocolTwoWayAnonComposedRequest[] = {
    {.type = (const fidl_type_t*)&fidl_internal_kBoolTable},
};
const struct FidlCodedUnion test_protocollayoutssamelibrary_ComposedProtocolTwoWayAnonComposedRequestTable = {
    .tag = kFidlTypeUnion,
    .name = "test.protocollayoutssamelibrary/ComposedProtocolTwoWayAnonComposedRequest",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nonnullable,
    .fields = Fields73test_protocollayoutssamelibrary_ComposedProtocolTwoWayAnonComposedRequest,
    .field_count = 1,
};
const struct FidlCodedUnion test_protocollayoutssamelibrary_ComposedProtocolTwoWayAnonComposedRequestNullableRefTable = {
    .tag = kFidlTypeUnion,
    .name = "test.protocollayoutssamelibrary/ComposedProtocolTwoWayAnonComposedRequest",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nullable,
    .fields = Fields73test_protocollayoutssamelibrary_ComposedProtocolTwoWayAnonComposedRequest,
    .field_count = 1,
};

static const struct FidlUnionField Fields85test_protocollayoutssamelibrary_ComposedProtocol_TwoWayAnonComposedWithError_Response[] = {
    {.type = (const fidl_type_t*)&fidl_internal_kBoolTable},
};
const struct FidlCodedUnion test_protocollayoutssamelibrary_ComposedProtocol_TwoWayAnonComposedWithError_ResponseTable = {
    .tag = kFidlTypeUnion,
    .name = "test.protocollayoutssamelibrary/ComposedProtocol_TwoWayAnonComposedWithError_Response",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nonnullable,
    .fields = Fields85test_protocollayoutssamelibrary_ComposedProtocol_TwoWayAnonComposedWithError_Response,
    .field_count = 1,
};
const struct FidlCodedUnion test_protocollayoutssamelibrary_ComposedProtocol_TwoWayAnonComposedWithError_ResponseNullableRefTable = {
    .tag = kFidlTypeUnion,
    .name = "test.protocollayoutssamelibrary/ComposedProtocol_TwoWayAnonComposedWithError_Response",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nullable,
    .fields = Fields85test_protocollayoutssamelibrary_ComposedProtocol_TwoWayAnonComposedWithError_Response,
    .field_count = 1,
};

static const struct FidlUnionField Fields83test_protocollayoutssamelibrary_ComposedProtocol_TwoWayAnonComposedWithError_Result[] = {
    {.type = (const fidl_type_t*)&test_protocollayoutssamelibrary_ComposedProtocol_TwoWayAnonComposedWithError_ResponseTable},
    {.type = (const fidl_type_t*)&fidl_internal_kUint32Table},
};
const struct FidlCodedUnion test_protocollayoutssamelibrary_ComposedProtocol_TwoWayAnonComposedWithError_ResultTable = {
    .tag = kFidlTypeUnion,
    .name = "test.protocollayoutssamelibrary/ComposedProtocol_TwoWayAnonComposedWithError_Result",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nonnullable,
    .fields = Fields83test_protocollayoutssamelibrary_ComposedProtocol_TwoWayAnonComposedWithError_Result,
    .field_count = 2,
};
const struct FidlCodedUnion test_protocollayoutssamelibrary_ComposedProtocol_TwoWayAnonComposedWithError_ResultNullableRefTable = {
    .tag = kFidlTypeUnion,
    .name = "test.protocollayoutssamelibrary/ComposedProtocol_TwoWayAnonComposedWithError_Result",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nullable,
    .fields = Fields83test_protocollayoutssamelibrary_ComposedProtocol_TwoWayAnonComposedWithError_Result,
    .field_count = 2,
};

static const struct FidlUnionField Fields84test_protocollayoutssamelibrary_ComposedProtocol_TwoWayNamedComposedWithError_Result[] = {
    {.type = (const fidl_type_t*)&test_protocollayoutssamelibrary_UnionPayloadTable},
    {.type = (const fidl_type_t*)&fidl_internal_kUint32Table},
};
const struct FidlCodedUnion test_protocollayoutssamelibrary_ComposedProtocol_TwoWayNamedComposedWithError_ResultTable = {
    .tag = kFidlTypeUnion,
    .name = "test.protocollayoutssamelibrary/ComposedProtocol_TwoWayNamedComposedWithError_Result",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nonnullable,
    .fields = Fields84test_protocollayoutssamelibrary_ComposedProtocol_TwoWayNamedComposedWithError_Result,
    .field_count = 2,
};
const struct FidlCodedUnion test_protocollayoutssamelibrary_ComposedProtocol_TwoWayNamedComposedWithError_ResultNullableRefTable = {
    .tag = kFidlTypeUnion,
    .name = "test.protocollayoutssamelibrary/ComposedProtocol_TwoWayNamedComposedWithError_Result",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nullable,
    .fields = Fields84test_protocollayoutssamelibrary_ComposedProtocol_TwoWayNamedComposedWithError_Result,
    .field_count = 2,
};

static const struct FidlUnionField Fields57test_protocollayoutssamelibrary_MainProtocolOnAnonRequest[] = {
    {.type = (const fidl_type_t*)&fidl_internal_kBoolTable},
};
const struct FidlCodedUnion test_protocollayoutssamelibrary_MainProtocolOnAnonRequestTable = {
    .tag = kFidlTypeUnion,
    .name = "test.protocollayoutssamelibrary/MainProtocolOnAnonRequest",
    .strictness = kFidlStrictness_Flexible,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nonnullable,
    .fields = Fields57test_protocollayoutssamelibrary_MainProtocolOnAnonRequest,
    .field_count = 1,
};
const struct FidlCodedUnion test_protocollayoutssamelibrary_MainProtocolOnAnonRequestNullableRefTable = {
    .tag = kFidlTypeUnion,
    .name = "test.protocollayoutssamelibrary/MainProtocolOnAnonRequest",
    .strictness = kFidlStrictness_Flexible,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nullable,
    .fields = Fields57test_protocollayoutssamelibrary_MainProtocolOnAnonRequest,
    .field_count = 1,
};

static const struct FidlUnionField Fields61test_protocollayoutssamelibrary_MainProtocolTwoWayAnonRequest[] = {
    {.type = (const fidl_type_t*)&fidl_internal_kBoolTable},
};
const struct FidlCodedUnion test_protocollayoutssamelibrary_MainProtocolTwoWayAnonRequestTable = {
    .tag = kFidlTypeUnion,
    .name = "test.protocollayoutssamelibrary/MainProtocolTwoWayAnonRequest",
    .strictness = kFidlStrictness_Flexible,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nonnullable,
    .fields = Fields61test_protocollayoutssamelibrary_MainProtocolTwoWayAnonRequest,
    .field_count = 1,
};
const struct FidlCodedUnion test_protocollayoutssamelibrary_MainProtocolTwoWayAnonRequestNullableRefTable = {
    .tag = kFidlTypeUnion,
    .name = "test.protocollayoutssamelibrary/MainProtocolTwoWayAnonRequest",
    .strictness = kFidlStrictness_Flexible,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nullable,
    .fields = Fields61test_protocollayoutssamelibrary_MainProtocolTwoWayAnonRequest,
    .field_count = 1,
};

static const struct FidlUnionField Fields73test_protocollayoutssamelibrary_MainProtocol_TwoWayAnonWithError_Response[] = {
    {.type = (const fidl_type_t*)&fidl_internal_kBoolTable},
};
const struct FidlCodedUnion test_protocollayoutssamelibrary_MainProtocol_TwoWayAnonWithError_ResponseTable = {
    .tag = kFidlTypeUnion,
    .name = "test.protocollayoutssamelibrary/MainProtocol_TwoWayAnonWithError_Response",
    .strictness = kFidlStrictness_Flexible,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nonnullable,
    .fields = Fields73test_protocollayoutssamelibrary_MainProtocol_TwoWayAnonWithError_Response,
    .field_count = 1,
};
const struct FidlCodedUnion test_protocollayoutssamelibrary_MainProtocol_TwoWayAnonWithError_ResponseNullableRefTable = {
    .tag = kFidlTypeUnion,
    .name = "test.protocollayoutssamelibrary/MainProtocol_TwoWayAnonWithError_Response",
    .strictness = kFidlStrictness_Flexible,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nullable,
    .fields = Fields73test_protocollayoutssamelibrary_MainProtocol_TwoWayAnonWithError_Response,
    .field_count = 1,
};

static const struct FidlUnionField Fields71test_protocollayoutssamelibrary_MainProtocol_TwoWayAnonWithError_Result[] = {
    {.type = (const fidl_type_t*)&test_protocollayoutssamelibrary_MainProtocol_TwoWayAnonWithError_ResponseTable},
    {.type = (const fidl_type_t*)&fidl_internal_kUint32Table},
};
const struct FidlCodedUnion test_protocollayoutssamelibrary_MainProtocol_TwoWayAnonWithError_ResultTable = {
    .tag = kFidlTypeUnion,
    .name = "test.protocollayoutssamelibrary/MainProtocol_TwoWayAnonWithError_Result",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nonnullable,
    .fields = Fields71test_protocollayoutssamelibrary_MainProtocol_TwoWayAnonWithError_Result,
    .field_count = 2,
};
const struct FidlCodedUnion test_protocollayoutssamelibrary_MainProtocol_TwoWayAnonWithError_ResultNullableRefTable = {
    .tag = kFidlTypeUnion,
    .name = "test.protocollayoutssamelibrary/MainProtocol_TwoWayAnonWithError_Result",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nullable,
    .fields = Fields71test_protocollayoutssamelibrary_MainProtocol_TwoWayAnonWithError_Result,
    .field_count = 2,
};

static const struct FidlUnionField Fields72test_protocollayoutssamelibrary_MainProtocol_TwoWayLocalWithError_Result[] = {
    {.type = (const fidl_type_t*)&test_protocollayoutssamelibrary_UnionPayloadTable},
    {.type = (const fidl_type_t*)&fidl_internal_kUint32Table},
};
const struct FidlCodedUnion test_protocollayoutssamelibrary_MainProtocol_TwoWayLocalWithError_ResultTable = {
    .tag = kFidlTypeUnion,
    .name = "test.protocollayoutssamelibrary/MainProtocol_TwoWayLocalWithError_Result",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nonnullable,
    .fields = Fields72test_protocollayoutssamelibrary_MainProtocol_TwoWayLocalWithError_Result,
    .field_count = 2,
};
const struct FidlCodedUnion test_protocollayoutssamelibrary_MainProtocol_TwoWayLocalWithError_ResultNullableRefTable = {
    .tag = kFidlTypeUnion,
    .name = "test.protocollayoutssamelibrary/MainProtocol_TwoWayLocalWithError_Result",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nullable,
    .fields = Fields72test_protocollayoutssamelibrary_MainProtocol_TwoWayLocalWithError_Result,
    .field_count = 2,
};

static const struct FidlUnionField Fields44test_protocollayoutssamelibrary_UnionPayload[] = {
    {.type = (const fidl_type_t*)&fidl_internal_kBoolTable},
};
const struct FidlCodedUnion test_protocollayoutssamelibrary_UnionPayloadTable = {
    .tag = kFidlTypeUnion,
    .name = "test.protocollayoutssamelibrary/UnionPayload",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nonnullable,
    .fields = Fields44test_protocollayoutssamelibrary_UnionPayload,
    .field_count = 1,
};
const struct FidlCodedUnion test_protocollayoutssamelibrary_UnionPayloadNullableRefTable = {
    .tag = kFidlTypeUnion,
    .name = "test.protocollayoutssamelibrary/UnionPayload",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nullable,
    .fields = Fields44test_protocollayoutssamelibrary_UnionPayload,
    .field_count = 1,
};
