text: // Autogenerated from CppHeaderCreator
  // Created by Sc2ad
  // =========================================================================
  #pragma once
  // Begin includes
  #include "beatsaber-hook/shared/utils/typedefs.h"
  #include <initializer_list>
  #include "beatsaber-hook/shared/utils/byref.hpp"
  // Including type: System.Reflection.MemberInfo
  #include "System/Reflection/MemberInfo.hpp"
  // Including type: System.Runtime.InteropServices._Type
  #include "System/Runtime/InteropServices/_Type.hpp"
  // Including type: System.RuntimeTypeHandle
  #include "System/RuntimeTypeHandle.hpp"
  // Including type: System.Reflection.BindingFlags
  #include "System/Reflection/BindingFlags.hpp"
  // Including type: System.Reflection.ParameterModifier
  #include "System/Reflection/ParameterModifier.hpp"
  #include "beatsaber-hook/shared/utils/il2cpp-utils-methods.hpp"
  #include "beatsaber-hook/shared/utils/il2cpp-utils-properties.hpp"
  #include "beatsaber-hook/shared/utils/il2cpp-utils-fields.hpp"
  #include "beatsaber-hook/shared/utils/utils.h"
  #include "beatsaber-hook/shared/utils/typedefs-array.hpp"
  #include "beatsaber-hook/shared/utils/typedefs-string.hpp"
  // Completed includes
  // Begin forward declares
  // Forward declaring namespace: System::Reflection
  namespace System::Reflection {
    // Forward declaring type: MemberFilter
    class MemberFilter;
    // Forward declaring type: Binder
    class Binder;
    // Forward declaring type: MethodBase
    class MethodBase;
    // Forward declaring type: Assembly
    class Assembly;
    // Forward declaring type: TypeAttributes
    struct TypeAttributes;
    // Forward declaring type: GenericParameterAttributes
    struct GenericParameterAttributes;
    // Forward declaring type: AssemblyName
    class AssemblyName;
    // Forward declaring type: ConstructorInfo
    class ConstructorInfo;
    // Forward declaring type: CallingConventions
    struct CallingConventions;
    // Forward declaring type: MethodInfo
    class MethodInfo;
    // Forward declaring type: FieldInfo
    class FieldInfo;
    // Forward declaring type: EventInfo
    class EventInfo;
    // Forward declaring type: PropertyInfo
    class PropertyInfo;
    // Forward declaring type: MemberTypes
    struct MemberTypes;
    // Forward declaring type: Module
    class Module;
  }
  // Forward declaring namespace: System
  namespace System {
    // Forward declaring type: Func`2<T, TResult>
    template<typename T, typename TResult>
    class Func_2;
    // Forward declaring type: Func`4<T1, T2, T3, TResult>
    template<typename T1, typename T2, typename T3, typename TResult>
    class Func_4;
    // Forward declaring type: TypeCode
    struct TypeCode;
    // Forward declaring type: Array
    class Array;
    // Skipping declaration: IntPtr because it is already included!
  }
  // Forward declaring namespace: System::Globalization
  namespace System::Globalization {
    // Forward declaring type: CultureInfo
    class CultureInfo;
  }
  // Completed forward declares
  // Type namespace: System
  namespace System {
    // Forward declaring type: Type
    class Type;
  }
  #include "beatsaber-hook/shared/utils/il2cpp-type-check.hpp"
  NEED_NO_BOX(::System::Type);
  DEFINE_IL2CPP_ARG_TYPE(::System::Type*, "System", "Type");
  // Type namespace: System
  namespace System {
    // Size: 0x18
    #pragma pack(push, 1)
    // Autogenerated type: System.Type
    // [TokenAttribute] Offset: FFFFFFFF
    // [ClassInterfaceAttribute] Offset: 681B94
    // [ComVisibleAttribute] Offset: 681B94
    // [ComDefaultInterfaceAttribute] Offset: 681B94
    class Type : public ::System::Reflection::MemberInfo/*, public ::System::Runtime::InteropServices::_Type*/ {
      public:
      public:
      // System.RuntimeTypeHandle _impl
      // Size: 0x8
      // Offset: 0x10
      ::System::RuntimeTypeHandle impl;
      // Field size check
      static_assert(sizeof(::System::RuntimeTypeHandle) == 0x8);
      public:
      // Creating interface conversion operator: operator ::System::Runtime::InteropServices::_Type
      operator ::System::Runtime::InteropServices::_Type() noexcept {
        return *reinterpret_cast<::System::Runtime::InteropServices::_Type*>(this);
      }
      // Creating conversion operator: operator ::System::RuntimeTypeHandle
      constexpr operator ::System::RuntimeTypeHandle() const noexcept {
        return impl;
      }
      // Get static field: static public readonly System.Reflection.MemberFilter FilterAttribute
      static ::System::Reflection::MemberFilter* _get_FilterAttribute();
      // Set static field: static public readonly System.Reflection.MemberFilter FilterAttribute
      static void _set_FilterAttribute(::System::Reflection::MemberFilter* value);
      // Get static field: static public readonly System.Reflection.MemberFilter FilterName
      static ::System::Reflection::MemberFilter* _get_FilterName();
      // Set static field: static public readonly System.Reflection.MemberFilter FilterName
      static void _set_FilterName(::System::Reflection::MemberFilter* value);
      // Get static field: static public readonly System.Reflection.MemberFilter FilterNameIgnoreCase
      static ::System::Reflection::MemberFilter* _get_FilterNameIgnoreCase();
      // Set static field: static public readonly System.Reflection.MemberFilter FilterNameIgnoreCase
      static void _set_FilterNameIgnoreCase(::System::Reflection::MemberFilter* value);
      // Get static field: static public readonly System.Object Missing
      static ::Il2CppObject* _get_Missing();
      // Set static field: static public readonly System.Object Missing
      static void _set_Missing(::Il2CppObject* value);
      // Get static field: static public readonly System.Char Delimiter
      static ::Il2CppChar _get_Delimiter();
      // Set static field: static public readonly System.Char Delimiter
      static void _set_Delimiter(::Il2CppChar value);
      // Get static field: static public readonly System.Type[] EmptyTypes
      static ::ArrayW<::System::Type*> _get_EmptyTypes();
      // Set static field: static public readonly System.Type[] EmptyTypes
      static void _set_EmptyTypes(::ArrayW<::System::Type*> value);
      // Get static field: static private System.Reflection.Binder defaultBinder
      static ::System::Reflection::Binder* _get_defaultBinder();
      // Set static field: static private System.Reflection.Binder defaultBinder
      static void _set_defaultBinder(::System::Reflection::Binder* value);
      // static field const value: static private System.Reflection.BindingFlags DefaultLookup
      static constexpr const int DefaultLookup = 28;
      // Get static field: static private System.Reflection.BindingFlags DefaultLookup
      static ::System::Reflection::BindingFlags _get_DefaultLookup();
      // Set static field: static private System.Reflection.BindingFlags DefaultLookup
      static void _set_DefaultLookup(::System::Reflection::BindingFlags value);
      // static field const value: static System.Reflection.BindingFlags DeclaredOnlyLookup
      static constexpr const int DeclaredOnlyLookup = 62;
      // Get static field: static System.Reflection.BindingFlags DeclaredOnlyLookup
      static ::System::Reflection::BindingFlags _get_DeclaredOnlyLookup();
      // Set static field: static System.Reflection.BindingFlags DeclaredOnlyLookup
      static void _set_DeclaredOnlyLookup(::System::Reflection::BindingFlags value);
      // Get instance field reference: System.RuntimeTypeHandle _impl
      [[deprecated("Use field access instead!")]] ::System::RuntimeTypeHandle& dyn__impl();
      // public System.Reflection.MethodBase get_DeclaringMethod()
      // Offset: 0x12AD5B0
      ::System::Reflection::MethodBase* get_DeclaringMethod();
      // static public System.Reflection.Binder get_DefaultBinder()
      // Offset: 0x12AD8C4
      static ::System::Reflection::Binder* get_DefaultBinder();
      // public System.Reflection.Assembly get_Assembly()
      // Offset: 0xFFFFFFFFFFFFFFFF
      ::System::Reflection::Assembly* get_Assembly();
      // public System.RuntimeTypeHandle get_TypeHandle()
      // Offset: 0x12ADA30
      ::System::RuntimeTypeHandle get_TypeHandle();
      // public System.String get_FullName()
      // Offset: 0xFFFFFFFFFFFFFFFF
      ::StringW get_FullName();
      // public System.String get_Namespace()
      // Offset: 0xFFFFFFFFFFFFFFFF
      ::StringW get_Namespace();
      // public System.String get_AssemblyQualifiedName()
      // Offset: 0xFFFFFFFFFFFFFFFF
      ::StringW get_AssemblyQualifiedName();
      // public System.Type get_BaseType()
      // Offset: 0xFFFFFFFFFFFFFFFF
      ::System::Type* get_BaseType();
      // public System.Boolean get_IsNested()
      // Offset: 0x12AE5CC
      bool get_IsNested();
      // public System.Reflection.TypeAttributes get_Attributes()
      // Offset: 0x12AE648
      ::System::Reflection::TypeAttributes get_Attributes();
      // public System.Reflection.GenericParameterAttributes get_GenericParameterAttributes()
      // Offset: 0x12AE658
      ::System::Reflection::GenericParameterAttributes get_GenericParameterAttributes();
      // public System.Boolean get_IsVisible()
      // Offset: 0x12AE698
      bool get_IsVisible();
      // public System.Boolean get_IsNotPublic()
      // Offset: 0x12AE874
      bool get_IsNotPublic();
      // public System.Boolean get_IsPublic()
      // Offset: 0x12AE848
      bool get_IsPublic();
      // public System.Boolean get_IsNestedPublic()
      // Offset: 0x12AE81C
      bool get_IsNestedPublic();
      // public System.Boolean get_IsNestedAssembly()
      // Offset: 0x12AE89C
      bool get_IsNestedAssembly();
      // public System.Boolean get_IsExplicitLayout()
      // Offset: 0x12AE8C8
      bool get_IsExplicitLayout();
      // public System.Boolean get_IsClass()
      // Offset: 0x12AE8F4
      bool get_IsClass();
      // public System.Boolean get_IsInterface()
      // Offset: 0x12AE958
      bool get_IsInterface();
      // public System.Boolean get_IsValueType()
      // Offset: 0x12AE948
      bool get_IsValueType();
      // public System.Boolean get_IsAbstract()
      // Offset: 0x12AEA28
      bool get_IsAbstract();
      // public System.Boolean get_IsSealed()
      // Offset: 0x12AEA4C
      bool get_IsSealed();
      // public System.Boolean get_IsEnum()
      // Offset: 0x12AEA70
      bool get_IsEnum();
      // public System.Boolean get_IsSerializable()
      // Offset: 0x12AEAE8
      bool get_IsSerializable();
      // public System.Boolean get_IsArray()
      // Offset: 0x12AEBE4
      bool get_IsArray();
      // System.Boolean get_IsSzArray()
      // Offset: 0x12AEBF4
      bool get_IsSzArray();
      // public System.Boolean get_IsGenericType()
      // Offset: 0x12AEBFC
      bool get_IsGenericType();
      // public System.Boolean get_IsGenericTypeDefinition()
      // Offset: 0x12AEC04
      bool get_IsGenericTypeDefinition();
      // public System.Boolean get_IsConstructedGenericType()
      // Offset: 0x12AEC0C
      bool get_IsConstructedGenericType();
      // public System.Boolean get_IsGenericParameter()
      // Offset: 0x12AEC4C
      bool get_IsGenericParameter();
      // public System.Int32 get_GenericParameterPosition()
      // Offset: 0x12AEC54
      int get_GenericParameterPosition();
      // public System.Boolean get_ContainsGenericParameters()
      // Offset: 0x12AECB0
      bool get_ContainsGenericParameters();
      // public System.Boolean get_IsByRef()
      // Offset: 0x12AEEB4
      bool get_IsByRef();
      // public System.Boolean get_IsPointer()
      // Offset: 0x12AEEC4
      bool get_IsPointer();
      // public System.Boolean get_IsPrimitive()
      // Offset: 0x12AEED4
      bool get_IsPrimitive();
      // public System.Boolean get_IsCOMObject()
      // Offset: 0x12AEEE4
      bool get_IsCOMObject();
      // public System.Boolean get_HasElementType()
      // Offset: 0x12AE80C
      bool get_HasElementType();
      // public System.Boolean get_IsContextful()
      // Offset: 0x12ABC78
      bool get_IsContextful();
      // public System.Boolean get_IsMarshalByRef()
      // Offset: 0x12AEEF4
      bool get_IsMarshalByRef();
      // public System.Type get_UnderlyingSystemType()
      // Offset: 0xFFFFFFFFFFFFFFFF
      ::System::Type* get_UnderlyingSystemType();
      // public System.Boolean get_IsSZArray()
      // Offset: 0x12B0B30
      bool get_IsSZArray();
      // static private System.Void .cctor()
      // Offset: 0x12B0EB4
      static void _cctor();
      // static public System.Type GetType(System.String typeName, System.Func`2<System.Reflection.AssemblyName,System.Reflection.Assembly> assemblyResolver, System.Func`4<System.Reflection.Assembly,System.String,System.Boolean,System.Type> typeResolver, System.Boolean throwOnError)
      // Offset: 0x12AD5C0
      static ::System::Type* GetType(::StringW typeName, ::System::Func_2<::System::Reflection::AssemblyName*, ::System::Reflection::Assembly*>* assemblyResolver, ::System::Func_4<::System::Reflection::Assembly*, ::StringW, bool, ::System::Type*>* typeResolver, bool throwOnError);
      // public System.Type MakePointerType()
      // Offset: 0x12AD618
      ::System::Type* MakePointerType();
      // public System.Type MakeByRefType()
      // Offset: 0x12AD658
      ::System::Type* MakeByRefType();
      // public System.Type MakeArrayType()
      // Offset: 0x12AD698
      ::System::Type* MakeArrayType();
      // public System.Type MakeArrayType(System.Int32 rank)
      // Offset: 0x12AD6D8
      ::System::Type* MakeArrayType(int rank);
      // static public System.TypeCode GetTypeCode(System.Type type)
      // Offset: 0x12AD718
      static ::System::TypeCode GetTypeCode(::System::Type* type);
      // protected System.TypeCode GetTypeCodeImpl()
      // Offset: 0x12AD7A8
      ::System::TypeCode GetTypeCodeImpl();
      // static private System.Void CreateBinder()
      // Offset: 0x12AD968
      static void CreateBinder();
      // public System.Object InvokeMember(System.String name, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object target, System.Object[] args, System.Reflection.ParameterModifier[] modifiers, System.Globalization.CultureInfo culture, System.String[] namedParameters)
      // Offset: 0xFFFFFFFFFFFFFFFF
      ::Il2CppObject* InvokeMember(::StringW name, ::System::Reflection::BindingFlags invokeAttr, ::System::Reflection::Binder* binder, ::Il2CppObject* target, ::ArrayW<::Il2CppObject*> args, ::ArrayW<::System::Reflection::ParameterModifier> modifiers, ::System::Globalization::CultureInfo* culture, ::ArrayW<::StringW> namedParameters);
      // static public System.RuntimeTypeHandle GetTypeHandle(System.Object o)
      // Offset: 0x12ADA70
      static ::System::RuntimeTypeHandle GetTypeHandle(::Il2CppObject* o);
      // public System.Int32 GetArrayRank()
      // Offset: 0x12ADB74
      int GetArrayRank();
      // public System.Reflection.ConstructorInfo GetConstructor(System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, System.Reflection.CallingConventions callConvention, System.Type[] types, System.Reflection.ParameterModifier[] modifiers)
      // Offset: 0x12ADBD0
      ::System::Reflection::ConstructorInfo* GetConstructor(::System::Reflection::BindingFlags bindingAttr, ::System::Reflection::Binder* binder, ::System::Reflection::CallingConventions callConvention, ::ArrayW<::System::Type*> types, ::ArrayW<::System::Reflection::ParameterModifier> modifiers);
      // public System.Reflection.ConstructorInfo GetConstructor(System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, System.Type[] types, System.Reflection.ParameterModifier[] modifiers)
      // Offset: 0x12ADD10
      ::System::Reflection::ConstructorInfo* GetConstructor(::System::Reflection::BindingFlags bindingAttr, ::System::Reflection::Binder* binder, ::ArrayW<::System::Type*> types, ::ArrayW<::System::Reflection::ParameterModifier> modifiers);
      // public System.Reflection.ConstructorInfo GetConstructor(System.Type[] types)
      // Offset: 0x12ADE4C
      ::System::Reflection::ConstructorInfo* GetConstructor(::ArrayW<::System::Type*> types);
      // protected System.Reflection.ConstructorInfo GetConstructorImpl(System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, System.Reflection.CallingConventions callConvention, System.Type[] types, System.Reflection.ParameterModifier[] modifiers)
      // Offset: 0xFFFFFFFFFFFFFFFF
      ::System::Reflection::ConstructorInfo* GetConstructorImpl(::System::Reflection::BindingFlags bindingAttr, ::System::Reflection::Binder* binder, ::System::Reflection::CallingConventions callConvention, ::ArrayW<::System::Type*> types, ::ArrayW<::System::Reflection::ParameterModifier> modifiers);
      // public System.Reflection.ConstructorInfo[] GetConstructors()
      // Offset: 0x12ADE60
      ::ArrayW<::System::Reflection::ConstructorInfo*> GetConstructors();
      // public System.Reflection.ConstructorInfo[] GetConstructors(System.Reflection.BindingFlags bindingAttr)
      // Offset: 0xFFFFFFFFFFFFFFFF
      ::ArrayW<::System::Reflection::ConstructorInfo*> GetConstructors(::System::Reflection::BindingFlags bindingAttr);
      // public System.Reflection.MethodInfo GetMethod(System.String name, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, System.Type[] types, System.Reflection.ParameterModifier[] modifiers)
      // Offset: 0x12ADE74
      ::System::Reflection::MethodInfo* GetMethod(::StringW name, ::System::Reflection::BindingFlags bindingAttr, ::System::Reflection::Binder* binder, ::ArrayW<::System::Type*> types, ::ArrayW<::System::Reflection::ParameterModifier> modifiers);
      // public System.Reflection.MethodInfo GetMethod(System.String name, System.Type[] types)
      // Offset: 0x12ADFDC
      ::System::Reflection::MethodInfo* GetMethod(::StringW name, ::ArrayW<::System::Type*> types);
      // public System.Reflection.MethodInfo GetMethod(System.String name, System.Reflection.BindingFlags bindingAttr)
      // Offset: 0x12ABFD0
      ::System::Reflection::MethodInfo* GetMethod(::StringW name, ::System::Reflection::BindingFlags bindingAttr);
      // public System.Reflection.MethodInfo GetMethod(System.String name)
      // Offset: 0x12AE130
      ::System::Reflection::MethodInfo* GetMethod(::StringW name);
      // protected System.Reflection.MethodInfo GetMethodImpl(System.String name, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, System.Reflection.CallingConventions callConvention, System.Type[] types, System.Reflection.ParameterModifier[] modifiers)
      // Offset: 0xFFFFFFFFFFFFFFFF
      ::System::Reflection::MethodInfo* GetMethodImpl(::StringW name, ::System::Reflection::BindingFlags bindingAttr, ::System::Reflection::Binder* binder, ::System::Reflection::CallingConventions callConvention, ::ArrayW<::System::Type*> types, ::ArrayW<::System::Reflection::ParameterModifier> modifiers);
      // public System.Reflection.MethodInfo[] GetMethods()
      // Offset: 0x12AE1AC
      ::ArrayW<::System::Reflection::MethodInfo*> GetMethods();
      // public System.Reflection.MethodInfo[] GetMethods(System.Reflection.BindingFlags bindingAttr)
      // Offset: 0xFFFFFFFFFFFFFFFF
      ::ArrayW<::System::Reflection::MethodInfo*> GetMethods(::System::Reflection::BindingFlags bindingAttr);
      // public System.Reflection.FieldInfo GetField(System.String name, System.Reflection.BindingFlags bindingAttr)
      // Offset: 0xFFFFFFFFFFFFFFFF
      ::System::Reflection::FieldInfo* GetField(::StringW name, ::System::Reflection::BindingFlags bindingAttr);
      // public System.Reflection.FieldInfo GetField(System.String name)
      // Offset: 0x12AE1C0
      ::System::Reflection::FieldInfo* GetField(::StringW name);
      // public System.Reflection.FieldInfo[] GetFields()
      // Offset: 0x12AE1D4
      ::ArrayW<::System::Reflection::FieldInfo*> GetFields();
      // public System.Reflection.FieldInfo[] GetFields(System.Reflection.BindingFlags bindingAttr)
      // Offset: 0xFFFFFFFFFFFFFFFF
      ::ArrayW<::System::Reflection::FieldInfo*> GetFields(::System::Reflection::BindingFlags bindingAttr);
      // public System.Type[] GetInterfaces()
      // Offset: 0xFFFFFFFFFFFFFFFF
      ::ArrayW<::System::Type*> GetInterfaces();
      // public System.Reflection.EventInfo GetEvent(System.String name)
      // Offset: 0x12AE1E8
      ::System::Reflection::EventInfo* GetEvent(::StringW name);
      // public System.Reflection.EventInfo GetEvent(System.String name, System.Reflection.BindingFlags bindingAttr)
      // Offset: 0xFFFFFFFFFFFFFFFF
      ::System::Reflection::EventInfo* GetEvent(::StringW name, ::System::Reflection::BindingFlags bindingAttr);
      // public System.Reflection.PropertyInfo GetProperty(System.String name, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, System.Type returnType, System.Type[] types, System.Reflection.ParameterModifier[] modifiers)
      // Offset: 0x12AE1FC
      ::System::Reflection::PropertyInfo* GetProperty(::StringW name, ::System::Reflection::BindingFlags bindingAttr, ::System::Reflection::Binder* binder, ::System::Type* returnType, ::ArrayW<::System::Type*> types, ::ArrayW<::System::Reflection::ParameterModifier> modifiers);
      // public System.Reflection.PropertyInfo GetProperty(System.String name, System.Reflection.BindingFlags bindingAttr)
      // Offset: 0x12AE290
      ::System::Reflection::PropertyInfo* GetProperty(::StringW name, ::System::Reflection::BindingFlags bindingAttr);
      // public System.Reflection.PropertyInfo GetProperty(System.String name, System.Type returnType, System.Type[] types)
      // Offset: 0x12AE308
      ::System::Reflection::PropertyInfo* GetProperty(::StringW name, ::System::Type* returnType, ::ArrayW<::System::Type*> types);
      // public System.Reflection.PropertyInfo GetProperty(System.String name, System.Type returnType)
      // Offset: 0x12AE3B0
      ::System::Reflection::PropertyInfo* GetProperty(::StringW name, ::System::Type* returnType);
      // public System.Reflection.PropertyInfo GetProperty(System.String name)
      // Offset: 0x12AE4B4
      ::System::Reflection::PropertyInfo* GetProperty(::StringW name);
      // protected System.Reflection.PropertyInfo GetPropertyImpl(System.String name, System.Reflection.BindingFlags bindingAttr, System.Reflection.Binder binder, System.Type returnType, System.Type[] types, System.Reflection.ParameterModifier[] modifiers)
      // Offset: 0xFFFFFFFFFFFFFFFF
      ::System::Reflection::PropertyInfo* GetPropertyImpl(::StringW name, ::System::Reflection::BindingFlags bindingAttr, ::System::Reflection::Binder* binder, ::System::Type* returnType, ::ArrayW<::System::Type*> types, ::ArrayW<::System::Reflection::ParameterModifier> modifiers);
      // public System.Reflection.PropertyInfo[] GetProperties(System.Reflection.BindingFlags bindingAttr)
      // Offset: 0xFFFFFFFFFFFFFFFF
      ::ArrayW<::System::Reflection::PropertyInfo*> GetProperties(::System::Reflection::BindingFlags bindingAttr);
      // public System.Reflection.PropertyInfo[] GetProperties()
      // Offset: 0x12AE530
      ::ArrayW<::System::Reflection::PropertyInfo*> GetProperties();
      // public System.Type GetNestedType(System.String name, System.Reflection.BindingFlags bindingAttr)
      // Offset: 0xFFFFFFFFFFFFFFFF
      ::System::Type* GetNestedType(::StringW name, ::System::Reflection::BindingFlags bindingAttr);
      // public System.Reflection.MemberInfo[] GetMember(System.String name)
      // Offset: 0x12AE544
      ::ArrayW<::System::Reflection::MemberInfo*> GetMember(::StringW name);
      // public System.Reflection.MemberInfo[] GetMember(System.String name, System.Reflection.BindingFlags bindingAttr)
      // Offset: 0x12AE558
      ::ArrayW<::System::Reflection::MemberInfo*> GetMember(::StringW name, ::System::Reflection::BindingFlags bindingAttr);
      // public System.Reflection.MemberInfo[] GetMember(System.String name, System.Reflection.MemberTypes type, System.Reflection.BindingFlags bindingAttr)
      // Offset: 0x12AE570
      ::ArrayW<::System::Reflection::MemberInfo*> GetMember(::StringW name, ::System::Reflection::MemberTypes type, ::System::Reflection::BindingFlags bindingAttr);
      // public System.Type[] GetGenericParameterConstraints()
      // Offset: 0x12AEE10
      ::ArrayW<::System::Type*> GetGenericParameterConstraints();
      // protected System.Boolean IsValueTypeImpl()
      // Offset: 0x12AEF04
      bool IsValueTypeImpl();
      // protected System.Reflection.TypeAttributes GetAttributeFlagsImpl()
      // Offset: 0xFFFFFFFFFFFFFFFF
      ::System::Reflection::TypeAttributes GetAttributeFlagsImpl();
      // protected System.Boolean IsArrayImpl()
      // Offset: 0xFFFFFFFFFFFFFFFF
      bool IsArrayImpl();
      // protected System.Boolean IsByRefImpl()
      // Offset: 0xFFFFFFFFFFFFFFFF
      bool IsByRefImpl();
      // protected System.Boolean IsPointerImpl()
      // Offset: 0xFFFFFFFFFFFFFFFF
      bool IsPointerImpl();
      // protected System.Boolean IsPrimitiveImpl()
      // Offset: 0xFFFFFFFFFFFFFFFF
      bool IsPrimitiveImpl();
      // protected System.Boolean IsCOMObjectImpl()
      // Offset: 0xFFFFFFFFFFFFFFFF
      bool IsCOMObjectImpl();
      // public System.Type MakeGenericType(params System.Type[] typeArguments)
      // Offset: 0x12AEF7C
      ::System::Type* MakeGenericType(::ArrayW<::System::Type*> typeArguments);
      // protected System.Boolean IsContextfulImpl()
      // Offset: 0x12AEFD8
      bool IsContextfulImpl();
      // protected System.Boolean IsMarshalByRefImpl()
      // Offset: 0x12AF06C
      bool IsMarshalByRefImpl();
      // public System.Type GetElementType()
      // Offset: 0xFFFFFFFFFFFFFFFF
      ::System::Type* GetElementType();
      // public System.Type[] GetGenericArguments()
      // Offset: 0x12AF100
      ::ArrayW<::System::Type*> GetGenericArguments();
      // public System.Type GetGenericTypeDefinition()
      // Offset: 0x12AF15C
      ::System::Type* GetGenericTypeDefinition();
      // protected System.Boolean HasElementTypeImpl()
      // Offset: 0xFFFFFFFFFFFFFFFF
      bool HasElementTypeImpl();
      // System.Type GetRootElementType()
      // Offset: 0x12AEDB4
      ::System::Type* GetRootElementType();
      // public System.String[] GetEnumNames()
      // Offset: 0x12AF1B8
      ::ArrayW<::StringW> GetEnumNames();
      // public System.Array GetEnumValues()
      // Offset: 0x12AF670
      ::System::Array* GetEnumValues();
      // private System.Array GetEnumRawConstantValues()
      // Offset: 0x12AF728
      ::System::Array* GetEnumRawConstantValues();
      // private System.Void GetEnumData(out System.String[] enumNames, out System.Array enumValues)
      // Offset: 0x12AF26C
      void GetEnumData(ByRef<::ArrayW<::StringW>> enumNames, ByRef<::System::Array*> enumValues);
      // public System.Type GetEnumUnderlyingType()
      // Offset: 0x12AF754
      ::System::Type* GetEnumUnderlyingType();
      // public System.Boolean IsEnumDefined(System.Object value)
      // Offset: 0x12AF834
      bool IsEnumDefined(::Il2CppObject* value);
      // public System.String GetEnumName(System.Object value)
      // Offset: 0x12B01A8
      ::StringW GetEnumName(::Il2CppObject* value);
      // static private System.Int32 BinarySearch(System.Array array, System.Object value)
      // Offset: 0x12B0030
      static int BinarySearch(::System::Array* array, ::Il2CppObject* value);
      // static System.Boolean IsIntegerType(System.Type t)
      // Offset: 0x12AFD5C
      static bool IsIntegerType(::System::Type* t);
      // public System.Boolean IsSubclassOf(System.Type c)
      // Offset: 0x12B03E4
      bool IsSubclassOf(::System::Type* c);
      // public System.Boolean IsInstanceOfType(System.Object o)
      // Offset: 0x12B04B8
      bool IsInstanceOfType(::Il2CppObject* o);
      // public System.Boolean IsAssignableFrom(System.Type c)
      // Offset: 0x12B0500
      bool IsAssignableFrom(::System::Type* c);
      // public System.Boolean IsEquivalentTo(System.Type other)
      // Offset: 0x12B08A4
      bool IsEquivalentTo(::System::Type* other);
      // System.Boolean ImplementInterface(System.Type ifaceType)
      // Offset: 0x12B072C
      bool ImplementInterface(::System::Type* ifaceType);
      // System.String FormatTypeName()
      // Offset: 0x12B0914
      ::StringW FormatTypeName();
      // System.String FormatTypeName(System.Boolean serialization)
      // Offset: 0x12B0928
      ::StringW FormatTypeName(bool serialization);
      // public System.Boolean Equals(System.Type o)
      // Offset: 0x12B0A78
      bool Equals(::System::Type* o);
      // public System.Type GetType()
      // Offset: 0x12B0B28
      ::System::Type* GetType();
      // static private System.Type internal_from_name(System.String name, System.Boolean throwOnError, System.Boolean ignoreCase)
      // Offset: 0x12B0B70
      static ::System::Type* internal_from_name(::StringW name, bool throwOnError, bool ignoreCase);
      // static public System.Type GetType(System.String typeName)
      // Offset: 0x12B0B7C
      static ::System::Type* GetType(::StringW typeName);
      // static public System.Type GetType(System.String typeName, System.Boolean throwOnError)
      // Offset: 0x12B0C14
      static ::System::Type* GetType(::StringW typeName, bool throwOnError);
      // static public System.Type GetType(System.String typeName, System.Boolean throwOnError, System.Boolean ignoreCase)
      // Offset: 0x12B0CB8
      static ::System::Type* GetType(::StringW typeName, bool throwOnError, bool ignoreCase);
      // static public System.Type GetTypeFromHandle(System.RuntimeTypeHandle handle)
      // Offset: 0x12AB404
      static ::System::Type* GetTypeFromHandle(::System::RuntimeTypeHandle handle);
      // static private System.Type internal_from_handle(System.IntPtr handle)
      // Offset: 0x12B0EB0
      static ::System::Type* internal_from_handle(::System::IntPtr handle);
      // public override System.Reflection.MemberTypes get_MemberType()
      // Offset: 0x12AD5A0
      // Implemented from: System.Reflection.MemberInfo
      // Base method: System.Reflection.MemberTypes MemberInfo::get_MemberType()
      ::System::Reflection::MemberTypes get_MemberType();
      // public override System.Type get_DeclaringType()
      // Offset: 0x12AD5A8
      // Implemented from: System.Reflection.MemberInfo
      // Base method: System.Type MemberInfo::get_DeclaringType()
      ::System::Type* get_DeclaringType();
      // public override System.Type get_ReflectedType()
      // Offset: 0x12AD5B8
      // Implemented from: System.Reflection.MemberInfo
      // Base method: System.Type MemberInfo::get_ReflectedType()
      ::System::Type* get_ReflectedType();
      // public override System.Reflection.Module get_Module()
      // Offset: 0xFFFFFFFFFFFFFFFF
      // Implemented from: System.Reflection.MemberInfo
      // Base method: System.Reflection.Module MemberInfo::get_Module()
      ::System::Reflection::Module* get_Module();
      // protected System.Void .ctor()
      // Offset: 0x12AD598
      // Implemented from: System.Reflection.MemberInfo
      // Base method: System.Void MemberInfo::.ctor()
      // Base method: System.Void Object::.ctor()
      template<::il2cpp_utils::CreationType creationType = ::il2cpp_utils::CreationType::Temporary>
      static Type* New_ctor() {
        static auto ___internal__logger = ::Logger::get().WithContext("::System::Type::.ctor");
        return THROW_UNLESS((::il2cpp_utils::New<Type*, creationType>()));
      }
      // public override System.String ToString()
      // Offset: 0x12B0968
      // Implemented from: System.Object
      // Base method: System.String Object::ToString()
      ::StringW ToString();
      // public override System.Boolean Equals(System.Object o)
      // Offset: 0x12B09CC
      // Implemented from: System.Reflection.MemberInfo
      // Base method: System.Boolean MemberInfo::Equals(System.Object o)
      bool Equals(::Il2CppObject* o);
      // public override System.Int32 GetHashCode()
      // Offset: 0x12B0AD0
      // Implemented from: System.Reflection.MemberInfo
      // Base method: System.Int32 MemberInfo::GetHashCode()
      int GetHashCode();
    }; // System.Type
    #pragma pack(pop)
    static check_size<sizeof(Type), 16 + sizeof(::System::RuntimeTypeHandle)> __System_TypeSizeCheck;
    static_assert(sizeof(Type) == 0x18);
    // static public System.Boolean op_Equality(System.Type left, System.Type right)
    // Offset: 0x12AD79C
    bool operator ==(::System::Type* left, ::System::Type& right);
    // static public System.Boolean op_Inequality(System.Type left, System.Type right)
    // Offset: 0x12AD8B8
    bool operator !=(::System::Type* left, ::System::Type& right);
  }
  #include "beatsaber-hook/shared/utils/il2cpp-utils-methods.hpp"
  // Writing MetadataGetter for method: System::Type::get_DeclaringMethod
  // Il2CppName: get_DeclaringMethod
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::Reflection::MethodBase* (System::Type::*)()>(&System::Type::get_DeclaringMethod)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "get_DeclaringMethod", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::get_DefaultBinder
  // Il2CppName: get_DefaultBinder
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::Reflection::Binder* (*)()>(&System::Type::get_DefaultBinder)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "get_DefaultBinder", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::get_Assembly
  // Il2CppName: get_Assembly
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::Reflection::Assembly* (System::Type::*)()>(&System::Type::get_Assembly)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "get_Assembly", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::get_TypeHandle
  // Il2CppName: get_TypeHandle
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::RuntimeTypeHandle (System::Type::*)()>(&System::Type::get_TypeHandle)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "get_TypeHandle", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::get_FullName
  // Il2CppName: get_FullName
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::StringW (System::Type::*)()>(&System::Type::get_FullName)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "get_FullName", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::get_Namespace
  // Il2CppName: get_Namespace
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::StringW (System::Type::*)()>(&System::Type::get_Namespace)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "get_Namespace", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::get_AssemblyQualifiedName
  // Il2CppName: get_AssemblyQualifiedName
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::StringW (System::Type::*)()>(&System::Type::get_AssemblyQualifiedName)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "get_AssemblyQualifiedName", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::get_BaseType
  // Il2CppName: get_BaseType
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::Type* (System::Type::*)()>(&System::Type::get_BaseType)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "get_BaseType", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::get_IsNested
  // Il2CppName: get_IsNested
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<bool (System::Type::*)()>(&System::Type::get_IsNested)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "get_IsNested", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::get_Attributes
  // Il2CppName: get_Attributes
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::Reflection::TypeAttributes (System::Type::*)()>(&System::Type::get_Attributes)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "get_Attributes", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::get_GenericParameterAttributes
  // Il2CppName: get_GenericParameterAttributes
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::Reflection::GenericParameterAttributes (System::Type::*)()>(&System::Type::get_GenericParameterAttributes)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "get_GenericParameterAttributes", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::get_IsVisible
  // Il2CppName: get_IsVisible
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<bool (System::Type::*)()>(&System::Type::get_IsVisible)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "get_IsVisible", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::get_IsNotPublic
  // Il2CppName: get_IsNotPublic
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<bool (System::Type::*)()>(&System::Type::get_IsNotPublic)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "get_IsNotPublic", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::get_IsPublic
  // Il2CppName: get_IsPublic
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<bool (System::Type::*)()>(&System::Type::get_IsPublic)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "get_IsPublic", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::get_IsNestedPublic
  // Il2CppName: get_IsNestedPublic
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<bool (System::Type::*)()>(&System::Type::get_IsNestedPublic)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "get_IsNestedPublic", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::get_IsNestedAssembly
  // Il2CppName: get_IsNestedAssembly
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<bool (System::Type::*)()>(&System::Type::get_IsNestedAssembly)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "get_IsNestedAssembly", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::get_IsExplicitLayout
  // Il2CppName: get_IsExplicitLayout
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<bool (System::Type::*)()>(&System::Type::get_IsExplicitLayout)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "get_IsExplicitLayout", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::get_IsClass
  // Il2CppName: get_IsClass
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<bool (System::Type::*)()>(&System::Type::get_IsClass)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "get_IsClass", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::get_IsInterface
  // Il2CppName: get_IsInterface
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<bool (System::Type::*)()>(&System::Type::get_IsInterface)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "get_IsInterface", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::get_IsValueType
  // Il2CppName: get_IsValueType
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<bool (System::Type::*)()>(&System::Type::get_IsValueType)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "get_IsValueType", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::get_IsAbstract
  // Il2CppName: get_IsAbstract
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<bool (System::Type::*)()>(&System::Type::get_IsAbstract)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "get_IsAbstract", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::get_IsSealed
  // Il2CppName: get_IsSealed
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<bool (System::Type::*)()>(&System::Type::get_IsSealed)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "get_IsSealed", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::get_IsEnum
  // Il2CppName: get_IsEnum
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<bool (System::Type::*)()>(&System::Type::get_IsEnum)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "get_IsEnum", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::get_IsSerializable
  // Il2CppName: get_IsSerializable
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<bool (System::Type::*)()>(&System::Type::get_IsSerializable)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "get_IsSerializable", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::get_IsArray
  // Il2CppName: get_IsArray
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<bool (System::Type::*)()>(&System::Type::get_IsArray)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "get_IsArray", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::get_IsSzArray
  // Il2CppName: get_IsSzArray
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<bool (System::Type::*)()>(&System::Type::get_IsSzArray)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "get_IsSzArray", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::get_IsGenericType
  // Il2CppName: get_IsGenericType
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<bool (System::Type::*)()>(&System::Type::get_IsGenericType)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "get_IsGenericType", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::get_IsGenericTypeDefinition
  // Il2CppName: get_IsGenericTypeDefinition
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<bool (System::Type::*)()>(&System::Type::get_IsGenericTypeDefinition)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "get_IsGenericTypeDefinition", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::get_IsConstructedGenericType
  // Il2CppName: get_IsConstructedGenericType
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<bool (System::Type::*)()>(&System::Type::get_IsConstructedGenericType)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "get_IsConstructedGenericType", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::get_IsGenericParameter
  // Il2CppName: get_IsGenericParameter
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<bool (System::Type::*)()>(&System::Type::get_IsGenericParameter)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "get_IsGenericParameter", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::get_GenericParameterPosition
  // Il2CppName: get_GenericParameterPosition
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<int (System::Type::*)()>(&System::Type::get_GenericParameterPosition)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "get_GenericParameterPosition", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::get_ContainsGenericParameters
  // Il2CppName: get_ContainsGenericParameters
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<bool (System::Type::*)()>(&System::Type::get_ContainsGenericParameters)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "get_ContainsGenericParameters", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::get_IsByRef
  // Il2CppName: get_IsByRef
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<bool (System::Type::*)()>(&System::Type::get_IsByRef)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "get_IsByRef", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::get_IsPointer
  // Il2CppName: get_IsPointer
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<bool (System::Type::*)()>(&System::Type::get_IsPointer)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "get_IsPointer", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::get_IsPrimitive
  // Il2CppName: get_IsPrimitive
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<bool (System::Type::*)()>(&System::Type::get_IsPrimitive)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "get_IsPrimitive", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::get_IsCOMObject
  // Il2CppName: get_IsCOMObject
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<bool (System::Type::*)()>(&System::Type::get_IsCOMObject)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "get_IsCOMObject", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::get_HasElementType
  // Il2CppName: get_HasElementType
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<bool (System::Type::*)()>(&System::Type::get_HasElementType)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "get_HasElementType", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::get_IsContextful
  // Il2CppName: get_IsContextful
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<bool (System::Type::*)()>(&System::Type::get_IsContextful)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "get_IsContextful", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::get_IsMarshalByRef
  // Il2CppName: get_IsMarshalByRef
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<bool (System::Type::*)()>(&System::Type::get_IsMarshalByRef)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "get_IsMarshalByRef", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::get_UnderlyingSystemType
  // Il2CppName: get_UnderlyingSystemType
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::Type* (System::Type::*)()>(&System::Type::get_UnderlyingSystemType)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "get_UnderlyingSystemType", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::get_IsSZArray
  // Il2CppName: get_IsSZArray
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<bool (System::Type::*)()>(&System::Type::get_IsSZArray)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "get_IsSZArray", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::_cctor
  // Il2CppName: .cctor
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<void (*)()>(&System::Type::_cctor)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), ".cctor", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetType
  // Il2CppName: GetType
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::Type* (*)(::StringW, ::System::Func_2<::System::Reflection::AssemblyName*, ::System::Reflection::Assembly*>*, ::System::Func_4<::System::Reflection::Assembly*, ::StringW, bool, ::System::Type*>*, bool)>(&System::Type::GetType)> {
    static const MethodInfo* get() {
      static auto* typeName = &::il2cpp_utils::GetClassFromName("System", "String")->byval_arg;
      static auto* assemblyResolver = &::il2cpp_utils::MakeGeneric(::il2cpp_utils::GetClassFromName("System", "Func`2"), ::std::vector<const Il2CppClass*>{::il2cpp_utils::GetClassFromName("System.Reflection", "AssemblyName"), ::il2cpp_utils::GetClassFromName("System.Reflection", "Assembly")})->byval_arg;
      static auto* typeResolver = &::il2cpp_utils::MakeGeneric(::il2cpp_utils::GetClassFromName("System", "Func`4"), ::std::vector<const Il2CppClass*>{::il2cpp_utils::GetClassFromName("System.Reflection", "Assembly"), ::il2cpp_utils::GetClassFromName("System", "String"), ::il2cpp_utils::GetClassFromName("System", "Boolean"), ::il2cpp_utils::GetClassFromName("System", "Type")})->byval_arg;
      static auto* throwOnError = &::il2cpp_utils::GetClassFromName("System", "Boolean")->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetType", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{typeName, assemblyResolver, typeResolver, throwOnError});
    }
  };
  // Writing MetadataGetter for method: System::Type::MakePointerType
  // Il2CppName: MakePointerType
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::Type* (System::Type::*)()>(&System::Type::MakePointerType)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "MakePointerType", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::MakeByRefType
  // Il2CppName: MakeByRefType
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::Type* (System::Type::*)()>(&System::Type::MakeByRefType)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "MakeByRefType", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::MakeArrayType
  // Il2CppName: MakeArrayType
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::Type* (System::Type::*)()>(&System::Type::MakeArrayType)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "MakeArrayType", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::MakeArrayType
  // Il2CppName: MakeArrayType
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::Type* (System::Type::*)(int)>(&System::Type::MakeArrayType)> {
    static const MethodInfo* get() {
      static auto* rank = &::il2cpp_utils::GetClassFromName("System", "Int32")->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "MakeArrayType", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{rank});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetTypeCode
  // Il2CppName: GetTypeCode
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::TypeCode (*)(::System::Type*)>(&System::Type::GetTypeCode)> {
    static const MethodInfo* get() {
      static auto* type = &::il2cpp_utils::GetClassFromName("System", "Type")->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetTypeCode", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{type});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetTypeCodeImpl
  // Il2CppName: GetTypeCodeImpl
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::TypeCode (System::Type::*)()>(&System::Type::GetTypeCodeImpl)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetTypeCodeImpl", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::CreateBinder
  // Il2CppName: CreateBinder
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<void (*)()>(&System::Type::CreateBinder)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "CreateBinder", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::InvokeMember
  // Il2CppName: InvokeMember
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::Il2CppObject* (System::Type::*)(::StringW, ::System::Reflection::BindingFlags, ::System::Reflection::Binder*, ::Il2CppObject*, ::ArrayW<::Il2CppObject*>, ::ArrayW<::System::Reflection::ParameterModifier>, ::System::Globalization::CultureInfo*, ::ArrayW<::StringW>)>(&System::Type::InvokeMember)> {
    static const MethodInfo* get() {
      static auto* name = &::il2cpp_utils::GetClassFromName("System", "String")->byval_arg;
      static auto* invokeAttr = &::il2cpp_utils::GetClassFromName("System.Reflection", "BindingFlags")->byval_arg;
      static auto* binder = &::il2cpp_utils::GetClassFromName("System.Reflection", "Binder")->byval_arg;
      static auto* target = &::il2cpp_utils::GetClassFromName("System", "Object")->byval_arg;
      static auto* args = &il2cpp_functions::array_class_get(::il2cpp_utils::GetClassFromName("System", "Object"), 1)->byval_arg;
      static auto* modifiers = &il2cpp_functions::array_class_get(::il2cpp_utils::GetClassFromName("System.Reflection", "ParameterModifier"), 1)->byval_arg;
      static auto* culture = &::il2cpp_utils::GetClassFromName("System.Globalization", "CultureInfo")->byval_arg;
      static auto* namedParameters = &il2cpp_functions::array_class_get(::il2cpp_utils::GetClassFromName("System", "String"), 1)->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "InvokeMember", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{name, invokeAttr, binder, target, args, modifiers, culture, namedParameters});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetTypeHandle
  // Il2CppName: GetTypeHandle
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::RuntimeTypeHandle (*)(::Il2CppObject*)>(&System::Type::GetTypeHandle)> {
    static const MethodInfo* get() {
      static auto* o = &::il2cpp_utils::GetClassFromName("System", "Object")->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetTypeHandle", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{o});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetArrayRank
  // Il2CppName: GetArrayRank
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<int (System::Type::*)()>(&System::Type::GetArrayRank)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetArrayRank", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetConstructor
  // Il2CppName: GetConstructor
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::Reflection::ConstructorInfo* (System::Type::*)(::System::Reflection::BindingFlags, ::System::Reflection::Binder*, ::System::Reflection::CallingConventions, ::ArrayW<::System::Type*>, ::ArrayW<::System::Reflection::ParameterModifier>)>(&System::Type::GetConstructor)> {
    static const MethodInfo* get() {
      static auto* bindingAttr = &::il2cpp_utils::GetClassFromName("System.Reflection", "BindingFlags")->byval_arg;
      static auto* binder = &::il2cpp_utils::GetClassFromName("System.Reflection", "Binder")->byval_arg;
      static auto* callConvention = &::il2cpp_utils::GetClassFromName("System.Reflection", "CallingConventions")->byval_arg;
      static auto* types = &il2cpp_functions::array_class_get(::il2cpp_utils::GetClassFromName("System", "Type"), 1)->byval_arg;
      static auto* modifiers = &il2cpp_functions::array_class_get(::il2cpp_utils::GetClassFromName("System.Reflection", "ParameterModifier"), 1)->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetConstructor", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{bindingAttr, binder, callConvention, types, modifiers});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetConstructor
  // Il2CppName: GetConstructor
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::Reflection::ConstructorInfo* (System::Type::*)(::System::Reflection::BindingFlags, ::System::Reflection::Binder*, ::ArrayW<::System::Type*>, ::ArrayW<::System::Reflection::ParameterModifier>)>(&System::Type::GetConstructor)> {
    static const MethodInfo* get() {
      static auto* bindingAttr = &::il2cpp_utils::GetClassFromName("System.Reflection", "BindingFlags")->byval_arg;
      static auto* binder = &::il2cpp_utils::GetClassFromName("System.Reflection", "Binder")->byval_arg;
      static auto* types = &il2cpp_functions::array_class_get(::il2cpp_utils::GetClassFromName("System", "Type"), 1)->byval_arg;
      static auto* modifiers = &il2cpp_functions::array_class_get(::il2cpp_utils::GetClassFromName("System.Reflection", "ParameterModifier"), 1)->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetConstructor", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{bindingAttr, binder, types, modifiers});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetConstructor
  // Il2CppName: GetConstructor
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::Reflection::ConstructorInfo* (System::Type::*)(::ArrayW<::System::Type*>)>(&System::Type::GetConstructor)> {
    static const MethodInfo* get() {
      static auto* types = &il2cpp_functions::array_class_get(::il2cpp_utils::GetClassFromName("System", "Type"), 1)->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetConstructor", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{types});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetConstructorImpl
  // Il2CppName: GetConstructorImpl
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::Reflection::ConstructorInfo* (System::Type::*)(::System::Reflection::BindingFlags, ::System::Reflection::Binder*, ::System::Reflection::CallingConventions, ::ArrayW<::System::Type*>, ::ArrayW<::System::Reflection::ParameterModifier>)>(&System::Type::GetConstructorImpl)> {
    static const MethodInfo* get() {
      static auto* bindingAttr = &::il2cpp_utils::GetClassFromName("System.Reflection", "BindingFlags")->byval_arg;
      static auto* binder = &::il2cpp_utils::GetClassFromName("System.Reflection", "Binder")->byval_arg;
      static auto* callConvention = &::il2cpp_utils::GetClassFromName("System.Reflection", "CallingConventions")->byval_arg;
      static auto* types = &il2cpp_functions::array_class_get(::il2cpp_utils::GetClassFromName("System", "Type"), 1)->byval_arg;
      static auto* modifiers = &il2cpp_functions::array_class_get(::il2cpp_utils::GetClassFromName("System.Reflection", "ParameterModifier"), 1)->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetConstructorImpl", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{bindingAttr, binder, callConvention, types, modifiers});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetConstructors
  // Il2CppName: GetConstructors
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::ArrayW<::System::Reflection::ConstructorInfo*> (System::Type::*)()>(&System::Type::GetConstructors)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetConstructors", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetConstructors
  // Il2CppName: GetConstructors
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::ArrayW<::System::Reflection::ConstructorInfo*> (System::Type::*)(::System::Reflection::BindingFlags)>(&System::Type::GetConstructors)> {
    static const MethodInfo* get() {
      static auto* bindingAttr = &::il2cpp_utils::GetClassFromName("System.Reflection", "BindingFlags")->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetConstructors", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{bindingAttr});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetMethod
  // Il2CppName: GetMethod
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::Reflection::MethodInfo* (System::Type::*)(::StringW, ::System::Reflection::BindingFlags, ::System::Reflection::Binder*, ::ArrayW<::System::Type*>, ::ArrayW<::System::Reflection::ParameterModifier>)>(&System::Type::GetMethod)> {
    static const MethodInfo* get() {
      static auto* name = &::il2cpp_utils::GetClassFromName("System", "String")->byval_arg;
      static auto* bindingAttr = &::il2cpp_utils::GetClassFromName("System.Reflection", "BindingFlags")->byval_arg;
      static auto* binder = &::il2cpp_utils::GetClassFromName("System.Reflection", "Binder")->byval_arg;
      static auto* types = &il2cpp_functions::array_class_get(::il2cpp_utils::GetClassFromName("System", "Type"), 1)->byval_arg;
      static auto* modifiers = &il2cpp_functions::array_class_get(::il2cpp_utils::GetClassFromName("System.Reflection", "ParameterModifier"), 1)->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetMethod", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{name, bindingAttr, binder, types, modifiers});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetMethod
  // Il2CppName: GetMethod
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::Reflection::MethodInfo* (System::Type::*)(::StringW, ::ArrayW<::System::Type*>)>(&System::Type::GetMethod)> {
    static const MethodInfo* get() {
      static auto* name = &::il2cpp_utils::GetClassFromName("System", "String")->byval_arg;
      static auto* types = &il2cpp_functions::array_class_get(::il2cpp_utils::GetClassFromName("System", "Type"), 1)->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetMethod", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{name, types});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetMethod
  // Il2CppName: GetMethod
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::Reflection::MethodInfo* (System::Type::*)(::StringW, ::System::Reflection::BindingFlags)>(&System::Type::GetMethod)> {
    static const MethodInfo* get() {
      static auto* name = &::il2cpp_utils::GetClassFromName("System", "String")->byval_arg;
      static auto* bindingAttr = &::il2cpp_utils::GetClassFromName("System.Reflection", "BindingFlags")->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetMethod", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{name, bindingAttr});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetMethod
  // Il2CppName: GetMethod
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::Reflection::MethodInfo* (System::Type::*)(::StringW)>(&System::Type::GetMethod)> {
    static const MethodInfo* get() {
      static auto* name = &::il2cpp_utils::GetClassFromName("System", "String")->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetMethod", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{name});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetMethodImpl
  // Il2CppName: GetMethodImpl
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::Reflection::MethodInfo* (System::Type::*)(::StringW, ::System::Reflection::BindingFlags, ::System::Reflection::Binder*, ::System::Reflection::CallingConventions, ::ArrayW<::System::Type*>, ::ArrayW<::System::Reflection::ParameterModifier>)>(&System::Type::GetMethodImpl)> {
    static const MethodInfo* get() {
      static auto* name = &::il2cpp_utils::GetClassFromName("System", "String")->byval_arg;
      static auto* bindingAttr = &::il2cpp_utils::GetClassFromName("System.Reflection", "BindingFlags")->byval_arg;
      static auto* binder = &::il2cpp_utils::GetClassFromName("System.Reflection", "Binder")->byval_arg;
      static auto* callConvention = &::il2cpp_utils::GetClassFromName("System.Reflection", "CallingConventions")->byval_arg;
      static auto* types = &il2cpp_functions::array_class_get(::il2cpp_utils::GetClassFromName("System", "Type"), 1)->byval_arg;
      static auto* modifiers = &il2cpp_functions::array_class_get(::il2cpp_utils::GetClassFromName("System.Reflection", "ParameterModifier"), 1)->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetMethodImpl", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{name, bindingAttr, binder, callConvention, types, modifiers});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetMethods
  // Il2CppName: GetMethods
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::ArrayW<::System::Reflection::MethodInfo*> (System::Type::*)()>(&System::Type::GetMethods)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetMethods", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetMethods
  // Il2CppName: GetMethods
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::ArrayW<::System::Reflection::MethodInfo*> (System::Type::*)(::System::Reflection::BindingFlags)>(&System::Type::GetMethods)> {
    static const MethodInfo* get() {
      static auto* bindingAttr = &::il2cpp_utils::GetClassFromName("System.Reflection", "BindingFlags")->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetMethods", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{bindingAttr});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetField
  // Il2CppName: GetField
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::Reflection::FieldInfo* (System::Type::*)(::StringW, ::System::Reflection::BindingFlags)>(&System::Type::GetField)> {
    static const MethodInfo* get() {
      static auto* name = &::il2cpp_utils::GetClassFromName("System", "String")->byval_arg;
      static auto* bindingAttr = &::il2cpp_utils::GetClassFromName("System.Reflection", "BindingFlags")->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetField", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{name, bindingAttr});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetField
  // Il2CppName: GetField
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::Reflection::FieldInfo* (System::Type::*)(::StringW)>(&System::Type::GetField)> {
    static const MethodInfo* get() {
      static auto* name = &::il2cpp_utils::GetClassFromName("System", "String")->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetField", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{name});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetFields
  // Il2CppName: GetFields
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::ArrayW<::System::Reflection::FieldInfo*> (System::Type::*)()>(&System::Type::GetFields)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetFields", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetFields
  // Il2CppName: GetFields
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::ArrayW<::System::Reflection::FieldInfo*> (System::Type::*)(::System::Reflection::BindingFlags)>(&System::Type::GetFields)> {
    static const MethodInfo* get() {
      static auto* bindingAttr = &::il2cpp_utils::GetClassFromName("System.Reflection", "BindingFlags")->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetFields", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{bindingAttr});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetInterfaces
  // Il2CppName: GetInterfaces
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::ArrayW<::System::Type*> (System::Type::*)()>(&System::Type::GetInterfaces)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetInterfaces", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetEvent
  // Il2CppName: GetEvent
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::Reflection::EventInfo* (System::Type::*)(::StringW)>(&System::Type::GetEvent)> {
    static const MethodInfo* get() {
      static auto* name = &::il2cpp_utils::GetClassFromName("System", "String")->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetEvent", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{name});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetEvent
  // Il2CppName: GetEvent
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::Reflection::EventInfo* (System::Type::*)(::StringW, ::System::Reflection::BindingFlags)>(&System::Type::GetEvent)> {
    static const MethodInfo* get() {
      static auto* name = &::il2cpp_utils::GetClassFromName("System", "String")->byval_arg;
      static auto* bindingAttr = &::il2cpp_utils::GetClassFromName("System.Reflection", "BindingFlags")->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetEvent", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{name, bindingAttr});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetProperty
  // Il2CppName: GetProperty
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::Reflection::PropertyInfo* (System::Type::*)(::StringW, ::System::Reflection::BindingFlags, ::System::Reflection::Binder*, ::System::Type*, ::ArrayW<::System::Type*>, ::ArrayW<::System::Reflection::ParameterModifier>)>(&System::Type::GetProperty)> {
    static const MethodInfo* get() {
      static auto* name = &::il2cpp_utils::GetClassFromName("System", "String")->byval_arg;
      static auto* bindingAttr = &::il2cpp_utils::GetClassFromName("System.Reflection", "BindingFlags")->byval_arg;
      static auto* binder = &::il2cpp_utils::GetClassFromName("System.Reflection", "Binder")->byval_arg;
      static auto* returnType = &::il2cpp_utils::GetClassFromName("System", "Type")->byval_arg;
      static auto* types = &il2cpp_functions::array_class_get(::il2cpp_utils::GetClassFromName("System", "Type"), 1)->byval_arg;
      static auto* modifiers = &il2cpp_functions::array_class_get(::il2cpp_utils::GetClassFromName("System.Reflection", "ParameterModifier"), 1)->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetProperty", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{name, bindingAttr, binder, returnType, types, modifiers});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetProperty
  // Il2CppName: GetProperty
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::Reflection::PropertyInfo* (System::Type::*)(::StringW, ::System::Reflection::BindingFlags)>(&System::Type::GetProperty)> {
    static const MethodInfo* get() {
      static auto* name = &::il2cpp_utils::GetClassFromName("System", "String")->byval_arg;
      static auto* bindingAttr = &::il2cpp_utils::GetClassFromName("System.Reflection", "BindingFlags")->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetProperty", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{name, bindingAttr});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetProperty
  // Il2CppName: GetProperty
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::Reflection::PropertyInfo* (System::Type::*)(::StringW, ::System::Type*, ::ArrayW<::System::Type*>)>(&System::Type::GetProperty)> {
    static const MethodInfo* get() {
      static auto* name = &::il2cpp_utils::GetClassFromName("System", "String")->byval_arg;
      static auto* returnType = &::il2cpp_utils::GetClassFromName("System", "Type")->byval_arg;
      static auto* types = &il2cpp_functions::array_class_get(::il2cpp_utils::GetClassFromName("System", "Type"), 1)->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetProperty", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{name, returnType, types});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetProperty
  // Il2CppName: GetProperty
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::Reflection::PropertyInfo* (System::Type::*)(::StringW, ::System::Type*)>(&System::Type::GetProperty)> {
    static const MethodInfo* get() {
      static auto* name = &::il2cpp_utils::GetClassFromName("System", "String")->byval_arg;
      static auto* returnType = &::il2cpp_utils::GetClassFromName("System", "Type")->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetProperty", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{name, returnType});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetProperty
  // Il2CppName: GetProperty
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::Reflection::PropertyInfo* (System::Type::*)(::StringW)>(&System::Type::GetProperty)> {
    static const MethodInfo* get() {
      static auto* name = &::il2cpp_utils::GetClassFromName("System", "String")->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetProperty", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{name});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetPropertyImpl
  // Il2CppName: GetPropertyImpl
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::Reflection::PropertyInfo* (System::Type::*)(::StringW, ::System::Reflection::BindingFlags, ::System::Reflection::Binder*, ::System::Type*, ::ArrayW<::System::Type*>, ::ArrayW<::System::Reflection::ParameterModifier>)>(&System::Type::GetPropertyImpl)> {
    static const MethodInfo* get() {
      static auto* name = &::il2cpp_utils::GetClassFromName("System", "String")->byval_arg;
      static auto* bindingAttr = &::il2cpp_utils::GetClassFromName("System.Reflection", "BindingFlags")->byval_arg;
      static auto* binder = &::il2cpp_utils::GetClassFromName("System.Reflection", "Binder")->byval_arg;
      static auto* returnType = &::il2cpp_utils::GetClassFromName("System", "Type")->byval_arg;
      static auto* types = &il2cpp_functions::array_class_get(::il2cpp_utils::GetClassFromName("System", "Type"), 1)->byval_arg;
      static auto* modifiers = &il2cpp_functions::array_class_get(::il2cpp_utils::GetClassFromName("System.Reflection", "ParameterModifier"), 1)->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetPropertyImpl", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{name, bindingAttr, binder, returnType, types, modifiers});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetProperties
  // Il2CppName: GetProperties
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::ArrayW<::System::Reflection::PropertyInfo*> (System::Type::*)(::System::Reflection::BindingFlags)>(&System::Type::GetProperties)> {
    static const MethodInfo* get() {
      static auto* bindingAttr = &::il2cpp_utils::GetClassFromName("System.Reflection", "BindingFlags")->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetProperties", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{bindingAttr});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetProperties
  // Il2CppName: GetProperties
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::ArrayW<::System::Reflection::PropertyInfo*> (System::Type::*)()>(&System::Type::GetProperties)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetProperties", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetNestedType
  // Il2CppName: GetNestedType
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::Type* (System::Type::*)(::StringW, ::System::Reflection::BindingFlags)>(&System::Type::GetNestedType)> {
    static const MethodInfo* get() {
      static auto* name = &::il2cpp_utils::GetClassFromName("System", "String")->byval_arg;
      static auto* bindingAttr = &::il2cpp_utils::GetClassFromName("System.Reflection", "BindingFlags")->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetNestedType", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{name, bindingAttr});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetMember
  // Il2CppName: GetMember
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::ArrayW<::System::Reflection::MemberInfo*> (System::Type::*)(::StringW)>(&System::Type::GetMember)> {
    static const MethodInfo* get() {
      static auto* name = &::il2cpp_utils::GetClassFromName("System", "String")->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetMember", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{name});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetMember
  // Il2CppName: GetMember
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::ArrayW<::System::Reflection::MemberInfo*> (System::Type::*)(::StringW, ::System::Reflection::BindingFlags)>(&System::Type::GetMember)> {
    static const MethodInfo* get() {
      static auto* name = &::il2cpp_utils::GetClassFromName("System", "String")->byval_arg;
      static auto* bindingAttr = &::il2cpp_utils::GetClassFromName("System.Reflection", "BindingFlags")->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetMember", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{name, bindingAttr});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetMember
  // Il2CppName: GetMember
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::ArrayW<::System::Reflection::MemberInfo*> (System::Type::*)(::StringW, ::System::Reflection::MemberTypes, ::System::Reflection::BindingFlags)>(&System::Type::GetMember)> {
    static const MethodInfo* get() {
      static auto* name = &::il2cpp_utils::GetClassFromName("System", "String")->byval_arg;
      static auto* type = &::il2cpp_utils::GetClassFromName("System.Reflection", "MemberTypes")->byval_arg;
      static auto* bindingAttr = &::il2cpp_utils::GetClassFromName("System.Reflection", "BindingFlags")->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetMember", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{name, type, bindingAttr});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetGenericParameterConstraints
  // Il2CppName: GetGenericParameterConstraints
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::ArrayW<::System::Type*> (System::Type::*)()>(&System::Type::GetGenericParameterConstraints)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetGenericParameterConstraints", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::IsValueTypeImpl
  // Il2CppName: IsValueTypeImpl
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<bool (System::Type::*)()>(&System::Type::IsValueTypeImpl)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "IsValueTypeImpl", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetAttributeFlagsImpl
  // Il2CppName: GetAttributeFlagsImpl
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::Reflection::TypeAttributes (System::Type::*)()>(&System::Type::GetAttributeFlagsImpl)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetAttributeFlagsImpl", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::IsArrayImpl
  // Il2CppName: IsArrayImpl
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<bool (System::Type::*)()>(&System::Type::IsArrayImpl)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "IsArrayImpl", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::IsByRefImpl
  // Il2CppName: IsByRefImpl
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<bool (System::Type::*)()>(&System::Type::IsByRefImpl)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "IsByRefImpl", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::IsPointerImpl
  // Il2CppName: IsPointerImpl
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<bool (System::Type::*)()>(&System::Type::IsPointerImpl)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "IsPointerImpl", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::IsPrimitiveImpl
  // Il2CppName: IsPrimitiveImpl
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<bool (System::Type::*)()>(&System::Type::IsPrimitiveImpl)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "IsPrimitiveImpl", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::IsCOMObjectImpl
  // Il2CppName: IsCOMObjectImpl
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<bool (System::Type::*)()>(&System::Type::IsCOMObjectImpl)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "IsCOMObjectImpl", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::MakeGenericType
  // Il2CppName: MakeGenericType
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::Type* (System::Type::*)(::ArrayW<::System::Type*>)>(&System::Type::MakeGenericType)> {
    static const MethodInfo* get() {
      static auto* typeArguments = &il2cpp_functions::array_class_get(::il2cpp_utils::GetClassFromName("System", "Type"), 1)->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "MakeGenericType", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{typeArguments});
    }
  };
  // Writing MetadataGetter for method: System::Type::IsContextfulImpl
  // Il2CppName: IsContextfulImpl
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<bool (System::Type::*)()>(&System::Type::IsContextfulImpl)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "IsContextfulImpl", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::IsMarshalByRefImpl
  // Il2CppName: IsMarshalByRefImpl
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<bool (System::Type::*)()>(&System::Type::IsMarshalByRefImpl)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "IsMarshalByRefImpl", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetElementType
  // Il2CppName: GetElementType
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::Type* (System::Type::*)()>(&System::Type::GetElementType)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetElementType", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetGenericArguments
  // Il2CppName: GetGenericArguments
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::ArrayW<::System::Type*> (System::Type::*)()>(&System::Type::GetGenericArguments)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetGenericArguments", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetGenericTypeDefinition
  // Il2CppName: GetGenericTypeDefinition
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::Type* (System::Type::*)()>(&System::Type::GetGenericTypeDefinition)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetGenericTypeDefinition", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::HasElementTypeImpl
  // Il2CppName: HasElementTypeImpl
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<bool (System::Type::*)()>(&System::Type::HasElementTypeImpl)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "HasElementTypeImpl", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetRootElementType
  // Il2CppName: GetRootElementType
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::Type* (System::Type::*)()>(&System::Type::GetRootElementType)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetRootElementType", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetEnumNames
  // Il2CppName: GetEnumNames
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::ArrayW<::StringW> (System::Type::*)()>(&System::Type::GetEnumNames)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetEnumNames", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetEnumValues
  // Il2CppName: GetEnumValues
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::Array* (System::Type::*)()>(&System::Type::GetEnumValues)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetEnumValues", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetEnumRawConstantValues
  // Il2CppName: GetEnumRawConstantValues
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::Array* (System::Type::*)()>(&System::Type::GetEnumRawConstantValues)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetEnumRawConstantValues", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetEnumData
  // Il2CppName: GetEnumData
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<void (System::Type::*)(ByRef<::ArrayW<::StringW>>, ByRef<::System::Array*>)>(&System::Type::GetEnumData)> {
    static const MethodInfo* get() {
      static auto* enumNames = &il2cpp_functions::array_class_get(::il2cpp_utils::GetClassFromName("System", "String"), 1)->this_arg;
      static auto* enumValues = &::il2cpp_utils::GetClassFromName("System", "Array")->this_arg;
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetEnumData", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{enumNames, enumValues});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetEnumUnderlyingType
  // Il2CppName: GetEnumUnderlyingType
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::Type* (System::Type::*)()>(&System::Type::GetEnumUnderlyingType)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetEnumUnderlyingType", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::IsEnumDefined
  // Il2CppName: IsEnumDefined
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<bool (System::Type::*)(::Il2CppObject*)>(&System::Type::IsEnumDefined)> {
    static const MethodInfo* get() {
      static auto* value = &::il2cpp_utils::GetClassFromName("System", "Object")->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "IsEnumDefined", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{value});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetEnumName
  // Il2CppName: GetEnumName
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::StringW (System::Type::*)(::Il2CppObject*)>(&System::Type::GetEnumName)> {
    static const MethodInfo* get() {
      static auto* value = &::il2cpp_utils::GetClassFromName("System", "Object")->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetEnumName", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{value});
    }
  };
  // Writing MetadataGetter for method: System::Type::BinarySearch
  // Il2CppName: BinarySearch
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<int (*)(::System::Array*, ::Il2CppObject*)>(&System::Type::BinarySearch)> {
    static const MethodInfo* get() {
      static auto* array = &::il2cpp_utils::GetClassFromName("System", "Array")->byval_arg;
      static auto* value = &::il2cpp_utils::GetClassFromName("System", "Object")->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "BinarySearch", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{array, value});
    }
  };
  // Writing MetadataGetter for method: System::Type::IsIntegerType
  // Il2CppName: IsIntegerType
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<bool (*)(::System::Type*)>(&System::Type::IsIntegerType)> {
    static const MethodInfo* get() {
      static auto* t = &::il2cpp_utils::GetClassFromName("System", "Type")->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "IsIntegerType", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{t});
    }
  };
  // Writing MetadataGetter for method: System::Type::IsSubclassOf
  // Il2CppName: IsSubclassOf
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<bool (System::Type::*)(::System::Type*)>(&System::Type::IsSubclassOf)> {
    static const MethodInfo* get() {
      static auto* c = &::il2cpp_utils::GetClassFromName("System", "Type")->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "IsSubclassOf", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{c});
    }
  };
  // Writing MetadataGetter for method: System::Type::IsInstanceOfType
  // Il2CppName: IsInstanceOfType
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<bool (System::Type::*)(::Il2CppObject*)>(&System::Type::IsInstanceOfType)> {
    static const MethodInfo* get() {
      static auto* o = &::il2cpp_utils::GetClassFromName("System", "Object")->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "IsInstanceOfType", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{o});
    }
  };
  // Writing MetadataGetter for method: System::Type::IsAssignableFrom
  // Il2CppName: IsAssignableFrom
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<bool (System::Type::*)(::System::Type*)>(&System::Type::IsAssignableFrom)> {
    static const MethodInfo* get() {
      static auto* c = &::il2cpp_utils::GetClassFromName("System", "Type")->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "IsAssignableFrom", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{c});
    }
  };
  // Writing MetadataGetter for method: System::Type::IsEquivalentTo
  // Il2CppName: IsEquivalentTo
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<bool (System::Type::*)(::System::Type*)>(&System::Type::IsEquivalentTo)> {
    static const MethodInfo* get() {
      static auto* other = &::il2cpp_utils::GetClassFromName("System", "Type")->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "IsEquivalentTo", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{other});
    }
  };
  // Writing MetadataGetter for method: System::Type::ImplementInterface
  // Il2CppName: ImplementInterface
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<bool (System::Type::*)(::System::Type*)>(&System::Type::ImplementInterface)> {
    static const MethodInfo* get() {
      static auto* ifaceType = &::il2cpp_utils::GetClassFromName("System", "Type")->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "ImplementInterface", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{ifaceType});
    }
  };
  // Writing MetadataGetter for method: System::Type::FormatTypeName
  // Il2CppName: FormatTypeName
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::StringW (System::Type::*)()>(&System::Type::FormatTypeName)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "FormatTypeName", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::FormatTypeName
  // Il2CppName: FormatTypeName
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::StringW (System::Type::*)(bool)>(&System::Type::FormatTypeName)> {
    static const MethodInfo* get() {
      static auto* serialization = &::il2cpp_utils::GetClassFromName("System", "Boolean")->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "FormatTypeName", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{serialization});
    }
  };
  // Writing MetadataGetter for method: System::Type::Equals
  // Il2CppName: Equals
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<bool (System::Type::*)(::System::Type*)>(&System::Type::Equals)> {
    static const MethodInfo* get() {
      static auto* o = &::il2cpp_utils::GetClassFromName("System", "Type")->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "Equals", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{o});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetType
  // Il2CppName: GetType
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::Type* (System::Type::*)()>(&System::Type::GetType)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetType", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::internal_from_name
  // Il2CppName: internal_from_name
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::Type* (*)(::StringW, bool, bool)>(&System::Type::internal_from_name)> {
    static const MethodInfo* get() {
      static auto* name = &::il2cpp_utils::GetClassFromName("System", "String")->byval_arg;
      static auto* throwOnError = &::il2cpp_utils::GetClassFromName("System", "Boolean")->byval_arg;
      static auto* ignoreCase = &::il2cpp_utils::GetClassFromName("System", "Boolean")->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "internal_from_name", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{name, throwOnError, ignoreCase});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetType
  // Il2CppName: GetType
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::Type* (*)(::StringW)>(&System::Type::GetType)> {
    static const MethodInfo* get() {
      static auto* typeName = &::il2cpp_utils::GetClassFromName("System", "String")->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetType", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{typeName});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetType
  // Il2CppName: GetType
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::Type* (*)(::StringW, bool)>(&System::Type::GetType)> {
    static const MethodInfo* get() {
      static auto* typeName = &::il2cpp_utils::GetClassFromName("System", "String")->byval_arg;
      static auto* throwOnError = &::il2cpp_utils::GetClassFromName("System", "Boolean")->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetType", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{typeName, throwOnError});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetType
  // Il2CppName: GetType
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::Type* (*)(::StringW, bool, bool)>(&System::Type::GetType)> {
    static const MethodInfo* get() {
      static auto* typeName = &::il2cpp_utils::GetClassFromName("System", "String")->byval_arg;
      static auto* throwOnError = &::il2cpp_utils::GetClassFromName("System", "Boolean")->byval_arg;
      static auto* ignoreCase = &::il2cpp_utils::GetClassFromName("System", "Boolean")->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetType", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{typeName, throwOnError, ignoreCase});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetTypeFromHandle
  // Il2CppName: GetTypeFromHandle
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::Type* (*)(::System::RuntimeTypeHandle)>(&System::Type::GetTypeFromHandle)> {
    static const MethodInfo* get() {
      static auto* handle = &::il2cpp_utils::GetClassFromName("System", "RuntimeTypeHandle")->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetTypeFromHandle", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{handle});
    }
  };
  // Writing MetadataGetter for method: System::Type::internal_from_handle
  // Il2CppName: internal_from_handle
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::Type* (*)(::System::IntPtr)>(&System::Type::internal_from_handle)> {
    static const MethodInfo* get() {
      static auto* handle = &::il2cpp_utils::GetClassFromName("System", "IntPtr")->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "internal_from_handle", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{handle});
    }
  };
  // Writing MetadataGetter for method: System::Type::get_MemberType
  // Il2CppName: get_MemberType
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::Reflection::MemberTypes (System::Type::*)()>(&System::Type::get_MemberType)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "get_MemberType", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::get_DeclaringType
  // Il2CppName: get_DeclaringType
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::Type* (System::Type::*)()>(&System::Type::get_DeclaringType)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "get_DeclaringType", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::get_ReflectedType
  // Il2CppName: get_ReflectedType
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::Type* (System::Type::*)()>(&System::Type::get_ReflectedType)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "get_ReflectedType", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::get_Module
  // Il2CppName: get_Module
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::Reflection::Module* (System::Type::*)()>(&System::Type::get_Module)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "get_Module", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::New_ctor
  // Il2CppName: .ctor
  // Cannot get method pointer of value based method overload from template for constructor!
  // Try using FindMethod instead!
  // Writing MetadataGetter for method: System::Type::ToString
  // Il2CppName: ToString
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::StringW (System::Type::*)()>(&System::Type::ToString)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "ToString", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::Equals
  // Il2CppName: Equals
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<bool (System::Type::*)(::Il2CppObject*)>(&System::Type::Equals)> {
    static const MethodInfo* get() {
      static auto* o = &::il2cpp_utils::GetClassFromName("System", "Object")->byval_arg;
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "Equals", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{o});
    }
  };
  // Writing MetadataGetter for method: System::Type::GetHashCode
  // Il2CppName: GetHashCode
  template<>
  struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<int (System::Type::*)()>(&System::Type::GetHashCode)> {
    static const MethodInfo* get() {
      return ::il2cpp_utils::FindMethod(classof(System::Type*), "GetHashCode", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
    }
  };
  // Writing MetadataGetter for method: System::Type::operator ==
  // Il2CppName: op_Equality
  // Cannot perform method pointer template specialization from operators!
  // Writing MetadataGetter for method: System::Type::operator !=
  // Il2CppName: op_Inequality
  // Cannot perform method pointer template specialization from operators!
  