/*
 * Generated code file by Il2CppInspector - http://www.djkaty.com - https://github.com/djkaty
 */

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Resources;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

// Image 0: mscorlib.dll - Assembly: mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - Types 0-1809
// [assembly: AssemblyCompany] // 0x1000F350-0x1000F560
// [assembly: AssemblyCopyright] // 0x1000F350-0x1000F560
// [assembly: AssemblyDefaultAlias] // 0x1000F350-0x1000F560
// [assembly: AssemblyDelaySign] // 0x1000F350-0x1000F560
// [assembly: AssemblyDescription] // 0x1000F350-0x1000F560
// [assembly: AssemblyFileVersion] // 0x1000F350-0x1000F560
// [assembly: AssemblyInformationalVersion] // 0x1000F350-0x1000F560
// [assembly: AssemblyKeyFile] // 0x1000F350-0x1000F560
// [assembly: AssemblyProduct] // 0x1000F350-0x1000F560
// [assembly: AssemblyTitle] // 0x1000F350-0x1000F560
// [assembly: CLSCompliant] // 0x1000F350-0x1000F560
// [assembly: CompilationRelaxations] // 0x1000F350-0x1000F560
// [assembly: ComVisible] // 0x1000F350-0x1000F560
// [assembly: Debuggable] // 0x1000F350-0x1000F560
// [assembly: DefaultDependency] // 0x1000F350-0x1000F560
// [assembly: Guid] // 0x1000F350-0x1000F560
// [assembly: NeutralResourcesLanguage] // 0x1000F350-0x1000F560
[assembly: RuntimeCompatibility] // 0x1000F350-0x1000F560
// [assembly: SatelliteContractVersion] // 0x1000F350-0x1000F560
[assembly: StringFreezing] // 0x1000F350-0x1000F560
// [assembly: TypeLibVersion] // 0x1000F350-0x1000F560

// Image 1: GenericTypes.dll - Assembly: GenericTypes, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - Types 1810-1835
// [assembly: CompilationRelaxations] // 0x1000D800-0x1000D850
// [assembly: Debuggable] // 0x1000D800-0x1000D850
[assembly: RuntimeCompatibility] // 0x1000D800-0x1000D850

internal static class Consts // TypeDefIndex: 100
{
	// Fields
	public const string MonoVersion = "2.6.5.0"; // Metadata: 0x000ED2D8
	public const string MonoCompany = "MONO development team"; // Metadata: 0x000ED2E3
	public const string MonoProduct = "MONO Common language infrastructure"; // Metadata: 0x000ED2FC
	public const string MonoCopyright = "(c) various MONO Authors"; // Metadata: 0x000ED323
	public const string FxVersion = "2.0.0.0"; // Metadata: 0x000ED33F
	public const string VsVersion = "8.0.0.0"; // Metadata: 0x000ED34A
	public const string FxFileVersion = "2.0.50727.1433"; // Metadata: 0x000ED355
	public const string VsFileVersion = "8.0.50727.1433"; // Metadata: 0x000ED367
	public const string AssemblyI18N = "I18N, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED379
	public const string AssemblyMicrosoft_VisualStudio = "Microsoft.VisualStudio, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED3C4
	public const string AssemblyMicrosoft_VisualStudio_Web = "Microsoft.VisualStudio.Web, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED421
	public const string AssemblyMicrosoft_VSDesigner = "Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED482
	public const string AssemblyMono_Http = "Mono.Http, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED4DD
	public const string AssemblyMono_Posix = "Mono.Posix, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED52D
	public const string AssemblyMono_Security = "Mono.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED57E
	public const string AssemblyMono_Messaging_RabbitMQ = "Mono.Messaging.RabbitMQ, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED5D2
	public const string AssemblyCorlib = "mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED630
	public const string AssemblySystem = "System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED67F
	public const string AssemblySystem_Data = "System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED6CC
	public const string AssemblySystem_Design = "System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED71E
	public const string AssemblySystem_DirectoryServices = "System.DirectoryServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED772
	public const string AssemblySystem_Drawing = "System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED7D1
	public const string AssemblySystem_Drawing_Design = "System.Drawing.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED826
	public const string AssemblySystem_Messaging = "System.Messaging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED882
	public const string AssemblySystem_Security = "System.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED8D9
	public const string AssemblySystem_ServiceProcess = "System.ServiceProcess, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED92F
	public const string AssemblySystem_Web = "System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED98B
	public const string AssemblySystem_Windows_Forms = "System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED9DC
	public const string AssemblySystem_Core = "System.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000EDA37
}

internal sealed class Locale // TypeDefIndex: 101
{
	// Constructors
	private Locale() {} // 0x100C3000-0x100C3010

	// Methods
	public static string GetText(string msg) => default; // 0x100FD9C0-0x100FD9D0
	public static string GetText(string fmt, params /* 0x10009C70-0x10009C90 */ object[] args) => default; // 0x10270000-0x10270050
}

namespace Il2CppTests.TestSources
{
	public class Base<T, U> // TypeDefIndex: 1815
	{
		// Constructors
		public Base() {}
	}

	public class Derived<V> : Il2CppTests.TestSources.Base<string, V> // TypeDefIndex: 1816
	{
		// Fields
		public G<Derived<V>> F; // 0x00
	
		// Nested types
		public class Nested // TypeDefIndex: 1817
		{
			// Constructors
			public Nested() {}
		}
	
		// Constructors
		public Derived() {}
	}

	public class G<T> // TypeDefIndex: 1818
	{
		// Constructors
		public G() {}
	}

	internal class Test // TypeDefIndex: 1819
	{
		// Constructors
		public Test() {} // 0x100C3000-0x100C3010
	
		// Methods
		public void GenericTypesTest() {} // 0x1036D500-0x1036D500
	}

	internal class ConstrainedValueType<V> // TypeDefIndex: 1820
		where V : struct
	{
		// Constructors
		public ConstrainedValueType() {}
	}

	internal class ConstrainedRefType<R> // TypeDefIndex: 1821
		where R : class
	{
		// Nested types
		private class NestedWithAutomaticConstraints // TypeDefIndex: 1822
		{
			// Constructors
			public NestedWithAutomaticConstraints() {}
		}
	
		private class NestedWithNewGenericParameter<T> // TypeDefIndex: 1823
		{
			// Constructors
			public NestedWithNewGenericParameter() {}
		}
	
		private class NestedWithNewGenericParameterAndConstraint<T> // TypeDefIndex: 1824
			where T : new()
		{
			// Constructors
			public NestedWithNewGenericParameterAndConstraint() {}
		}
	
		private class NestedWithNewGenericParameterAndDependentConstraint<T> // TypeDefIndex: 1825
			where T : G<R>, new()
		{
			// Constructors
			public NestedWithNewGenericParameterAndDependentConstraint() {}
		}
	
		private enum NestedEnumWithAutomaticConstraints // TypeDefIndex: 1826
		{
	
		}
	
		private delegate void NestedDelegateWithAutomaticConstraints(); // TypeDefIndex: 1827; 0x00000000-0x00000000
	
		// Constructors
		public ConstrainedRefType() {}
	
		// Methods
		// [NullableContext] // 0x10009C10-0x10009C30
		public void ConstrainedMethodNotNull<N>(N notnullArgument, R bar) {}
		public void ConstrainedUnmanaged<U>(U unmanagedArgument)
			where U : struct {}
		public void MultipleConstraintsMethod<C>(C constrained)
			where C : R, new() {}
		public void MultipleArgumentsMultipleConstraintsMethod<B, I>(B baseArgument, I interfaceArgument)
			where B : Derived<R>, new()
			where I : Test, IDisposable, IEnumerable<R> {}
		public void DelegateConstraint<D>(D del)
			where D : Delegate {}
		public void EnumConstraint<E>(E enumeration)
			where E : Enum {}
	}

	public class OuterGeneric<T1, T2> // TypeDefIndex: 1828
	{
		// Fields
		public InnerGeneric1 fieldOfInnerGeneric1; // 0x00
		public InnerGeneric2 fieldOfInnerGeneric2; // 0x00
		public OuterGeneric<T1, float> fieldOfOuterGenericOpen1; // 0x00
		public OuterGeneric<int, T2> fieldOfOuterGenericOpen2; // 0x00
		public OuterGeneric<int, float> fieldOfOuterGenericClosed; // 0x00
		public InnerGeneric2.SubInnerGeneric2 fieldOfSubInnerGeneric2; // 0x00
		public InnerGeneric2.SubInnerGeneric3<string> fieldOfSubInnerGeneric3; // 0x00
	
		// Nested types
		public class InnerGeneric1 : List<T1> // TypeDefIndex: 1829
		{
			// Constructors
			public InnerGeneric1() {}
		}
	
		public class InnerGeneric2 : List<T2> // TypeDefIndex: 1830
		{
			// Nested types
			public class SubInnerGeneric2 : List<T2> // TypeDefIndex: 1831
			{
				// Constructors
				public SubInnerGeneric2() {}
			}
	
			public class SubInnerGeneric3<V> // TypeDefIndex: 1832
			{
				// Constructors
				public SubInnerGeneric3() {}
			}
	
			// Constructors
			public InnerGeneric2() {}
	
			// Methods
			public SubInnerGeneric2 Test() => default;
			public SubInnerGeneric3<int> Test2() => default;
		}
	
		// Constructors
		public OuterGeneric() {}
	}

	public class NonGeneric // TypeDefIndex: 1833
	{
		// Constructors
		public NonGeneric() {} // 0x100C3000-0x100C3010
	
		// Methods
		public static void GenericMethodDefinitionInNonGenericClass<T>(T a) {}
	}

	public class GenericClassWithMethods<T> // TypeDefIndex: 1834
	{
		// Constructors
		public GenericClassWithMethods() {}
	
		// Methods
		public void NonGenericMethodInGenericClass(T a) {}
		public void NonGenericMethodInGenericClass2() {}
		public void GenericMethodDefinitionInGenericClass<U>(U a) {}
		public void GenericMethodDefinitionInGenericClass2<U>(T a, U b) {}
	}

	public class CallGenericMethods : Il2CppTests.TestSources.GenericClassWithMethods<int> // TypeDefIndex: 1835
	{
		// Constructors
		public CallGenericMethods() {} // 0x1036D450-0x1036D490
	
		// Methods
		public void CallMethods() {} // 0x1036D3D0-0x1036D450
	}
}
