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

from thrift.py3.reflection import (
  ArgumentSpec as __ArgumentSpec,
  InterfaceSpec as __InterfaceSpec,
  MethodSpec as __MethodSpec,
  NumberType as __NumberType,
)

import folly.iobuf as _fbthrift_iobuf

import includes.types as _includes_types

import module.types as _module_types


def get_reflection__EmptyService(for_clients: bool):
    spec: __InterfaceSpec = __InterfaceSpec(
        name="EmptyService",
        methods=None,
        annotations={
        },
    )
    return spec


def get_reflection__ReturnService(for_clients: bool):
    spec: __InterfaceSpec = __InterfaceSpec(
        name="ReturnService",
        methods=None,
        annotations={
        },
    )
    spec.add_method(
        __MethodSpec.__new__(
            __MethodSpec,
            name="noReturn",
            arguments=(
            ),
            result=None,
            result_kind=__NumberType.NOT_A_NUMBER,
            exceptions=(
            ),
            annotations={
            },
        )
    )
    spec.add_method(
        __MethodSpec.__new__(
            __MethodSpec,
            name="boolReturn",
            arguments=(
            ),
            result=bool,
            result_kind=__NumberType.NOT_A_NUMBER,
            exceptions=(
            ),
            annotations={
            },
        )
    )
    spec.add_method(
        __MethodSpec.__new__(
            __MethodSpec,
            name="i16Return",
            arguments=(
            ),
            result=int,
            result_kind=__NumberType.I16,
            exceptions=(
            ),
            annotations={
            },
        )
    )
    spec.add_method(
        __MethodSpec.__new__(
            __MethodSpec,
            name="i32Return",
            arguments=(
            ),
            result=int,
            result_kind=__NumberType.I32,
            exceptions=(
            ),
            annotations={
            },
        )
    )
    spec.add_method(
        __MethodSpec.__new__(
            __MethodSpec,
            name="i64Return",
            arguments=(
            ),
            result=int,
            result_kind=__NumberType.I64,
            exceptions=(
            ),
            annotations={
            },
        )
    )
    spec.add_method(
        __MethodSpec.__new__(
            __MethodSpec,
            name="floatReturn",
            arguments=(
            ),
            result=float,
            result_kind=__NumberType.FLOAT,
            exceptions=(
            ),
            annotations={
            },
        )
    )
    spec.add_method(
        __MethodSpec.__new__(
            __MethodSpec,
            name="doubleReturn",
            arguments=(
            ),
            result=float,
            result_kind=__NumberType.DOUBLE,
            exceptions=(
            ),
            annotations={
            },
        )
    )
    spec.add_method(
        __MethodSpec.__new__(
            __MethodSpec,
            name="stringReturn",
            arguments=(
            ),
            result=str,
            result_kind=__NumberType.NOT_A_NUMBER,
            exceptions=(
            ),
            annotations={
            },
        )
    )
    spec.add_method(
        __MethodSpec.__new__(
            __MethodSpec,
            name="binaryReturn",
            arguments=(
            ),
            result=bytes,
            result_kind=__NumberType.NOT_A_NUMBER,
            exceptions=(
            ),
            annotations={
            },
        )
    )
    spec.add_method(
        __MethodSpec.__new__(
            __MethodSpec,
            name="mapReturn",
            arguments=(
            ),
            result=_module_types.Map__string_i64,
            result_kind=__NumberType.NOT_A_NUMBER,
            exceptions=(
            ),
            annotations={
            },
        )
    )
    spec.add_method(
        __MethodSpec.__new__(
            __MethodSpec,
            name="simpleTypedefReturn",
            arguments=(
            ),
            result=int,
            result_kind=__NumberType.I32,
            exceptions=(
            ),
            annotations={
            },
        )
    )
    spec.add_method(
        __MethodSpec.__new__(
            __MethodSpec,
            name="complexTypedefReturn",
            arguments=(
            ),
            result=_module_types.List__Map__Empty_MyStruct,
            result_kind=__NumberType.NOT_A_NUMBER,
            exceptions=(
            ),
            annotations={
            },
        )
    )
    spec.add_method(
        __MethodSpec.__new__(
            __MethodSpec,
            name="list_mostComplexTypedefReturn",
            arguments=(
            ),
            result=_module_types.List__List__List__Map__Empty_MyStruct,
            result_kind=__NumberType.NOT_A_NUMBER,
            exceptions=(
            ),
            annotations={
            },
        )
    )
    spec.add_method(
        __MethodSpec.__new__(
            __MethodSpec,
            name="enumReturn",
            arguments=(
            ),
            result=_module_types.MyEnumA,
            result_kind=__NumberType.NOT_A_NUMBER,
            exceptions=(
            ),
            annotations={
            },
        )
    )
    spec.add_method(
        __MethodSpec.__new__(
            __MethodSpec,
            name="list_EnumReturn",
            arguments=(
            ),
            result=_module_types.List__MyEnumA,
            result_kind=__NumberType.NOT_A_NUMBER,
            exceptions=(
            ),
            annotations={
            },
        )
    )
    spec.add_method(
        __MethodSpec.__new__(
            __MethodSpec,
            name="structReturn",
            arguments=(
            ),
            result=_module_types.MyStruct,
            result_kind=__NumberType.NOT_A_NUMBER,
            exceptions=(
            ),
            annotations={
            },
        )
    )
    spec.add_method(
        __MethodSpec.__new__(
            __MethodSpec,
            name="set_StructReturn",
            arguments=(
            ),
            result=_module_types.Set__MyStruct,
            result_kind=__NumberType.NOT_A_NUMBER,
            exceptions=(
            ),
            annotations={
            },
        )
    )
    spec.add_method(
        __MethodSpec.__new__(
            __MethodSpec,
            name="unionReturn",
            arguments=(
            ),
            result=_module_types.ComplexUnion,
            result_kind=__NumberType.NOT_A_NUMBER,
            exceptions=(
            ),
            annotations={
            },
        )
    )
    spec.add_method(
        __MethodSpec.__new__(
            __MethodSpec,
            name="list_UnionReturn",
            arguments=(
            ),
            result=_module_types.List__ComplexUnion,
            result_kind=__NumberType.NOT_A_NUMBER,
            exceptions=(
            ),
            annotations={
            },
        )
    )
    spec.add_method(
        __MethodSpec.__new__(
            __MethodSpec,
            name="readDataEb",
            arguments=(
                __ArgumentSpec.__new__(
                    __ArgumentSpec,
                    name="size",
                    type=int,
                    kind=__NumberType.I64,
                    annotations={
                    },
                ),
            ),
            result=_fbthrift_iobuf.IOBuf,
            result_kind=__NumberType.NOT_A_NUMBER,
            exceptions=(
            ),
            annotations={
            },
        )
    )
    spec.add_method(
        __MethodSpec.__new__(
            __MethodSpec,
            name="readData",
            arguments=(
                __ArgumentSpec.__new__(
                    __ArgumentSpec,
                    name="size",
                    type=int,
                    kind=__NumberType.I64,
                    annotations={
                    },
                ),
            ),
            result=_fbthrift_iobuf.IOBuf,
            result_kind=__NumberType.NOT_A_NUMBER,
            exceptions=(
            ),
            annotations={
            },
        )
    )
    return spec


def get_reflection__ParamService(for_clients: bool):
    spec: __InterfaceSpec = __InterfaceSpec(
        name="ParamService",
        methods=None,
        annotations={
        },
    )
    spec.add_method(
        __MethodSpec.__new__(
            __MethodSpec,
            name="void_ret_i16_param",
            arguments=(
                __ArgumentSpec.__new__(
                    __ArgumentSpec,
                    name="param1",
                    type=int,
                    kind=__NumberType.I16,
                    annotations={
                    },
                ),
            ),
            result=None,
            result_kind=__NumberType.NOT_A_NUMBER,
            exceptions=(
            ),
            annotations={
            },
        )
    )
    spec.add_method(
        __MethodSpec.__new__(
            __MethodSpec,
            name="void_ret_byte_i16_param",
            arguments=(
                __ArgumentSpec.__new__(
                    __ArgumentSpec,
                    name="param1",
                    type=int,
                    kind=__NumberType.BYTE,
                    annotations={
                    },
                ),
                __ArgumentSpec.__new__(
                    __ArgumentSpec,
                    name="param2",
                    type=int,
                    kind=__NumberType.I16,
                    annotations={
                    },
                ),
            ),
            result=None,
            result_kind=__NumberType.NOT_A_NUMBER,
            exceptions=(
            ),
            annotations={
            },
        )
    )
    spec.add_method(
        __MethodSpec.__new__(
            __MethodSpec,
            name="void_ret_map_param",
            arguments=(
                __ArgumentSpec.__new__(
                    __ArgumentSpec,
                    name="param1",
                    type=_module_types.Map__string_i64,
                    kind=__NumberType.NOT_A_NUMBER,
                    annotations={
                    },
                ),
            ),
            result=None,
            result_kind=__NumberType.NOT_A_NUMBER,
            exceptions=(
            ),
            annotations={
            },
        )
    )
    spec.add_method(
        __MethodSpec.__new__(
            __MethodSpec,
            name="void_ret_map_setlist_param",
            arguments=(
                __ArgumentSpec.__new__(
                    __ArgumentSpec,
                    name="param1",
                    type=_module_types.Map__string_i64,
                    kind=__NumberType.NOT_A_NUMBER,
                    annotations={
                    },
                ),
                __ArgumentSpec.__new__(
                    __ArgumentSpec,
                    name="param2",
                    type=_module_types.Set__List__string,
                    kind=__NumberType.NOT_A_NUMBER,
                    annotations={
                    },
                ),
            ),
            result=None,
            result_kind=__NumberType.NOT_A_NUMBER,
            exceptions=(
            ),
            annotations={
            },
        )
    )
    spec.add_method(
        __MethodSpec.__new__(
            __MethodSpec,
            name="void_ret_map_typedef_param",
            arguments=(
                __ArgumentSpec.__new__(
                    __ArgumentSpec,
                    name="param1",
                    type=int,
                    kind=__NumberType.I32,
                    annotations={
                    },
                ),
            ),
            result=None,
            result_kind=__NumberType.NOT_A_NUMBER,
            exceptions=(
            ),
            annotations={
            },
        )
    )
    spec.add_method(
        __MethodSpec.__new__(
            __MethodSpec,
            name="void_ret_enum_param",
            arguments=(
                __ArgumentSpec.__new__(
                    __ArgumentSpec,
                    name="param1",
                    type=_module_types.MyEnumA,
                    kind=__NumberType.NOT_A_NUMBER,
                    annotations={
                    },
                ),
            ),
            result=None,
            result_kind=__NumberType.NOT_A_NUMBER,
            exceptions=(
            ),
            annotations={
            },
        )
    )
    spec.add_method(
        __MethodSpec.__new__(
            __MethodSpec,
            name="void_ret_struct_param",
            arguments=(
                __ArgumentSpec.__new__(
                    __ArgumentSpec,
                    name="param1",
                    type=_module_types.MyStruct,
                    kind=__NumberType.NOT_A_NUMBER,
                    annotations={
                    },
                ),
            ),
            result=None,
            result_kind=__NumberType.NOT_A_NUMBER,
            exceptions=(
            ),
            annotations={
            },
        )
    )
    spec.add_method(
        __MethodSpec.__new__(
            __MethodSpec,
            name="void_ret_listunion_param",
            arguments=(
                __ArgumentSpec.__new__(
                    __ArgumentSpec,
                    name="param1",
                    type=_module_types.List__ComplexUnion,
                    kind=__NumberType.NOT_A_NUMBER,
                    annotations={
                    },
                ),
            ),
            result=None,
            result_kind=__NumberType.NOT_A_NUMBER,
            exceptions=(
            ),
            annotations={
            },
        )
    )
    spec.add_method(
        __MethodSpec.__new__(
            __MethodSpec,
            name="bool_ret_i32_i64_param",
            arguments=(
                __ArgumentSpec.__new__(
                    __ArgumentSpec,
                    name="param1",
                    type=int,
                    kind=__NumberType.I32,
                    annotations={
                    },
                ),
                __ArgumentSpec.__new__(
                    __ArgumentSpec,
                    name="param2",
                    type=int,
                    kind=__NumberType.I64,
                    annotations={
                    },
                ),
            ),
            result=bool,
            result_kind=__NumberType.NOT_A_NUMBER,
            exceptions=(
            ),
            annotations={
            },
        )
    )
    spec.add_method(
        __MethodSpec.__new__(
            __MethodSpec,
            name="bool_ret_map_param",
            arguments=(
                __ArgumentSpec.__new__(
                    __ArgumentSpec,
                    name="param1",
                    type=_module_types.Map__string_i64,
                    kind=__NumberType.NOT_A_NUMBER,
                    annotations={
                    },
                ),
            ),
            result=bool,
            result_kind=__NumberType.NOT_A_NUMBER,
            exceptions=(
            ),
            annotations={
            },
        )
    )
    spec.add_method(
        __MethodSpec.__new__(
            __MethodSpec,
            name="bool_ret_union_param",
            arguments=(
                __ArgumentSpec.__new__(
                    __ArgumentSpec,
                    name="param1",
                    type=_module_types.ComplexUnion,
                    kind=__NumberType.NOT_A_NUMBER,
                    annotations={
                    },
                ),
            ),
            result=bool,
            result_kind=__NumberType.NOT_A_NUMBER,
            exceptions=(
            ),
            annotations={
            },
        )
    )
    spec.add_method(
        __MethodSpec.__new__(
            __MethodSpec,
            name="i64_ret_float_double_param",
            arguments=(
                __ArgumentSpec.__new__(
                    __ArgumentSpec,
                    name="param1",
                    type=float,
                    kind=__NumberType.FLOAT,
                    annotations={
                    },
                ),
                __ArgumentSpec.__new__(
                    __ArgumentSpec,
                    name="param2",
                    type=float,
                    kind=__NumberType.DOUBLE,
                    annotations={
                    },
                ),
            ),
            result=int,
            result_kind=__NumberType.I64,
            exceptions=(
            ),
            annotations={
            },
        )
    )
    spec.add_method(
        __MethodSpec.__new__(
            __MethodSpec,
            name="i64_ret_string_typedef_param",
            arguments=(
                __ArgumentSpec.__new__(
                    __ArgumentSpec,
                    name="param1",
                    type=str,
                    kind=__NumberType.NOT_A_NUMBER,
                    annotations={
                    },
                ),
                __ArgumentSpec.__new__(
                    __ArgumentSpec,
                    name="param2",
                    type=_module_types.Set__List__List__Map__Empty_MyStruct,
                    kind=__NumberType.NOT_A_NUMBER,
                    annotations={
                    },
                ),
            ),
            result=int,
            result_kind=__NumberType.I64,
            exceptions=(
            ),
            annotations={
            },
        )
    )
    spec.add_method(
        __MethodSpec.__new__(
            __MethodSpec,
            name="i64_ret_i32_i32_i32_i32_i32_param",
            arguments=(
                __ArgumentSpec.__new__(
                    __ArgumentSpec,
                    name="param1",
                    type=int,
                    kind=__NumberType.I32,
                    annotations={
                    },
                ),
                __ArgumentSpec.__new__(
                    __ArgumentSpec,
                    name="param2",
                    type=int,
                    kind=__NumberType.I32,
                    annotations={
                    },
                ),
                __ArgumentSpec.__new__(
                    __ArgumentSpec,
                    name="param3",
                    type=int,
                    kind=__NumberType.I32,
                    annotations={
                    },
                ),
                __ArgumentSpec.__new__(
                    __ArgumentSpec,
                    name="param4",
                    type=int,
                    kind=__NumberType.I32,
                    annotations={
                    },
                ),
                __ArgumentSpec.__new__(
                    __ArgumentSpec,
                    name="param5",
                    type=int,
                    kind=__NumberType.I32,
                    annotations={
                    },
                ),
            ),
            result=int,
            result_kind=__NumberType.I64,
            exceptions=(
            ),
            annotations={
            },
        )
    )
    spec.add_method(
        __MethodSpec.__new__(
            __MethodSpec,
            name="double_ret_setstruct_param",
            arguments=(
                __ArgumentSpec.__new__(
                    __ArgumentSpec,
                    name="param1",
                    type=_module_types.Set__MyStruct,
                    kind=__NumberType.NOT_A_NUMBER,
                    annotations={
                    },
                ),
            ),
            result=float,
            result_kind=__NumberType.DOUBLE,
            exceptions=(
            ),
            annotations={
            },
        )
    )
    spec.add_method(
        __MethodSpec.__new__(
            __MethodSpec,
            name="string_ret_string_param",
            arguments=(
                __ArgumentSpec.__new__(
                    __ArgumentSpec,
                    name="param1",
                    type=str,
                    kind=__NumberType.NOT_A_NUMBER,
                    annotations={
                    },
                ),
            ),
            result=str,
            result_kind=__NumberType.NOT_A_NUMBER,
            exceptions=(
            ),
            annotations={
            },
        )
    )
    spec.add_method(
        __MethodSpec.__new__(
            __MethodSpec,
            name="binary_ret_binary_param",
            arguments=(
                __ArgumentSpec.__new__(
                    __ArgumentSpec,
                    name="param1",
                    type=bytes,
                    kind=__NumberType.NOT_A_NUMBER,
                    annotations={
                    },
                ),
            ),
            result=bytes,
            result_kind=__NumberType.NOT_A_NUMBER,
            exceptions=(
            ),
            annotations={
            },
        )
    )
    spec.add_method(
        __MethodSpec.__new__(
            __MethodSpec,
            name="map_ret_bool_param",
            arguments=(
                __ArgumentSpec.__new__(
                    __ArgumentSpec,
                    name="param1",
                    type=bool,
                    kind=__NumberType.NOT_A_NUMBER,
                    annotations={
                    },
                ),
            ),
            result=_module_types.Map__string_i64,
            result_kind=__NumberType.NOT_A_NUMBER,
            exceptions=(
            ),
            annotations={
            },
        )
    )
    spec.add_method(
        __MethodSpec.__new__(
            __MethodSpec,
            name="list_ret_map_setlist_param",
            arguments=(
                __ArgumentSpec.__new__(
                    __ArgumentSpec,
                    name="param1",
                    type=_module_types.Map__i32_List__string,
                    kind=__NumberType.NOT_A_NUMBER,
                    annotations={
                    },
                ),
                __ArgumentSpec.__new__(
                    __ArgumentSpec,
                    name="param2",
                    type=_module_types.List__string,
                    kind=__NumberType.NOT_A_NUMBER,
                    annotations={
                    },
                ),
            ),
            result=_module_types.List__bool,
            result_kind=__NumberType.NOT_A_NUMBER,
            exceptions=(
            ),
            annotations={
            },
        )
    )
    spec.add_method(
        __MethodSpec.__new__(
            __MethodSpec,
            name="mapsetlistmapliststring_ret_listlistlist_param",
            arguments=(
                __ArgumentSpec.__new__(
                    __ArgumentSpec,
                    name="param1",
                    type=_module_types.List__List__List__List__i32,
                    kind=__NumberType.NOT_A_NUMBER,
                    annotations={
                    },
                ),
            ),
            result=_module_types.Map__Set__List__i32_Map__List__Set__string_string,
            result_kind=__NumberType.NOT_A_NUMBER,
            exceptions=(
            ),
            annotations={
            },
        )
    )
    spec.add_method(
        __MethodSpec.__new__(
            __MethodSpec,
            name="typedef_ret_i32_param",
            arguments=(
                __ArgumentSpec.__new__(
                    __ArgumentSpec,
                    name="param1",
                    type=int,
                    kind=__NumberType.I32,
                    annotations={
                    },
                ),
            ),
            result=int,
            result_kind=__NumberType.I32,
            exceptions=(
            ),
            annotations={
            },
        )
    )
    spec.add_method(
        __MethodSpec.__new__(
            __MethodSpec,
            name="listtypedef_ret_typedef_param",
            arguments=(
                __ArgumentSpec.__new__(
                    __ArgumentSpec,
                    name="param1",
                    type=_module_types.List__Map__Empty_MyStruct,
                    kind=__NumberType.NOT_A_NUMBER,
                    annotations={
                    },
                ),
            ),
            result=_module_types.List__i32,
            result_kind=__NumberType.NOT_A_NUMBER,
            exceptions=(
            ),
            annotations={
            },
        )
    )
    spec.add_method(
        __MethodSpec.__new__(
            __MethodSpec,
            name="enum_ret_double_param",
            arguments=(
                __ArgumentSpec.__new__(
                    __ArgumentSpec,
                    name="param1",
                    type=float,
                    kind=__NumberType.DOUBLE,
                    annotations={
                    },
                ),
            ),
            result=_module_types.MyEnumA,
            result_kind=__NumberType.NOT_A_NUMBER,
            exceptions=(
            ),
            annotations={
            },
        )
    )
    spec.add_method(
        __MethodSpec.__new__(
            __MethodSpec,
            name="enum_ret_double_enum_param",
            arguments=(
                __ArgumentSpec.__new__(
                    __ArgumentSpec,
                    name="param1",
                    type=float,
                    kind=__NumberType.DOUBLE,
                    annotations={
                    },
                ),
                __ArgumentSpec.__new__(
                    __ArgumentSpec,
                    name="param2",
                    type=_module_types.MyEnumA,
                    kind=__NumberType.NOT_A_NUMBER,
                    annotations={
                    },
                ),
            ),
            result=_module_types.MyEnumA,
            result_kind=__NumberType.NOT_A_NUMBER,
            exceptions=(
            ),
            annotations={
            },
        )
    )
    spec.add_method(
        __MethodSpec.__new__(
            __MethodSpec,
            name="listenum_ret_map_param",
            arguments=(
                __ArgumentSpec.__new__(
                    __ArgumentSpec,
                    name="param1",
                    type=_module_types.Map__string_i64,
                    kind=__NumberType.NOT_A_NUMBER,
                    annotations={
                    },
                ),
            ),
            result=_module_types.List__MyEnumA,
            result_kind=__NumberType.NOT_A_NUMBER,
            exceptions=(
            ),
            annotations={
            },
        )
    )
    spec.add_method(
        __MethodSpec.__new__(
            __MethodSpec,
            name="struct_ret_i16_param",
            arguments=(
                __ArgumentSpec.__new__(
                    __ArgumentSpec,
                    name="param1",
                    type=int,
                    kind=__NumberType.I16,
                    annotations={
                    },
                ),
            ),
            result=_module_types.MyStruct,
            result_kind=__NumberType.NOT_A_NUMBER,
            exceptions=(
            ),
            annotations={
            },
        )
    )
    spec.add_method(
        __MethodSpec.__new__(
            __MethodSpec,
            name="setstruct_ret_set_param",
            arguments=(
                __ArgumentSpec.__new__(
                    __ArgumentSpec,
                    name="param1",
                    type=_module_types.Set__string,
                    kind=__NumberType.NOT_A_NUMBER,
                    annotations={
                    },
                ),
            ),
            result=_module_types.Set__MyStruct,
            result_kind=__NumberType.NOT_A_NUMBER,
            exceptions=(
            ),
            annotations={
            },
        )
    )
    spec.add_method(
        __MethodSpec.__new__(
            __MethodSpec,
            name="union_ret_i32_i32_param",
            arguments=(
                __ArgumentSpec.__new__(
                    __ArgumentSpec,
                    name="param1",
                    type=int,
                    kind=__NumberType.I32,
                    annotations={
                    },
                ),
                __ArgumentSpec.__new__(
                    __ArgumentSpec,
                    name="param2",
                    type=int,
                    kind=__NumberType.I32,
                    annotations={
                    },
                ),
            ),
            result=_module_types.ComplexUnion,
            result_kind=__NumberType.NOT_A_NUMBER,
            exceptions=(
            ),
            annotations={
            },
        )
    )
    spec.add_method(
        __MethodSpec.__new__(
            __MethodSpec,
            name="listunion_string_param",
            arguments=(
                __ArgumentSpec.__new__(
                    __ArgumentSpec,
                    name="param1",
                    type=str,
                    kind=__NumberType.NOT_A_NUMBER,
                    annotations={
                    },
                ),
            ),
            result=_module_types.List__ComplexUnion,
            result_kind=__NumberType.NOT_A_NUMBER,
            exceptions=(
            ),
            annotations={
            },
        )
    )
    return spec
