diff --git a/ICSharpCode.Decompiler/CSharp/ExpressionBuilder.cs b/ICSharpCode.Decompiler/CSharp/ExpressionBuilder.cs
index f893f37cf..e739a5075 100644
--- a/ICSharpCode.Decompiler/CSharp/ExpressionBuilder.cs
+++ b/ICSharpCode.Decompiler/CSharp/ExpressionBuilder.cs
@@ -1414,6 +1414,8 @@ namespace ICSharpCode.Decompiler.CSharp
}
}
+ readonly static ArraySpecifier[] NoSpecifiers = new ArraySpecifier[0];
+
TranslatedExpression TranslateArrayInitializer(Block block)
{
var stloc = block.Instructions.FirstOrDefault() as StLoc;
@@ -1457,19 +1459,27 @@ namespace ICSharpCode.Decompiler.CSharp
}
}
ArraySpecifier[] additionalSpecifiers;
- var typeExpression = ConvertType(type);
- if (typeExpression is ComposedType) {
- additionalSpecifiers = ((ComposedType)typeExpression).ArraySpecifiers.SelectArray(a => (ArraySpecifier)a.Clone());
- typeExpression = ((ComposedType)typeExpression).BaseType.Clone();
+ AstType typeExpression;
+ bool isAnonymouslyTyped = type.ContainsAnonymousType();
+ if (isAnonymouslyTyped) {
+ typeExpression = null;
+ additionalSpecifiers = new[] { new ArraySpecifier() };
} else {
- additionalSpecifiers = new ArraySpecifier[0];
+ typeExpression = ConvertType(type);
+ if (typeExpression is ComposedType) {
+ additionalSpecifiers = ((ComposedType)typeExpression).ArraySpecifiers.SelectArray(a => (ArraySpecifier)a.Clone());
+ typeExpression = ((ComposedType)typeExpression).BaseType.Clone();
+ } else {
+ additionalSpecifiers = NoSpecifiers;
+ }
}
var expr = new ArrayCreateExpression {
Type = typeExpression,
Initializer = root
};
expr.AdditionalArraySpecifiers.AddRange(additionalSpecifiers);
- expr.Arguments.AddRange(newArr.Indices.Select(i => Translate(i).Expression));
+ if (!isAnonymouslyTyped)
+ expr.Arguments.AddRange(newArr.Indices.Select(i => Translate(i).Expression));
return expr.WithILInstruction(block)
.WithRR(new ArrayCreateResolveResult(new ArrayType(compilation, type, dimensions), newArr.Indices.Select(i => Translate(i).ResolveResult).ToArray(), elementResolveResults));
}
diff --git a/ICSharpCode.Decompiler/Tests/ICSharpCode.Decompiler.Tests.csproj b/ICSharpCode.Decompiler/Tests/ICSharpCode.Decompiler.Tests.csproj
index f7f8bc955..c9e5cd4ff 100644
--- a/ICSharpCode.Decompiler/Tests/ICSharpCode.Decompiler.Tests.csproj
+++ b/ICSharpCode.Decompiler/Tests/ICSharpCode.Decompiler.Tests.csproj
@@ -127,6 +127,7 @@
+
diff --git a/ICSharpCode.Decompiler/Tests/PrettyTestRunner.cs b/ICSharpCode.Decompiler/Tests/PrettyTestRunner.cs
index fe0a85658..0720476fd 100644
--- a/ICSharpCode.Decompiler/Tests/PrettyTestRunner.cs
+++ b/ICSharpCode.Decompiler/Tests/PrettyTestRunner.cs
@@ -91,6 +91,12 @@ namespace ICSharpCode.Decompiler.Tests
Run(cscOptions: cscOptions);
}
+ [Test]
+ public void AnonymousTypes([Values(CompilerOptions.None, CompilerOptions.Optimize)] CompilerOptions cscOptions)
+ {
+ Run(cscOptions: cscOptions);
+ }
+
[Test, Ignore("Not implemented")]
public void Async([ValueSource("defaultOptions")] CompilerOptions cscOptions)
{
diff --git a/ICSharpCode.Decompiler/Tests/TestCases/Pretty/AnonymousTypes.cs b/ICSharpCode.Decompiler/Tests/TestCases/Pretty/AnonymousTypes.cs
new file mode 100644
index 000000000..4c4d397e5
--- /dev/null
+++ b/ICSharpCode.Decompiler/Tests/TestCases/Pretty/AnonymousTypes.cs
@@ -0,0 +1,85 @@
+// Copyright (c) AlphaSierraPapa for the SharpDevelop Team
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy of this
+// software and associated documentation files (the "Software"), to deal in the Software
+// without restriction, including without limitation the rights to use, copy, modify, merge,
+// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
+// to whom the Software is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in all copies or
+// substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
+// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+// DEALINGS IN THE SOFTWARE.
+
+using System;
+
+namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty
+{
+ public class AnonymousTypes
+ {
+ private void SimpleTypes()
+ {
+ var V_0 = new {
+ };
+ var V_1 = new {
+ X = 5
+ };
+ var V_2 = new {
+ X = 5,
+ Y = 10
+ };
+
+ Console.WriteLine((object)V_0);
+ Console.WriteLine(V_1.X);
+ Console.WriteLine(V_2.Y + V_2.X);
+ }
+
+ private void SimpleArray()
+ {
+ var V_0 = new[] {
+ new {
+ X = 5,
+ Y = 2,
+ Z = -1
+ },
+ new {
+ X = 3,
+ Y = 6,
+ Z = -6
+ }
+ };
+
+ Console.WriteLine(V_0[0].X);
+ Console.WriteLine(V_0[1].X);
+ }
+
+ private void JaggedArray()
+ {
+ var V_0 = new[] {
+ new {
+ X = 5,
+ Y = 2,
+ Z = -1
+ },
+ new {
+ X = 3,
+ Y = 6,
+ Z = -6
+ }
+ };
+ var V_1 = new[] {
+ V_0,
+ V_0
+ };
+
+ Console.WriteLine(V_0[0].X);
+ Console.WriteLine(V_0[1].X);
+ Console.WriteLine(V_1.Length);
+ }
+ }
+}
diff --git a/ICSharpCode.Decompiler/Tests/TestCases/Pretty/AnonymousTypes.il b/ICSharpCode.Decompiler/Tests/TestCases/Pretty/AnonymousTypes.il
new file mode 100644
index 000000000..6da1db0e0
--- /dev/null
+++ b/ICSharpCode.Decompiler/Tests/TestCases/Pretty/AnonymousTypes.il
@@ -0,0 +1,842 @@
+
+// Microsoft (R) .NET Framework IL Disassembler. Version 4.0.30319.17929
+// Copyright (c) Microsoft Corporation. All rights reserved.
+
+
+
+// Metadata version: v4.0.30319
+.assembly extern mscorlib
+{
+ .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
+ .ver 4:0:0:0
+}
+.assembly tn2texe4
+{
+ .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(int32) = ( 01 00 08 00 00 00 00 00 )
+ .custom instance void [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() = ( 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78 // ....T..WrapNonEx
+ 63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 ) // ceptionThrows.
+ .permissionset reqmin
+ = {[mscorlib]System.Security.Permissions.SecurityPermissionAttribute = {property bool 'SkipVerification' = bool(true)}}
+ .hash algorithm 0x00008004
+ .ver 0:0:0:0
+}
+.module tn2texe4.dll
+// MVID: {D4BB5234-2960-41DF-8B02-A927E4CEA1D0}
+.custom instance void [mscorlib]System.Security.UnverifiableCodeAttribute::.ctor() = ( 01 00 00 00 )
+.imagebase 0x10000000
+.file alignment 0x00000200
+.stackreserve 0x00100000
+.subsystem 0x0003 // WINDOWS_CUI
+.corflags 0x00000001 // ILONLY
+// Image base: 0x00860000
+
+
+// =============== CLASS MEMBERS DECLARATION ===================
+
+.class public auto ansi beforefieldinit ICSharpCode.Decompiler.Tests.TestCases.Pretty.AnonymousTypes
+ extends [mscorlib]System.Object
+{
+ .method private hidebysig instance void
+ SimpleTypes() cil managed
+ {
+ // Code size 62 (0x3e)
+ .maxstack 2
+ .locals init (class '<>f__AnonymousType0' V_0,
+ class '<>f__AnonymousType1`1' V_1,
+ class '<>f__AnonymousType2`2' V_2)
+ IL_0000: nop
+ IL_0001: newobj instance void '<>f__AnonymousType0'::.ctor()
+ IL_0006: stloc.0
+ IL_0007: ldc.i4.5
+ IL_0008: newobj instance void class '<>f__AnonymousType1`1'::.ctor(!0)
+ IL_000d: stloc.1
+ IL_000e: ldc.i4.5
+ IL_000f: ldc.i4.s 10
+ IL_0011: newobj instance void class '<>f__AnonymousType2`2'::.ctor(!0,
+ !1)
+ IL_0016: stloc.2
+ IL_0017: ldloc.0
+ IL_0018: call void [mscorlib]System.Console::WriteLine(object)
+ IL_001d: nop
+ IL_001e: ldloc.1
+ IL_001f: callvirt instance !0 class '<>f__AnonymousType1`1'::get_X()
+ IL_0024: call void [mscorlib]System.Console::WriteLine(int32)
+ IL_0029: nop
+ IL_002a: ldloc.2
+ IL_002b: callvirt instance !1 class '<>f__AnonymousType2`2'::get_Y()
+ IL_0030: ldloc.2
+ IL_0031: callvirt instance !0 class '<>f__AnonymousType2`2'::get_X()
+ IL_0036: add
+ IL_0037: call void [mscorlib]System.Console::WriteLine(int32)
+ IL_003c: nop
+ IL_003d: ret
+ } // end of method AnonymousTypes::SimpleTypes
+
+ .method private hidebysig instance void
+ SimpleArray() cil managed
+ {
+ // Code size 62 (0x3e)
+ .maxstack 5
+ .locals init (class '<>f__AnonymousType3`3'[] V_0,
+ class '<>f__AnonymousType3`3'[] V_1)
+ IL_0000: nop
+ IL_0001: ldc.i4.2
+ IL_0002: newarr class '<>f__AnonymousType3`3'
+ IL_0007: stloc.1
+ IL_0008: ldloc.1
+ IL_0009: ldc.i4.0
+ IL_000a: ldc.i4.5
+ IL_000b: ldc.i4.2
+ IL_000c: ldc.i4.m1
+ IL_000d: newobj instance void class '<>f__AnonymousType3`3'::.ctor(!0,
+ !1,
+ !2)
+ IL_0012: stelem.ref
+ IL_0013: ldloc.1
+ IL_0014: ldc.i4.1
+ IL_0015: ldc.i4.3
+ IL_0016: ldc.i4.6
+ IL_0017: ldc.i4.s -6
+ IL_0019: newobj instance void class '<>f__AnonymousType3`3'::.ctor(!0,
+ !1,
+ !2)
+ IL_001e: stelem.ref
+ IL_001f: ldloc.1
+ IL_0020: stloc.0
+ IL_0021: ldloc.0
+ IL_0022: ldc.i4.0
+ IL_0023: ldelem.ref
+ IL_0024: callvirt instance !0 class '<>f__AnonymousType3`3'::get_X()
+ IL_0029: call void [mscorlib]System.Console::WriteLine(int32)
+ IL_002e: nop
+ IL_002f: ldloc.0
+ IL_0030: ldc.i4.1
+ IL_0031: ldelem.ref
+ IL_0032: callvirt instance !0 class '<>f__AnonymousType3`3'::get_X()
+ IL_0037: call void [mscorlib]System.Console::WriteLine(int32)
+ IL_003c: nop
+ IL_003d: ret
+ } // end of method AnonymousTypes::SimpleArray
+
+ .method private hidebysig instance void
+ JaggedArray() cil managed
+ {
+ // Code size 88 (0x58)
+ .maxstack 5
+ .locals init (class '<>f__AnonymousType3`3'[] V_0,
+ class '<>f__AnonymousType3`3'[][] V_1,
+ class '<>f__AnonymousType3`3'[] V_2,
+ class '<>f__AnonymousType3`3'[][] V_3)
+ IL_0000: nop
+ IL_0001: ldc.i4.2
+ IL_0002: newarr class '<>f__AnonymousType3`3'
+ IL_0007: stloc.2
+ IL_0008: ldloc.2
+ IL_0009: ldc.i4.0
+ IL_000a: ldc.i4.5
+ IL_000b: ldc.i4.2
+ IL_000c: ldc.i4.m1
+ IL_000d: newobj instance void class '<>f__AnonymousType3`3'::.ctor(!0,
+ !1,
+ !2)
+ IL_0012: stelem.ref
+ IL_0013: ldloc.2
+ IL_0014: ldc.i4.1
+ IL_0015: ldc.i4.3
+ IL_0016: ldc.i4.6
+ IL_0017: ldc.i4.s -6
+ IL_0019: newobj instance void class '<>f__AnonymousType3`3'::.ctor(!0,
+ !1,
+ !2)
+ IL_001e: stelem.ref
+ IL_001f: ldloc.2
+ IL_0020: stloc.0
+ IL_0021: ldc.i4.2
+ IL_0022: newarr class '<>f__AnonymousType3`3'[]
+ IL_0027: stloc.3
+ IL_0028: ldloc.3
+ IL_0029: ldc.i4.0
+ IL_002a: ldloc.0
+ IL_002b: stelem.ref
+ IL_002c: ldloc.3
+ IL_002d: ldc.i4.1
+ IL_002e: ldloc.0
+ IL_002f: stelem.ref
+ IL_0030: ldloc.3
+ IL_0031: stloc.1
+ IL_0032: ldloc.0
+ IL_0033: ldc.i4.0
+ IL_0034: ldelem.ref
+ IL_0035: callvirt instance !0 class '<>f__AnonymousType3`3'::get_X()
+ IL_003a: call void [mscorlib]System.Console::WriteLine(int32)
+ IL_003f: nop
+ IL_0040: ldloc.0
+ IL_0041: ldc.i4.1
+ IL_0042: ldelem.ref
+ IL_0043: callvirt instance !0 class '<>f__AnonymousType3`3'::get_X()
+ IL_0048: call void [mscorlib]System.Console::WriteLine(int32)
+ IL_004d: nop
+ IL_004e: ldloc.1
+ IL_004f: ldlen
+ IL_0050: conv.i4
+ IL_0051: call void [mscorlib]System.Console::WriteLine(int32)
+ IL_0056: nop
+ IL_0057: ret
+ } // end of method AnonymousTypes::JaggedArray
+
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Object::.ctor()
+ IL_0006: ret
+ } // end of method AnonymousTypes::.ctor
+
+} // end of class ICSharpCode.Decompiler.Tests.TestCases.Pretty.AnonymousTypes
+
+.class private auto ansi sealed beforefieldinit '<>f__AnonymousType0'
+ extends [mscorlib]System.Object
+{
+ .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 )
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 )
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Object::.ctor()
+ IL_0006: ret
+ } // end of method '<>f__AnonymousType0'::.ctor
+
+ .method public hidebysig virtual instance string
+ ToString() cil managed
+ {
+ .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 )
+ // Code size 29 (0x1d)
+ .maxstack 2
+ .locals init (class [mscorlib]System.Text.StringBuilder V_0,
+ string V_1)
+ IL_0000: newobj instance void [mscorlib]System.Text.StringBuilder::.ctor()
+ IL_0005: stloc.0
+ IL_0006: ldloc.0
+ IL_0007: ldstr "{ }"
+ IL_000c: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(string)
+ IL_0011: pop
+ IL_0012: ldloc.0
+ IL_0013: callvirt instance string [mscorlib]System.Object::ToString()
+ IL_0018: stloc.1
+ IL_0019: br.s IL_001b
+
+ IL_001b: ldloc.1
+ IL_001c: ret
+ } // end of method '<>f__AnonymousType0'::ToString
+
+ .method public hidebysig virtual instance bool
+ Equals(object 'value') cil managed
+ {
+ .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 )
+ // Code size 19 (0x13)
+ .maxstack 2
+ .locals init (class '<>f__AnonymousType0' V_0,
+ bool V_1)
+ IL_0000: ldarg.1
+ IL_0001: isinst '<>f__AnonymousType0'
+ IL_0006: stloc.0
+ IL_0007: ldloc.0
+ IL_0008: ldnull
+ IL_0009: ceq
+ IL_000b: ldc.i4.0
+ IL_000c: ceq
+ IL_000e: stloc.1
+ IL_000f: br.s IL_0011
+
+ IL_0011: ldloc.1
+ IL_0012: ret
+ } // end of method '<>f__AnonymousType0'::Equals
+
+ .method public hidebysig virtual instance int32
+ GetHashCode() cil managed
+ {
+ .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 )
+ // Code size 8 (0x8)
+ .maxstack 1
+ .locals init (int32 V_0,
+ int32 V_1)
+ IL_0000: ldc.i4.0
+ IL_0001: stloc.0
+ IL_0002: ldloc.0
+ IL_0003: stloc.1
+ IL_0004: br.s IL_0006
+
+ IL_0006: ldloc.1
+ IL_0007: ret
+ } // end of method '<>f__AnonymousType0'::GetHashCode
+
+} // end of class '<>f__AnonymousType0'
+
+.class private auto ansi sealed beforefieldinit '<>f__AnonymousType1`1'<'j__TPar'>
+ extends [mscorlib]System.Object
+{
+ .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 )
+ .field private initonly !'j__TPar' 'i__Field'
+ .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 )
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor(!'j__TPar' X) cil managed
+ {
+ .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 )
+ // Code size 14 (0xe)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Object::.ctor()
+ IL_0006: ldarg.0
+ IL_0007: ldarg.1
+ IL_0008: stfld !0 class '<>f__AnonymousType1`1'j__TPar'>::'i__Field'
+ IL_000d: ret
+ } // end of method '<>f__AnonymousType1`1'::.ctor
+
+ .method public hidebysig specialname instance !'j__TPar'
+ get_X() cil managed
+ {
+ // Code size 11 (0xb)
+ .maxstack 1
+ .locals init (!'j__TPar' V_0)
+ IL_0000: ldarg.0
+ IL_0001: ldfld !0 class '<>f__AnonymousType1`1'j__TPar'>::'i__Field'
+ IL_0006: stloc.0
+ IL_0007: br.s IL_0009
+
+ IL_0009: ldloc.0
+ IL_000a: ret
+ } // end of method '<>f__AnonymousType1`1'::get_X
+
+ .method public hidebysig virtual instance string
+ ToString() cil managed
+ {
+ .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 )
+ // Code size 59 (0x3b)
+ .maxstack 2
+ .locals init (class [mscorlib]System.Text.StringBuilder V_0,
+ string V_1)
+ IL_0000: newobj instance void [mscorlib]System.Text.StringBuilder::.ctor()
+ IL_0005: stloc.0
+ IL_0006: ldloc.0
+ IL_0007: ldstr "{ X = "
+ IL_000c: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(string)
+ IL_0011: pop
+ IL_0012: ldloc.0
+ IL_0013: ldarg.0
+ IL_0014: ldfld !0 class '<>f__AnonymousType1`1'j__TPar'>::'i__Field'
+ IL_0019: box !'j__TPar'
+ IL_001e: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(object)
+ IL_0023: pop
+ IL_0024: ldloc.0
+ IL_0025: ldstr " }"
+ IL_002a: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(string)
+ IL_002f: pop
+ IL_0030: ldloc.0
+ IL_0031: callvirt instance string [mscorlib]System.Object::ToString()
+ IL_0036: stloc.1
+ IL_0037: br.s IL_0039
+
+ IL_0039: ldloc.1
+ IL_003a: ret
+ } // end of method '<>f__AnonymousType1`1'::ToString
+
+ .method public hidebysig virtual instance bool
+ Equals(object 'value') cil managed
+ {
+ .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 )
+ // Code size 41 (0x29)
+ .maxstack 3
+ .locals init (class '<>f__AnonymousType1`1'j__TPar'> V_0,
+ bool V_1)
+ IL_0000: ldarg.1
+ IL_0001: isinst class '<>f__AnonymousType1`1'j__TPar'>
+ IL_0006: stloc.0
+ IL_0007: ldloc.0
+ IL_0008: brfalse.s IL_0022
+
+ IL_000a: call class [mscorlib]System.Collections.Generic.EqualityComparer`1 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::get_Default()
+ IL_000f: ldarg.0
+ IL_0010: ldfld !0 class '<>f__AnonymousType1`1'j__TPar'>::'i__Field'
+ IL_0015: ldloc.0
+ IL_0016: ldfld !0 class '<>f__AnonymousType1`1'j__TPar'>::'i__Field'
+ IL_001b: callvirt instance bool class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::Equals(!0,
+ !0)
+ IL_0020: br.s IL_0023
+
+ IL_0022: ldc.i4.0
+ IL_0023: nop
+ IL_0024: stloc.1
+ IL_0025: br.s IL_0027
+
+ IL_0027: ldloc.1
+ IL_0028: ret
+ } // end of method '<>f__AnonymousType1`1'::Equals
+
+ .method public hidebysig virtual instance int32
+ GetHashCode() cil managed
+ {
+ .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 )
+ // Code size 37 (0x25)
+ .maxstack 3
+ .locals init (int32 V_0,
+ int32 V_1)
+ IL_0000: ldc.i4 0x12721cd8
+ IL_0005: stloc.0
+ IL_0006: ldc.i4 0xa5555529
+ IL_000b: ldloc.0
+ IL_000c: mul
+ IL_000d: call class [mscorlib]System.Collections.Generic.EqualityComparer`1 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::get_Default()
+ IL_0012: ldarg.0
+ IL_0013: ldfld !0 class '<>f__AnonymousType1`1'j__TPar'>::'i__Field'
+ IL_0018: callvirt instance int32 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::GetHashCode(!0)
+ IL_001d: add
+ IL_001e: stloc.0
+ IL_001f: ldloc.0
+ IL_0020: stloc.1
+ IL_0021: br.s IL_0023
+
+ IL_0023: ldloc.1
+ IL_0024: ret
+ } // end of method '<>f__AnonymousType1`1'::GetHashCode
+
+ .property instance !'j__TPar' X()
+ {
+ .get instance !'j__TPar' '<>f__AnonymousType1`1'::get_X()
+ } // end of property '<>f__AnonymousType1`1'::X
+} // end of class '<>f__AnonymousType1`1'
+
+.class private auto ansi sealed beforefieldinit '<>f__AnonymousType2`2'<'j__TPar','j__TPar'>
+ extends [mscorlib]System.Object
+{
+ .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 )
+ .field private initonly !'j__TPar' 'i__Field'
+ .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 )
+ .field private initonly !'j__TPar' 'i__Field'
+ .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 )
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor(!'j__TPar' X,
+ !'j__TPar' Y) cil managed
+ {
+ .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 )
+ // Code size 21 (0x15)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Object::.ctor()
+ IL_0006: ldarg.0
+ IL_0007: ldarg.1
+ IL_0008: stfld !0 class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'>::'i__Field'
+ IL_000d: ldarg.0
+ IL_000e: ldarg.2
+ IL_000f: stfld !1 class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'>::'i__Field'
+ IL_0014: ret
+ } // end of method '<>f__AnonymousType2`2'::.ctor
+
+ .method public hidebysig specialname instance !'j__TPar'
+ get_X() cil managed
+ {
+ // Code size 11 (0xb)
+ .maxstack 1
+ .locals init (!'j__TPar' V_0)
+ IL_0000: ldarg.0
+ IL_0001: ldfld !0 class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'>::'i__Field'
+ IL_0006: stloc.0
+ IL_0007: br.s IL_0009
+
+ IL_0009: ldloc.0
+ IL_000a: ret
+ } // end of method '<>f__AnonymousType2`2'::get_X
+
+ .method public hidebysig specialname instance !'j__TPar'
+ get_Y() cil managed
+ {
+ // Code size 11 (0xb)
+ .maxstack 1
+ .locals init (!'j__TPar' V_0)
+ IL_0000: ldarg.0
+ IL_0001: ldfld !1 class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'>::'i__Field'
+ IL_0006: stloc.0
+ IL_0007: br.s IL_0009
+
+ IL_0009: ldloc.0
+ IL_000a: ret
+ } // end of method '<>f__AnonymousType2`2'::get_Y
+
+ .method public hidebysig virtual instance string
+ ToString() cil managed
+ {
+ .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 )
+ // Code size 89 (0x59)
+ .maxstack 2
+ .locals init (class [mscorlib]System.Text.StringBuilder V_0,
+ string V_1)
+ IL_0000: newobj instance void [mscorlib]System.Text.StringBuilder::.ctor()
+ IL_0005: stloc.0
+ IL_0006: ldloc.0
+ IL_0007: ldstr "{ X = "
+ IL_000c: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(string)
+ IL_0011: pop
+ IL_0012: ldloc.0
+ IL_0013: ldarg.0
+ IL_0014: ldfld !0 class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'>::'i__Field'
+ IL_0019: box !'j__TPar'
+ IL_001e: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(object)
+ IL_0023: pop
+ IL_0024: ldloc.0
+ IL_0025: ldstr ", Y = "
+ IL_002a: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(string)
+ IL_002f: pop
+ IL_0030: ldloc.0
+ IL_0031: ldarg.0
+ IL_0032: ldfld !1 class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'>::'i__Field'
+ IL_0037: box !'j__TPar'
+ IL_003c: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(object)
+ IL_0041: pop
+ IL_0042: ldloc.0
+ IL_0043: ldstr " }"
+ IL_0048: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(string)
+ IL_004d: pop
+ IL_004e: ldloc.0
+ IL_004f: callvirt instance string [mscorlib]System.Object::ToString()
+ IL_0054: stloc.1
+ IL_0055: br.s IL_0057
+
+ IL_0057: ldloc.1
+ IL_0058: ret
+ } // end of method '<>f__AnonymousType2`2'::ToString
+
+ .method public hidebysig virtual instance bool
+ Equals(object 'value') cil managed
+ {
+ .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 )
+ // Code size 65 (0x41)
+ .maxstack 3
+ .locals init (class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'> V_0,
+ bool V_1)
+ IL_0000: ldarg.1
+ IL_0001: isinst class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'>
+ IL_0006: stloc.0
+ IL_0007: ldloc.0
+ IL_0008: brfalse.s IL_003a
+
+ IL_000a: call class [mscorlib]System.Collections.Generic.EqualityComparer`1 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::get_Default()
+ IL_000f: ldarg.0
+ IL_0010: ldfld !0 class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'>::'i__Field'
+ IL_0015: ldloc.0
+ IL_0016: ldfld !0 class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'>::'i__Field'
+ IL_001b: callvirt instance bool class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::Equals(!0,
+ !0)
+ IL_0020: brfalse.s IL_003a
+
+ IL_0022: call class [mscorlib]System.Collections.Generic.EqualityComparer`1 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::get_Default()
+ IL_0027: ldarg.0
+ IL_0028: ldfld !1 class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'>::'i__Field'
+ IL_002d: ldloc.0
+ IL_002e: ldfld !1 class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'>::'i__Field'
+ IL_0033: callvirt instance bool class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::Equals(!0,
+ !0)
+ IL_0038: br.s IL_003b
+
+ IL_003a: ldc.i4.0
+ IL_003b: nop
+ IL_003c: stloc.1
+ IL_003d: br.s IL_003f
+
+ IL_003f: ldloc.1
+ IL_0040: ret
+ } // end of method '<>f__AnonymousType2`2'::Equals
+
+ .method public hidebysig virtual instance int32
+ GetHashCode() cil managed
+ {
+ .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 )
+ // Code size 62 (0x3e)
+ .maxstack 3
+ .locals init (int32 V_0,
+ int32 V_1)
+ IL_0000: ldc.i4 0xc18f39dd
+ IL_0005: stloc.0
+ IL_0006: ldc.i4 0xa5555529
+ IL_000b: ldloc.0
+ IL_000c: mul
+ IL_000d: call class [mscorlib]System.Collections.Generic.EqualityComparer`1 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::get_Default()
+ IL_0012: ldarg.0
+ IL_0013: ldfld !0 class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'>::'i__Field'
+ IL_0018: callvirt instance int32 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::GetHashCode(!0)
+ IL_001d: add
+ IL_001e: stloc.0
+ IL_001f: ldc.i4 0xa5555529
+ IL_0024: ldloc.0
+ IL_0025: mul
+ IL_0026: call class [mscorlib]System.Collections.Generic.EqualityComparer`1 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::get_Default()
+ IL_002b: ldarg.0
+ IL_002c: ldfld !1 class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'>::'i__Field'
+ IL_0031: callvirt instance int32 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::GetHashCode(!0)
+ IL_0036: add
+ IL_0037: stloc.0
+ IL_0038: ldloc.0
+ IL_0039: stloc.1
+ IL_003a: br.s IL_003c
+
+ IL_003c: ldloc.1
+ IL_003d: ret
+ } // end of method '<>f__AnonymousType2`2'::GetHashCode
+
+ .property instance !'j__TPar' X()
+ {
+ .get instance !'j__TPar' '<>f__AnonymousType2`2'::get_X()
+ } // end of property '<>f__AnonymousType2`2'::X
+ .property instance !'j__TPar' Y()
+ {
+ .get instance !'j__TPar' '<>f__AnonymousType2`2'::get_Y()
+ } // end of property '<>f__AnonymousType2`2'::Y
+} // end of class '<>f__AnonymousType2`2'
+
+.class private auto ansi sealed beforefieldinit '<>f__AnonymousType3`3'<'j__TPar','j__TPar','j__TPar'>
+ extends [mscorlib]System.Object
+{
+ .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 )
+ .field private initonly !'j__TPar' 'i__Field'
+ .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 )
+ .field private initonly !'j__TPar' 'i__Field'
+ .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 )
+ .field private initonly !'j__TPar' 'i__Field'
+ .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 )
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor(!'j__TPar' X,
+ !'j__TPar' Y,
+ !'j__TPar' Z) cil managed
+ {
+ .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 )
+ // Code size 28 (0x1c)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Object::.ctor()
+ IL_0006: ldarg.0
+ IL_0007: ldarg.1
+ IL_0008: stfld !0 class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>::'i__Field'
+ IL_000d: ldarg.0
+ IL_000e: ldarg.2
+ IL_000f: stfld !1 class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>::'i__Field'
+ IL_0014: ldarg.0
+ IL_0015: ldarg.3
+ IL_0016: stfld !2 class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>::'i__Field'
+ IL_001b: ret
+ } // end of method '<>f__AnonymousType3`3'::.ctor
+
+ .method public hidebysig specialname instance !'j__TPar'
+ get_X() cil managed
+ {
+ // Code size 11 (0xb)
+ .maxstack 1
+ .locals init (!'j__TPar' V_0)
+ IL_0000: ldarg.0
+ IL_0001: ldfld !0 class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>::'i__Field'
+ IL_0006: stloc.0
+ IL_0007: br.s IL_0009
+
+ IL_0009: ldloc.0
+ IL_000a: ret
+ } // end of method '<>f__AnonymousType3`3'::get_X
+
+ .method public hidebysig specialname instance !'j__TPar'
+ get_Y() cil managed
+ {
+ // Code size 11 (0xb)
+ .maxstack 1
+ .locals init (!'j__TPar' V_0)
+ IL_0000: ldarg.0
+ IL_0001: ldfld !1 class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>::'i__Field'
+ IL_0006: stloc.0
+ IL_0007: br.s IL_0009
+
+ IL_0009: ldloc.0
+ IL_000a: ret
+ } // end of method '<>f__AnonymousType3`3'::get_Y
+
+ .method public hidebysig specialname instance !'j__TPar'
+ get_Z() cil managed
+ {
+ // Code size 11 (0xb)
+ .maxstack 1
+ .locals init (!'j__TPar' V_0)
+ IL_0000: ldarg.0
+ IL_0001: ldfld !2 class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>::'i__Field'
+ IL_0006: stloc.0
+ IL_0007: br.s IL_0009
+
+ IL_0009: ldloc.0
+ IL_000a: ret
+ } // end of method '<>f__AnonymousType3`3'::get_Z
+
+ .method public hidebysig virtual instance string
+ ToString() cil managed
+ {
+ .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 )
+ // Code size 119 (0x77)
+ .maxstack 2
+ .locals init (class [mscorlib]System.Text.StringBuilder V_0,
+ string V_1)
+ IL_0000: newobj instance void [mscorlib]System.Text.StringBuilder::.ctor()
+ IL_0005: stloc.0
+ IL_0006: ldloc.0
+ IL_0007: ldstr "{ X = "
+ IL_000c: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(string)
+ IL_0011: pop
+ IL_0012: ldloc.0
+ IL_0013: ldarg.0
+ IL_0014: ldfld !0 class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>::'i__Field'
+ IL_0019: box !'j__TPar'
+ IL_001e: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(object)
+ IL_0023: pop
+ IL_0024: ldloc.0
+ IL_0025: ldstr ", Y = "
+ IL_002a: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(string)
+ IL_002f: pop
+ IL_0030: ldloc.0
+ IL_0031: ldarg.0
+ IL_0032: ldfld !1 class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>::'i__Field'
+ IL_0037: box !'j__TPar'
+ IL_003c: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(object)
+ IL_0041: pop
+ IL_0042: ldloc.0
+ IL_0043: ldstr ", Z = "
+ IL_0048: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(string)
+ IL_004d: pop
+ IL_004e: ldloc.0
+ IL_004f: ldarg.0
+ IL_0050: ldfld !2 class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>::'i__Field'
+ IL_0055: box !'j__TPar'
+ IL_005a: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(object)
+ IL_005f: pop
+ IL_0060: ldloc.0
+ IL_0061: ldstr " }"
+ IL_0066: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(string)
+ IL_006b: pop
+ IL_006c: ldloc.0
+ IL_006d: callvirt instance string [mscorlib]System.Object::ToString()
+ IL_0072: stloc.1
+ IL_0073: br.s IL_0075
+
+ IL_0075: ldloc.1
+ IL_0076: ret
+ } // end of method '<>f__AnonymousType3`3'::ToString
+
+ .method public hidebysig virtual instance bool
+ Equals(object 'value') cil managed
+ {
+ .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 )
+ // Code size 89 (0x59)
+ .maxstack 3
+ .locals init (class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'> V_0,
+ bool V_1)
+ IL_0000: ldarg.1
+ IL_0001: isinst class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>
+ IL_0006: stloc.0
+ IL_0007: ldloc.0
+ IL_0008: brfalse.s IL_0052
+
+ IL_000a: call class [mscorlib]System.Collections.Generic.EqualityComparer`1 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::get_Default()
+ IL_000f: ldarg.0
+ IL_0010: ldfld !0 class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>::'i__Field'
+ IL_0015: ldloc.0
+ IL_0016: ldfld !0 class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>::'i__Field'
+ IL_001b: callvirt instance bool class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::Equals(!0,
+ !0)
+ IL_0020: brfalse.s IL_0052
+
+ IL_0022: call class [mscorlib]System.Collections.Generic.EqualityComparer`1 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::get_Default()
+ IL_0027: ldarg.0
+ IL_0028: ldfld !1 class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>::'i__Field'
+ IL_002d: ldloc.0
+ IL_002e: ldfld !1 class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>::'i__Field'
+ IL_0033: callvirt instance bool class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::Equals(!0,
+ !0)
+ IL_0038: brfalse.s IL_0052
+
+ IL_003a: call class [mscorlib]System.Collections.Generic.EqualityComparer`1 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::get_Default()
+ IL_003f: ldarg.0
+ IL_0040: ldfld !2 class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>::'i__Field'
+ IL_0045: ldloc.0
+ IL_0046: ldfld !2 class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>::'i__Field'
+ IL_004b: callvirt instance bool class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::Equals(!0,
+ !0)
+ IL_0050: br.s IL_0053
+
+ IL_0052: ldc.i4.0
+ IL_0053: nop
+ IL_0054: stloc.1
+ IL_0055: br.s IL_0057
+
+ IL_0057: ldloc.1
+ IL_0058: ret
+ } // end of method '<>f__AnonymousType3`3'::Equals
+
+ .method public hidebysig virtual instance int32
+ GetHashCode() cil managed
+ {
+ .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 )
+ // Code size 87 (0x57)
+ .maxstack 3
+ .locals init (int32 V_0,
+ int32 V_1)
+ IL_0000: ldc.i4 0xd0c61e6a
+ IL_0005: stloc.0
+ IL_0006: ldc.i4 0xa5555529
+ IL_000b: ldloc.0
+ IL_000c: mul
+ IL_000d: call class [mscorlib]System.Collections.Generic.EqualityComparer`1 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::get_Default()
+ IL_0012: ldarg.0
+ IL_0013: ldfld !0 class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>::'i__Field'
+ IL_0018: callvirt instance int32 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::GetHashCode(!0)
+ IL_001d: add
+ IL_001e: stloc.0
+ IL_001f: ldc.i4 0xa5555529
+ IL_0024: ldloc.0
+ IL_0025: mul
+ IL_0026: call class [mscorlib]System.Collections.Generic.EqualityComparer`1 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::get_Default()
+ IL_002b: ldarg.0
+ IL_002c: ldfld !1 class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>::'i__Field'
+ IL_0031: callvirt instance int32 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::GetHashCode(!0)
+ IL_0036: add
+ IL_0037: stloc.0
+ IL_0038: ldc.i4 0xa5555529
+ IL_003d: ldloc.0
+ IL_003e: mul
+ IL_003f: call class [mscorlib]System.Collections.Generic.EqualityComparer`1 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::get_Default()
+ IL_0044: ldarg.0
+ IL_0045: ldfld !2 class '<>f__AnonymousType3`3'j__TPar',!'j__TPar',!'j__TPar'>::'i__Field'
+ IL_004a: callvirt instance int32 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::GetHashCode(!0)
+ IL_004f: add
+ IL_0050: stloc.0
+ IL_0051: ldloc.0
+ IL_0052: stloc.1
+ IL_0053: br.s IL_0055
+
+ IL_0055: ldloc.1
+ IL_0056: ret
+ } // end of method '<>f__AnonymousType3`3'::GetHashCode
+
+ .property instance !'j__TPar' X()
+ {
+ .get instance !'j__TPar' '<>f__AnonymousType3`3'::get_X()
+ } // end of property '<>f__AnonymousType3`3'::X
+ .property instance !'j__TPar' Y()
+ {
+ .get instance !'j__TPar' '<>f__AnonymousType3`3'::get_Y()
+ } // end of property '<>f__AnonymousType3`3'::Y
+ .property instance !'j__TPar' Z()
+ {
+ .get instance !'j__TPar' '<>f__AnonymousType3`3'::get_Z()
+ } // end of property '<>f__AnonymousType3`3'::Z
+} // end of class '<>f__AnonymousType3`3'
+
+
+// =============================================================
+
+// *********** DISASSEMBLY COMPLETE ***********************
+// WARNING: Created Win32 resource file ../../Tests/TestCases/Pretty\AnonymousTypes.res
diff --git a/ICSharpCode.Decompiler/Tests/TestCases/Pretty/AnonymousTypes.opt.il b/ICSharpCode.Decompiler/Tests/TestCases/Pretty/AnonymousTypes.opt.il
new file mode 100644
index 000000000..34969ec05
--- /dev/null
+++ b/ICSharpCode.Decompiler/Tests/TestCases/Pretty/AnonymousTypes.opt.il
@@ -0,0 +1,738 @@
+
+// Microsoft (R) .NET Framework IL Disassembler. Version 4.0.30319.17929
+// Copyright (c) Microsoft Corporation. All rights reserved.
+
+
+
+// Metadata version: v4.0.30319
+.assembly extern mscorlib
+{
+ .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
+ .ver 4:0:0:0
+}
+.assembly ympalkau
+{
+ .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(int32) = ( 01 00 08 00 00 00 00 00 )
+ .custom instance void [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() = ( 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78 // ....T..WrapNonEx
+ 63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 ) // ceptionThrows.
+ .permissionset reqmin
+ = {[mscorlib]System.Security.Permissions.SecurityPermissionAttribute = {property bool 'SkipVerification' = bool(true)}}
+ .hash algorithm 0x00008004
+ .ver 0:0:0:0
+}
+.module ympalkau.dll
+// MVID: {6272B544-8BFE-442F-9142-7052834C6BA6}
+.custom instance void [mscorlib]System.Security.UnverifiableCodeAttribute::.ctor() = ( 01 00 00 00 )
+.imagebase 0x10000000
+.file alignment 0x00000200
+.stackreserve 0x00100000
+.subsystem 0x0003 // WINDOWS_CUI
+.corflags 0x00000001 // ILONLY
+// Image base: 0x02D20000
+
+
+// =============== CLASS MEMBERS DECLARATION ===================
+
+.class public auto ansi beforefieldinit ICSharpCode.Decompiler.Tests.TestCases.Pretty.AnonymousTypes
+ extends [mscorlib]System.Object
+{
+ .method private hidebysig instance void
+ SimpleTypes() cil managed
+ {
+ // Code size 58 (0x3a)
+ .maxstack 2
+ .locals init (class '<>f__AnonymousType0' V_0,
+ class '<>f__AnonymousType1`1' V_1,
+ class '<>f__AnonymousType2`2' V_2)
+ IL_0000: newobj instance void '<>f__AnonymousType0'::.ctor()
+ IL_0005: stloc.0
+ IL_0006: ldc.i4.5
+ IL_0007: newobj instance void class '<>f__AnonymousType1`1'::.ctor(!0)
+ IL_000c: stloc.1
+ IL_000d: ldc.i4.5
+ IL_000e: ldc.i4.s 10
+ IL_0010: newobj instance void class '<>f__AnonymousType2`2'::.ctor(!0,
+ !1)
+ IL_0015: stloc.2
+ IL_0016: ldloc.0
+ IL_0017: call void [mscorlib]System.Console::WriteLine(object)
+ IL_001c: ldloc.1
+ IL_001d: callvirt instance !0 class '<>f__AnonymousType1`1'::get_X()
+ IL_0022: call void [mscorlib]System.Console::WriteLine(int32)
+ IL_0027: ldloc.2
+ IL_0028: callvirt instance !1 class '<>f__AnonymousType2`2'::get_Y()
+ IL_002d: ldloc.2
+ IL_002e: callvirt instance !0 class '<>f__AnonymousType2`2'::get_X()
+ IL_0033: add
+ IL_0034: call void [mscorlib]System.Console::WriteLine(int32)
+ IL_0039: ret
+ } // end of method AnonymousTypes::SimpleTypes
+
+ .method private hidebysig instance void
+ SimpleArray() cil managed
+ {
+ // Code size 59 (0x3b)
+ .maxstack 5
+ .locals init (class '<>f__AnonymousType3`3'[] V_0,
+ class '<>f__AnonymousType3`3'[] V_1)
+ IL_0000: ldc.i4.2
+ IL_0001: newarr class '<>f__AnonymousType3`3'
+ IL_0006: stloc.1
+ IL_0007: ldloc.1
+ IL_0008: ldc.i4.0
+ IL_0009: ldc.i4.5
+ IL_000a: ldc.i4.2
+ IL_000b: ldc.i4.m1
+ IL_000c: newobj instance void class '<>f__AnonymousType3`3'::.ctor(!0,
+ !1,
+ !2)
+ IL_0011: stelem.ref
+ IL_0012: ldloc.1
+ IL_0013: ldc.i4.1
+ IL_0014: ldc.i4.3
+ IL_0015: ldc.i4.6
+ IL_0016: ldc.i4.s -6
+ IL_0018: newobj instance void class '<>f__AnonymousType3`3'::.ctor(!0,
+ !1,
+ !2)
+ IL_001d: stelem.ref
+ IL_001e: ldloc.1
+ IL_001f: stloc.0
+ IL_0020: ldloc.0
+ IL_0021: ldc.i4.0
+ IL_0022: ldelem.ref
+ IL_0023: callvirt instance !0 class '<>f__AnonymousType3`3'::get_X()
+ IL_0028: call void [mscorlib]System.Console::WriteLine(int32)
+ IL_002d: ldloc.0
+ IL_002e: ldc.i4.1
+ IL_002f: ldelem.ref
+ IL_0030: callvirt instance !0 class '<>f__AnonymousType3`3'::get_X()
+ IL_0035: call void [mscorlib]System.Console::WriteLine(int32)
+ IL_003a: ret
+ } // end of method AnonymousTypes::SimpleArray
+
+ .method private hidebysig instance void
+ JaggedArray() cil managed
+ {
+ // Code size 84 (0x54)
+ .maxstack 5
+ .locals init (class '<>f__AnonymousType3`3'[] V_0,
+ class '<>f__AnonymousType3`3'[][] V_1,
+ class '<>f__AnonymousType3`3'[] V_2,
+ class '<>f__AnonymousType3`3'[][] V_3)
+ IL_0000: ldc.i4.2
+ IL_0001: newarr class '<>f__AnonymousType3`3'
+ IL_0006: stloc.2
+ IL_0007: ldloc.2
+ IL_0008: ldc.i4.0
+ IL_0009: ldc.i4.5
+ IL_000a: ldc.i4.2
+ IL_000b: ldc.i4.m1
+ IL_000c: newobj instance void class '<>f__AnonymousType3`3'::.ctor(!0,
+ !1,
+ !2)
+ IL_0011: stelem.ref
+ IL_0012: ldloc.2
+ IL_0013: ldc.i4.1
+ IL_0014: ldc.i4.3
+ IL_0015: ldc.i4.6
+ IL_0016: ldc.i4.s -6
+ IL_0018: newobj instance void class '<>f__AnonymousType3`3'::.ctor(!0,
+ !1,
+ !2)
+ IL_001d: stelem.ref
+ IL_001e: ldloc.2
+ IL_001f: stloc.0
+ IL_0020: ldc.i4.2
+ IL_0021: newarr class '<>f__AnonymousType3`3'[]
+ IL_0026: stloc.3
+ IL_0027: ldloc.3
+ IL_0028: ldc.i4.0
+ IL_0029: ldloc.0
+ IL_002a: stelem.ref
+ IL_002b: ldloc.3
+ IL_002c: ldc.i4.1
+ IL_002d: ldloc.0
+ IL_002e: stelem.ref
+ IL_002f: ldloc.3
+ IL_0030: stloc.1
+ IL_0031: ldloc.0
+ IL_0032: ldc.i4.0
+ IL_0033: ldelem.ref
+ IL_0034: callvirt instance !0 class '<>f__AnonymousType3`3'::get_X()
+ IL_0039: call void [mscorlib]System.Console::WriteLine(int32)
+ IL_003e: ldloc.0
+ IL_003f: ldc.i4.1
+ IL_0040: ldelem.ref
+ IL_0041: callvirt instance !0 class '<>f__AnonymousType3`3'::get_X()
+ IL_0046: call void [mscorlib]System.Console::WriteLine(int32)
+ IL_004b: ldloc.1
+ IL_004c: ldlen
+ IL_004d: conv.i4
+ IL_004e: call void [mscorlib]System.Console::WriteLine(int32)
+ IL_0053: ret
+ } // end of method AnonymousTypes::JaggedArray
+
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Object::.ctor()
+ IL_0006: ret
+ } // end of method AnonymousTypes::.ctor
+
+} // end of class ICSharpCode.Decompiler.Tests.TestCases.Pretty.AnonymousTypes
+
+.class private auto ansi sealed beforefieldinit '<>f__AnonymousType0'
+ extends [mscorlib]System.Object
+{
+ .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 )
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 )
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Object::.ctor()
+ IL_0006: ret
+ } // end of method '<>f__AnonymousType0'::.ctor
+
+ .method public hidebysig virtual instance string
+ ToString() cil managed
+ {
+ .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 )
+ // Code size 25 (0x19)
+ .maxstack 2
+ .locals init (class [mscorlib]System.Text.StringBuilder V_0)
+ IL_0000: newobj instance void [mscorlib]System.Text.StringBuilder::.ctor()
+ IL_0005: stloc.0
+ IL_0006: ldloc.0
+ IL_0007: ldstr "{ }"
+ IL_000c: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(string)
+ IL_0011: pop
+ IL_0012: ldloc.0
+ IL_0013: callvirt instance string [mscorlib]System.Object::ToString()
+ IL_0018: ret
+ } // end of method '<>f__AnonymousType0'::ToString
+
+ .method public hidebysig virtual instance bool
+ Equals(object 'value') cil managed
+ {
+ .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 )
+ // Code size 15 (0xf)
+ .maxstack 2
+ .locals init (class '<>f__AnonymousType0' V_0)
+ IL_0000: ldarg.1
+ IL_0001: isinst '<>f__AnonymousType0'
+ IL_0006: stloc.0
+ IL_0007: ldloc.0
+ IL_0008: ldnull
+ IL_0009: ceq
+ IL_000b: ldc.i4.0
+ IL_000c: ceq
+ IL_000e: ret
+ } // end of method '<>f__AnonymousType0'::Equals
+
+ .method public hidebysig virtual instance int32
+ GetHashCode() cil managed
+ {
+ .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 )
+ // Code size 4 (0x4)
+ .maxstack 1
+ .locals init (int32 V_0)
+ IL_0000: ldc.i4.0
+ IL_0001: stloc.0
+ IL_0002: ldloc.0
+ IL_0003: ret
+ } // end of method '<>f__AnonymousType0'::GetHashCode
+
+} // end of class '<>f__AnonymousType0'
+
+.class private auto ansi sealed beforefieldinit '<>f__AnonymousType1`1'<'j__TPar'>
+ extends [mscorlib]System.Object
+{
+ .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 )
+ .field private initonly !'j__TPar' 'i__Field'
+ .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 )
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor(!'j__TPar' X) cil managed
+ {
+ .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 )
+ // Code size 14 (0xe)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Object::.ctor()
+ IL_0006: ldarg.0
+ IL_0007: ldarg.1
+ IL_0008: stfld !0 class '<>f__AnonymousType1`1'j__TPar'>::'i__Field'
+ IL_000d: ret
+ } // end of method '<>f__AnonymousType1`1'::.ctor
+
+ .method public hidebysig specialname instance !'j__TPar'
+ get_X() cil managed
+ {
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: ldfld !0 class '<>f__AnonymousType1`1'j__TPar'>::'i__Field'
+ IL_0006: ret
+ } // end of method '<>f__AnonymousType1`1'::get_X
+
+ .method public hidebysig virtual instance string
+ ToString() cil managed
+ {
+ .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 )
+ // Code size 55 (0x37)
+ .maxstack 2
+ .locals init (class [mscorlib]System.Text.StringBuilder V_0)
+ IL_0000: newobj instance void [mscorlib]System.Text.StringBuilder::.ctor()
+ IL_0005: stloc.0
+ IL_0006: ldloc.0
+ IL_0007: ldstr "{ X = "
+ IL_000c: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(string)
+ IL_0011: pop
+ IL_0012: ldloc.0
+ IL_0013: ldarg.0
+ IL_0014: ldfld !0 class '<>f__AnonymousType1`1'j__TPar'>::'i__Field'
+ IL_0019: box !'j__TPar'
+ IL_001e: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(object)
+ IL_0023: pop
+ IL_0024: ldloc.0
+ IL_0025: ldstr " }"
+ IL_002a: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(string)
+ IL_002f: pop
+ IL_0030: ldloc.0
+ IL_0031: callvirt instance string [mscorlib]System.Object::ToString()
+ IL_0036: ret
+ } // end of method '<>f__AnonymousType1`1'::ToString
+
+ .method public hidebysig virtual instance bool
+ Equals(object 'value') cil managed
+ {
+ .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 )
+ // Code size 35 (0x23)
+ .maxstack 3
+ .locals init (class '<>f__AnonymousType1`1'j__TPar'> V_0)
+ IL_0000: ldarg.1
+ IL_0001: isinst class '<>f__AnonymousType1`1'j__TPar'>
+ IL_0006: stloc.0
+ IL_0007: ldloc.0
+ IL_0008: brfalse.s IL_0021
+
+ IL_000a: call class [mscorlib]System.Collections.Generic.EqualityComparer`1 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::get_Default()
+ IL_000f: ldarg.0
+ IL_0010: ldfld !0 class '<>f__AnonymousType1`1'j__TPar'>::'i__Field'
+ IL_0015: ldloc.0
+ IL_0016: ldfld !0 class '<>f__AnonymousType1`1'j__TPar'>::'i__Field'
+ IL_001b: callvirt instance bool class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::Equals(!0,
+ !0)
+ IL_0020: ret
+
+ IL_0021: ldc.i4.0
+ IL_0022: ret
+ } // end of method '<>f__AnonymousType1`1'::Equals
+
+ .method public hidebysig virtual instance int32
+ GetHashCode() cil managed
+ {
+ .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 )
+ // Code size 33 (0x21)
+ .maxstack 3
+ .locals init (int32 V_0)
+ IL_0000: ldc.i4 0x12721cd8
+ IL_0005: stloc.0
+ IL_0006: ldc.i4 0xa5555529
+ IL_000b: ldloc.0
+ IL_000c: mul
+ IL_000d: call class [mscorlib]System.Collections.Generic.EqualityComparer`1 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::get_Default()
+ IL_0012: ldarg.0
+ IL_0013: ldfld !0 class '<>f__AnonymousType1`1'j__TPar'>::'i__Field'
+ IL_0018: callvirt instance int32 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::GetHashCode(!0)
+ IL_001d: add
+ IL_001e: stloc.0
+ IL_001f: ldloc.0
+ IL_0020: ret
+ } // end of method '<>f__AnonymousType1`1'::GetHashCode
+
+ .property instance !'j__TPar' X()
+ {
+ .get instance !'j__TPar' '<>f__AnonymousType1`1'::get_X()
+ } // end of property '<>f__AnonymousType1`1'::X
+} // end of class '<>f__AnonymousType1`1'
+
+.class private auto ansi sealed beforefieldinit '<>f__AnonymousType2`2'<'j__TPar','j__TPar'>
+ extends [mscorlib]System.Object
+{
+ .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 )
+ .field private initonly !'j__TPar' 'i__Field'
+ .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 )
+ .field private initonly !'j__TPar' 'i__Field'
+ .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 )
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor(!'j__TPar' X,
+ !'j__TPar' Y) cil managed
+ {
+ .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 )
+ // Code size 21 (0x15)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Object::.ctor()
+ IL_0006: ldarg.0
+ IL_0007: ldarg.1
+ IL_0008: stfld !0 class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'>::'i__Field'
+ IL_000d: ldarg.0
+ IL_000e: ldarg.2
+ IL_000f: stfld !1 class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'>::'i__Field'
+ IL_0014: ret
+ } // end of method '<>f__AnonymousType2`2'::.ctor
+
+ .method public hidebysig specialname instance !'j__TPar'
+ get_X() cil managed
+ {
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: ldfld !0 class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'>::'i__Field'
+ IL_0006: ret
+ } // end of method '<>f__AnonymousType2`2'::get_X
+
+ .method public hidebysig specialname instance !'j__TPar'
+ get_Y() cil managed
+ {
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: ldfld !1 class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'>::'i__Field'
+ IL_0006: ret
+ } // end of method '<>f__AnonymousType2`2'::get_Y
+
+ .method public hidebysig virtual instance string
+ ToString() cil managed
+ {
+ .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 )
+ // Code size 85 (0x55)
+ .maxstack 2
+ .locals init (class [mscorlib]System.Text.StringBuilder V_0)
+ IL_0000: newobj instance void [mscorlib]System.Text.StringBuilder::.ctor()
+ IL_0005: stloc.0
+ IL_0006: ldloc.0
+ IL_0007: ldstr "{ X = "
+ IL_000c: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(string)
+ IL_0011: pop
+ IL_0012: ldloc.0
+ IL_0013: ldarg.0
+ IL_0014: ldfld !0 class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'>::'i__Field'
+ IL_0019: box !'j__TPar'
+ IL_001e: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(object)
+ IL_0023: pop
+ IL_0024: ldloc.0
+ IL_0025: ldstr ", Y = "
+ IL_002a: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(string)
+ IL_002f: pop
+ IL_0030: ldloc.0
+ IL_0031: ldarg.0
+ IL_0032: ldfld !1 class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'>::'i__Field'
+ IL_0037: box !'j__TPar'
+ IL_003c: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(object)
+ IL_0041: pop
+ IL_0042: ldloc.0
+ IL_0043: ldstr " }"
+ IL_0048: callvirt instance class [mscorlib]System.Text.StringBuilder [mscorlib]System.Text.StringBuilder::Append(string)
+ IL_004d: pop
+ IL_004e: ldloc.0
+ IL_004f: callvirt instance string [mscorlib]System.Object::ToString()
+ IL_0054: ret
+ } // end of method '<>f__AnonymousType2`2'::ToString
+
+ .method public hidebysig virtual instance bool
+ Equals(object 'value') cil managed
+ {
+ .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 )
+ // Code size 59 (0x3b)
+ .maxstack 3
+ .locals init (class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'> V_0)
+ IL_0000: ldarg.1
+ IL_0001: isinst class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'>
+ IL_0006: stloc.0
+ IL_0007: ldloc.0
+ IL_0008: brfalse.s IL_0039
+
+ IL_000a: call class [mscorlib]System.Collections.Generic.EqualityComparer`1 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::get_Default()
+ IL_000f: ldarg.0
+ IL_0010: ldfld !0 class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'>::'i__Field'
+ IL_0015: ldloc.0
+ IL_0016: ldfld !0 class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'>::'i__Field'
+ IL_001b: callvirt instance bool class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::Equals(!0,
+ !0)
+ IL_0020: brfalse.s IL_0039
+
+ IL_0022: call class [mscorlib]System.Collections.Generic.EqualityComparer`1 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::get_Default()
+ IL_0027: ldarg.0
+ IL_0028: ldfld !1 class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'>::'i__Field'
+ IL_002d: ldloc.0
+ IL_002e: ldfld !1 class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'>::'i__Field'
+ IL_0033: callvirt instance bool class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::Equals(!0,
+ !0)
+ IL_0038: ret
+
+ IL_0039: ldc.i4.0
+ IL_003a: ret
+ } // end of method '<>f__AnonymousType2`2'::Equals
+
+ .method public hidebysig virtual instance int32
+ GetHashCode() cil managed
+ {
+ .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 )
+ // Code size 58 (0x3a)
+ .maxstack 3
+ .locals init (int32 V_0)
+ IL_0000: ldc.i4 0xc18f39dd
+ IL_0005: stloc.0
+ IL_0006: ldc.i4 0xa5555529
+ IL_000b: ldloc.0
+ IL_000c: mul
+ IL_000d: call class [mscorlib]System.Collections.Generic.EqualityComparer`1 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::get_Default()
+ IL_0012: ldarg.0
+ IL_0013: ldfld !0 class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'>::'i__Field'
+ IL_0018: callvirt instance int32 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::GetHashCode(!0)
+ IL_001d: add
+ IL_001e: stloc.0
+ IL_001f: ldc.i4 0xa5555529
+ IL_0024: ldloc.0
+ IL_0025: mul
+ IL_0026: call class [mscorlib]System.Collections.Generic.EqualityComparer`1 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::get_Default()
+ IL_002b: ldarg.0
+ IL_002c: ldfld !1 class '<>f__AnonymousType2`2'j__TPar',!'j__TPar'>::'i__Field'
+ IL_0031: callvirt instance int32 class [mscorlib]System.Collections.Generic.EqualityComparer`1j__TPar'>::GetHashCode(!0)
+ IL_0036: add
+ IL_0037: stloc.0
+ IL_0038: ldloc.0
+ IL_0039: ret
+ } // end of method '<>f__AnonymousType2`2'::GetHashCode
+
+ .property instance !'j__TPar' X()
+ {
+ .get instance !'j__TPar' '<>f__AnonymousType2`2'::get_X()
+ } // end of property '<>f__AnonymousType2`2'::X
+ .property instance !'j__TPar' Y()
+ {
+ .get instance !'j__TPar' '<>f__AnonymousType2`2'::get_Y()
+ } // end of property '<>f__AnonymousType2`2'::Y
+} // end of class '<>f__AnonymousType2`2'
+
+.class private auto ansi sealed beforefieldinit '<>f__AnonymousType3`3'<'j__TPar','j__TPar','j__TPar'>
+ extends [mscorlib]System.Object
+{
+ .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 )
+ .field private initonly !'j__TPar' 'i__Field'
+ .custom instance void [mscorlib]System.Diagnostics.DebuggerBrowsableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggerBrowsableState) = ( 01 00 00 00 00 00 00 00 )
+ .field private initonly !'j__TPar' '