// Autogenerated by Thrift for thrift/compiler/test/fixtures/types/src/module.thrift
//
// DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
//  @generated

package module


import (
    "reflect"
    "sync"

    included "included"
    thrift "github.com/facebook/fbthrift/thrift/lib/go/thrift/types"
)

var _ = included.GoUnusedProtection__
// (needed to ensure safety because of naive import list construction)
var _ = thrift.ZERO
var _ = reflect.Ptr

// Premade codec specs
var (
    premadeCodecTypeSpec_module_has_bitwise_ops *thrift.TypeSpec = nil
    premadeCodecTypeSpec_module_is_unscoped *thrift.TypeSpec = nil
    premadeCodecTypeSpec_module_MyForwardRefEnum *thrift.TypeSpec = nil
    premadeCodecTypeSpec_module_empty_struct *thrift.TypeSpec = nil
    premadeCodecTypeSpec_string *thrift.TypeSpec = nil
    premadeCodecTypeSpec_module_decorated_struct *thrift.TypeSpec = nil
    premadeCodecTypeSpec_i32 *thrift.TypeSpec = nil
    premadeCodecTypeSpec_list_i32 *thrift.TypeSpec = nil
    premadeCodecTypeSpec_set_i32 *thrift.TypeSpec = nil
    premadeCodecTypeSpec_module_set_i32_7194 *thrift.TypeSpec = nil
    premadeCodecTypeSpec_map_i32_string *thrift.TypeSpec = nil
    premadeCodecTypeSpec_module_map_i32_string_1261 *thrift.TypeSpec = nil
    premadeCodecTypeSpec_module_ContainerStruct *thrift.TypeSpec = nil
    premadeCodecTypeSpec_module_CppTypeStruct *thrift.TypeSpec = nil
    premadeCodecTypeSpec_i64 *thrift.TypeSpec = nil
    premadeCodecTypeSpec_module_VirtualStruct *thrift.TypeSpec = nil
    premadeCodecTypeSpec_module_MyStructWithForwardRefEnum *thrift.TypeSpec = nil
    premadeCodecTypeSpec_bool *thrift.TypeSpec = nil
    premadeCodecTypeSpec_module_TrivialNumeric *thrift.TypeSpec = nil
    premadeCodecTypeSpec_module_TrivialNestedWithDefault *thrift.TypeSpec = nil
    premadeCodecTypeSpec_map_string_i32 *thrift.TypeSpec = nil
    premadeCodecTypeSpec_module_ComplexString *thrift.TypeSpec = nil
    premadeCodecTypeSpec_module_ComplexNestedWithDefault *thrift.TypeSpec = nil
    premadeCodecTypeSpec_byte *thrift.TypeSpec = nil
    premadeCodecTypeSpec_i16 *thrift.TypeSpec = nil
    premadeCodecTypeSpec_module_MinPadding *thrift.TypeSpec = nil
    premadeCodecTypeSpec_module_MinPaddingWithCustomType *thrift.TypeSpec = nil
    premadeCodecTypeSpec_module_MyDataItem *thrift.TypeSpec = nil
    premadeCodecTypeSpec_module_MyStruct *thrift.TypeSpec = nil
    premadeCodecTypeSpec_module_Renaming *thrift.TypeSpec = nil
    premadeCodecTypeSpec_binary *thrift.TypeSpec = nil
    premadeCodecTypeSpec_module_TBinary *thrift.TypeSpec = nil
    premadeCodecTypeSpec_module_TBinary_8623 *thrift.TypeSpec = nil
    premadeCodecTypeSpec_module_SomeListOfTypeMap_2468 *thrift.TypeSpec = nil
    premadeCodecTypeSpec_module_AnnotatedTypes *thrift.TypeSpec = nil
    premadeCodecTypeSpec_module_ForwardUsageStruct *thrift.TypeSpec = nil
    premadeCodecTypeSpec_module_ForwardUsageByRef *thrift.TypeSpec = nil
    premadeCodecTypeSpec_module_ForwardUsageRoot *thrift.TypeSpec = nil
    premadeCodecTypeSpec_module_IncompleteMapDep *thrift.TypeSpec = nil
    premadeCodecTypeSpec_map_i32_module_IncompleteMapDep *thrift.TypeSpec = nil
    premadeCodecTypeSpec_module_IncompleteMap *thrift.TypeSpec = nil
    premadeCodecTypeSpec_module_CompleteMapDep *thrift.TypeSpec = nil
    premadeCodecTypeSpec_map_i32_module_CompleteMapDep *thrift.TypeSpec = nil
    premadeCodecTypeSpec_module_CompleteMap *thrift.TypeSpec = nil
    premadeCodecTypeSpec_module_IncompleteListDep *thrift.TypeSpec = nil
    premadeCodecTypeSpec_list_module_IncompleteListDep *thrift.TypeSpec = nil
    premadeCodecTypeSpec_module_IncompleteList *thrift.TypeSpec = nil
    premadeCodecTypeSpec_module_CompleteListDep *thrift.TypeSpec = nil
    premadeCodecTypeSpec_list_module_CompleteListDep *thrift.TypeSpec = nil
    premadeCodecTypeSpec_module_CompleteList *thrift.TypeSpec = nil
    premadeCodecTypeSpec_module_AdaptedListDep *thrift.TypeSpec = nil
    premadeCodecTypeSpec_list_module_AdaptedListDep *thrift.TypeSpec = nil
    premadeCodecTypeSpec_module_AdaptedList *thrift.TypeSpec = nil
    premadeCodecTypeSpec_module_DependentAdaptedListDep *thrift.TypeSpec = nil
    premadeCodecTypeSpec_list_module_DependentAdaptedListDep *thrift.TypeSpec = nil
    premadeCodecTypeSpec_module_DependentAdaptedList *thrift.TypeSpec = nil
    premadeCodecTypeSpec_module_list_i32_9187 *thrift.TypeSpec = nil
    premadeCodecTypeSpec_module_set_i32_7070 *thrift.TypeSpec = nil
    premadeCodecTypeSpec_map_i32_i32 *thrift.TypeSpec = nil
    premadeCodecTypeSpec_module_map_i32_i32_9565 *thrift.TypeSpec = nil
    premadeCodecTypeSpec_module_string_5252 *thrift.TypeSpec = nil
    premadeCodecTypeSpec_module_i32_9314 *thrift.TypeSpec = nil
    premadeCodecTypeSpec_module_AllocatorAware *thrift.TypeSpec = nil
    premadeCodecTypeSpec_module_AllocatorAware2 *thrift.TypeSpec = nil
    premadeCodecTypeSpec_module_IntTypedef *thrift.TypeSpec = nil
    premadeCodecTypeSpec_module_UintTypedef *thrift.TypeSpec = nil
    premadeCodecTypeSpec_module_TypedefStruct *thrift.TypeSpec = nil
    premadeCodecTypeSpec_module_StructWithDoubleUnderscores *thrift.TypeSpec = nil
    premadeCodecTypeSpec_map_module_TBinary_i64 *thrift.TypeSpec = nil
    premadeCodecTypeSpec_list_i64 *thrift.TypeSpec = nil
)

// Premade codec specs initializer
var premadeCodecSpecsInitOnce = sync.OnceFunc(func() {
    premadeCodecTypeSpec_module_has_bitwise_ops = &thrift.TypeSpec{
        CodecEnumSpec: &thrift.CodecEnumSpec{},

    }
    premadeCodecTypeSpec_module_is_unscoped = &thrift.TypeSpec{
        CodecEnumSpec: &thrift.CodecEnumSpec{},

    }
    premadeCodecTypeSpec_module_MyForwardRefEnum = &thrift.TypeSpec{
        CodecEnumSpec: &thrift.CodecEnumSpec{},

    }
    premadeCodecTypeSpec_module_empty_struct = &thrift.TypeSpec{
        CodecStructSpec: &thrift.CodecStructSpec{
    NewFunc: func() thrift.Struct { return NewEmptyStruct() },
},

    }
    premadeCodecTypeSpec_string = &thrift.TypeSpec{
        CodecPrimitiveSpec: &thrift.CodecPrimitiveSpec{
    PrimitiveType: thrift.CODEC_PRIMITIVE_TYPE_STRING,
},

    }
    premadeCodecTypeSpec_module_decorated_struct = &thrift.TypeSpec{
        CodecStructSpec: &thrift.CodecStructSpec{
    NewFunc: func() thrift.Struct { return NewDecoratedStruct() },
},

    }
    premadeCodecTypeSpec_i32 = &thrift.TypeSpec{
        CodecPrimitiveSpec: &thrift.CodecPrimitiveSpec{
    PrimitiveType: thrift.CODEC_PRIMITIVE_TYPE_I32,
},

    }
    premadeCodecTypeSpec_list_i32 = &thrift.TypeSpec{
        CodecListSpec: &thrift.CodecListSpec{
    ElementWireType: thrift.I32,
	ElementTypeSpec: premadeCodecTypeSpec_i32,
},

    }
    premadeCodecTypeSpec_set_i32 = &thrift.TypeSpec{
        CodecSetSpec: &thrift.CodecSetSpec{
    ElementWireType: thrift.I32,
	ElementTypeSpec: premadeCodecTypeSpec_i32,
},

    }
    premadeCodecTypeSpec_module_set_i32_7194 = &thrift.TypeSpec{
        CodecTypedefSpec: &thrift.CodecTypedefSpec{
	UnderlyingTypeSpec: premadeCodecTypeSpec_set_i32,
},

    }
    premadeCodecTypeSpec_map_i32_string = &thrift.TypeSpec{
        CodecMapSpec: &thrift.CodecMapSpec{
	KeyTypeSpec:   premadeCodecTypeSpec_i32,
	ValueTypeSpec: premadeCodecTypeSpec_string,
    KeyWireType:   thrift.I32,
	ValueWireType: thrift.STRING,
},

    }
    premadeCodecTypeSpec_module_map_i32_string_1261 = &thrift.TypeSpec{
        CodecTypedefSpec: &thrift.CodecTypedefSpec{
	UnderlyingTypeSpec: premadeCodecTypeSpec_map_i32_string,
},

    }
    premadeCodecTypeSpec_module_ContainerStruct = &thrift.TypeSpec{
        CodecStructSpec: &thrift.CodecStructSpec{
    NewFunc: func() thrift.Struct { return NewContainerStruct() },
},

    }
    premadeCodecTypeSpec_module_CppTypeStruct = &thrift.TypeSpec{
        CodecStructSpec: &thrift.CodecStructSpec{
    NewFunc: func() thrift.Struct { return NewCppTypeStruct() },
},

    }
    premadeCodecTypeSpec_i64 = &thrift.TypeSpec{
        CodecPrimitiveSpec: &thrift.CodecPrimitiveSpec{
    PrimitiveType: thrift.CODEC_PRIMITIVE_TYPE_I64,
},

    }
    premadeCodecTypeSpec_module_VirtualStruct = &thrift.TypeSpec{
        CodecStructSpec: &thrift.CodecStructSpec{
    NewFunc: func() thrift.Struct { return NewVirtualStruct() },
},

    }
    premadeCodecTypeSpec_module_MyStructWithForwardRefEnum = &thrift.TypeSpec{
        CodecStructSpec: &thrift.CodecStructSpec{
    NewFunc: func() thrift.Struct { return NewMyStructWithForwardRefEnum() },
},

    }
    premadeCodecTypeSpec_bool = &thrift.TypeSpec{
        CodecPrimitiveSpec: &thrift.CodecPrimitiveSpec{
    PrimitiveType: thrift.CODEC_PRIMITIVE_TYPE_BOOL,
},

    }
    premadeCodecTypeSpec_module_TrivialNumeric = &thrift.TypeSpec{
        CodecStructSpec: &thrift.CodecStructSpec{
    NewFunc: func() thrift.Struct { return NewTrivialNumeric() },
},

    }
    premadeCodecTypeSpec_module_TrivialNestedWithDefault = &thrift.TypeSpec{
        CodecStructSpec: &thrift.CodecStructSpec{
    NewFunc: func() thrift.Struct { return NewTrivialNestedWithDefault() },
},

    }
    premadeCodecTypeSpec_map_string_i32 = &thrift.TypeSpec{
        CodecMapSpec: &thrift.CodecMapSpec{
	KeyTypeSpec:   premadeCodecTypeSpec_string,
	ValueTypeSpec: premadeCodecTypeSpec_i32,
    KeyWireType:   thrift.STRING,
	ValueWireType: thrift.I32,
},

    }
    premadeCodecTypeSpec_module_ComplexString = &thrift.TypeSpec{
        CodecStructSpec: &thrift.CodecStructSpec{
    NewFunc: func() thrift.Struct { return NewComplexString() },
},

    }
    premadeCodecTypeSpec_module_ComplexNestedWithDefault = &thrift.TypeSpec{
        CodecStructSpec: &thrift.CodecStructSpec{
    NewFunc: func() thrift.Struct { return NewComplexNestedWithDefault() },
},

    }
    premadeCodecTypeSpec_byte = &thrift.TypeSpec{
        CodecPrimitiveSpec: &thrift.CodecPrimitiveSpec{
    PrimitiveType: thrift.CODEC_PRIMITIVE_TYPE_BYTE,
},

    }
    premadeCodecTypeSpec_i16 = &thrift.TypeSpec{
        CodecPrimitiveSpec: &thrift.CodecPrimitiveSpec{
    PrimitiveType: thrift.CODEC_PRIMITIVE_TYPE_I16,
},

    }
    premadeCodecTypeSpec_module_MinPadding = &thrift.TypeSpec{
        CodecStructSpec: &thrift.CodecStructSpec{
    NewFunc: func() thrift.Struct { return NewMinPadding() },
},

    }
    premadeCodecTypeSpec_module_MinPaddingWithCustomType = &thrift.TypeSpec{
        CodecStructSpec: &thrift.CodecStructSpec{
    NewFunc: func() thrift.Struct { return NewMinPaddingWithCustomType() },
},

    }
    premadeCodecTypeSpec_module_MyDataItem = &thrift.TypeSpec{
        CodecStructSpec: &thrift.CodecStructSpec{
    NewFunc: func() thrift.Struct { return NewMyDataItem() },
},

    }
    premadeCodecTypeSpec_module_MyStruct = &thrift.TypeSpec{
        CodecStructSpec: &thrift.CodecStructSpec{
    NewFunc: func() thrift.Struct { return NewMyStruct() },
},

    }
    premadeCodecTypeSpec_module_Renaming = &thrift.TypeSpec{
        CodecStructSpec: &thrift.CodecStructSpec{
    NewFunc: func() thrift.Struct { return NewRenaming() },
},

    }
    premadeCodecTypeSpec_binary = &thrift.TypeSpec{
        CodecPrimitiveSpec: &thrift.CodecPrimitiveSpec{
    PrimitiveType: thrift.CODEC_PRIMITIVE_TYPE_BINARY,
},

    }
    premadeCodecTypeSpec_module_TBinary = &thrift.TypeSpec{
        CodecTypedefSpec: &thrift.CodecTypedefSpec{
	UnderlyingTypeSpec: premadeCodecTypeSpec_binary,
},

    }
    premadeCodecTypeSpec_module_TBinary_8623 = &thrift.TypeSpec{
        CodecTypedefSpec: &thrift.CodecTypedefSpec{
	UnderlyingTypeSpec: premadeCodecTypeSpec_module_TBinary,
},

    }
    premadeCodecTypeSpec_module_SomeListOfTypeMap_2468 = &thrift.TypeSpec{
        CodecTypedefSpec: &thrift.CodecTypedefSpec{
	UnderlyingTypeSpec: included.GetCodecTypeSpec("included.SomeListOfTypeMap"),
},

    }
    premadeCodecTypeSpec_module_AnnotatedTypes = &thrift.TypeSpec{
        CodecStructSpec: &thrift.CodecStructSpec{
    NewFunc: func() thrift.Struct { return NewAnnotatedTypes() },
},

    }
    premadeCodecTypeSpec_module_ForwardUsageStruct = &thrift.TypeSpec{
        CodecStructSpec: &thrift.CodecStructSpec{
    NewFunc: func() thrift.Struct { return NewForwardUsageStruct() },
},

    }
    premadeCodecTypeSpec_module_ForwardUsageByRef = &thrift.TypeSpec{
        CodecStructSpec: &thrift.CodecStructSpec{
    NewFunc: func() thrift.Struct { return NewForwardUsageByRef() },
},

    }
    premadeCodecTypeSpec_module_ForwardUsageRoot = &thrift.TypeSpec{
        CodecStructSpec: &thrift.CodecStructSpec{
    NewFunc: func() thrift.Struct { return NewForwardUsageRoot() },
},

    }
    premadeCodecTypeSpec_module_IncompleteMapDep = &thrift.TypeSpec{
        CodecStructSpec: &thrift.CodecStructSpec{
    NewFunc: func() thrift.Struct { return NewIncompleteMapDep() },
},

    }
    premadeCodecTypeSpec_map_i32_module_IncompleteMapDep = &thrift.TypeSpec{
        CodecMapSpec: &thrift.CodecMapSpec{
	KeyTypeSpec:   premadeCodecTypeSpec_i32,
	ValueTypeSpec: premadeCodecTypeSpec_module_IncompleteMapDep,
    KeyWireType:   thrift.I32,
	ValueWireType: thrift.STRUCT,
},

    }
    premadeCodecTypeSpec_module_IncompleteMap = &thrift.TypeSpec{
        CodecStructSpec: &thrift.CodecStructSpec{
    NewFunc: func() thrift.Struct { return NewIncompleteMap() },
},

    }
    premadeCodecTypeSpec_module_CompleteMapDep = &thrift.TypeSpec{
        CodecStructSpec: &thrift.CodecStructSpec{
    NewFunc: func() thrift.Struct { return NewCompleteMapDep() },
},

    }
    premadeCodecTypeSpec_map_i32_module_CompleteMapDep = &thrift.TypeSpec{
        CodecMapSpec: &thrift.CodecMapSpec{
	KeyTypeSpec:   premadeCodecTypeSpec_i32,
	ValueTypeSpec: premadeCodecTypeSpec_module_CompleteMapDep,
    KeyWireType:   thrift.I32,
	ValueWireType: thrift.STRUCT,
},

    }
    premadeCodecTypeSpec_module_CompleteMap = &thrift.TypeSpec{
        CodecStructSpec: &thrift.CodecStructSpec{
    NewFunc: func() thrift.Struct { return NewCompleteMap() },
},

    }
    premadeCodecTypeSpec_module_IncompleteListDep = &thrift.TypeSpec{
        CodecStructSpec: &thrift.CodecStructSpec{
    NewFunc: func() thrift.Struct { return NewIncompleteListDep() },
},

    }
    premadeCodecTypeSpec_list_module_IncompleteListDep = &thrift.TypeSpec{
        CodecListSpec: &thrift.CodecListSpec{
    ElementWireType: thrift.STRUCT,
	ElementTypeSpec: premadeCodecTypeSpec_module_IncompleteListDep,
},

    }
    premadeCodecTypeSpec_module_IncompleteList = &thrift.TypeSpec{
        CodecStructSpec: &thrift.CodecStructSpec{
    NewFunc: func() thrift.Struct { return NewIncompleteList() },
},

    }
    premadeCodecTypeSpec_module_CompleteListDep = &thrift.TypeSpec{
        CodecStructSpec: &thrift.CodecStructSpec{
    NewFunc: func() thrift.Struct { return NewCompleteListDep() },
},

    }
    premadeCodecTypeSpec_list_module_CompleteListDep = &thrift.TypeSpec{
        CodecListSpec: &thrift.CodecListSpec{
    ElementWireType: thrift.STRUCT,
	ElementTypeSpec: premadeCodecTypeSpec_module_CompleteListDep,
},

    }
    premadeCodecTypeSpec_module_CompleteList = &thrift.TypeSpec{
        CodecStructSpec: &thrift.CodecStructSpec{
    NewFunc: func() thrift.Struct { return NewCompleteList() },
},

    }
    premadeCodecTypeSpec_module_AdaptedListDep = &thrift.TypeSpec{
        CodecStructSpec: &thrift.CodecStructSpec{
    NewFunc: func() thrift.Struct { return NewAdaptedListDep() },
},

    }
    premadeCodecTypeSpec_list_module_AdaptedListDep = &thrift.TypeSpec{
        CodecListSpec: &thrift.CodecListSpec{
    ElementWireType: thrift.STRUCT,
	ElementTypeSpec: premadeCodecTypeSpec_module_AdaptedListDep,
},

    }
    premadeCodecTypeSpec_module_AdaptedList = &thrift.TypeSpec{
        CodecStructSpec: &thrift.CodecStructSpec{
    NewFunc: func() thrift.Struct { return NewAdaptedList() },
},

    }
    premadeCodecTypeSpec_module_DependentAdaptedListDep = &thrift.TypeSpec{
        CodecStructSpec: &thrift.CodecStructSpec{
    NewFunc: func() thrift.Struct { return NewDependentAdaptedListDep() },
},

    }
    premadeCodecTypeSpec_list_module_DependentAdaptedListDep = &thrift.TypeSpec{
        CodecListSpec: &thrift.CodecListSpec{
    ElementWireType: thrift.STRUCT,
	ElementTypeSpec: premadeCodecTypeSpec_module_DependentAdaptedListDep,
},

    }
    premadeCodecTypeSpec_module_DependentAdaptedList = &thrift.TypeSpec{
        CodecStructSpec: &thrift.CodecStructSpec{
    NewFunc: func() thrift.Struct { return NewDependentAdaptedList() },
},

    }
    premadeCodecTypeSpec_module_list_i32_9187 = &thrift.TypeSpec{
        CodecTypedefSpec: &thrift.CodecTypedefSpec{
	UnderlyingTypeSpec: premadeCodecTypeSpec_list_i32,
},

    }
    premadeCodecTypeSpec_module_set_i32_7070 = &thrift.TypeSpec{
        CodecTypedefSpec: &thrift.CodecTypedefSpec{
	UnderlyingTypeSpec: premadeCodecTypeSpec_set_i32,
},

    }
    premadeCodecTypeSpec_map_i32_i32 = &thrift.TypeSpec{
        CodecMapSpec: &thrift.CodecMapSpec{
	KeyTypeSpec:   premadeCodecTypeSpec_i32,
	ValueTypeSpec: premadeCodecTypeSpec_i32,
    KeyWireType:   thrift.I32,
	ValueWireType: thrift.I32,
},

    }
    premadeCodecTypeSpec_module_map_i32_i32_9565 = &thrift.TypeSpec{
        CodecTypedefSpec: &thrift.CodecTypedefSpec{
	UnderlyingTypeSpec: premadeCodecTypeSpec_map_i32_i32,
},

    }
    premadeCodecTypeSpec_module_string_5252 = &thrift.TypeSpec{
        CodecTypedefSpec: &thrift.CodecTypedefSpec{
	UnderlyingTypeSpec: premadeCodecTypeSpec_string,
},

    }
    premadeCodecTypeSpec_module_i32_9314 = &thrift.TypeSpec{
        CodecTypedefSpec: &thrift.CodecTypedefSpec{
	UnderlyingTypeSpec: premadeCodecTypeSpec_i32,
},

    }
    premadeCodecTypeSpec_module_AllocatorAware = &thrift.TypeSpec{
        CodecStructSpec: &thrift.CodecStructSpec{
    NewFunc: func() thrift.Struct { return NewAllocatorAware() },
},

    }
    premadeCodecTypeSpec_module_AllocatorAware2 = &thrift.TypeSpec{
        CodecStructSpec: &thrift.CodecStructSpec{
    NewFunc: func() thrift.Struct { return NewAllocatorAware2() },
},

    }
    premadeCodecTypeSpec_module_IntTypedef = &thrift.TypeSpec{
        CodecTypedefSpec: &thrift.CodecTypedefSpec{
	UnderlyingTypeSpec: premadeCodecTypeSpec_i32,
},

    }
    premadeCodecTypeSpec_module_UintTypedef = &thrift.TypeSpec{
        CodecTypedefSpec: &thrift.CodecTypedefSpec{
	UnderlyingTypeSpec: premadeCodecTypeSpec_module_IntTypedef,
},

    }
    premadeCodecTypeSpec_module_TypedefStruct = &thrift.TypeSpec{
        CodecStructSpec: &thrift.CodecStructSpec{
    NewFunc: func() thrift.Struct { return NewTypedefStruct() },
},

    }
    premadeCodecTypeSpec_module_StructWithDoubleUnderscores = &thrift.TypeSpec{
        CodecStructSpec: &thrift.CodecStructSpec{
    NewFunc: func() thrift.Struct { return NewStructWithDoubleUnderscores() },
},

    }
    premadeCodecTypeSpec_map_module_TBinary_i64 = &thrift.TypeSpec{
        CodecMapSpec: &thrift.CodecMapSpec{
	KeyTypeSpec:   premadeCodecTypeSpec_module_TBinary,
	ValueTypeSpec: premadeCodecTypeSpec_i64,
    KeyWireType:   thrift.STRING,
	ValueWireType: thrift.I64,
},

    }
    premadeCodecTypeSpec_list_i64 = &thrift.TypeSpec{
        CodecListSpec: &thrift.CodecListSpec{
    ElementWireType: thrift.I64,
	ElementTypeSpec: premadeCodecTypeSpec_i64,
},

    }
})

// Premade struct specs
var (
    premadeStructSpec_empty_struct *thrift.StructSpec = nil
    premadeStructSpec_decorated_struct *thrift.StructSpec = nil
    premadeStructSpec_ContainerStruct *thrift.StructSpec = nil
    premadeStructSpec_CppTypeStruct *thrift.StructSpec = nil
    premadeStructSpec_VirtualStruct *thrift.StructSpec = nil
    premadeStructSpec_MyStructWithForwardRefEnum *thrift.StructSpec = nil
    premadeStructSpec_TrivialNumeric *thrift.StructSpec = nil
    premadeStructSpec_TrivialNestedWithDefault *thrift.StructSpec = nil
    premadeStructSpec_ComplexString *thrift.StructSpec = nil
    premadeStructSpec_ComplexNestedWithDefault *thrift.StructSpec = nil
    premadeStructSpec_MinPadding *thrift.StructSpec = nil
    premadeStructSpec_MinPaddingWithCustomType *thrift.StructSpec = nil
    premadeStructSpec_MyStruct *thrift.StructSpec = nil
    premadeStructSpec_MyDataItem *thrift.StructSpec = nil
    premadeStructSpec_Renaming *thrift.StructSpec = nil
    premadeStructSpec_AnnotatedTypes *thrift.StructSpec = nil
    premadeStructSpec_ForwardUsageRoot *thrift.StructSpec = nil
    premadeStructSpec_ForwardUsageStruct *thrift.StructSpec = nil
    premadeStructSpec_ForwardUsageByRef *thrift.StructSpec = nil
    premadeStructSpec_IncompleteMap *thrift.StructSpec = nil
    premadeStructSpec_IncompleteMapDep *thrift.StructSpec = nil
    premadeStructSpec_CompleteMap *thrift.StructSpec = nil
    premadeStructSpec_CompleteMapDep *thrift.StructSpec = nil
    premadeStructSpec_IncompleteList *thrift.StructSpec = nil
    premadeStructSpec_IncompleteListDep *thrift.StructSpec = nil
    premadeStructSpec_CompleteList *thrift.StructSpec = nil
    premadeStructSpec_CompleteListDep *thrift.StructSpec = nil
    premadeStructSpec_AdaptedList *thrift.StructSpec = nil
    premadeStructSpec_AdaptedListDep *thrift.StructSpec = nil
    premadeStructSpec_DependentAdaptedList *thrift.StructSpec = nil
    premadeStructSpec_DependentAdaptedListDep *thrift.StructSpec = nil
    premadeStructSpec_AllocatorAware *thrift.StructSpec = nil
    premadeStructSpec_AllocatorAware2 *thrift.StructSpec = nil
    premadeStructSpec_TypedefStruct *thrift.StructSpec = nil
    premadeStructSpec_StructWithDoubleUnderscores *thrift.StructSpec = nil
    premadeStructSpec_reqSomeServiceBounceMap *thrift.StructSpec = nil
    premadeStructSpec_respSomeServiceBounceMap *thrift.StructSpec = nil
    premadeStructSpec_reqSomeServiceBinaryKeyedMap *thrift.StructSpec = nil
    premadeStructSpec_respSomeServiceBinaryKeyedMap *thrift.StructSpec = nil
)

// Premade struct specs initializer
var premadeStructSpecsInitOnce = sync.OnceFunc(func() {
    premadeStructSpec_empty_struct = &thrift.StructSpec{
    Name:               "empty_struct",
    IsUnion:            false,
    IsException:        false,
    FieldSpecs:         []thrift.FieldSpec{
    },
    FieldSpecIDToIndex: map[int16]int{
    },
}
    premadeStructSpec_decorated_struct = &thrift.StructSpec{
    Name:               "decorated_struct",
    IsUnion:            false,
    IsException:        false,
    FieldSpecs:         []thrift.FieldSpec{
        {
            ID:                   1,
            WireType:             thrift.Type(thrift.STRING),
            Name:                 "field",
            ReflectIndex:         0,
            IsOptional:           false,
            ValueTypeSpec:        premadeCodecTypeSpec_string,
            MustBeSetToSerialize: false,
        },    },
    FieldSpecIDToIndex: map[int16]int{
        1: 0,
    },
}
    premadeStructSpec_ContainerStruct = &thrift.StructSpec{
    Name:               "ContainerStruct",
    IsUnion:            false,
    IsException:        false,
    FieldSpecs:         []thrift.FieldSpec{
        {
            ID:                   2,
            WireType:             thrift.Type(thrift.LIST),
            Name:                 "fieldB",
            ReflectIndex:         0,
            IsOptional:           false,
            ValueTypeSpec:        premadeCodecTypeSpec_list_i32,
            MustBeSetToSerialize: false,
        },        {
            ID:                   3,
            WireType:             thrift.Type(thrift.LIST),
            Name:                 "fieldC",
            ReflectIndex:         1,
            IsOptional:           false,
            ValueTypeSpec:        premadeCodecTypeSpec_list_i32,
            MustBeSetToSerialize: false,
        },        {
            ID:                   4,
            WireType:             thrift.Type(thrift.LIST),
            Name:                 "fieldD",
            ReflectIndex:         2,
            IsOptional:           false,
            ValueTypeSpec:        premadeCodecTypeSpec_list_i32,
            MustBeSetToSerialize: false,
        },        {
            ID:                   5,
            WireType:             thrift.Type(thrift.LIST),
            Name:                 "fieldE",
            ReflectIndex:         3,
            IsOptional:           false,
            ValueTypeSpec:        premadeCodecTypeSpec_list_i32,
            MustBeSetToSerialize: false,
        },        {
            ID:                   6,
            WireType:             thrift.Type(thrift.SET),
            Name:                 "fieldF",
            ReflectIndex:         4,
            IsOptional:           false,
            ValueTypeSpec:        premadeCodecTypeSpec_module_set_i32_7194,
            MustBeSetToSerialize: false,
        },        {
            ID:                   7,
            WireType:             thrift.Type(thrift.MAP),
            Name:                 "fieldG",
            ReflectIndex:         5,
            IsOptional:           false,
            ValueTypeSpec:        premadeCodecTypeSpec_module_map_i32_string_1261,
            MustBeSetToSerialize: false,
        },        {
            ID:                   8,
            WireType:             thrift.Type(thrift.MAP),
            Name:                 "fieldH",
            ReflectIndex:         6,
            IsOptional:           false,
            ValueTypeSpec:        included.GetCodecTypeSpec("included.SomeMap"),
            MustBeSetToSerialize: false,
        },        {
            ID:                   12,
            WireType:             thrift.Type(thrift.LIST),
            Name:                 "fieldA",
            ReflectIndex:         7,
            IsOptional:           false,
            ValueTypeSpec:        premadeCodecTypeSpec_list_i32,
            MustBeSetToSerialize: false,
        },    },
    FieldSpecIDToIndex: map[int16]int{
        2: 0,
        3: 1,
        4: 2,
        5: 3,
        6: 4,
        7: 5,
        8: 6,
        12: 7,
    },
}
    premadeStructSpec_CppTypeStruct = &thrift.StructSpec{
    Name:               "CppTypeStruct",
    IsUnion:            false,
    IsException:        false,
    FieldSpecs:         []thrift.FieldSpec{
        {
            ID:                   1,
            WireType:             thrift.Type(thrift.LIST),
            Name:                 "fieldA",
            ReflectIndex:         0,
            IsOptional:           false,
            ValueTypeSpec:        premadeCodecTypeSpec_list_i32,
            MustBeSetToSerialize: false,
        },    },
    FieldSpecIDToIndex: map[int16]int{
        1: 0,
    },
}
    premadeStructSpec_VirtualStruct = &thrift.StructSpec{
    Name:               "VirtualStruct",
    IsUnion:            false,
    IsException:        false,
    FieldSpecs:         []thrift.FieldSpec{
        {
            ID:                   1,
            WireType:             thrift.Type(thrift.I64),
            Name:                 "MyIntField",
            ReflectIndex:         0,
            IsOptional:           false,
            ValueTypeSpec:        premadeCodecTypeSpec_i64,
            MustBeSetToSerialize: false,
        },    },
    FieldSpecIDToIndex: map[int16]int{
        1: 0,
    },
}
    premadeStructSpec_MyStructWithForwardRefEnum = &thrift.StructSpec{
    Name:               "MyStructWithForwardRefEnum",
    IsUnion:            false,
    IsException:        false,
    FieldSpecs:         []thrift.FieldSpec{
        {
            ID:                   1,
            WireType:             thrift.Type(thrift.I32),
            Name:                 "a",
            ReflectIndex:         0,
            IsOptional:           false,
            ValueTypeSpec:        premadeCodecTypeSpec_module_MyForwardRefEnum,
            MustBeSetToSerialize: false,
        },        {
            ID:                   2,
            WireType:             thrift.Type(thrift.I32),
            Name:                 "b",
            ReflectIndex:         1,
            IsOptional:           false,
            ValueTypeSpec:        premadeCodecTypeSpec_module_MyForwardRefEnum,
            MustBeSetToSerialize: false,
        },    },
    FieldSpecIDToIndex: map[int16]int{
        1: 0,
        2: 1,
    },
}
    premadeStructSpec_TrivialNumeric = &thrift.StructSpec{
    Name:               "TrivialNumeric",
    IsUnion:            false,
    IsException:        false,
    FieldSpecs:         []thrift.FieldSpec{
        {
            ID:                   1,
            WireType:             thrift.Type(thrift.I32),
            Name:                 "a",
            ReflectIndex:         0,
            IsOptional:           false,
            ValueTypeSpec:        premadeCodecTypeSpec_i32,
            MustBeSetToSerialize: false,
        },        {
            ID:                   2,
            WireType:             thrift.Type(thrift.BOOL),
            Name:                 "b",
            ReflectIndex:         1,
            IsOptional:           false,
            ValueTypeSpec:        premadeCodecTypeSpec_bool,
            MustBeSetToSerialize: false,
        },    },
    FieldSpecIDToIndex: map[int16]int{
        1: 0,
        2: 1,
    },
}
    premadeStructSpec_TrivialNestedWithDefault = &thrift.StructSpec{
    Name:               "TrivialNestedWithDefault",
    IsUnion:            false,
    IsException:        false,
    FieldSpecs:         []thrift.FieldSpec{
        {
            ID:                   1,
            WireType:             thrift.Type(thrift.I32),
            Name:                 "z",
            ReflectIndex:         0,
            IsOptional:           false,
            ValueTypeSpec:        premadeCodecTypeSpec_i32,
            MustBeSetToSerialize: false,
        },        {
            ID:                   2,
            WireType:             thrift.Type(thrift.STRUCT),
            Name:                 "n",
            ReflectIndex:         1,
            IsOptional:           false,
            ValueTypeSpec:        premadeCodecTypeSpec_module_TrivialNumeric,
            MustBeSetToSerialize: true,
        },    },
    FieldSpecIDToIndex: map[int16]int{
        1: 0,
        2: 1,
    },
}
    premadeStructSpec_ComplexString = &thrift.StructSpec{
    Name:               "ComplexString",
    IsUnion:            false,
    IsException:        false,
    FieldSpecs:         []thrift.FieldSpec{
        {
            ID:                   1,
            WireType:             thrift.Type(thrift.STRING),
            Name:                 "a",
            ReflectIndex:         0,
            IsOptional:           false,
            ValueTypeSpec:        premadeCodecTypeSpec_string,
            MustBeSetToSerialize: false,
        },        {
            ID:                   2,
            WireType:             thrift.Type(thrift.MAP),
            Name:                 "b",
            ReflectIndex:         1,
            IsOptional:           false,
            ValueTypeSpec:        premadeCodecTypeSpec_map_string_i32,
            MustBeSetToSerialize: false,
        },    },
    FieldSpecIDToIndex: map[int16]int{
        1: 0,
        2: 1,
    },
}
    premadeStructSpec_ComplexNestedWithDefault = &thrift.StructSpec{
    Name:               "ComplexNestedWithDefault",
    IsUnion:            false,
    IsException:        false,
    FieldSpecs:         []thrift.FieldSpec{
        {
            ID:                   1,
            WireType:             thrift.Type(thrift.STRING),
            Name:                 "z",
            ReflectIndex:         0,
            IsOptional:           false,
            ValueTypeSpec:        premadeCodecTypeSpec_string,
            MustBeSetToSerialize: false,
        },        {
            ID:                   2,
            WireType:             thrift.Type(thrift.STRUCT),
            Name:                 "n",
            ReflectIndex:         1,
            IsOptional:           false,
            ValueTypeSpec:        premadeCodecTypeSpec_module_ComplexString,
            MustBeSetToSerialize: true,
        },    },
    FieldSpecIDToIndex: map[int16]int{
        1: 0,
        2: 1,
    },
}
    premadeStructSpec_MinPadding = &thrift.StructSpec{
    Name:               "MinPadding",
    IsUnion:            false,
    IsException:        false,
    FieldSpecs:         []thrift.FieldSpec{
        {
            ID:                   1,
            WireType:             thrift.Type(thrift.BYTE),
            Name:                 "small",
            ReflectIndex:         0,
            IsOptional:           false,
            ValueTypeSpec:        premadeCodecTypeSpec_byte,
            MustBeSetToSerialize: false,
        },        {
            ID:                   2,
            WireType:             thrift.Type(thrift.I64),
            Name:                 "big",
            ReflectIndex:         1,
            IsOptional:           false,
            ValueTypeSpec:        premadeCodecTypeSpec_i64,
            MustBeSetToSerialize: false,
        },        {
            ID:                   3,
            WireType:             thrift.Type(thrift.I16),
            Name:                 "medium",
            ReflectIndex:         2,
            IsOptional:           false,
            ValueTypeSpec:        premadeCodecTypeSpec_i16,
            MustBeSetToSerialize: false,
        },        {
            ID:                   4,
            WireType:             thrift.Type(thrift.I32),
            Name:                 "biggish",
            ReflectIndex:         3,
            IsOptional:           false,
            ValueTypeSpec:        premadeCodecTypeSpec_i32,
            MustBeSetToSerialize: false,
        },        {
            ID:                   5,
            WireType:             thrift.Type(thrift.BYTE),
            Name:                 "tiny",
            ReflectIndex:         4,
            IsOptional:           false,
            ValueTypeSpec:        premadeCodecTypeSpec_byte,
            MustBeSetToSerialize: false,
        },    },
    FieldSpecIDToIndex: map[int16]int{
        1: 0,
        2: 1,
        3: 2,
        4: 3,
        5: 4,
    },
}
    premadeStructSpec_MinPaddingWithCustomType = &thrift.StructSpec{
    Name:               "MinPaddingWithCustomType",
    IsUnion:            false,
    IsException:        false,
    FieldSpecs:         []thrift.FieldSpec{
        {
            ID:                   1,
            WireType:             thrift.Type(thrift.BYTE),
            Name:                 "small",
            ReflectIndex:         0,
            IsOptional:           false,
            ValueTypeSpec:        premadeCodecTypeSpec_byte,
            MustBeSetToSerialize: false,
        },        {
            ID:                   2,
            WireType:             thrift.Type(thrift.I64),
            Name:                 "big",
            ReflectIndex:         1,
            IsOptional:           false,
            ValueTypeSpec:        premadeCodecTypeSpec_i64,
            MustBeSetToSerialize: false,
        },        {
            ID:                   3,
            WireType:             thrift.Type(thrift.I16),
            Name:                 "medium",
            ReflectIndex:         2,
            IsOptional:           false,
            ValueTypeSpec:        premadeCodecTypeSpec_i16,
            MustBeSetToSerialize: false,
        },        {
            ID:                   4,
            WireType:             thrift.Type(thrift.I32),
            Name:                 "biggish",
            ReflectIndex:         3,
            IsOptional:           false,
            ValueTypeSpec:        premadeCodecTypeSpec_i32,
            MustBeSetToSerialize: false,
        },        {
            ID:                   5,
            WireType:             thrift.Type(thrift.BYTE),
            Name:                 "tiny",
            ReflectIndex:         4,
            IsOptional:           false,
            ValueTypeSpec:        premadeCodecTypeSpec_byte,
            MustBeSetToSerialize: false,
        },    },
    FieldSpecIDToIndex: map[int16]int{
        1: 0,
        2: 1,
        3: 2,
        4: 3,
        5: 4,
    },
}
    premadeStructSpec_MyStruct = &thrift.StructSpec{
    Name:               "MyStruct",
    IsUnion:            false,
    IsException:        false,
    FieldSpecs:         []thrift.FieldSpec{
        {
            ID:                   1,
            WireType:             thrift.Type(thrift.I64),
            Name:                 "MyIntField",
            ReflectIndex:         0,
            IsOptional:           false,
            ValueTypeSpec:        premadeCodecTypeSpec_i64,
            MustBeSetToSerialize: false,
        },        {
            ID:                   2,
            WireType:             thrift.Type(thrift.STRING),
            Name:                 "MyStringField",
            ReflectIndex:         1,
            IsOptional:           false,
            ValueTypeSpec:        premadeCodecTypeSpec_string,
            MustBeSetToSerialize: false,
        },        {
            ID:                   3,
            WireType:             thrift.Type(thrift.I64),
            Name:                 "majorVer",
            ReflectIndex:         2,
            IsOptional:           false,
            ValueTypeSpec:        premadeCodecTypeSpec_i64,
            MustBeSetToSerialize: false,
        },        {
            ID:                   4,
            WireType:             thrift.Type(thrift.STRUCT),
            Name:                 "data",
            ReflectIndex:         3,
            IsOptional:           false,
            ValueTypeSpec:        premadeCodecTypeSpec_module_MyDataItem,
            MustBeSetToSerialize: true,
        },    },
    FieldSpecIDToIndex: map[int16]int{
        1: 0,
        2: 1,
        3: 2,
        4: 3,
    },
}
    premadeStructSpec_MyDataItem = &thrift.StructSpec{
    Name:               "MyDataItem",
    IsUnion:            false,
    IsException:        false,
    FieldSpecs:         []thrift.FieldSpec{
    },
    FieldSpecIDToIndex: map[int16]int{
    },
}
    premadeStructSpec_Renaming = &thrift.StructSpec{
    Name:               "Renaming",
    IsUnion:            false,
    IsException:        false,
    FieldSpecs:         []thrift.FieldSpec{
        {
            ID:                   1,
            WireType:             thrift.Type(thrift.I64),
            Name:                 "foo",
            ReflectIndex:         0,
            IsOptional:           false,
            ValueTypeSpec:        premadeCodecTypeSpec_i64,
            MustBeSetToSerialize: false,
        },    },
    FieldSpecIDToIndex: map[int16]int{
        1: 0,
    },
}
    premadeStructSpec_AnnotatedTypes = &thrift.StructSpec{
    Name:               "AnnotatedTypes",
    IsUnion:            false,
    IsException:        false,
    FieldSpecs:         []thrift.FieldSpec{
        {
            ID:                   1,
            WireType:             thrift.Type(thrift.STRING),
            Name:                 "binary_field",
            ReflectIndex:         0,
            IsOptional:           false,
            ValueTypeSpec:        premadeCodecTypeSpec_module_TBinary_8623,
            MustBeSetToSerialize: false,
        },        {
            ID:                   2,
            WireType:             thrift.Type(thrift.LIST),
            Name:                 "list_field",
            ReflectIndex:         1,
            IsOptional:           false,
            ValueTypeSpec:        premadeCodecTypeSpec_module_SomeListOfTypeMap_2468,
            MustBeSetToSerialize: false,
        },    },
    FieldSpecIDToIndex: map[int16]int{
        1: 0,
        2: 1,
    },
}
    premadeStructSpec_ForwardUsageRoot = &thrift.StructSpec{
    Name:               "ForwardUsageRoot",
    IsUnion:            false,
    IsException:        false,
    FieldSpecs:         []thrift.FieldSpec{
        {
            ID:                   1,
            WireType:             thrift.Type(thrift.STRUCT),
            Name:                 "ForwardUsageStruct",
            ReflectIndex:         0,
            IsOptional:           true,
            ValueTypeSpec:        premadeCodecTypeSpec_module_ForwardUsageStruct,
            MustBeSetToSerialize: true,
        },        {
            ID:                   2,
            WireType:             thrift.Type(thrift.STRUCT),
            Name:                 "ForwardUsageByRef",
            ReflectIndex:         1,
            IsOptional:           true,
            ValueTypeSpec:        premadeCodecTypeSpec_module_ForwardUsageByRef,
            MustBeSetToSerialize: true,
        },    },
    FieldSpecIDToIndex: map[int16]int{
        1: 0,
        2: 1,
    },
}
    premadeStructSpec_ForwardUsageStruct = &thrift.StructSpec{
    Name:               "ForwardUsageStruct",
    IsUnion:            false,
    IsException:        false,
    FieldSpecs:         []thrift.FieldSpec{
        {
            ID:                   1,
            WireType:             thrift.Type(thrift.STRUCT),
            Name:                 "foo",
            ReflectIndex:         0,
            IsOptional:           true,
            ValueTypeSpec:        premadeCodecTypeSpec_module_ForwardUsageRoot,
            MustBeSetToSerialize: true,
        },    },
    FieldSpecIDToIndex: map[int16]int{
        1: 0,
    },
}
    premadeStructSpec_ForwardUsageByRef = &thrift.StructSpec{
    Name:               "ForwardUsageByRef",
    IsUnion:            false,
    IsException:        false,
    FieldSpecs:         []thrift.FieldSpec{
        {
            ID:                   1,
            WireType:             thrift.Type(thrift.STRUCT),
            Name:                 "foo",
            ReflectIndex:         0,
            IsOptional:           true,
            ValueTypeSpec:        premadeCodecTypeSpec_module_ForwardUsageRoot,
            MustBeSetToSerialize: true,
        },    },
    FieldSpecIDToIndex: map[int16]int{
        1: 0,
    },
}
    premadeStructSpec_IncompleteMap = &thrift.StructSpec{
    Name:               "IncompleteMap",
    IsUnion:            false,
    IsException:        false,
    FieldSpecs:         []thrift.FieldSpec{
        {
            ID:                   1,
            WireType:             thrift.Type(thrift.MAP),
            Name:                 "field",
            ReflectIndex:         0,
            IsOptional:           true,
            ValueTypeSpec:        premadeCodecTypeSpec_map_i32_module_IncompleteMapDep,
            MustBeSetToSerialize: true,
        },    },
    FieldSpecIDToIndex: map[int16]int{
        1: 0,
    },
}
    premadeStructSpec_IncompleteMapDep = &thrift.StructSpec{
    Name:               "IncompleteMapDep",
    IsUnion:            false,
    IsException:        false,
    FieldSpecs:         []thrift.FieldSpec{
    },
    FieldSpecIDToIndex: map[int16]int{
    },
}
    premadeStructSpec_CompleteMap = &thrift.StructSpec{
    Name:               "CompleteMap",
    IsUnion:            false,
    IsException:        false,
    FieldSpecs:         []thrift.FieldSpec{
        {
            ID:                   1,
            WireType:             thrift.Type(thrift.MAP),
            Name:                 "field",
            ReflectIndex:         0,
            IsOptional:           true,
            ValueTypeSpec:        premadeCodecTypeSpec_map_i32_module_CompleteMapDep,
            MustBeSetToSerialize: true,
        },    },
    FieldSpecIDToIndex: map[int16]int{
        1: 0,
    },
}
    premadeStructSpec_CompleteMapDep = &thrift.StructSpec{
    Name:               "CompleteMapDep",
    IsUnion:            false,
    IsException:        false,
    FieldSpecs:         []thrift.FieldSpec{
    },
    FieldSpecIDToIndex: map[int16]int{
    },
}
    premadeStructSpec_IncompleteList = &thrift.StructSpec{
    Name:               "IncompleteList",
    IsUnion:            false,
    IsException:        false,
    FieldSpecs:         []thrift.FieldSpec{
        {
            ID:                   1,
            WireType:             thrift.Type(thrift.LIST),
            Name:                 "field",
            ReflectIndex:         0,
            IsOptional:           true,
            ValueTypeSpec:        premadeCodecTypeSpec_list_module_IncompleteListDep,
            MustBeSetToSerialize: true,
        },    },
    FieldSpecIDToIndex: map[int16]int{
        1: 0,
    },
}
    premadeStructSpec_IncompleteListDep = &thrift.StructSpec{
    Name:               "IncompleteListDep",
    IsUnion:            false,
    IsException:        false,
    FieldSpecs:         []thrift.FieldSpec{
    },
    FieldSpecIDToIndex: map[int16]int{
    },
}
    premadeStructSpec_CompleteList = &thrift.StructSpec{
    Name:               "CompleteList",
    IsUnion:            false,
    IsException:        false,
    FieldSpecs:         []thrift.FieldSpec{
        {
            ID:                   1,
            WireType:             thrift.Type(thrift.LIST),
            Name:                 "field",
            ReflectIndex:         0,
            IsOptional:           true,
            ValueTypeSpec:        premadeCodecTypeSpec_list_module_CompleteListDep,
            MustBeSetToSerialize: true,
        },    },
    FieldSpecIDToIndex: map[int16]int{
        1: 0,
    },
}
    premadeStructSpec_CompleteListDep = &thrift.StructSpec{
    Name:               "CompleteListDep",
    IsUnion:            false,
    IsException:        false,
    FieldSpecs:         []thrift.FieldSpec{
    },
    FieldSpecIDToIndex: map[int16]int{
    },
}
    premadeStructSpec_AdaptedList = &thrift.StructSpec{
    Name:               "AdaptedList",
    IsUnion:            false,
    IsException:        false,
    FieldSpecs:         []thrift.FieldSpec{
        {
            ID:                   1,
            WireType:             thrift.Type(thrift.LIST),
            Name:                 "field",
            ReflectIndex:         0,
            IsOptional:           true,
            ValueTypeSpec:        premadeCodecTypeSpec_list_module_AdaptedListDep,
            MustBeSetToSerialize: true,
        },    },
    FieldSpecIDToIndex: map[int16]int{
        1: 0,
    },
}
    premadeStructSpec_AdaptedListDep = &thrift.StructSpec{
    Name:               "AdaptedListDep",
    IsUnion:            false,
    IsException:        false,
    FieldSpecs:         []thrift.FieldSpec{
        {
            ID:                   1,
            WireType:             thrift.Type(thrift.STRUCT),
            Name:                 "field",
            ReflectIndex:         0,
            IsOptional:           false,
            ValueTypeSpec:        premadeCodecTypeSpec_module_AdaptedList,
            MustBeSetToSerialize: true,
        },    },
    FieldSpecIDToIndex: map[int16]int{
        1: 0,
    },
}
    premadeStructSpec_DependentAdaptedList = &thrift.StructSpec{
    Name:               "DependentAdaptedList",
    IsUnion:            false,
    IsException:        false,
    FieldSpecs:         []thrift.FieldSpec{
        {
            ID:                   1,
            WireType:             thrift.Type(thrift.LIST),
            Name:                 "field",
            ReflectIndex:         0,
            IsOptional:           true,
            ValueTypeSpec:        premadeCodecTypeSpec_list_module_DependentAdaptedListDep,
            MustBeSetToSerialize: true,
        },    },
    FieldSpecIDToIndex: map[int16]int{
        1: 0,
    },
}
    premadeStructSpec_DependentAdaptedListDep = &thrift.StructSpec{
    Name:               "DependentAdaptedListDep",
    IsUnion:            false,
    IsException:        false,
    FieldSpecs:         []thrift.FieldSpec{
        {
            ID:                   1,
            WireType:             thrift.Type(thrift.I16),
            Name:                 "field",
            ReflectIndex:         0,
            IsOptional:           true,
            ValueTypeSpec:        premadeCodecTypeSpec_i16,
            MustBeSetToSerialize: true,
        },    },
    FieldSpecIDToIndex: map[int16]int{
        1: 0,
    },
}
    premadeStructSpec_AllocatorAware = &thrift.StructSpec{
    Name:               "AllocatorAware",
    IsUnion:            false,
    IsException:        false,
    FieldSpecs:         []thrift.FieldSpec{
        {
            ID:                   1,
            WireType:             thrift.Type(thrift.LIST),
            Name:                 "aa_list",
            ReflectIndex:         0,
            IsOptional:           false,
            ValueTypeSpec:        premadeCodecTypeSpec_module_list_i32_9187,
            MustBeSetToSerialize: false,
        },        {
            ID:                   2,
            WireType:             thrift.Type(thrift.SET),
            Name:                 "aa_set",
            ReflectIndex:         1,
            IsOptional:           false,
            ValueTypeSpec:        premadeCodecTypeSpec_module_set_i32_7070,
            MustBeSetToSerialize: false,
        },        {
            ID:                   3,
            WireType:             thrift.Type(thrift.MAP),
            Name:                 "aa_map",
            ReflectIndex:         2,
            IsOptional:           false,
            ValueTypeSpec:        premadeCodecTypeSpec_module_map_i32_i32_9565,
            MustBeSetToSerialize: false,
        },        {
            ID:                   4,
            WireType:             thrift.Type(thrift.STRING),
            Name:                 "aa_string",
            ReflectIndex:         3,
            IsOptional:           false,
            ValueTypeSpec:        premadeCodecTypeSpec_module_string_5252,
            MustBeSetToSerialize: false,
        },        {
            ID:                   5,
            WireType:             thrift.Type(thrift.I32),
            Name:                 "not_a_container",
            ReflectIndex:         4,
            IsOptional:           false,
            ValueTypeSpec:        premadeCodecTypeSpec_i32,
            MustBeSetToSerialize: false,
        },        {
            ID:                   6,
            WireType:             thrift.Type(thrift.I32),
            Name:                 "aa_unique",
            ReflectIndex:         5,
            IsOptional:           false,
            ValueTypeSpec:        premadeCodecTypeSpec_module_i32_9314,
            MustBeSetToSerialize: false,
        },        {
            ID:                   7,
            WireType:             thrift.Type(thrift.I32),
            Name:                 "aa_shared",
            ReflectIndex:         6,
            IsOptional:           false,
            ValueTypeSpec:        premadeCodecTypeSpec_module_i32_9314,
            MustBeSetToSerialize: false,
        },    },
    FieldSpecIDToIndex: map[int16]int{
        1: 0,
        2: 1,
        3: 2,
        4: 3,
        5: 4,
        6: 5,
        7: 6,
    },
}
    premadeStructSpec_AllocatorAware2 = &thrift.StructSpec{
    Name:               "AllocatorAware2",
    IsUnion:            false,
    IsException:        false,
    FieldSpecs:         []thrift.FieldSpec{
        {
            ID:                   1,
            WireType:             thrift.Type(thrift.I32),
            Name:                 "not_a_container",
            ReflectIndex:         0,
            IsOptional:           false,
            ValueTypeSpec:        premadeCodecTypeSpec_i32,
            MustBeSetToSerialize: false,
        },        {
            ID:                   2,
            WireType:             thrift.Type(thrift.I32),
            Name:                 "box_field",
            ReflectIndex:         1,
            IsOptional:           true,
            ValueTypeSpec:        premadeCodecTypeSpec_i32,
            MustBeSetToSerialize: true,
        },    },
    FieldSpecIDToIndex: map[int16]int{
        1: 0,
        2: 1,
    },
}
    premadeStructSpec_TypedefStruct = &thrift.StructSpec{
    Name:               "TypedefStruct",
    IsUnion:            false,
    IsException:        false,
    FieldSpecs:         []thrift.FieldSpec{
        {
            ID:                   1,
            WireType:             thrift.Type(thrift.I32),
            Name:                 "i32_field",
            ReflectIndex:         0,
            IsOptional:           false,
            ValueTypeSpec:        premadeCodecTypeSpec_i32,
            MustBeSetToSerialize: false,
        },        {
            ID:                   2,
            WireType:             thrift.Type(thrift.I32),
            Name:                 "IntTypedef_field",
            ReflectIndex:         1,
            IsOptional:           false,
            ValueTypeSpec:        premadeCodecTypeSpec_module_IntTypedef,
            MustBeSetToSerialize: false,
        },        {
            ID:                   3,
            WireType:             thrift.Type(thrift.I32),
            Name:                 "UintTypedef_field",
            ReflectIndex:         2,
            IsOptional:           false,
            ValueTypeSpec:        premadeCodecTypeSpec_module_UintTypedef,
            MustBeSetToSerialize: false,
        },    },
    FieldSpecIDToIndex: map[int16]int{
        1: 0,
        2: 1,
        3: 2,
    },
}
    premadeStructSpec_StructWithDoubleUnderscores = &thrift.StructSpec{
    Name:               "StructWithDoubleUnderscores",
    IsUnion:            false,
    IsException:        false,
    FieldSpecs:         []thrift.FieldSpec{
        {
            ID:                   1,
            WireType:             thrift.Type(thrift.I32),
            Name:                 "__field",
            ReflectIndex:         0,
            IsOptional:           false,
            ValueTypeSpec:        premadeCodecTypeSpec_i32,
            MustBeSetToSerialize: false,
        },    },
    FieldSpecIDToIndex: map[int16]int{
        1: 0,
    },
}
    premadeStructSpec_reqSomeServiceBounceMap = &thrift.StructSpec{
    Name:               "reqSomeServiceBounceMap",
    IsUnion:            false,
    IsException:        false,
    FieldSpecs:         []thrift.FieldSpec{
        {
            ID:                   1,
            WireType:             thrift.Type(thrift.MAP),
            Name:                 "m",
            ReflectIndex:         0,
            IsOptional:           false,
            ValueTypeSpec:        included.GetCodecTypeSpec("included.SomeMap"),
            MustBeSetToSerialize: false,
        },    },
    FieldSpecIDToIndex: map[int16]int{
        1: 0,
    },
}
    premadeStructSpec_respSomeServiceBounceMap = &thrift.StructSpec{
    Name:               "respSomeServiceBounceMap",
    IsUnion:            false,
    IsException:        false,
    FieldSpecs:         []thrift.FieldSpec{
        {
            ID:                   0,
            WireType:             thrift.Type(thrift.MAP),
            Name:                 "success",
            ReflectIndex:         0,
            IsOptional:           true,
            ValueTypeSpec:        included.GetCodecTypeSpec("included.SomeMap"),
            MustBeSetToSerialize: true,
        },    },
    FieldSpecIDToIndex: map[int16]int{
        0: 0,
    },
}
    premadeStructSpec_reqSomeServiceBinaryKeyedMap = &thrift.StructSpec{
    Name:               "reqSomeServiceBinaryKeyedMap",
    IsUnion:            false,
    IsException:        false,
    FieldSpecs:         []thrift.FieldSpec{
        {
            ID:                   1,
            WireType:             thrift.Type(thrift.LIST),
            Name:                 "r",
            ReflectIndex:         0,
            IsOptional:           false,
            ValueTypeSpec:        premadeCodecTypeSpec_list_i64,
            MustBeSetToSerialize: false,
        },    },
    FieldSpecIDToIndex: map[int16]int{
        1: 0,
    },
}
    premadeStructSpec_respSomeServiceBinaryKeyedMap = &thrift.StructSpec{
    Name:               "respSomeServiceBinaryKeyedMap",
    IsUnion:            false,
    IsException:        false,
    FieldSpecs:         []thrift.FieldSpec{
        {
            ID:                   0,
            WireType:             thrift.Type(thrift.MAP),
            Name:                 "success",
            ReflectIndex:         0,
            IsOptional:           true,
            ValueTypeSpec:        premadeCodecTypeSpec_map_module_TBinary_i64,
            MustBeSetToSerialize: true,
        },    },
    FieldSpecIDToIndex: map[int16]int{
        0: 0,
    },
}
})

// Helper type to allow us to store codec specs in a slice at compile time,
// and put them in a map at runtime. See comment at the top of template
// about a compilation limitation that affects map literals.
type codecSpecWithFullName struct {
    fullName string
    typeSpec *thrift.TypeSpec
}

var premadeCodecSpecsMapOnce = sync.OnceValue(
    func() map[string]*thrift.TypeSpec {
        // Relies on premade codec specs initialization
        premadeCodecSpecsInitOnce()

        codecSpecsWithFullName := make([]codecSpecWithFullName, 0)
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "module.has_bitwise_ops", premadeCodecTypeSpec_module_has_bitwise_ops })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "module.is_unscoped", premadeCodecTypeSpec_module_is_unscoped })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "module.MyForwardRefEnum", premadeCodecTypeSpec_module_MyForwardRefEnum })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "module.empty_struct", premadeCodecTypeSpec_module_empty_struct })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "string", premadeCodecTypeSpec_string })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "module.decorated_struct", premadeCodecTypeSpec_module_decorated_struct })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "i32", premadeCodecTypeSpec_i32 })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "module.set_i32_7194", premadeCodecTypeSpec_module_set_i32_7194 })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "module.map_i32_string_1261", premadeCodecTypeSpec_module_map_i32_string_1261 })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "module.ContainerStruct", premadeCodecTypeSpec_module_ContainerStruct })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "module.CppTypeStruct", premadeCodecTypeSpec_module_CppTypeStruct })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "i64", premadeCodecTypeSpec_i64 })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "module.VirtualStruct", premadeCodecTypeSpec_module_VirtualStruct })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "module.MyStructWithForwardRefEnum", premadeCodecTypeSpec_module_MyStructWithForwardRefEnum })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "bool", premadeCodecTypeSpec_bool })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "module.TrivialNumeric", premadeCodecTypeSpec_module_TrivialNumeric })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "module.TrivialNestedWithDefault", premadeCodecTypeSpec_module_TrivialNestedWithDefault })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "module.ComplexString", premadeCodecTypeSpec_module_ComplexString })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "module.ComplexNestedWithDefault", premadeCodecTypeSpec_module_ComplexNestedWithDefault })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "byte", premadeCodecTypeSpec_byte })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "i16", premadeCodecTypeSpec_i16 })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "module.MinPadding", premadeCodecTypeSpec_module_MinPadding })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "module.MinPaddingWithCustomType", premadeCodecTypeSpec_module_MinPaddingWithCustomType })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "module.MyDataItem", premadeCodecTypeSpec_module_MyDataItem })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "module.MyStruct", premadeCodecTypeSpec_module_MyStruct })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "module.Renaming", premadeCodecTypeSpec_module_Renaming })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "binary", premadeCodecTypeSpec_binary })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "module.TBinary", premadeCodecTypeSpec_module_TBinary })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "module.TBinary_8623", premadeCodecTypeSpec_module_TBinary_8623 })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "module.SomeListOfTypeMap_2468", premadeCodecTypeSpec_module_SomeListOfTypeMap_2468 })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "module.AnnotatedTypes", premadeCodecTypeSpec_module_AnnotatedTypes })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "module.ForwardUsageStruct", premadeCodecTypeSpec_module_ForwardUsageStruct })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "module.ForwardUsageByRef", premadeCodecTypeSpec_module_ForwardUsageByRef })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "module.ForwardUsageRoot", premadeCodecTypeSpec_module_ForwardUsageRoot })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "module.IncompleteMapDep", premadeCodecTypeSpec_module_IncompleteMapDep })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "module.IncompleteMap", premadeCodecTypeSpec_module_IncompleteMap })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "module.CompleteMapDep", premadeCodecTypeSpec_module_CompleteMapDep })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "module.CompleteMap", premadeCodecTypeSpec_module_CompleteMap })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "module.IncompleteListDep", premadeCodecTypeSpec_module_IncompleteListDep })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "module.IncompleteList", premadeCodecTypeSpec_module_IncompleteList })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "module.CompleteListDep", premadeCodecTypeSpec_module_CompleteListDep })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "module.CompleteList", premadeCodecTypeSpec_module_CompleteList })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "module.AdaptedListDep", premadeCodecTypeSpec_module_AdaptedListDep })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "module.AdaptedList", premadeCodecTypeSpec_module_AdaptedList })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "module.DependentAdaptedListDep", premadeCodecTypeSpec_module_DependentAdaptedListDep })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "module.DependentAdaptedList", premadeCodecTypeSpec_module_DependentAdaptedList })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "module.list_i32_9187", premadeCodecTypeSpec_module_list_i32_9187 })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "module.set_i32_7070", premadeCodecTypeSpec_module_set_i32_7070 })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "module.map_i32_i32_9565", premadeCodecTypeSpec_module_map_i32_i32_9565 })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "module.string_5252", premadeCodecTypeSpec_module_string_5252 })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "module.i32_9314", premadeCodecTypeSpec_module_i32_9314 })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "module.AllocatorAware", premadeCodecTypeSpec_module_AllocatorAware })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "module.AllocatorAware2", premadeCodecTypeSpec_module_AllocatorAware2 })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "module.IntTypedef", premadeCodecTypeSpec_module_IntTypedef })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "module.UintTypedef", premadeCodecTypeSpec_module_UintTypedef })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "module.TypedefStruct", premadeCodecTypeSpec_module_TypedefStruct })
        codecSpecsWithFullName = append(codecSpecsWithFullName, codecSpecWithFullName{ "module.StructWithDoubleUnderscores", premadeCodecTypeSpec_module_StructWithDoubleUnderscores })

        fbthriftTypeSpecsMap := make(map[string]*thrift.TypeSpec, len(codecSpecsWithFullName))
        for _, value := range codecSpecsWithFullName {
            fbthriftTypeSpecsMap[value.fullName] = value.typeSpec
        }
        return fbthriftTypeSpecsMap
    },
)

func init() {
    premadeCodecSpecsInitOnce()
    premadeStructSpecsInitOnce()
}

// GetMetadataThriftType (INTERNAL USE ONLY).
// Returns metadata TypeSpec for a given full type name.
func GetCodecTypeSpec(fullName string) *thrift.TypeSpec {
    return premadeCodecSpecsMapOnce()[fullName]
}
