// 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 extern System.Core { .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4.. .ver 4:0:0:0 } .assembly extern Microsoft.CSharp { .publickeytoken = (B0 3F 5F 7F 11 D5 0A 3A ) // .?_....: .ver 4:0:0:0 } .assembly NullPropagation { .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. // --- The following custom attribute is added automatically, do not uncomment ------- // .custom instance void [mscorlib]System.Diagnostics.DebuggableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggableAttribute/DebuggingModes) = ( 01 00 07 01 00 00 00 00 ) .permissionset reqmin = {[mscorlib]System.Security.Permissions.SecurityPermissionAttribute = {property bool 'SkipVerification' = bool(true)}} .hash algorithm 0x00008004 .ver 0:0:0:0 } .module NullPropagation.dll .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 // =============== CLASS MEMBERS DECLARATION =================== .class private auto ansi beforefieldinit ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation extends [mscorlib]System.Object { .class auto ansi nested private beforefieldinit MyClass extends [mscorlib]System.Object { .custom instance void [mscorlib]System.Reflection.DefaultMemberAttribute::.ctor(string) = ( 01 00 04 49 74 65 6D 00 00 ) // ...Item.. .field public int32 IntVal .field public string Text .field public class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass Field .field private class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass 'k__BackingField' .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .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 instance class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass get_Property() cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) // Code size 7 (0x7) .maxstack 8 IL_0000: ldarg.0 IL_0001: ldfld class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass::'k__BackingField' IL_0006: ret } // end of method MyClass::get_Property .method public hidebysig specialname instance void set_Property(class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass 'value') cil managed { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) // Code size 8 (0x8) .maxstack 8 IL_0000: ldarg.0 IL_0001: ldarg.1 IL_0002: stfld class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass::'k__BackingField' IL_0007: ret } // end of method MyClass::set_Property .method public hidebysig specialname instance class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass get_Item(int32 index) cil managed { // Code size 7 (0x7) .maxstack 1 .locals init (class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass V_0) IL_0000: nop IL_0001: ldnull IL_0002: stloc.0 IL_0003: br.s IL_0005 IL_0005: ldloc.0 IL_0006: ret } // end of method MyClass::get_Item .method public hidebysig instance class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass Method(int32 arg) cil managed { // Code size 7 (0x7) .maxstack 1 .locals init (class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass V_0) IL_0000: nop IL_0001: ldnull IL_0002: stloc.0 IL_0003: br.s IL_0005 IL_0005: ldloc.0 IL_0006: ret } // end of method MyClass::Method .method public hidebysig instance void Done() cil managed { // Code size 2 (0x2) .maxstack 8 IL_0000: nop IL_0001: ret } // end of method MyClass::Done .method public hidebysig specialname rtspecialname instance void .ctor() cil managed { // Code size 8 (0x8) .maxstack 8 IL_0000: ldarg.0 IL_0001: call instance void [mscorlib]System.Object::.ctor() IL_0006: nop IL_0007: ret } // end of method MyClass::.ctor .property instance class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass Property() { .get instance class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass::get_Property() .set instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass::set_Property(class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass) } // end of property MyClass::Property .property instance class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass Item(int32) { .get instance class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass::get_Item(int32) } // end of property MyClass::Item } // end of class MyClass .class sequential ansi sealed nested private beforefieldinit MyStruct extends [mscorlib]System.ValueType { .custom instance void [mscorlib]System.Reflection.DefaultMemberAttribute::.ctor(string) = ( 01 00 04 49 74 65 6D 00 00 ) // ...Item.. .field public int32 IntVal .field public class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass Field .method public hidebysig specialname instance valuetype [mscorlib]System.Nullable`1 get_Property1() cil managed { // Code size 10 (0xa) .maxstack 1 .locals init (valuetype [mscorlib]System.Nullable`1 V_0) IL_0000: ldloca.s V_0 IL_0002: initobj valuetype [mscorlib]System.Nullable`1 IL_0008: ldloc.0 IL_0009: ret } // end of method MyStruct::get_Property1 .method public hidebysig specialname instance valuetype ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyStruct get_Property2() cil managed { // Code size 10 (0xa) .maxstack 1 .locals init (valuetype ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyStruct V_0) IL_0000: ldloca.s V_0 IL_0002: initobj ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyStruct IL_0008: ldloc.0 IL_0009: ret } // end of method MyStruct::get_Property2 .method public hidebysig specialname instance valuetype [mscorlib]System.Nullable`1 get_Item(int32 index) cil managed { // Code size 15 (0xf) .maxstack 1 .locals init (valuetype [mscorlib]System.Nullable`1 V_0, valuetype [mscorlib]System.Nullable`1 V_1) IL_0000: nop IL_0001: ldloca.s V_0 IL_0003: initobj valuetype [mscorlib]System.Nullable`1 IL_0009: ldloc.0 IL_000a: stloc.1 IL_000b: br.s IL_000d IL_000d: ldloc.1 IL_000e: ret } // end of method MyStruct::get_Item .method public hidebysig instance valuetype [mscorlib]System.Nullable`1 Method1(int32 arg) cil managed { // Code size 15 (0xf) .maxstack 1 .locals init (valuetype [mscorlib]System.Nullable`1 V_0, valuetype [mscorlib]System.Nullable`1 V_1) IL_0000: nop IL_0001: ldloca.s V_0 IL_0003: initobj valuetype [mscorlib]System.Nullable`1 IL_0009: ldloc.0 IL_000a: stloc.1 IL_000b: br.s IL_000d IL_000d: ldloc.1 IL_000e: ret } // end of method MyStruct::Method1 .method public hidebysig instance valuetype ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyStruct Method2(int32 arg) cil managed { // Code size 15 (0xf) .maxstack 1 .locals init (valuetype ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyStruct V_0, valuetype ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyStruct V_1) IL_0000: nop IL_0001: ldloca.s V_0 IL_0003: initobj ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyStruct IL_0009: ldloc.0 IL_000a: stloc.1 IL_000b: br.s IL_000d IL_000d: ldloc.1 IL_000e: ret } // end of method MyStruct::Method2 .method public hidebysig instance void Done() cil managed { // Code size 2 (0x2) .maxstack 8 IL_0000: nop IL_0001: ret } // end of method MyStruct::Done .property instance valuetype [mscorlib]System.Nullable`1 Property1() { .get instance valuetype [mscorlib]System.Nullable`1 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyStruct::get_Property1() } // end of property MyStruct::Property1 .property instance valuetype ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyStruct Property2() { .get instance valuetype ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyStruct ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyStruct::get_Property2() } // end of property MyStruct::Property2 .property instance valuetype [mscorlib]System.Nullable`1 Item(int32) { .get instance valuetype [mscorlib]System.Nullable`1 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyStruct::get_Item(int32) } // end of property MyStruct::Item } // end of class MyStruct .class interface abstract auto ansi nested public ITest { .method public hidebysig newslot abstract virtual instance int32 Int() cil managed { } // end of method ITest::Int .method public hidebysig newslot abstract virtual instance class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/ITest Next() cil managed { } // end of method ITest::Next } // end of class ITest .class abstract auto ansi sealed nested private beforefieldinit '<>o__27' extends [mscorlib]System.Object { .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) .field public static class [System.Core]System.Runtime.CompilerServices.CallSite`1> '<>p__0' .field public static class [System.Core]System.Runtime.CompilerServices.CallSite`1> '<>p__1' .field public static class [System.Core]System.Runtime.CompilerServices.CallSite`1> '<>p__2' .field public static class [System.Core]System.Runtime.CompilerServices.CallSite`1> '<>p__3' } // end of class '<>o__27' .method private hidebysig instance int32 GetInt() cil managed { // Code size 8 (0x8) .maxstack 1 .locals init (int32 V_0) IL_0000: nop IL_0001: ldc.i4.s 9 IL_0003: stloc.0 IL_0004: br.s IL_0006 IL_0006: ldloc.0 IL_0007: ret } // end of method NullPropagation::GetInt .method private hidebysig instance string GetString() cil managed { // Code size 7 (0x7) .maxstack 1 .locals init (string V_0) IL_0000: nop IL_0001: ldnull IL_0002: stloc.0 IL_0003: br.s IL_0005 IL_0005: ldloc.0 IL_0006: ret } // end of method NullPropagation::GetString .method private hidebysig instance class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass GetMyClass() cil managed { // Code size 7 (0x7) .maxstack 1 .locals init (class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass V_0) IL_0000: nop IL_0001: ldnull IL_0002: stloc.0 IL_0003: br.s IL_0005 IL_0005: ldloc.0 IL_0006: ret } // end of method NullPropagation::GetMyClass .method private hidebysig instance valuetype [mscorlib]System.Nullable`1 GetMyStruct() cil managed { // Code size 15 (0xf) .maxstack 1 .locals init (valuetype [mscorlib]System.Nullable`1 V_0, valuetype [mscorlib]System.Nullable`1 V_1) IL_0000: nop IL_0001: ldloca.s V_0 IL_0003: initobj valuetype [mscorlib]System.Nullable`1 IL_0009: ldloc.0 IL_000a: stloc.1 IL_000b: br.s IL_000d IL_000d: ldloc.1 IL_000e: ret } // end of method NullPropagation::GetMyStruct .method public hidebysig instance string Substring() cil managed { // Code size 30 (0x1e) .maxstack 2 .locals init (string V_0) IL_0000: nop IL_0001: ldarg.0 IL_0002: call instance string ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetString() IL_0007: dup IL_0008: brtrue.s IL_000e IL_000a: pop IL_000b: ldnull IL_000c: br.s IL_0019 IL_000e: ldarg.0 IL_000f: call instance int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetInt() IL_0014: call instance string [mscorlib]System.String::Substring(int32) IL_0019: stloc.0 IL_001a: br.s IL_001c IL_001c: ldloc.0 IL_001d: ret } // end of method NullPropagation::Substring .method public hidebysig instance void CallSubstringAndIgnoreResult() cil managed { // Code size 26 (0x1a) .maxstack 8 IL_0000: nop IL_0001: ldarg.0 IL_0002: call instance string ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetString() IL_0007: dup IL_0008: brtrue.s IL_000d IL_000a: pop IL_000b: br.s IL_0019 IL_000d: ldarg.0 IL_000e: call instance int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetInt() IL_0013: call instance string [mscorlib]System.String::Substring(int32) IL_0018: pop IL_0019: ret } // end of method NullPropagation::CallSubstringAndIgnoreResult .method private hidebysig instance void Use(!!T t) cil managed { // Code size 2 (0x2) .maxstack 8 IL_0000: nop IL_0001: ret } // end of method NullPropagation::Use .method public hidebysig instance void CallDone() cil managed { // Code size 252 (0xfc) .maxstack 2 IL_0000: nop IL_0001: ldarg.0 IL_0002: call instance class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetMyClass() IL_0007: dup IL_0008: brtrue.s IL_000d IL_000a: pop IL_000b: br.s IL_0013 IL_000d: call instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass::Done() IL_0012: nop IL_0013: ldarg.0 IL_0014: call instance class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetMyClass() IL_0019: dup IL_001a: brtrue.s IL_001f IL_001c: pop IL_001d: br.s IL_0030 IL_001f: ldfld class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass::Field IL_0024: dup IL_0025: brtrue.s IL_002a IL_0027: pop IL_0028: br.s IL_0030 IL_002a: call instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass::Done() IL_002f: nop IL_0030: ldarg.0 IL_0031: call instance class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetMyClass() IL_0036: dup IL_0037: brtrue.s IL_003c IL_0039: pop IL_003a: br.s IL_0047 IL_003c: ldfld class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass::Field IL_0041: callvirt instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass::Done() IL_0046: nop IL_0047: ldarg.0 IL_0048: call instance class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetMyClass() IL_004d: dup IL_004e: brtrue.s IL_0053 IL_0050: pop IL_0051: br.s IL_0064 IL_0053: call instance class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass::get_Property() IL_0058: dup IL_0059: brtrue.s IL_005e IL_005b: pop IL_005c: br.s IL_0064 IL_005e: call instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass::Done() IL_0063: nop IL_0064: ldarg.0 IL_0065: call instance class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetMyClass() IL_006a: dup IL_006b: brtrue.s IL_0070 IL_006d: pop IL_006e: br.s IL_007b IL_0070: call instance class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass::get_Property() IL_0075: callvirt instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass::Done() IL_007a: nop IL_007b: ldarg.0 IL_007c: call instance class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetMyClass() IL_0081: dup IL_0082: brtrue.s IL_0087 IL_0084: pop IL_0085: br.s IL_009e IL_0087: ldarg.0 IL_0088: call instance int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetInt() IL_008d: call instance class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass::Method(int32) IL_0092: dup IL_0093: brtrue.s IL_0098 IL_0095: pop IL_0096: br.s IL_009e IL_0098: call instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass::Done() IL_009d: nop IL_009e: ldarg.0 IL_009f: call instance class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetMyClass() IL_00a4: dup IL_00a5: brtrue.s IL_00aa IL_00a7: pop IL_00a8: br.s IL_00bb IL_00aa: ldarg.0 IL_00ab: call instance int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetInt() IL_00b0: call instance class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass::Method(int32) IL_00b5: callvirt instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass::Done() IL_00ba: nop IL_00bb: ldarg.0 IL_00bc: call instance class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetMyClass() IL_00c1: dup IL_00c2: brtrue.s IL_00c7 IL_00c4: pop IL_00c5: br.s IL_00de IL_00c7: ldarg.0 IL_00c8: call instance int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetInt() IL_00cd: call instance class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass::get_Item(int32) IL_00d2: dup IL_00d3: brtrue.s IL_00d8 IL_00d5: pop IL_00d6: br.s IL_00de IL_00d8: call instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass::Done() IL_00dd: nop IL_00de: ldarg.0 IL_00df: call instance class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetMyClass() IL_00e4: dup IL_00e5: brtrue.s IL_00ea IL_00e7: pop IL_00e8: br.s IL_00fb IL_00ea: ldarg.0 IL_00eb: call instance int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetInt() IL_00f0: call instance class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass::get_Item(int32) IL_00f5: callvirt instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass::Done() IL_00fa: nop IL_00fb: ret } // end of method NullPropagation::CallDone .method public hidebysig instance void CallDoneStruct() cil managed { // Code size 399 (0x18f) .maxstack 2 .locals init (valuetype [mscorlib]System.Nullable`1 V_0, valuetype ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyStruct V_1, valuetype [mscorlib]System.Nullable`1 V_2) IL_0000: nop IL_0001: ldarg.0 IL_0002: call instance valuetype [mscorlib]System.Nullable`1 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetMyStruct() IL_0007: stloc.0 IL_0008: ldloca.s V_0 IL_000a: dup IL_000b: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue() IL_0010: brtrue.s IL_0015 IL_0012: pop IL_0013: br.s IL_0023 IL_0015: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault() IL_001a: stloc.1 IL_001b: ldloca.s V_1 IL_001d: call instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyStruct::Done() IL_0022: nop IL_0023: ldarg.0 IL_0024: call instance valuetype [mscorlib]System.Nullable`1 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetMyStruct() IL_0029: stloc.0 IL_002a: ldloca.s V_0 IL_002c: dup IL_002d: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue() IL_0032: brtrue.s IL_0037 IL_0034: pop IL_0035: br.s IL_004d IL_0037: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault() IL_003c: ldfld class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyStruct::Field IL_0041: dup IL_0042: brtrue.s IL_0047 IL_0044: pop IL_0045: br.s IL_004d IL_0047: call instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass::Done() IL_004c: nop IL_004d: ldarg.0 IL_004e: call instance valuetype [mscorlib]System.Nullable`1 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetMyStruct() IL_0053: stloc.0 IL_0054: ldloca.s V_0 IL_0056: dup IL_0057: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue() IL_005c: brtrue.s IL_0061 IL_005e: pop IL_005f: br.s IL_0071 IL_0061: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault() IL_0066: ldfld class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyStruct::Field IL_006b: callvirt instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass::Done() IL_0070: nop IL_0071: ldarg.0 IL_0072: call instance valuetype [mscorlib]System.Nullable`1 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetMyStruct() IL_0077: stloc.0 IL_0078: ldloca.s V_0 IL_007a: dup IL_007b: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue() IL_0080: brtrue.s IL_0085 IL_0082: pop IL_0083: br.s IL_00ae IL_0085: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault() IL_008a: stloc.1 IL_008b: ldloca.s V_1 IL_008d: call instance valuetype [mscorlib]System.Nullable`1 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyStruct::get_Property1() IL_0092: stloc.2 IL_0093: ldloca.s V_2 IL_0095: dup IL_0096: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue() IL_009b: brtrue.s IL_00a0 IL_009d: pop IL_009e: br.s IL_00ae IL_00a0: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault() IL_00a5: stloc.1 IL_00a6: ldloca.s V_1 IL_00a8: call instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyStruct::Done() IL_00ad: nop IL_00ae: ldarg.0 IL_00af: call instance valuetype [mscorlib]System.Nullable`1 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetMyStruct() IL_00b4: stloc.0 IL_00b5: ldloca.s V_0 IL_00b7: dup IL_00b8: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue() IL_00bd: brtrue.s IL_00c2 IL_00bf: pop IL_00c0: br.s IL_00d8 IL_00c2: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault() IL_00c7: stloc.1 IL_00c8: ldloca.s V_1 IL_00ca: call instance valuetype ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyStruct ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyStruct::get_Property2() IL_00cf: stloc.1 IL_00d0: ldloca.s V_1 IL_00d2: call instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyStruct::Done() IL_00d7: nop IL_00d8: ldarg.0 IL_00d9: call instance valuetype [mscorlib]System.Nullable`1 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetMyStruct() IL_00de: stloc.0 IL_00df: ldloca.s V_0 IL_00e1: dup IL_00e2: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue() IL_00e7: brtrue.s IL_00ec IL_00e9: pop IL_00ea: br.s IL_011b IL_00ec: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault() IL_00f1: stloc.1 IL_00f2: ldloca.s V_1 IL_00f4: ldarg.0 IL_00f5: call instance int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetInt() IL_00fa: call instance valuetype [mscorlib]System.Nullable`1 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyStruct::Method1(int32) IL_00ff: stloc.2 IL_0100: ldloca.s V_2 IL_0102: dup IL_0103: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue() IL_0108: brtrue.s IL_010d IL_010a: pop IL_010b: br.s IL_011b IL_010d: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault() IL_0112: stloc.1 IL_0113: ldloca.s V_1 IL_0115: call instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyStruct::Done() IL_011a: nop IL_011b: ldarg.0 IL_011c: call instance valuetype [mscorlib]System.Nullable`1 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetMyStruct() IL_0121: stloc.0 IL_0122: ldloca.s V_0 IL_0124: dup IL_0125: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue() IL_012a: brtrue.s IL_012f IL_012c: pop IL_012d: br.s IL_014b IL_012f: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault() IL_0134: stloc.1 IL_0135: ldloca.s V_1 IL_0137: ldarg.0 IL_0138: call instance int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetInt() IL_013d: call instance valuetype ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyStruct ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyStruct::Method2(int32) IL_0142: stloc.1 IL_0143: ldloca.s V_1 IL_0145: call instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyStruct::Done() IL_014a: nop IL_014b: ldarg.0 IL_014c: call instance valuetype [mscorlib]System.Nullable`1 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetMyStruct() IL_0151: stloc.0 IL_0152: ldloca.s V_0 IL_0154: dup IL_0155: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue() IL_015a: brtrue.s IL_015f IL_015c: pop IL_015d: br.s IL_018e IL_015f: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault() IL_0164: stloc.1 IL_0165: ldloca.s V_1 IL_0167: ldarg.0 IL_0168: call instance int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetInt() IL_016d: call instance valuetype [mscorlib]System.Nullable`1 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyStruct::get_Item(int32) IL_0172: stloc.2 IL_0173: ldloca.s V_2 IL_0175: dup IL_0176: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue() IL_017b: brtrue.s IL_0180 IL_017d: pop IL_017e: br.s IL_018e IL_0180: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault() IL_0185: stloc.1 IL_0186: ldloca.s V_1 IL_0188: call instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyStruct::Done() IL_018d: nop IL_018e: ret } // end of method NullPropagation::CallDoneStruct .method public hidebysig instance void RequiredParentheses() cil managed { // Code size 131 (0x83) .maxstack 2 .locals init (valuetype [mscorlib]System.Nullable`1 V_0, valuetype [mscorlib]System.Nullable`1 V_1, valuetype ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyStruct V_2) IL_0000: nop IL_0001: ldarg.0 IL_0002: call instance class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetMyClass() IL_0007: dup IL_0008: brtrue.s IL_000e IL_000a: pop IL_000b: ldnull IL_000c: br.s IL_0013 IL_000e: ldfld class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass::Field IL_0013: callvirt instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass::Done() IL_0018: nop IL_0019: ldarg.0 IL_001a: call instance class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetMyClass() IL_001f: dup IL_0020: brtrue.s IL_0026 IL_0022: pop IL_0023: ldnull IL_0024: br.s IL_0031 IL_0026: ldarg.0 IL_0027: call instance int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetInt() IL_002c: call instance class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass::Method(int32) IL_0031: callvirt instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass::Done() IL_0036: nop IL_0037: ldarg.0 IL_0038: call instance valuetype [mscorlib]System.Nullable`1 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetMyStruct() IL_003d: stloc.0 IL_003e: ldloca.s V_0 IL_0040: dup IL_0041: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue() IL_0046: brtrue.s IL_0054 IL_0048: pop IL_0049: ldloca.s V_1 IL_004b: initobj valuetype [mscorlib]System.Nullable`1 IL_0051: ldloc.1 IL_0052: br.s IL_0066 IL_0054: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault() IL_0059: stloc.2 IL_005a: ldloca.s V_2 IL_005c: call instance valuetype ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyStruct ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyStruct::get_Property2() IL_0061: newobj instance void valuetype [mscorlib]System.Nullable`1::.ctor(!0) IL_0066: stloc.0 IL_0067: ldloca.s V_0 IL_0069: dup IL_006a: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue() IL_006f: brtrue.s IL_0074 IL_0071: pop IL_0072: br.s IL_0082 IL_0074: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault() IL_0079: stloc.2 IL_007a: ldloca.s V_2 IL_007c: call instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyStruct::Done() IL_0081: nop IL_0082: ret } // end of method NullPropagation::RequiredParentheses .method public hidebysig instance valuetype [mscorlib]System.Nullable`1[] ChainsOnClass() cil managed { // Code size 479 (0x1df) .maxstack 5 .locals init (valuetype [mscorlib]System.Nullable`1 V_0, valuetype [mscorlib]System.Nullable`1[] V_1) IL_0000: nop IL_0001: ldc.i4.s 9 IL_0003: newarr valuetype [mscorlib]System.Nullable`1 IL_0008: dup IL_0009: ldc.i4.0 IL_000a: ldarg.0 IL_000b: call instance class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetMyClass() IL_0010: dup IL_0011: brtrue.s IL_001f IL_0013: pop IL_0014: ldloca.s V_0 IL_0016: initobj valuetype [mscorlib]System.Nullable`1 IL_001c: ldloc.0 IL_001d: br.s IL_0029 IL_001f: ldfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass::IntVal IL_0024: newobj instance void valuetype [mscorlib]System.Nullable`1::.ctor(!0) IL_0029: stelem valuetype [mscorlib]System.Nullable`1 IL_002e: dup IL_002f: ldc.i4.1 IL_0030: ldarg.0 IL_0031: call instance class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetMyClass() IL_0036: dup IL_0037: brtrue.s IL_0045 IL_0039: pop IL_003a: ldloca.s V_0 IL_003c: initobj valuetype [mscorlib]System.Nullable`1 IL_0042: ldloc.0 IL_0043: br.s IL_0054 IL_0045: ldfld class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass::Field IL_004a: ldfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass::IntVal IL_004f: newobj instance void valuetype [mscorlib]System.Nullable`1::.ctor(!0) IL_0054: stelem valuetype [mscorlib]System.Nullable`1 IL_0059: dup IL_005a: ldc.i4.2 IL_005b: ldarg.0 IL_005c: call instance class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetMyClass() IL_0061: dup IL_0062: brtrue.s IL_0070 IL_0064: pop IL_0065: ldloca.s V_0 IL_0067: initobj valuetype [mscorlib]System.Nullable`1 IL_006d: ldloc.0 IL_006e: br.s IL_008e IL_0070: ldfld class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass::Field IL_0075: dup IL_0076: brtrue.s IL_0084 IL_0078: pop IL_0079: ldloca.s V_0 IL_007b: initobj valuetype [mscorlib]System.Nullable`1 IL_0081: ldloc.0 IL_0082: br.s IL_008e IL_0084: ldfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass::IntVal IL_0089: newobj instance void valuetype [mscorlib]System.Nullable`1::.ctor(!0) IL_008e: stelem valuetype [mscorlib]System.Nullable`1 IL_0093: dup IL_0094: ldc.i4.3 IL_0095: ldarg.0 IL_0096: call instance class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetMyClass() IL_009b: dup IL_009c: brtrue.s IL_00aa IL_009e: pop IL_009f: ldloca.s V_0 IL_00a1: initobj valuetype [mscorlib]System.Nullable`1 IL_00a7: ldloc.0 IL_00a8: br.s IL_00b9 IL_00aa: call instance class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass::get_Property() IL_00af: ldfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass::IntVal IL_00b4: newobj instance void valuetype [mscorlib]System.Nullable`1::.ctor(!0) IL_00b9: stelem valuetype [mscorlib]System.Nullable`1 IL_00be: dup IL_00bf: ldc.i4.4 IL_00c0: ldarg.0 IL_00c1: call instance class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetMyClass() IL_00c6: dup IL_00c7: brtrue.s IL_00d5 IL_00c9: pop IL_00ca: ldloca.s V_0 IL_00cc: initobj valuetype [mscorlib]System.Nullable`1 IL_00d2: ldloc.0 IL_00d3: br.s IL_00f3 IL_00d5: call instance class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass::get_Property() IL_00da: dup IL_00db: brtrue.s IL_00e9 IL_00dd: pop IL_00de: ldloca.s V_0 IL_00e0: initobj valuetype [mscorlib]System.Nullable`1 IL_00e6: ldloc.0 IL_00e7: br.s IL_00f3 IL_00e9: ldfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass::IntVal IL_00ee: newobj instance void valuetype [mscorlib]System.Nullable`1::.ctor(!0) IL_00f3: stelem valuetype [mscorlib]System.Nullable`1 IL_00f8: dup IL_00f9: ldc.i4.5 IL_00fa: ldarg.0 IL_00fb: call instance class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetMyClass() IL_0100: dup IL_0101: brtrue.s IL_010f IL_0103: pop IL_0104: ldloca.s V_0 IL_0106: initobj valuetype [mscorlib]System.Nullable`1 IL_010c: ldloc.0 IL_010d: br.s IL_0124 IL_010f: ldarg.0 IL_0110: call instance int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetInt() IL_0115: call instance class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass::Method(int32) IL_011a: ldfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass::IntVal IL_011f: newobj instance void valuetype [mscorlib]System.Nullable`1::.ctor(!0) IL_0124: stelem valuetype [mscorlib]System.Nullable`1 IL_0129: dup IL_012a: ldc.i4.6 IL_012b: ldarg.0 IL_012c: call instance class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetMyClass() IL_0131: dup IL_0132: brtrue.s IL_0140 IL_0134: pop IL_0135: ldloca.s V_0 IL_0137: initobj valuetype [mscorlib]System.Nullable`1 IL_013d: ldloc.0 IL_013e: br.s IL_0164 IL_0140: ldarg.0 IL_0141: call instance int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetInt() IL_0146: call instance class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass::Method(int32) IL_014b: dup IL_014c: brtrue.s IL_015a IL_014e: pop IL_014f: ldloca.s V_0 IL_0151: initobj valuetype [mscorlib]System.Nullable`1 IL_0157: ldloc.0 IL_0158: br.s IL_0164 IL_015a: ldfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass::IntVal IL_015f: newobj instance void valuetype [mscorlib]System.Nullable`1::.ctor(!0) IL_0164: stelem valuetype [mscorlib]System.Nullable`1 IL_0169: dup IL_016a: ldc.i4.7 IL_016b: ldarg.0 IL_016c: call instance class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetMyClass() IL_0171: dup IL_0172: brtrue.s IL_0180 IL_0174: pop IL_0175: ldloca.s V_0 IL_0177: initobj valuetype [mscorlib]System.Nullable`1 IL_017d: ldloc.0 IL_017e: br.s IL_0195 IL_0180: ldarg.0 IL_0181: call instance int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetInt() IL_0186: call instance class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass::get_Item(int32) IL_018b: ldfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass::IntVal IL_0190: newobj instance void valuetype [mscorlib]System.Nullable`1::.ctor(!0) IL_0195: stelem valuetype [mscorlib]System.Nullable`1 IL_019a: dup IL_019b: ldc.i4.8 IL_019c: ldarg.0 IL_019d: call instance class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetMyClass() IL_01a2: dup IL_01a3: brtrue.s IL_01b1 IL_01a5: pop IL_01a6: ldloca.s V_0 IL_01a8: initobj valuetype [mscorlib]System.Nullable`1 IL_01ae: ldloc.0 IL_01af: br.s IL_01d5 IL_01b1: ldarg.0 IL_01b2: call instance int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetInt() IL_01b7: call instance class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass::get_Item(int32) IL_01bc: dup IL_01bd: brtrue.s IL_01cb IL_01bf: pop IL_01c0: ldloca.s V_0 IL_01c2: initobj valuetype [mscorlib]System.Nullable`1 IL_01c8: ldloc.0 IL_01c9: br.s IL_01d5 IL_01cb: ldfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass::IntVal IL_01d0: newobj instance void valuetype [mscorlib]System.Nullable`1::.ctor(!0) IL_01d5: stelem valuetype [mscorlib]System.Nullable`1 IL_01da: stloc.1 IL_01db: br.s IL_01dd IL_01dd: ldloc.1 IL_01de: ret } // end of method NullPropagation::ChainsOnClass .method public hidebysig instance valuetype [mscorlib]System.Nullable`1[] ChainsStruct() cil managed { // Code size 589 (0x24d) .maxstack 5 .locals init (valuetype [mscorlib]System.Nullable`1 V_0, valuetype [mscorlib]System.Nullable`1 V_1, valuetype ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyStruct V_2, valuetype [mscorlib]System.Nullable`1 V_3, valuetype [mscorlib]System.Nullable`1[] V_4) IL_0000: nop IL_0001: ldc.i4.8 IL_0002: newarr valuetype [mscorlib]System.Nullable`1 IL_0007: dup IL_0008: ldc.i4.0 IL_0009: ldarg.0 IL_000a: call instance valuetype [mscorlib]System.Nullable`1 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetMyStruct() IL_000f: stloc.0 IL_0010: ldloca.s V_0 IL_0012: dup IL_0013: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue() IL_0018: brtrue.s IL_0026 IL_001a: pop IL_001b: ldloca.s V_1 IL_001d: initobj valuetype [mscorlib]System.Nullable`1 IL_0023: ldloc.1 IL_0024: br.s IL_0035 IL_0026: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault() IL_002b: ldfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyStruct::IntVal IL_0030: newobj instance void valuetype [mscorlib]System.Nullable`1::.ctor(!0) IL_0035: stelem valuetype [mscorlib]System.Nullable`1 IL_003a: dup IL_003b: ldc.i4.1 IL_003c: ldarg.0 IL_003d: call instance valuetype [mscorlib]System.Nullable`1 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetMyStruct() IL_0042: stloc.0 IL_0043: ldloca.s V_0 IL_0045: dup IL_0046: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue() IL_004b: brtrue.s IL_0059 IL_004d: pop IL_004e: ldloca.s V_1 IL_0050: initobj valuetype [mscorlib]System.Nullable`1 IL_0056: ldloc.1 IL_0057: br.s IL_006d IL_0059: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault() IL_005e: ldfld class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyStruct::Field IL_0063: ldfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass::IntVal IL_0068: newobj instance void valuetype [mscorlib]System.Nullable`1::.ctor(!0) IL_006d: stelem valuetype [mscorlib]System.Nullable`1 IL_0072: dup IL_0073: ldc.i4.2 IL_0074: ldarg.0 IL_0075: call instance valuetype [mscorlib]System.Nullable`1 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetMyStruct() IL_007a: stloc.0 IL_007b: ldloca.s V_0 IL_007d: dup IL_007e: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue() IL_0083: brtrue.s IL_0091 IL_0085: pop IL_0086: ldloca.s V_1 IL_0088: initobj valuetype [mscorlib]System.Nullable`1 IL_008e: ldloc.1 IL_008f: br.s IL_00b4 IL_0091: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault() IL_0096: ldfld class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyStruct::Field IL_009b: dup IL_009c: brtrue.s IL_00aa IL_009e: pop IL_009f: ldloca.s V_1 IL_00a1: initobj valuetype [mscorlib]System.Nullable`1 IL_00a7: ldloc.1 IL_00a8: br.s IL_00b4 IL_00aa: ldfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass::IntVal IL_00af: newobj instance void valuetype [mscorlib]System.Nullable`1::.ctor(!0) IL_00b4: stelem valuetype [mscorlib]System.Nullable`1 IL_00b9: dup IL_00ba: ldc.i4.3 IL_00bb: ldarg.0 IL_00bc: call instance valuetype [mscorlib]System.Nullable`1 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetMyStruct() IL_00c1: stloc.0 IL_00c2: ldloca.s V_0 IL_00c4: dup IL_00c5: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue() IL_00ca: brtrue.s IL_00d8 IL_00cc: pop IL_00cd: ldloca.s V_1 IL_00cf: initobj valuetype [mscorlib]System.Nullable`1 IL_00d5: ldloc.1 IL_00d6: br.s IL_00ef IL_00d8: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault() IL_00dd: stloc.2 IL_00de: ldloca.s V_2 IL_00e0: call instance valuetype ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyStruct ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyStruct::get_Property2() IL_00e5: ldfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyStruct::IntVal IL_00ea: newobj instance void valuetype [mscorlib]System.Nullable`1::.ctor(!0) IL_00ef: stelem valuetype [mscorlib]System.Nullable`1 IL_00f4: dup IL_00f5: ldc.i4.4 IL_00f6: ldarg.0 IL_00f7: call instance valuetype [mscorlib]System.Nullable`1 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetMyStruct() IL_00fc: stloc.0 IL_00fd: ldloca.s V_0 IL_00ff: dup IL_0100: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue() IL_0105: brtrue.s IL_0113 IL_0107: pop IL_0108: ldloca.s V_1 IL_010a: initobj valuetype [mscorlib]System.Nullable`1 IL_0110: ldloc.1 IL_0111: br.s IL_0146 IL_0113: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault() IL_0118: stloc.2 IL_0119: ldloca.s V_2 IL_011b: call instance valuetype [mscorlib]System.Nullable`1 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyStruct::get_Property1() IL_0120: stloc.3 IL_0121: ldloca.s V_3 IL_0123: dup IL_0124: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue() IL_0129: brtrue.s IL_0137 IL_012b: pop IL_012c: ldloca.s V_1 IL_012e: initobj valuetype [mscorlib]System.Nullable`1 IL_0134: ldloc.1 IL_0135: br.s IL_0146 IL_0137: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault() IL_013c: ldfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyStruct::IntVal IL_0141: newobj instance void valuetype [mscorlib]System.Nullable`1::.ctor(!0) IL_0146: stelem valuetype [mscorlib]System.Nullable`1 IL_014b: dup IL_014c: ldc.i4.5 IL_014d: ldarg.0 IL_014e: call instance valuetype [mscorlib]System.Nullable`1 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetMyStruct() IL_0153: stloc.0 IL_0154: ldloca.s V_0 IL_0156: dup IL_0157: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue() IL_015c: brtrue.s IL_016a IL_015e: pop IL_015f: ldloca.s V_1 IL_0161: initobj valuetype [mscorlib]System.Nullable`1 IL_0167: ldloc.1 IL_0168: br.s IL_0187 IL_016a: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault() IL_016f: stloc.2 IL_0170: ldloca.s V_2 IL_0172: ldarg.0 IL_0173: call instance int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetInt() IL_0178: call instance valuetype ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyStruct ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyStruct::Method2(int32) IL_017d: ldfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyStruct::IntVal IL_0182: newobj instance void valuetype [mscorlib]System.Nullable`1::.ctor(!0) IL_0187: stelem valuetype [mscorlib]System.Nullable`1 IL_018c: dup IL_018d: ldc.i4.6 IL_018e: ldarg.0 IL_018f: call instance valuetype [mscorlib]System.Nullable`1 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetMyStruct() IL_0194: stloc.0 IL_0195: ldloca.s V_0 IL_0197: dup IL_0198: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue() IL_019d: brtrue.s IL_01ab IL_019f: pop IL_01a0: ldloca.s V_1 IL_01a2: initobj valuetype [mscorlib]System.Nullable`1 IL_01a8: ldloc.1 IL_01a9: br.s IL_01e4 IL_01ab: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault() IL_01b0: stloc.2 IL_01b1: ldloca.s V_2 IL_01b3: ldarg.0 IL_01b4: call instance int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetInt() IL_01b9: call instance valuetype [mscorlib]System.Nullable`1 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyStruct::Method1(int32) IL_01be: stloc.3 IL_01bf: ldloca.s V_3 IL_01c1: dup IL_01c2: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue() IL_01c7: brtrue.s IL_01d5 IL_01c9: pop IL_01ca: ldloca.s V_1 IL_01cc: initobj valuetype [mscorlib]System.Nullable`1 IL_01d2: ldloc.1 IL_01d3: br.s IL_01e4 IL_01d5: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault() IL_01da: ldfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyStruct::IntVal IL_01df: newobj instance void valuetype [mscorlib]System.Nullable`1::.ctor(!0) IL_01e4: stelem valuetype [mscorlib]System.Nullable`1 IL_01e9: dup IL_01ea: ldc.i4.7 IL_01eb: ldarg.0 IL_01ec: call instance valuetype [mscorlib]System.Nullable`1 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetMyStruct() IL_01f1: stloc.0 IL_01f2: ldloca.s V_0 IL_01f4: dup IL_01f5: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue() IL_01fa: brtrue.s IL_0208 IL_01fc: pop IL_01fd: ldloca.s V_1 IL_01ff: initobj valuetype [mscorlib]System.Nullable`1 IL_0205: ldloc.1 IL_0206: br.s IL_0241 IL_0208: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault() IL_020d: stloc.2 IL_020e: ldloca.s V_2 IL_0210: ldarg.0 IL_0211: call instance int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetInt() IL_0216: call instance valuetype [mscorlib]System.Nullable`1 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyStruct::get_Item(int32) IL_021b: stloc.3 IL_021c: ldloca.s V_3 IL_021e: dup IL_021f: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue() IL_0224: brtrue.s IL_0232 IL_0226: pop IL_0227: ldloca.s V_1 IL_0229: initobj valuetype [mscorlib]System.Nullable`1 IL_022f: ldloc.1 IL_0230: br.s IL_0241 IL_0232: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault() IL_0237: ldfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyStruct::IntVal IL_023c: newobj instance void valuetype [mscorlib]System.Nullable`1::.ctor(!0) IL_0241: stelem valuetype [mscorlib]System.Nullable`1 IL_0246: stloc.s V_4 IL_0248: br.s IL_024a IL_024a: ldloc.s V_4 IL_024c: ret } // end of method NullPropagation::ChainsStruct .method public hidebysig instance int32 CoalescingReturn() cil managed { // Code size 24 (0x18) .maxstack 2 .locals init (int32 V_0) IL_0000: nop IL_0001: ldarg.0 IL_0002: call instance class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetMyClass() IL_0007: dup IL_0008: brtrue.s IL_000e IL_000a: pop IL_000b: ldc.i4.1 IL_000c: br.s IL_0013 IL_000e: ldfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass::IntVal IL_0013: stloc.0 IL_0014: br.s IL_0016 IL_0016: ldloc.0 IL_0017: ret } // end of method NullPropagation::CoalescingReturn .method public hidebysig instance void Coalescing() cil managed { // Code size 27 (0x1b) .maxstack 8 IL_0000: nop IL_0001: ldarg.0 IL_0002: ldarg.0 IL_0003: call instance class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetMyClass() IL_0008: dup IL_0009: brtrue.s IL_000f IL_000b: pop IL_000c: ldc.i4.1 IL_000d: br.s IL_0014 IL_000f: ldfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass::IntVal IL_0014: call instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::Use(!!0) IL_0019: nop IL_001a: ret } // end of method NullPropagation::Coalescing .method public hidebysig instance void CoalescingString() cil managed { // Code size 36 (0x24) .maxstack 8 IL_0000: nop IL_0001: ldarg.0 IL_0002: ldarg.0 IL_0003: call instance class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::GetMyClass() IL_0008: dup IL_0009: brtrue.s IL_000f IL_000b: pop IL_000c: ldnull IL_000d: br.s IL_0014 IL_000f: ldfld string ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass::Text IL_0014: dup IL_0015: brtrue.s IL_001d IL_0017: pop IL_0018: ldstr "Hello" IL_001d: call instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation::Use(!!0) IL_0022: nop IL_0023: ret } // end of method NullPropagation::CoalescingString .method public hidebysig instance void InvokeDelegate(class [mscorlib]System.EventHandler eh) cil managed { // Code size 20 (0x14) .maxstack 8 IL_0000: nop IL_0001: ldarg.1 IL_0002: brtrue.s IL_0006 IL_0004: br.s IL_0013 IL_0006: ldarg.1 IL_0007: ldnull IL_0008: ldsfld class [mscorlib]System.EventArgs [mscorlib]System.EventArgs::Empty IL_000d: callvirt instance void [mscorlib]System.EventHandler::Invoke(object, class [mscorlib]System.EventArgs) IL_0012: nop IL_0013: ret } // end of method NullPropagation::InvokeDelegate .method public hidebysig instance valuetype [mscorlib]System.Nullable`1 InvokeDelegate(class [mscorlib]System.Func`1 f) cil managed { // Code size 31 (0x1f) .maxstack 1 .locals init (valuetype [mscorlib]System.Nullable`1 V_0, valuetype [mscorlib]System.Nullable`1 V_1) IL_0000: nop IL_0001: ldarg.1 IL_0002: brtrue.s IL_000f IL_0004: ldloca.s V_0 IL_0006: initobj valuetype [mscorlib]System.Nullable`1 IL_000c: ldloc.0 IL_000d: br.s IL_001a IL_000f: ldarg.1 IL_0010: callvirt instance !0 class [mscorlib]System.Func`1::Invoke() IL_0015: newobj instance void valuetype [mscorlib]System.Nullable`1::.ctor(!0) IL_001a: stloc.1 IL_001b: br.s IL_001d IL_001d: ldloc.1 IL_001e: ret } // end of method NullPropagation::InvokeDelegate .method private hidebysig instance void NotNullPropagation(class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass c) cil managed { // Code size 77 (0x4d) .maxstack 2 .locals init (bool V_0, bool V_1) IL_0000: nop IL_0001: ldarg.1 IL_0002: brfalse.s IL_000f IL_0004: ldarg.1 IL_0005: ldfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass::IntVal IL_000a: ldc.i4.0 IL_000b: cgt.un IL_000d: br.s IL_0010 IL_000f: ldc.i4.0 IL_0010: stloc.0 IL_0011: ldloc.0 IL_0012: brfalse.s IL_0021 IL_0014: nop IL_0015: ldstr "non-zero" IL_001a: call void [mscorlib]System.Console::WriteLine(string) IL_001f: nop IL_0020: nop IL_0021: ldarg.1 IL_0022: brfalse.s IL_002f IL_0024: ldarg.1 IL_0025: ldfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass::IntVal IL_002a: ldc.i4.0 IL_002b: ceq IL_002d: br.s IL_0030 IL_002f: ldc.i4.1 IL_0030: stloc.1 IL_0031: ldloc.1 IL_0032: brfalse.s IL_0041 IL_0034: nop IL_0035: ldstr "null or zero" IL_003a: call void [mscorlib]System.Console::WriteLine(string) IL_003f: nop IL_0040: nop IL_0041: ldstr "end of method" IL_0046: call void [mscorlib]System.Console::WriteLine(string) IL_004b: nop IL_004c: ret } // end of method NullPropagation::NotNullPropagation .method private hidebysig instance void Setter(class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass c) cil managed { // Code size 43 (0x2b) .maxstack 2 .locals init (bool V_0, bool V_1) IL_0000: nop IL_0001: ldarg.1 IL_0002: ldnull IL_0003: cgt.un IL_0005: stloc.0 IL_0006: ldloc.0 IL_0007: brfalse.s IL_0012 IL_0009: nop IL_000a: ldarg.1 IL_000b: ldc.i4.1 IL_000c: stfld int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass::IntVal IL_0011: nop IL_0012: call void [mscorlib]System.Console::WriteLine() IL_0017: nop IL_0018: ldarg.1 IL_0019: ldnull IL_001a: cgt.un IL_001c: stloc.1 IL_001d: ldloc.1 IL_001e: brfalse.s IL_002a IL_0020: nop IL_0021: ldarg.1 IL_0022: ldnull IL_0023: callvirt instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass::set_Property(class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/MyClass) IL_0028: nop IL_0029: nop IL_002a: ret } // end of method NullPropagation::Setter .method private hidebysig static valuetype [mscorlib]System.Nullable`1 GenericUnconstrainedInt<(ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/ITest) T>(!!T t) cil managed { // Code size 43 (0x2b) .maxstack 1 .locals init (valuetype [mscorlib]System.Nullable`1 V_0, valuetype [mscorlib]System.Nullable`1 V_1) IL_0000: nop IL_0001: ldarg.0 IL_0002: box !!T IL_0007: brtrue.s IL_0014 IL_0009: ldloca.s V_0 IL_000b: initobj valuetype [mscorlib]System.Nullable`1 IL_0011: ldloc.0 IL_0012: br.s IL_0026 IL_0014: ldarga.s t IL_0016: constrained. !!T IL_001c: callvirt instance int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/ITest::Int() IL_0021: newobj instance void valuetype [mscorlib]System.Nullable`1::.ctor(!0) IL_0026: stloc.1 IL_0027: br.s IL_0029 IL_0029: ldloc.1 IL_002a: ret } // end of method NullPropagation::GenericUnconstrainedInt .method private hidebysig static valuetype [mscorlib]System.Nullable`1 GenericClassConstraintInt(!!T t) cil managed { // Code size 37 (0x25) .maxstack 2 .locals init (valuetype [mscorlib]System.Nullable`1 V_0, valuetype [mscorlib]System.Nullable`1 V_1) IL_0000: nop IL_0001: ldarg.0 IL_0002: box !!T IL_0007: dup IL_0008: brtrue.s IL_0016 IL_000a: pop IL_000b: ldloca.s V_0 IL_000d: initobj valuetype [mscorlib]System.Nullable`1 IL_0013: ldloc.0 IL_0014: br.s IL_0020 IL_0016: callvirt instance int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/ITest::Int() IL_001b: newobj instance void valuetype [mscorlib]System.Nullable`1::.ctor(!0) IL_0020: stloc.1 IL_0021: br.s IL_0023 IL_0023: ldloc.1 IL_0024: ret } // end of method NullPropagation::GenericClassConstraintInt .method private hidebysig static valuetype [mscorlib]System.Nullable`1 GenericStructConstraintInt(valuetype [mscorlib]System.Nullable`1 t) cil managed { // Code size 52 (0x34) .maxstack 1 .locals init (valuetype [mscorlib]System.Nullable`1 V_0, !!T V_1, valuetype [mscorlib]System.Nullable`1 V_2) IL_0000: nop IL_0001: ldarga.s t IL_0003: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue() IL_0008: brtrue.s IL_0015 IL_000a: ldloca.s V_0 IL_000c: initobj valuetype [mscorlib]System.Nullable`1 IL_0012: ldloc.0 IL_0013: br.s IL_002f IL_0015: ldarga.s t IL_0017: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault() IL_001c: stloc.1 IL_001d: ldloca.s V_1 IL_001f: constrained. !!T IL_0025: callvirt instance int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/ITest::Int() IL_002a: newobj instance void valuetype [mscorlib]System.Nullable`1::.ctor(!0) IL_002f: stloc.2 IL_0030: br.s IL_0032 IL_0032: ldloc.2 IL_0033: ret } // end of method NullPropagation::GenericStructConstraintInt .method private hidebysig static valuetype [mscorlib]System.Nullable`1 GenericRefClassConstraintInt(!!T& t) cil managed { // Code size 42 (0x2a) .maxstack 2 .locals init (valuetype [mscorlib]System.Nullable`1 V_0, valuetype [mscorlib]System.Nullable`1 V_1) IL_0000: nop IL_0001: ldarg.0 IL_0002: ldobj !!T IL_0007: box !!T IL_000c: dup IL_000d: brtrue.s IL_001b IL_000f: pop IL_0010: ldloca.s V_0 IL_0012: initobj valuetype [mscorlib]System.Nullable`1 IL_0018: ldloc.0 IL_0019: br.s IL_0025 IL_001b: callvirt instance int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/ITest::Int() IL_0020: newobj instance void valuetype [mscorlib]System.Nullable`1::.ctor(!0) IL_0025: stloc.1 IL_0026: br.s IL_0028 IL_0028: ldloc.1 IL_0029: ret } // end of method NullPropagation::GenericRefClassConstraintInt .method private hidebysig static valuetype [mscorlib]System.Nullable`1 GenericRefStructConstraintInt(valuetype [mscorlib]System.Nullable`1& t) cil managed { // Code size 51 (0x33) .maxstack 2 .locals init (valuetype [mscorlib]System.Nullable`1 V_0, !!T V_1, valuetype [mscorlib]System.Nullable`1 V_2) IL_0000: nop IL_0001: ldarg.0 IL_0002: dup IL_0003: call instance bool valuetype [mscorlib]System.Nullable`1::get_HasValue() IL_0008: brtrue.s IL_0016 IL_000a: pop IL_000b: ldloca.s V_0 IL_000d: initobj valuetype [mscorlib]System.Nullable`1 IL_0013: ldloc.0 IL_0014: br.s IL_002e IL_0016: call instance !0 valuetype [mscorlib]System.Nullable`1::GetValueOrDefault() IL_001b: stloc.1 IL_001c: ldloca.s V_1 IL_001e: constrained. !!T IL_0024: callvirt instance int32 ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/ITest::Int() IL_0029: newobj instance void valuetype [mscorlib]System.Nullable`1::.ctor(!0) IL_002e: stloc.2 IL_002f: br.s IL_0031 IL_0031: ldloc.2 IL_0032: ret } // end of method NullPropagation::GenericRefStructConstraintInt .method private hidebysig static object DynamicNullProp(object a) cil managed { .param [0] .custom instance void [System.Core]System.Runtime.CompilerServices.DynamicAttribute::.ctor() = ( 01 00 00 00 ) .param [1] .custom instance void [System.Core]System.Runtime.CompilerServices.DynamicAttribute::.ctor() = ( 01 00 00 00 ) // Code size 353 (0x161) .maxstack 10 .locals init (object V_0, object V_1, object V_2) IL_0000: nop IL_0001: ldarg.0 IL_0002: stloc.0 IL_0003: ldloc.0 IL_0004: brtrue.s IL_000c IL_0006: ldnull IL_0007: br IL_015c IL_000c: ldsfld class [System.Core]System.Runtime.CompilerServices.CallSite`1> ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/'<>o__27'::'<>p__1' IL_0011: brfalse.s IL_0015 IL_0013: br.s IL_004f IL_0015: ldc.i4.0 IL_0016: ldstr "c" IL_001b: ldnull IL_001c: ldtoken ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation IL_0021: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle) IL_0026: ldc.i4.2 IL_0027: newarr [Microsoft.CSharp]Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo IL_002c: dup IL_002d: ldc.i4.0 IL_002e: ldc.i4.0 IL_002f: ldnull IL_0030: call class [Microsoft.CSharp]Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo [Microsoft.CSharp]Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo::Create(valuetype [Microsoft.CSharp]Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfoFlags, string) IL_0035: stelem.ref IL_0036: dup IL_0037: ldc.i4.1 IL_0038: ldc.i4.3 IL_0039: ldnull IL_003a: call class [Microsoft.CSharp]Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo [Microsoft.CSharp]Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo::Create(valuetype [Microsoft.CSharp]Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfoFlags, string) IL_003f: stelem.ref IL_0040: call class [System.Core]System.Runtime.CompilerServices.CallSiteBinder [Microsoft.CSharp]Microsoft.CSharp.RuntimeBinder.Binder::InvokeMember(valuetype [Microsoft.CSharp]Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags, string, class [mscorlib]System.Collections.Generic.IEnumerable`1, class [mscorlib]System.Type, class [mscorlib]System.Collections.Generic.IEnumerable`1) IL_0045: call class [System.Core]System.Runtime.CompilerServices.CallSite`1 class [System.Core]System.Runtime.CompilerServices.CallSite`1>::Create(class [System.Core]System.Runtime.CompilerServices.CallSiteBinder) IL_004a: stsfld class [System.Core]System.Runtime.CompilerServices.CallSite`1> ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/'<>o__27'::'<>p__1' IL_004f: ldsfld class [System.Core]System.Runtime.CompilerServices.CallSite`1> ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/'<>o__27'::'<>p__1' IL_0054: ldfld !0 class [System.Core]System.Runtime.CompilerServices.CallSite`1>::Target IL_0059: ldsfld class [System.Core]System.Runtime.CompilerServices.CallSite`1> ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/'<>o__27'::'<>p__1' IL_005e: ldsfld class [System.Core]System.Runtime.CompilerServices.CallSite`1> ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/'<>o__27'::'<>p__0' IL_0063: brfalse.s IL_0067 IL_0065: br.s IL_0096 IL_0067: ldc.i4.0 IL_0068: ldstr "b" IL_006d: ldtoken ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation IL_0072: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle) IL_0077: ldc.i4.1 IL_0078: newarr [Microsoft.CSharp]Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo IL_007d: dup IL_007e: ldc.i4.0 IL_007f: ldc.i4.0 IL_0080: ldnull IL_0081: call class [Microsoft.CSharp]Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo [Microsoft.CSharp]Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo::Create(valuetype [Microsoft.CSharp]Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfoFlags, string) IL_0086: stelem.ref IL_0087: call class [System.Core]System.Runtime.CompilerServices.CallSiteBinder [Microsoft.CSharp]Microsoft.CSharp.RuntimeBinder.Binder::GetMember(valuetype [Microsoft.CSharp]Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags, string, class [mscorlib]System.Type, class [mscorlib]System.Collections.Generic.IEnumerable`1) IL_008c: call class [System.Core]System.Runtime.CompilerServices.CallSite`1 class [System.Core]System.Runtime.CompilerServices.CallSite`1>::Create(class [System.Core]System.Runtime.CompilerServices.CallSiteBinder) IL_0091: stsfld class [System.Core]System.Runtime.CompilerServices.CallSite`1> ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/'<>o__27'::'<>p__0' IL_0096: ldsfld class [System.Core]System.Runtime.CompilerServices.CallSite`1> ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/'<>o__27'::'<>p__0' IL_009b: ldfld !0 class [System.Core]System.Runtime.CompilerServices.CallSite`1>::Target IL_00a0: ldsfld class [System.Core]System.Runtime.CompilerServices.CallSite`1> ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/'<>o__27'::'<>p__0' IL_00a5: ldloc.0 IL_00a6: callvirt instance !2 class [mscorlib]System.Func`3::Invoke(!0, !1) IL_00ab: ldc.i4.1 IL_00ac: callvirt instance !3 class [mscorlib]System.Func`4::Invoke(!0, !1, !2) IL_00b1: stloc.1 IL_00b2: ldloc.1 IL_00b3: brtrue.s IL_00bb IL_00b5: ldnull IL_00b6: br IL_015c IL_00bb: ldsfld class [System.Core]System.Runtime.CompilerServices.CallSite`1> ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/'<>o__27'::'<>p__3' IL_00c0: brfalse.s IL_00c4 IL_00c2: br.s IL_00f8 IL_00c4: ldc.i4.0 IL_00c5: ldtoken ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation IL_00ca: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle) IL_00cf: ldc.i4.2 IL_00d0: newarr [Microsoft.CSharp]Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo IL_00d5: dup IL_00d6: ldc.i4.0 IL_00d7: ldc.i4.0 IL_00d8: ldnull IL_00d9: call class [Microsoft.CSharp]Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo [Microsoft.CSharp]Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo::Create(valuetype [Microsoft.CSharp]Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfoFlags, string) IL_00de: stelem.ref IL_00df: dup IL_00e0: ldc.i4.1 IL_00e1: ldc.i4.3 IL_00e2: ldnull IL_00e3: call class [Microsoft.CSharp]Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo [Microsoft.CSharp]Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo::Create(valuetype [Microsoft.CSharp]Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfoFlags, string) IL_00e8: stelem.ref IL_00e9: call class [System.Core]System.Runtime.CompilerServices.CallSiteBinder [Microsoft.CSharp]Microsoft.CSharp.RuntimeBinder.Binder::GetIndex(valuetype [Microsoft.CSharp]Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags, class [mscorlib]System.Type, class [mscorlib]System.Collections.Generic.IEnumerable`1) IL_00ee: call class [System.Core]System.Runtime.CompilerServices.CallSite`1 class [System.Core]System.Runtime.CompilerServices.CallSite`1>::Create(class [System.Core]System.Runtime.CompilerServices.CallSiteBinder) IL_00f3: stsfld class [System.Core]System.Runtime.CompilerServices.CallSite`1> ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/'<>o__27'::'<>p__3' IL_00f8: ldsfld class [System.Core]System.Runtime.CompilerServices.CallSite`1> ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/'<>o__27'::'<>p__3' IL_00fd: ldfld !0 class [System.Core]System.Runtime.CompilerServices.CallSite`1>::Target IL_0102: ldsfld class [System.Core]System.Runtime.CompilerServices.CallSite`1> ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/'<>o__27'::'<>p__3' IL_0107: ldsfld class [System.Core]System.Runtime.CompilerServices.CallSite`1> ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/'<>o__27'::'<>p__2' IL_010c: brfalse.s IL_0110 IL_010e: br.s IL_0140 IL_0110: ldc.i4.s 64 IL_0112: ldstr "d" IL_0117: ldtoken ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation IL_011c: call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle) IL_0121: ldc.i4.1 IL_0122: newarr [Microsoft.CSharp]Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo IL_0127: dup IL_0128: ldc.i4.0 IL_0129: ldc.i4.0 IL_012a: ldnull IL_012b: call class [Microsoft.CSharp]Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo [Microsoft.CSharp]Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo::Create(valuetype [Microsoft.CSharp]Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfoFlags, string) IL_0130: stelem.ref IL_0131: call class [System.Core]System.Runtime.CompilerServices.CallSiteBinder [Microsoft.CSharp]Microsoft.CSharp.RuntimeBinder.Binder::GetMember(valuetype [Microsoft.CSharp]Microsoft.CSharp.RuntimeBinder.CSharpBinderFlags, string, class [mscorlib]System.Type, class [mscorlib]System.Collections.Generic.IEnumerable`1) IL_0136: call class [System.Core]System.Runtime.CompilerServices.CallSite`1 class [System.Core]System.Runtime.CompilerServices.CallSite`1>::Create(class [System.Core]System.Runtime.CompilerServices.CallSiteBinder) IL_013b: stsfld class [System.Core]System.Runtime.CompilerServices.CallSite`1> ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/'<>o__27'::'<>p__2' IL_0140: ldsfld class [System.Core]System.Runtime.CompilerServices.CallSite`1> ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/'<>o__27'::'<>p__2' IL_0145: ldfld !0 class [System.Core]System.Runtime.CompilerServices.CallSite`1>::Target IL_014a: ldsfld class [System.Core]System.Runtime.CompilerServices.CallSite`1> ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation/'<>o__27'::'<>p__2' IL_014f: ldloc.1 IL_0150: callvirt instance !2 class [mscorlib]System.Func`3::Invoke(!0, !1) IL_0155: ldc.i4.s 10 IL_0157: callvirt instance !3 class [mscorlib]System.Func`4::Invoke(!0, !1, !2) IL_015c: stloc.2 IL_015d: br.s IL_015f IL_015f: ldloc.2 IL_0160: ret } // end of method NullPropagation::DynamicNullProp .method public hidebysig specialname rtspecialname instance void .ctor() cil managed { // Code size 8 (0x8) .maxstack 8 IL_0000: ldarg.0 IL_0001: call instance void [mscorlib]System.Object::.ctor() IL_0006: nop IL_0007: ret } // end of method NullPropagation::.ctor } // end of class ICSharpCode.Decompiler.Tests.TestCases.Pretty.NullPropagation // ============================================================= // *********** DISASSEMBLY COMPLETE ***********************