diff --git a/Il2CppTests/Il2CppTests.csproj b/Il2CppTests/Il2CppTests.csproj
index b6b91f2..9cb6b50 100644
--- a/Il2CppTests/Il2CppTests.csproj
+++ b/Il2CppTests/Il2CppTests.csproj
@@ -27,6 +27,12 @@
+
+
+
+
+
+
@@ -52,6 +58,7 @@
+
diff --git a/Il2CppTests/TestExpectedResults/ExplicitInterfaces.cs b/Il2CppTests/TestExpectedResults/ExplicitInterfaces.cs
new file mode 100644
index 0000000..da7a578
--- /dev/null
+++ b/Il2CppTests/TestExpectedResults/ExplicitInterfaces.cs
@@ -0,0 +1,147 @@
+/*
+ * 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 - 0-1809
+// [assembly: AssemblyCompany] // 0x000A50A8-0x000A539C
+// [assembly: AssemblyCopyright] // 0x000A50A8-0x000A539C
+// [assembly: AssemblyDefaultAlias] // 0x000A50A8-0x000A539C
+// [assembly: AssemblyDelaySign] // 0x000A50A8-0x000A539C
+// [assembly: AssemblyDescription] // 0x000A50A8-0x000A539C
+// [assembly: AssemblyFileVersion] // 0x000A50A8-0x000A539C
+// [assembly: AssemblyInformationalVersion] // 0x000A50A8-0x000A539C
+// [assembly: AssemblyKeyFile] // 0x000A50A8-0x000A539C
+// [assembly: AssemblyProduct] // 0x000A50A8-0x000A539C
+// [assembly: AssemblyTitle] // 0x000A50A8-0x000A539C
+// [assembly: CLSCompliant] // 0x000A50A8-0x000A539C
+// [assembly: CompilationRelaxations] // 0x000A50A8-0x000A539C
+// [assembly: ComVisible] // 0x000A50A8-0x000A539C
+// [assembly: Debuggable] // 0x000A50A8-0x000A539C
+// [assembly: DefaultDependency] // 0x000A50A8-0x000A539C
+// [assembly: Guid] // 0x000A50A8-0x000A539C
+// [assembly: NeutralResourcesLanguage] // 0x000A50A8-0x000A539C
+[assembly: RuntimeCompatibility] // 0x000A50A8-0x000A539C
+// [assembly: SatelliteContractVersion] // 0x000A50A8-0x000A539C
+[assembly: StringFreezing] // 0x000A50A8-0x000A539C
+// [assembly: TypeLibVersion] // 0x000A50A8-0x000A539C
+
+// Image 1: ExplicitInterfaces.dll - 1810-1818
+// [assembly: CompilationRelaxations] // 0x000A539C-0x000A539C
+// [assembly: Debuggable] // 0x000A539C-0x000A539C
+[assembly: RuntimeCompatibility] // 0x000A539C-0x000A539C
+
+internal static class Consts // TypeDefIndex: 100
+{
+ // Fields
+ public const string MonoVersion = "2.6.5.0"; // Metadata: 0x000ECBFC
+ public const string MonoCompany = "MONO development team"; // Metadata: 0x000ECC07
+ public const string MonoProduct = "MONO Common language infrastructure"; // Metadata: 0x000ECC20
+ public const string MonoCopyright = "(c) various MONO Authors"; // Metadata: 0x000ECC47
+ public const string FxVersion = "2.0.0.0"; // Metadata: 0x000ECC63
+ public const string VsVersion = "8.0.0.0"; // Metadata: 0x000ECC6E
+ public const string FxFileVersion = "2.0.50727.1433"; // Metadata: 0x000ECC79
+ public const string VsFileVersion = "8.0.50727.1433"; // Metadata: 0x000ECC8B
+ public const string AssemblyI18N = "I18N, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECC9D
+ public const string AssemblyMicrosoft_VisualStudio = "Microsoft.VisualStudio, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECCE8
+ public const string AssemblyMicrosoft_VisualStudio_Web = "Microsoft.VisualStudio.Web, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECD45
+ public const string AssemblyMicrosoft_VSDesigner = "Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECDA6
+ public const string AssemblyMono_Http = "Mono.Http, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECE01
+ public const string AssemblyMono_Posix = "Mono.Posix, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECE51
+ public const string AssemblyMono_Security = "Mono.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECEA2
+ public const string AssemblyMono_Messaging_RabbitMQ = "Mono.Messaging.RabbitMQ, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECEF6
+ public const string AssemblyCorlib = "mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ECF54
+ public const string AssemblySystem = "System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ECFA3
+ public const string AssemblySystem_Data = "System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ECFF0
+ public const string AssemblySystem_Design = "System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED042
+ public const string AssemblySystem_DirectoryServices = "System.DirectoryServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED096
+ public const string AssemblySystem_Drawing = "System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED0F5
+ public const string AssemblySystem_Drawing_Design = "System.Drawing.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED14A
+ public const string AssemblySystem_Messaging = "System.Messaging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED1A6
+ public const string AssemblySystem_Security = "System.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED1FD
+ public const string AssemblySystem_ServiceProcess = "System.ServiceProcess, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED253
+ public const string AssemblySystem_Web = "System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED2AF
+ public const string AssemblySystem_Windows_Forms = "System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED300
+ public const string AssemblySystem_Core = "System.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED35B
+}
+
+internal sealed class Locale // TypeDefIndex: 101
+{
+ // Constructors
+ private Locale() {} // 0x003EC630-0x003EC638
+
+ // Methods
+ public static string GetText(string msg) => default; // 0x003EC638-0x003EC63C
+ public static string GetText(string fmt, params /* 0x000A38D4-0x000A38E4 */ object[] args) => default; // 0x003EC63C-0x003EC6C8
+}
+
+namespace Il2CppTests.TestSources
+{
+ internal interface IControl // TypeDefIndex: 1811
+ {
+ // Methods
+ void Paint();
+ }
+
+ internal interface ISurface // TypeDefIndex: 1812
+ {
+ // Methods
+ void Paint();
+ }
+
+ internal class Test : IControl, ISurface // TypeDefIndex: 1813
+ {
+ // Constructors
+ public Test() {} // 0x0056159C-0x0056159C
+
+ // Methods
+ void IControl.Paint() {} // 0x00561594-0x00561598
+ void ISurface.Paint() {} // 0x00561598-0x0056159C
+ }
+
+ internal interface ILeft // TypeDefIndex: 1814
+ {
+ // Properties
+ int P { get; }
+ }
+
+ internal interface IRight // TypeDefIndex: 1815
+ {
+ // Methods
+ int P();
+ }
+
+ internal class Middle : ILeft, IRight // TypeDefIndex: 1816
+ {
+ // Properties
+ int ILeft.P { get; } // 0x00561584-0x0056158C
+
+ // Constructors
+ public Middle() {} // 0x0056158C-0x00561594
+
+ // Methods
+ int P() => default; // 0x0056157C-0x00561584
+ }
+
+ internal interface IGeneric // TypeDefIndex: 1817
+ {
+ // Methods
+ void GenericMethod(T t);
+ }
+
+ internal class ImplementsGenericInterface : IGeneric> // TypeDefIndex: 1818
+ {
+ // Constructors
+ public ImplementsGenericInterface() {} // 0x00561574-0x0056157C
+
+ // Methods
+ void IGeneric>.GenericMethod(KeyValuePair t) {} // 0x00561570-0x00561574
+ }
+}
diff --git a/Il2CppTests/TestExpectedResults/GameAssembly-ExplicitInterfaces-x64.cs b/Il2CppTests/TestExpectedResults/GameAssembly-ExplicitInterfaces-x64.cs
new file mode 100644
index 0000000..8344f55
--- /dev/null
+++ b/Il2CppTests/TestExpectedResults/GameAssembly-ExplicitInterfaces-x64.cs
@@ -0,0 +1,147 @@
+/*
+ * 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 - 0-1809
+// [assembly: AssemblyCompany] // 0x000000018000E950-0x000000018000CAF0
+// [assembly: AssemblyCopyright] // 0x000000018000E950-0x000000018000CAF0
+// [assembly: AssemblyDefaultAlias] // 0x000000018000E950-0x000000018000CAF0
+// [assembly: AssemblyDelaySign] // 0x000000018000E950-0x000000018000CAF0
+// [assembly: AssemblyDescription] // 0x000000018000E950-0x000000018000CAF0
+// [assembly: AssemblyFileVersion] // 0x000000018000E950-0x000000018000CAF0
+// [assembly: AssemblyInformationalVersion] // 0x000000018000E950-0x000000018000CAF0
+// [assembly: AssemblyKeyFile] // 0x000000018000E950-0x000000018000CAF0
+// [assembly: AssemblyProduct] // 0x000000018000E950-0x000000018000CAF0
+// [assembly: AssemblyTitle] // 0x000000018000E950-0x000000018000CAF0
+// [assembly: CLSCompliant] // 0x000000018000E950-0x000000018000CAF0
+// [assembly: CompilationRelaxations] // 0x000000018000E950-0x000000018000CAF0
+// [assembly: ComVisible] // 0x000000018000E950-0x000000018000CAF0
+// [assembly: Debuggable] // 0x000000018000E950-0x000000018000CAF0
+// [assembly: DefaultDependency] // 0x000000018000E950-0x000000018000CAF0
+// [assembly: Guid] // 0x000000018000E950-0x000000018000CAF0
+// [assembly: NeutralResourcesLanguage] // 0x000000018000E950-0x000000018000CAF0
+[assembly: RuntimeCompatibility] // 0x000000018000E950-0x000000018000CAF0
+// [assembly: SatelliteContractVersion] // 0x000000018000E950-0x000000018000CAF0
+[assembly: StringFreezing] // 0x000000018000E950-0x000000018000CAF0
+// [assembly: TypeLibVersion] // 0x000000018000E950-0x000000018000CAF0
+
+// Image 1: ExplicitInterfaces.dll - 1810-1818
+// [assembly: CompilationRelaxations] // 0x000000018000CAF0-0x000000018000CAF0
+// [assembly: Debuggable] // 0x000000018000CAF0-0x000000018000CAF0
+[assembly: RuntimeCompatibility] // 0x000000018000CAF0-0x000000018000CAF0
+
+internal static class Consts // TypeDefIndex: 100
+{
+ // Fields
+ public const string MonoVersion = "2.6.5.0"; // Metadata: 0x000ECBFC
+ public const string MonoCompany = "MONO development team"; // Metadata: 0x000ECC07
+ public const string MonoProduct = "MONO Common language infrastructure"; // Metadata: 0x000ECC20
+ public const string MonoCopyright = "(c) various MONO Authors"; // Metadata: 0x000ECC47
+ public const string FxVersion = "2.0.0.0"; // Metadata: 0x000ECC63
+ public const string VsVersion = "8.0.0.0"; // Metadata: 0x000ECC6E
+ public const string FxFileVersion = "2.0.50727.1433"; // Metadata: 0x000ECC79
+ public const string VsFileVersion = "8.0.50727.1433"; // Metadata: 0x000ECC8B
+ public const string AssemblyI18N = "I18N, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECC9D
+ public const string AssemblyMicrosoft_VisualStudio = "Microsoft.VisualStudio, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECCE8
+ public const string AssemblyMicrosoft_VisualStudio_Web = "Microsoft.VisualStudio.Web, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECD45
+ public const string AssemblyMicrosoft_VSDesigner = "Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECDA6
+ public const string AssemblyMono_Http = "Mono.Http, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECE01
+ public const string AssemblyMono_Posix = "Mono.Posix, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECE51
+ public const string AssemblyMono_Security = "Mono.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECEA2
+ public const string AssemblyMono_Messaging_RabbitMQ = "Mono.Messaging.RabbitMQ, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECEF6
+ public const string AssemblyCorlib = "mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ECF54
+ public const string AssemblySystem = "System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ECFA3
+ public const string AssemblySystem_Data = "System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ECFF0
+ public const string AssemblySystem_Design = "System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED042
+ public const string AssemblySystem_DirectoryServices = "System.DirectoryServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED096
+ public const string AssemblySystem_Drawing = "System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED0F5
+ public const string AssemblySystem_Drawing_Design = "System.Drawing.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED14A
+ public const string AssemblySystem_Messaging = "System.Messaging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED1A6
+ public const string AssemblySystem_Security = "System.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED1FD
+ public const string AssemblySystem_ServiceProcess = "System.ServiceProcess, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED253
+ public const string AssemblySystem_Web = "System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED2AF
+ public const string AssemblySystem_Windows_Forms = "System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED300
+ public const string AssemblySystem_Core = "System.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED35B
+}
+
+internal sealed class Locale // TypeDefIndex: 101
+{
+ // Constructors
+ private Locale() {} // 0x00000001800E2000-0x00000001800E2000
+
+ // Methods
+ public static string GetText(string msg) => default; // 0x0000000180123590-0x0000000180123590
+ public static string GetText(string fmt, params /* 0x0000000180009C10-0x0000000180009C10 */ object[] args) => default; // 0x00000001802C64F0-0x00000001802C6560
+}
+
+namespace Il2CppTests.TestSources
+{
+ internal interface IControl // TypeDefIndex: 1811
+ {
+ // Methods
+ void Paint();
+ }
+
+ internal interface ISurface // TypeDefIndex: 1812
+ {
+ // Methods
+ void Paint();
+ }
+
+ internal class Test : IControl, ISurface // TypeDefIndex: 1813
+ {
+ // Constructors
+ public Test() {} // 0x00000001800E2000-0x00000001800E2000
+
+ // Methods
+ void IControl.Paint() {} // 0x00000001800EA7B0-0x00000001800EA7B0
+ void ISurface.Paint() {} // 0x00000001800EA7B0-0x00000001800EA7B0
+ }
+
+ internal interface ILeft // TypeDefIndex: 1814
+ {
+ // Properties
+ int P { get; }
+ }
+
+ internal interface IRight // TypeDefIndex: 1815
+ {
+ // Methods
+ int P();
+ }
+
+ internal class Middle : ILeft, IRight // TypeDefIndex: 1816
+ {
+ // Properties
+ int ILeft.P { get; } // 0x00000001800EA8C0-0x00000001800EA8C0
+
+ // Constructors
+ public Middle() {} // 0x00000001800E2000-0x00000001800E2000
+
+ // Methods
+ int P() => default; // 0x00000001800EA8C0-0x00000001800EA8C0
+ }
+
+ internal interface IGeneric // TypeDefIndex: 1817
+ {
+ // Methods
+ void GenericMethod(T t);
+ }
+
+ internal class ImplementsGenericInterface : IGeneric> // TypeDefIndex: 1818
+ {
+ // Constructors
+ public ImplementsGenericInterface() {} // 0x00000001800E2000-0x00000001800E2000
+
+ // Methods
+ void IGeneric>.GenericMethod(KeyValuePair t) {} // 0x00000001800EA7B0-0x00000001800EA7B0
+ }
+}
diff --git a/Il2CppTests/TestExpectedResults/GameAssembly-ExplicitInterfaces-x86.cs b/Il2CppTests/TestExpectedResults/GameAssembly-ExplicitInterfaces-x86.cs
new file mode 100644
index 0000000..1471fe6
--- /dev/null
+++ b/Il2CppTests/TestExpectedResults/GameAssembly-ExplicitInterfaces-x86.cs
@@ -0,0 +1,147 @@
+/*
+ * 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 - 0-1809
+// [assembly: AssemblyCompany] // 0x1000F760-0x1000DC90
+// [assembly: AssemblyCopyright] // 0x1000F760-0x1000DC90
+// [assembly: AssemblyDefaultAlias] // 0x1000F760-0x1000DC90
+// [assembly: AssemblyDelaySign] // 0x1000F760-0x1000DC90
+// [assembly: AssemblyDescription] // 0x1000F760-0x1000DC90
+// [assembly: AssemblyFileVersion] // 0x1000F760-0x1000DC90
+// [assembly: AssemblyInformationalVersion] // 0x1000F760-0x1000DC90
+// [assembly: AssemblyKeyFile] // 0x1000F760-0x1000DC90
+// [assembly: AssemblyProduct] // 0x1000F760-0x1000DC90
+// [assembly: AssemblyTitle] // 0x1000F760-0x1000DC90
+// [assembly: CLSCompliant] // 0x1000F760-0x1000DC90
+// [assembly: CompilationRelaxations] // 0x1000F760-0x1000DC90
+// [assembly: ComVisible] // 0x1000F760-0x1000DC90
+// [assembly: Debuggable] // 0x1000F760-0x1000DC90
+// [assembly: DefaultDependency] // 0x1000F760-0x1000DC90
+// [assembly: Guid] // 0x1000F760-0x1000DC90
+// [assembly: NeutralResourcesLanguage] // 0x1000F760-0x1000DC90
+[assembly: RuntimeCompatibility] // 0x1000F760-0x1000DC90
+// [assembly: SatelliteContractVersion] // 0x1000F760-0x1000DC90
+[assembly: StringFreezing] // 0x1000F760-0x1000DC90
+// [assembly: TypeLibVersion] // 0x1000F760-0x1000DC90
+
+// Image 1: ExplicitInterfaces.dll - 1810-1818
+// [assembly: CompilationRelaxations] // 0x1000DC90-0x1000DC90
+// [assembly: Debuggable] // 0x1000DC90-0x1000DC90
+[assembly: RuntimeCompatibility] // 0x1000DC90-0x1000DC90
+
+internal static class Consts // TypeDefIndex: 100
+{
+ // Fields
+ public const string MonoVersion = "2.6.5.0"; // Metadata: 0x000ECBFC
+ public const string MonoCompany = "MONO development team"; // Metadata: 0x000ECC07
+ public const string MonoProduct = "MONO Common language infrastructure"; // Metadata: 0x000ECC20
+ public const string MonoCopyright = "(c) various MONO Authors"; // Metadata: 0x000ECC47
+ public const string FxVersion = "2.0.0.0"; // Metadata: 0x000ECC63
+ public const string VsVersion = "8.0.0.0"; // Metadata: 0x000ECC6E
+ public const string FxFileVersion = "2.0.50727.1433"; // Metadata: 0x000ECC79
+ public const string VsFileVersion = "8.0.50727.1433"; // Metadata: 0x000ECC8B
+ public const string AssemblyI18N = "I18N, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECC9D
+ public const string AssemblyMicrosoft_VisualStudio = "Microsoft.VisualStudio, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECCE8
+ public const string AssemblyMicrosoft_VisualStudio_Web = "Microsoft.VisualStudio.Web, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECD45
+ public const string AssemblyMicrosoft_VSDesigner = "Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECDA6
+ public const string AssemblyMono_Http = "Mono.Http, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECE01
+ public const string AssemblyMono_Posix = "Mono.Posix, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECE51
+ public const string AssemblyMono_Security = "Mono.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECEA2
+ public const string AssemblyMono_Messaging_RabbitMQ = "Mono.Messaging.RabbitMQ, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECEF6
+ public const string AssemblyCorlib = "mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ECF54
+ public const string AssemblySystem = "System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ECFA3
+ public const string AssemblySystem_Data = "System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ECFF0
+ public const string AssemblySystem_Design = "System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED042
+ public const string AssemblySystem_DirectoryServices = "System.DirectoryServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED096
+ public const string AssemblySystem_Drawing = "System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED0F5
+ public const string AssemblySystem_Drawing_Design = "System.Drawing.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED14A
+ public const string AssemblySystem_Messaging = "System.Messaging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED1A6
+ public const string AssemblySystem_Security = "System.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED1FD
+ public const string AssemblySystem_ServiceProcess = "System.ServiceProcess, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED253
+ public const string AssemblySystem_Web = "System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED2AF
+ public const string AssemblySystem_Windows_Forms = "System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED300
+ public const string AssemblySystem_Core = "System.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED35B
+}
+
+internal sealed class Locale // TypeDefIndex: 101
+{
+ // Constructors
+ private Locale() {} // 0x100BF000-0x100BF000
+
+ // Methods
+ public static string GetText(string msg) => default; // 0x100F7810-0x100F7810
+ public static string GetText(string fmt, params /* 0x1000A660-0x1000A660 */ object[] args) => default; // 0x10261460-0x102614B0
+}
+
+namespace Il2CppTests.TestSources
+{
+ internal interface IControl // TypeDefIndex: 1811
+ {
+ // Methods
+ void Paint();
+ }
+
+ internal interface ISurface // TypeDefIndex: 1812
+ {
+ // Methods
+ void Paint();
+ }
+
+ internal class Test : IControl, ISurface // TypeDefIndex: 1813
+ {
+ // Constructors
+ public Test() {} // 0x100BF000-0x100BF000
+
+ // Methods
+ void IControl.Paint() {} // 0x100C5530-0x100C5530
+ void ISurface.Paint() {} // 0x100C5530-0x100C5530
+ }
+
+ internal interface ILeft // TypeDefIndex: 1814
+ {
+ // Properties
+ int P { get; }
+ }
+
+ internal interface IRight // TypeDefIndex: 1815
+ {
+ // Methods
+ int P();
+ }
+
+ internal class Middle : ILeft, IRight // TypeDefIndex: 1816
+ {
+ // Properties
+ int ILeft.P { get; } // 0x100C5600-0x100C5600
+
+ // Constructors
+ public Middle() {} // 0x100BF000-0x100BF000
+
+ // Methods
+ int P() => default; // 0x100C5600-0x100C5600
+ }
+
+ internal interface IGeneric // TypeDefIndex: 1817
+ {
+ // Methods
+ void GenericMethod(T t);
+ }
+
+ internal class ImplementsGenericInterface : IGeneric> // TypeDefIndex: 1818
+ {
+ // Constructors
+ public ImplementsGenericInterface() {} // 0x100BF000-0x100BF000
+
+ // Methods
+ void IGeneric>.GenericMethod(KeyValuePair t) {} // 0x100C5530-0x100C5530
+ }
+}
diff --git a/Il2CppTests/TestSources/ExplicitInterfaces.cs b/Il2CppTests/TestSources/ExplicitInterfaces.cs
new file mode 100644
index 0000000..f298a63
--- /dev/null
+++ b/Il2CppTests/TestSources/ExplicitInterfaces.cs
@@ -0,0 +1,59 @@
+/*
+ Copyright 2017-2019 Katy Coe - http://www.hearthcode.org - http://www.djkaty.com
+
+ All rights reserved.
+*/
+
+using System.Collections.Generic;
+
+#pragma warning disable CS0169
+namespace Il2CppTests.TestSources
+{
+ // See: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/interfaces/explicit-interface-implementation
+
+ interface IControl
+ {
+ void Paint();
+ }
+
+ interface ISurface
+ {
+ void Paint();
+ }
+
+ internal class Test : IControl, ISurface
+ {
+ // No access modifiers on explicit interface implementation
+ void IControl.Paint() {}
+ void ISurface.Paint() {}
+ }
+
+ interface ILeft
+ {
+ int P { get; }
+ }
+
+ interface IRight
+ {
+ int P();
+ }
+
+ internal class Middle : ILeft, IRight
+ {
+ // One or the other has to be explicitly implemented to resolve naming conflicts
+ public int P() => default;
+ int ILeft.P => default;
+ }
+
+ // Generic implementation
+ interface IGeneric
+ {
+ void GenericMethod(T t);
+ }
+
+ internal class ImplementsGenericInterface : IGeneric>
+ {
+ void IGeneric>.GenericMethod(KeyValuePair t) {}
+ }
+}
+#pragma warning restore CS0169