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

// fidl_experiment = output_index_json

#include <lib/fidl/internal.h>

const struct FidlCodedUnion test_union_UnionNullableRefTable;
static const struct FidlCodedString String16notnullableTable;
static const struct FidlCodedVector Vectorunboundednotnullable_19String16notnullableTable;
const struct FidlCodedUnion test_union_OlderSimpleUnionNullableRefTable;
const struct FidlCodedUnion test_union_OlderSimpleUnionTable;
const struct FidlCodedUnion test_union_StrictBoundedUnionTable;
const struct FidlCodedUnion test_union_ExplicitFlexibleUnionTable;
static const struct FidlCodedString StringunboundednotnullableTable;
const struct FidlCodedStruct test_union_PizzaTable;
const struct FidlCodedStruct test_union_PastaTable;
static const struct FidlCodedVector Vectorunboundednotnullable_26StringunboundednotnullableTable;
static const struct FidlCodedVector Vector10notnullable_20fidl_internal_kUint8Table;
const struct FidlCodedStruct test_union_EmptyTable;

const struct FidlCodedStruct test_union_EmptyTable = {
    .tag = kFidlTypeStruct,
    .name = "test.union/Empty",
    .is_empty = kFidlEmpty_IsEmpty,
    .size_v2 = 1,
    .elements = NULL,
    .element_count = 0,
};

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

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

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

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

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

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

static const struct FidlStructElement Fields24test_union_UnionSandwich[] = {
    {
        .padding = {
            .header = {
                .element_type = kFidlStructElementType_Padding64,
                .is_resource = kFidlIsResource_NotResource,
            },
            .offset_v2 = 0,
            .mask_64 = 0xffffffff00000000,
        },
    },
    {
        .field = {
            .header = {
                .element_type = kFidlStructElementType_Field,
                .is_resource = kFidlIsResource_NotResource,
            },
            .offset_v2 = 8,
            .field_type = (const fidl_type_t*)&test_union_ExplicitFlexibleUnionTable,
        },
    },
    {
        .padding = {
            .header = {
                .element_type = kFidlStructElementType_Padding64,
                .is_resource = kFidlIsResource_NotResource,
            },
            .offset_v2 = 24,
            .mask_64 = 0xffffffff00000000,
        },
    },
};
const struct FidlCodedStruct test_union_UnionSandwichTable = {
    .tag = kFidlTypeStruct,
    .name = "test.union/UnionSandwich",
    .is_empty = kFidlEmpty_IsNotEmpty,
    .size_v2 = 32,
    .elements = Fields24test_union_UnionSandwich,
    .element_count = 3,
};

const struct FidlCodedUnion test_union_EmptyFlexibleUnionTable = {
    .tag = kFidlTypeUnion,
    .name = "test.union/EmptyFlexibleUnion",
    .strictness = kFidlStrictness_Flexible,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nonnullable,
    .fields = NULL,
    .field_count = 0,
};
const struct FidlCodedUnion test_union_EmptyFlexibleUnionNullableRefTable = {
    .tag = kFidlTypeUnion,
    .name = "test.union/EmptyFlexibleUnion",
    .strictness = kFidlStrictness_Flexible,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nullable,
    .fields = NULL,
    .field_count = 0,
};

static const struct FidlUnionField Fields32test_union_ExplicitFlexibleUnion[] = {
    {.type = (const fidl_type_t*)&fidl_internal_kInt64Table},
    {.type = NULL},
    {.type = NULL},
    {.type = (const fidl_type_t*)&fidl_internal_kFloat32Table},
};
const struct FidlCodedUnion test_union_ExplicitFlexibleUnionTable = {
    .tag = kFidlTypeUnion,
    .name = "test.union/ExplicitFlexibleUnion",
    .strictness = kFidlStrictness_Flexible,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nonnullable,
    .fields = Fields32test_union_ExplicitFlexibleUnion,
    .field_count = 4,
};
const struct FidlCodedUnion test_union_ExplicitFlexibleUnionNullableRefTable = {
    .tag = kFidlTypeUnion,
    .name = "test.union/ExplicitFlexibleUnion",
    .strictness = kFidlStrictness_Flexible,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nullable,
    .fields = Fields32test_union_ExplicitFlexibleUnion,
    .field_count = 4,
};

static const struct FidlUnionField Fields22test_union_ExplicitFoo[] = {
    {.type = (const fidl_type_t*)&fidl_internal_kInt32Table},
    {.type = (const fidl_type_t*)&StringunboundednotnullableTable},
};
const struct FidlCodedUnion test_union_ExplicitFooTable = {
    .tag = kFidlTypeUnion,
    .name = "test.union/ExplicitFoo",
    .strictness = kFidlStrictness_Flexible,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nonnullable,
    .fields = Fields22test_union_ExplicitFoo,
    .field_count = 2,
};
const struct FidlCodedUnion test_union_ExplicitFooNullableRefTable = {
    .tag = kFidlTypeUnion,
    .name = "test.union/ExplicitFoo",
    .strictness = kFidlStrictness_Flexible,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nullable,
    .fields = Fields22test_union_ExplicitFoo,
    .field_count = 2,
};

static const struct FidlUnionField Fields31test_union_ExplicitPizzaOrPasta[] = {
    {.type = (const fidl_type_t*)&test_union_PizzaTable},
    {.type = NULL},
    {.type = NULL},
    {.type = (const fidl_type_t*)&test_union_PastaTable},
};
const struct FidlCodedUnion test_union_ExplicitPizzaOrPastaTable = {
    .tag = kFidlTypeUnion,
    .name = "test.union/ExplicitPizzaOrPasta",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nonnullable,
    .fields = Fields31test_union_ExplicitPizzaOrPasta,
    .field_count = 4,
};
const struct FidlCodedUnion test_union_ExplicitPizzaOrPastaNullableRefTable = {
    .tag = kFidlTypeUnion,
    .name = "test.union/ExplicitPizzaOrPasta",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nullable,
    .fields = Fields31test_union_ExplicitPizzaOrPasta,
    .field_count = 4,
};

static const struct FidlUnionField Fields28test_union_ExplicitStrictFoo[] = {
    {.type = NULL},
    {.type = (const fidl_type_t*)&fidl_internal_kInt32Table},
    {.type = (const fidl_type_t*)&StringunboundednotnullableTable},
};
const struct FidlCodedUnion test_union_ExplicitStrictFooTable = {
    .tag = kFidlTypeUnion,
    .name = "test.union/ExplicitStrictFoo",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nonnullable,
    .fields = Fields28test_union_ExplicitStrictFoo,
    .field_count = 3,
};
const struct FidlCodedUnion test_union_ExplicitStrictFooNullableRefTable = {
    .tag = kFidlTypeUnion,
    .name = "test.union/ExplicitStrictFoo",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nullable,
    .fields = Fields28test_union_ExplicitStrictFoo,
    .field_count = 3,
};

static const struct FidlUnionField Fields24test_union_ExplicitUnion[] = {
    {.type = (const fidl_type_t*)&fidl_internal_kInt32Table},
    {.type = NULL},
    {.type = (const fidl_type_t*)&StringunboundednotnullableTable},
};
const struct FidlCodedUnion test_union_ExplicitUnionTable = {
    .tag = kFidlTypeUnion,
    .name = "test.union/ExplicitUnion",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nonnullable,
    .fields = Fields24test_union_ExplicitUnion,
    .field_count = 3,
};
const struct FidlCodedUnion test_union_ExplicitUnionNullableRefTable = {
    .tag = kFidlTypeUnion,
    .name = "test.union/ExplicitUnion",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nullable,
    .fields = Fields24test_union_ExplicitUnion,
    .field_count = 3,
};

static const struct FidlUnionField Fields25test_union_FieldCollision[] = {
    {.type = (const fidl_type_t*)&fidl_internal_kInt32Table},
};
const struct FidlCodedUnion test_union_FieldCollisionTable = {
    .tag = kFidlTypeUnion,
    .name = "test.union/FieldCollision",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nonnullable,
    .fields = Fields25test_union_FieldCollision,
    .field_count = 1,
};
const struct FidlCodedUnion test_union_FieldCollisionNullableRefTable = {
    .tag = kFidlTypeUnion,
    .name = "test.union/FieldCollision",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nullable,
    .fields = Fields25test_union_FieldCollision,
    .field_count = 1,
};

static const struct FidlUnionField Fields22test_union_FlexibleFoo[] = {
    {.type = (const fidl_type_t*)&StringunboundednotnullableTable},
    {.type = (const fidl_type_t*)&fidl_internal_kInt32Table},
};
const struct FidlCodedUnion test_union_FlexibleFooTable = {
    .tag = kFidlTypeUnion,
    .name = "test.union/FlexibleFoo",
    .strictness = kFidlStrictness_Flexible,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nonnullable,
    .fields = Fields22test_union_FlexibleFoo,
    .field_count = 2,
};
const struct FidlCodedUnion test_union_FlexibleFooNullableRefTable = {
    .tag = kFidlTypeUnion,
    .name = "test.union/FlexibleFoo",
    .strictness = kFidlStrictness_Flexible,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nullable,
    .fields = Fields22test_union_FlexibleFoo,
    .field_count = 2,
};

static const struct FidlUnionField Fields31test_union_FlexiblePizzaOrPasta[] = {
    {.type = (const fidl_type_t*)&test_union_PizzaTable},
    {.type = (const fidl_type_t*)&test_union_PastaTable},
};
const struct FidlCodedUnion test_union_FlexiblePizzaOrPastaTable = {
    .tag = kFidlTypeUnion,
    .name = "test.union/FlexiblePizzaOrPasta",
    .strictness = kFidlStrictness_Flexible,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nonnullable,
    .fields = Fields31test_union_FlexiblePizzaOrPasta,
    .field_count = 2,
};
const struct FidlCodedUnion test_union_FlexiblePizzaOrPastaNullableRefTable = {
    .tag = kFidlTypeUnion,
    .name = "test.union/FlexiblePizzaOrPasta",
    .strictness = kFidlStrictness_Flexible,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nullable,
    .fields = Fields31test_union_FlexiblePizzaOrPasta,
    .field_count = 2,
};

static const struct FidlUnionField Fields24test_union_FlexibleUnion[] = {
    {.type = (const fidl_type_t*)&fidl_internal_kInt32Table},
    {.type = (const fidl_type_t*)&StringunboundednotnullableTable},
    {.type = (const fidl_type_t*)&Vectorunboundednotnullable_26StringunboundednotnullableTable},
};
const struct FidlCodedUnion test_union_FlexibleUnionTable = {
    .tag = kFidlTypeUnion,
    .name = "test.union/FlexibleUnion",
    .strictness = kFidlStrictness_Flexible,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nonnullable,
    .fields = Fields24test_union_FlexibleUnion,
    .field_count = 3,
};
const struct FidlCodedUnion test_union_FlexibleUnionNullableRefTable = {
    .tag = kFidlTypeUnion,
    .name = "test.union/FlexibleUnion",
    .strictness = kFidlStrictness_Flexible,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nullable,
    .fields = Fields24test_union_FlexibleUnion,
    .field_count = 3,
};

static const struct FidlUnionField Fields27test_union_NewerSimpleUnion[] = {
    {.type = (const fidl_type_t*)&fidl_internal_kInt64Table},
    {.type = (const fidl_type_t*)&StringunboundednotnullableTable},
    {.type = (const fidl_type_t*)&Vectorunboundednotnullable_26StringunboundednotnullableTable},
};
const struct FidlCodedUnion test_union_NewerSimpleUnionTable = {
    .tag = kFidlTypeUnion,
    .name = "test.union/NewerSimpleUnion",
    .strictness = kFidlStrictness_Flexible,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nonnullable,
    .fields = Fields27test_union_NewerSimpleUnion,
    .field_count = 3,
};
const struct FidlCodedUnion test_union_NewerSimpleUnionNullableRefTable = {
    .tag = kFidlTypeUnion,
    .name = "test.union/NewerSimpleUnion",
    .strictness = kFidlStrictness_Flexible,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nullable,
    .fields = Fields27test_union_NewerSimpleUnion,
    .field_count = 3,
};

static const struct FidlUnionField Fields27test_union_OlderSimpleUnion[] = {
    {.type = (const fidl_type_t*)&fidl_internal_kInt64Table},
    {.type = (const fidl_type_t*)&fidl_internal_kFloat32Table},
};
const struct FidlCodedUnion test_union_OlderSimpleUnionTable = {
    .tag = kFidlTypeUnion,
    .name = "test.union/OlderSimpleUnion",
    .strictness = kFidlStrictness_Flexible,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nonnullable,
    .fields = Fields27test_union_OlderSimpleUnion,
    .field_count = 2,
};
const struct FidlCodedUnion test_union_OlderSimpleUnionNullableRefTable = {
    .tag = kFidlTypeUnion,
    .name = "test.union/OlderSimpleUnion",
    .strictness = kFidlStrictness_Flexible,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nullable,
    .fields = Fields27test_union_OlderSimpleUnion,
    .field_count = 2,
};

static const struct FidlUnionField Fields23test_union_PizzaOrPasta[] = {
    {.type = (const fidl_type_t*)&test_union_PizzaTable},
    {.type = (const fidl_type_t*)&test_union_PastaTable},
};
const struct FidlCodedUnion test_union_PizzaOrPastaTable = {
    .tag = kFidlTypeUnion,
    .name = "test.union/PizzaOrPasta",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nonnullable,
    .fields = Fields23test_union_PizzaOrPasta,
    .field_count = 2,
};
const struct FidlCodedUnion test_union_PizzaOrPastaNullableRefTable = {
    .tag = kFidlTypeUnion,
    .name = "test.union/PizzaOrPasta",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nullable,
    .fields = Fields23test_union_PizzaOrPasta,
    .field_count = 2,
};

static const struct FidlUnionField Fields30test_union_ReverseOrdinalUnion[] = {
    {.type = (const fidl_type_t*)&fidl_internal_kUint32Table},
    {.type = (const fidl_type_t*)&fidl_internal_kUint32Table},
};
const struct FidlCodedUnion test_union_ReverseOrdinalUnionTable = {
    .tag = kFidlTypeUnion,
    .name = "test.union/ReverseOrdinalUnion",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nonnullable,
    .fields = Fields30test_union_ReverseOrdinalUnion,
    .field_count = 2,
};
const struct FidlCodedUnion test_union_ReverseOrdinalUnionNullableRefTable = {
    .tag = kFidlTypeUnion,
    .name = "test.union/ReverseOrdinalUnion",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nullable,
    .fields = Fields30test_union_ReverseOrdinalUnion,
    .field_count = 2,
};

static const struct FidlUnionField Fields29test_union_StrictBoundedUnion[] = {
    {.type = (const fidl_type_t*)&Vector10notnullable_20fidl_internal_kUint8Table},
};
const struct FidlCodedUnion test_union_StrictBoundedUnionTable = {
    .tag = kFidlTypeUnion,
    .name = "test.union/StrictBoundedUnion",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nonnullable,
    .fields = Fields29test_union_StrictBoundedUnion,
    .field_count = 1,
};
const struct FidlCodedUnion test_union_StrictBoundedUnionNullableRefTable = {
    .tag = kFidlTypeUnion,
    .name = "test.union/StrictBoundedUnion",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nullable,
    .fields = Fields29test_union_StrictBoundedUnion,
    .field_count = 1,
};

static const struct FidlUnionField Fields20test_union_StrictFoo[] = {
    {.type = (const fidl_type_t*)&StringunboundednotnullableTable},
    {.type = (const fidl_type_t*)&fidl_internal_kInt32Table},
};
const struct FidlCodedUnion test_union_StrictFooTable = {
    .tag = kFidlTypeUnion,
    .name = "test.union/StrictFoo",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nonnullable,
    .fields = Fields20test_union_StrictFoo,
    .field_count = 2,
};
const struct FidlCodedUnion test_union_StrictFooNullableRefTable = {
    .tag = kFidlTypeUnion,
    .name = "test.union/StrictFoo",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nullable,
    .fields = Fields20test_union_StrictFoo,
    .field_count = 2,
};

static const struct FidlUnionField Fields29test_union_StrictPizzaOrPasta[] = {
    {.type = (const fidl_type_t*)&test_union_PizzaTable},
    {.type = (const fidl_type_t*)&test_union_PastaTable},
};
const struct FidlCodedUnion test_union_StrictPizzaOrPastaTable = {
    .tag = kFidlTypeUnion,
    .name = "test.union/StrictPizzaOrPasta",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nonnullable,
    .fields = Fields29test_union_StrictPizzaOrPasta,
    .field_count = 2,
};
const struct FidlCodedUnion test_union_StrictPizzaOrPastaNullableRefTable = {
    .tag = kFidlTypeUnion,
    .name = "test.union/StrictPizzaOrPasta",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nullable,
    .fields = Fields29test_union_StrictPizzaOrPasta,
    .field_count = 2,
};

static const struct FidlUnionField Fields28test_union_StrictSimpleUnion[] = {
    {.type = (const fidl_type_t*)&fidl_internal_kInt32Table},
    {.type = (const fidl_type_t*)&fidl_internal_kFloat32Table},
    {.type = (const fidl_type_t*)&StringunboundednotnullableTable},
};
const struct FidlCodedUnion test_union_StrictSimpleUnionTable = {
    .tag = kFidlTypeUnion,
    .name = "test.union/StrictSimpleUnion",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nonnullable,
    .fields = Fields28test_union_StrictSimpleUnion,
    .field_count = 3,
};
const struct FidlCodedUnion test_union_StrictSimpleUnionNullableRefTable = {
    .tag = kFidlTypeUnion,
    .name = "test.union/StrictSimpleUnion",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nullable,
    .fields = Fields28test_union_StrictSimpleUnion,
    .field_count = 3,
};

static const struct FidlUnionField Fields22test_union_StrictUnion[] = {
    {.type = (const fidl_type_t*)&fidl_internal_kInt32Table},
    {.type = (const fidl_type_t*)&StringunboundednotnullableTable},
    {.type = (const fidl_type_t*)&Vectorunboundednotnullable_26StringunboundednotnullableTable},
};
const struct FidlCodedUnion test_union_StrictUnionTable = {
    .tag = kFidlTypeUnion,
    .name = "test.union/StrictUnion",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nonnullable,
    .fields = Fields22test_union_StrictUnion,
    .field_count = 3,
};
const struct FidlCodedUnion test_union_StrictUnionNullableRefTable = {
    .tag = kFidlTypeUnion,
    .name = "test.union/StrictUnion",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nullable,
    .fields = Fields22test_union_StrictUnion,
    .field_count = 3,
};

static const struct FidlUnionField Fields16test_union_Union[] = {
    {.type = (const fidl_type_t*)&fidl_internal_kInt32Table},
    {.type = (const fidl_type_t*)&StringunboundednotnullableTable},
    {.type = (const fidl_type_t*)&Vectorunboundednotnullable_26StringunboundednotnullableTable},
};
const struct FidlCodedUnion test_union_UnionTable = {
    .tag = kFidlTypeUnion,
    .name = "test.union/Union",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nonnullable,
    .fields = Fields16test_union_Union,
    .field_count = 3,
};
const struct FidlCodedUnion test_union_UnionNullableRefTable = {
    .tag = kFidlTypeUnion,
    .name = "test.union/Union",
    .strictness = kFidlStrictness_Strict,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nullable,
    .fields = Fields16test_union_Union,
    .field_count = 3,
};

static const struct FidlUnionField Fields37test_union_UnionContainingEmptyStruct[] = {
    {.type = (const fidl_type_t*)&test_union_EmptyTable},
};
const struct FidlCodedUnion test_union_UnionContainingEmptyStructTable = {
    .tag = kFidlTypeUnion,
    .name = "test.union/UnionContainingEmptyStruct",
    .strictness = kFidlStrictness_Flexible,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nonnullable,
    .fields = Fields37test_union_UnionContainingEmptyStruct,
    .field_count = 1,
};
const struct FidlCodedUnion test_union_UnionContainingEmptyStructNullableRefTable = {
    .tag = kFidlTypeUnion,
    .name = "test.union/UnionContainingEmptyStruct",
    .strictness = kFidlStrictness_Flexible,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nullable,
    .fields = Fields37test_union_UnionContainingEmptyStruct,
    .field_count = 1,
};

static const struct FidlUnionField Fields30test_union_UnionWithAttributes[] = {
    {.type = (const fidl_type_t*)&fidl_internal_kInt64Table},
};
const struct FidlCodedUnion test_union_UnionWithAttributesTable = {
    .tag = kFidlTypeUnion,
    .name = "test.union/UnionWithAttributes",
    .strictness = kFidlStrictness_Flexible,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nonnullable,
    .fields = Fields30test_union_UnionWithAttributes,
    .field_count = 1,
};
const struct FidlCodedUnion test_union_UnionWithAttributesNullableRefTable = {
    .tag = kFidlTypeUnion,
    .name = "test.union/UnionWithAttributes",
    .strictness = kFidlStrictness_Flexible,
    .is_resource = kFidlIsResource_NotResource,
    .nullable = kFidlNullability_Nullable,
    .fields = Fields30test_union_UnionWithAttributes,
    .field_count = 1,
};

static const struct FidlCodedVector Vectorunboundednotnullable_19String16notnullableTable = {
    .tag = kFidlTypeVector,
    .element = (const fidl_type_t*)&String16notnullableTable,
    .max_count = 4294967295,
    .nullable = kFidlNullability_Nonnullable,
    .element_size_v2 = 16,
};

static const struct FidlCodedVector Vectorunboundednotnullable_26StringunboundednotnullableTable = {
    .tag = kFidlTypeVector,
    .element = (const fidl_type_t*)&StringunboundednotnullableTable,
    .max_count = 4294967295,
    .nullable = kFidlNullability_Nonnullable,
    .element_size_v2 = 16,
};

static const struct FidlCodedVector Vector10notnullable_20fidl_internal_kUint8Table = {
    .tag = kFidlTypeVector,
    .element = (const fidl_type_t*)&fidl_internal_kUint8Table,
    .max_count = 10,
    .nullable = kFidlNullability_Nonnullable,
    .element_size_v2 = 1,
};

static const struct FidlCodedString String16notnullableTable = {
    .tag = kFidlTypeString,
    .max_size = 16,
    .nullable = kFidlNullability_Nonnullable,
};

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