Default interface methods IL tests from CoreCLR
[mono-project.git] / mono / tests / methodimpl.il
blob7f9444283ed0eb2ed177913479d61d2fbf05b00e
2 //  Microsoft (R) .NET Framework IL Disassembler.  Version 4.6.1055.0
3 //  Copyright (c) Microsoft Corporation.  All rights reserved.
7 // Metadata version: v4.0.30319
8 .assembly extern mscorlib
10   .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )                         // .z\V.4..
11   .ver 4:0:0:0
13 .assembly methodimpl
15   .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(int32) = ( 01 00 08 00 00 00 00 00 ) 
16   .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
17                                                                                                              63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 )       // ceptionThrows.
19   // --- The following custom attribute is added automatically, do not uncomment -------
20   //  .custom instance void [mscorlib]System.Diagnostics.DebuggableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggableAttribute/DebuggingModes) = ( 01 00 07 01 00 00 00 00 ) 
22   .hash algorithm 0x00008004
23   .ver 0:0:0:0
25 .module methodimpl.exe
26 // MVID: {F249A85F-3FD2-488F-B084-97B542AD68D6}
27 .imagebase 0x00400000
28 .file alignment 0x00000200
29 .stackreserve 0x00100000
30 .subsystem 0x0003       // WINDOWS_CUI
31 .corflags 0x00000001    //  ILONLY
32 // Image base: 0x02FD0000
35 // =============== CLASS MEMBERS DECLARATION ===================
37 .class interface private abstract auto ansi IFoo
39   .method public hidebysig newslot virtual 
40           instance int32  Foo1(int32 a) cil managed
41   {
42     // Code size       21 (0x15)
43     .maxstack  2
44     .locals init (int32 V_0)
45     IL_0000:  nop
46     IL_0001:  ldstr      "At IIFoo.Foo1"
47     IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
48     IL_000b:  nop
49     IL_000c:  ldarg.1
50     IL_000d:  ldc.i4.s   1
51     IL_000f:  add
52     IL_0010:  stloc.0
53     IL_0011:  br.s       IL_0013
55     IL_0013:  ldloc.0
56     IL_0014:  ret    
57   } // end of method IFoo::Foo1
59   .method public hidebysig newslot virtual 
60           instance int32  Foo2(int32 a) cil managed
61   {
62     // Code size       21 (0x15)
63     .maxstack  2
64     .locals init (int32 V_0)
65     IL_0000:  nop
66     IL_0001:  ldstr      "At IFoo.Foo2"
67     IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
68     IL_000b:  nop
69     IL_000c:  ldarg.1
70     IL_000d:  ldc.i4.s   2
71     IL_000f:  add
72     IL_0010:  stloc.0
73     IL_0011:  br.s       IL_0013
75     IL_0013:  ldloc.0
76     IL_0014:  ret  
77   } // end of method IFoo::Foo2
79   .method public hidebysig newslot virtual 
80           instance int32  Foo3(int32 a) cil managed
81   {
82     // Code size       21 (0x15)
83     .maxstack  2
84     .locals init (int32 V_0)
85     IL_0000:  nop
86     IL_0001:  ldstr      "At IFoo.Foo3"
87     IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
88     IL_000b:  nop
89     IL_000c:  ldarg.1
90     IL_000d:  ldc.i4.s   3
91     IL_000f:  add
92     IL_0010:  stloc.0
93     IL_0011:  br.s       IL_0013
95     IL_0013:  ldloc.0
96     IL_0014:  ret   
97   } // end of method IFoo::Foo3
99   .method public hidebysig newslot virtual 
100           instance int32  Foo4(int32 a) cil managed
101   {
102     // Code size       21 (0x15)
103     .maxstack  2
104     .locals init (int32 V_0)
105     IL_0000:  nop
106     IL_0001:  ldstr      "At IFoo.Foo4"
107     IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
108     IL_000b:  nop
109     IL_000c:  ldarg.1
110     IL_000d:  ldc.i4.s   4
111     IL_000f:  add
112     IL_0010:  stloc.0
113     IL_0011:  br.s       IL_0013
115     IL_0013:  ldloc.0
116     IL_0014:  ret   
117   } // end of method IFoo::Foo4
119   .method public hidebysig newslot virtual 
120           instance int32  Foo5(int32 a) cil managed
121   {
122     // Code size       21 (0x15)
123     .maxstack  2
124     .locals init (int32 V_0)
125     IL_0000:  nop
126     IL_0001:  ldstr      "At IFoo.Foo5"
127     IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
128     IL_000b:  nop
129     IL_000c:  ldarg.1
130     IL_000d:  ldc.i4.s   5
131     IL_000f:  add
132     IL_0010:  stloc.0
133     IL_0011:  br.s       IL_0013
135     IL_0013:  ldloc.0
136     IL_0014:  ret   
137   } // end of method IFoo::Foo5
139   .method public hidebysig newslot virtual 
140           instance int32  Foo6(int32 a) cil managed
141   {
142     // Code size       21 (0x15)
143     .maxstack  2
144     .locals init (int32 V_0)
145     IL_0000:  nop
146     IL_0001:  ldstr      "At IFoo.Foo6"
147     IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
148     IL_000b:  nop
149     IL_000c:  ldarg.1
150     IL_000d:  ldc.i4.s   6
151     IL_000f:  add
152     IL_0010:  stloc.0
153     IL_0011:  br.s       IL_0013
155     IL_0013:  ldloc.0
156     IL_0014:  ret   
157   } // end of method IFoo::Foo6
159   .method public hidebysig newslot virtual 
160           instance int32  Foo7(int32 a) cil managed
161   {
162     // Code size       21 (0x15)
163     .maxstack  2
164     .locals init (int32 V_0)
165     IL_0000:  nop
166     IL_0001:  ldstr      "At IFoo.Foo7"
167     IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
168     IL_000b:  nop
169     IL_000c:  ldarg.1
170     IL_000d:  ldc.i4.s   7
171     IL_000f:  add
172     IL_0010:  stloc.0
173     IL_0011:  br.s       IL_0013
175     IL_0013:  ldloc.0
176     IL_0014:  ret   
177   } // end of method IFoo::Foo7
179   .method public hidebysig newslot virtual 
180           instance int32  Foo8(int32 a) cil managed
181   {
182     // Code size       21 (0x15)
183     .maxstack  2
184     .locals init (int32 V_0)
185     IL_0000:  nop
186     IL_0001:  ldstr      "At IFoo.Foo8"
187     IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
188     IL_000b:  nop
189     IL_000c:  ldarg.1
190     IL_000d:  ldc.i4.s   8
191     IL_000f:  add
192     IL_0010:  stloc.0
193     IL_0011:  br.s       IL_0013
195     IL_0013:  ldloc.0
196     IL_0014:  ret   
197   } // end of method IFoo::Foo8
199   .method public hidebysig newslot virtual 
200           instance int32  Foo9(int32 a) cil managed
201   {
202     // Code size       21 (0x15)
203     .maxstack  2
204     .locals init (int32 V_0)
205     IL_0000:  nop
206     IL_0001:  ldstr      "At IFoo.Foo9"
207     IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
208     IL_000b:  nop
209     IL_000c:  ldarg.1
210     IL_000d:  ldc.i4.s   9
211     IL_000f:  add
212     IL_0010:  stloc.0
213     IL_0011:  br.s       IL_0013
215     IL_0013:  ldloc.0
216     IL_0014:  ret   
217   } // end of method IFoo::Foo9
218 } // end of class IFoo
220 .class interface private abstract auto ansi IBar
221        implements IFoo  
223  .method public hidebysig newslot virtual 
224           instance int32  Bar1(int32 a) cil managed
225   {
226     // Code size       21 (0x15)
227     .maxstack  2
228     .locals init (int32 V_0)
229     IL_0000:  nop
230     IL_0001:  ldstr      "At IIBar.Bar1"
231     IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
232     IL_000b:  nop
233     IL_000c:  ldarg.1
234     IL_000d:  ldc.i4.s   11
235     IL_000f:  add
236     IL_0010:  stloc.0
237     IL_0011:  br.s       IL_0013
239     IL_0013:  ldloc.0
240     IL_0014:  ret    
241   } // end of method IBar::Bar1
243   .method public hidebysig newslot virtual 
244           instance int32  Bar2(int32 a) cil managed
245   {
246     // Code size       21 (0x15)
247     .maxstack  2
248     .locals init (int32 V_0)
249     IL_0000:  nop
250     IL_0001:  ldstr      "At IBar.Bar2"
251     IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
252     IL_000b:  nop
253     IL_000c:  ldarg.1
254     IL_000d:  ldc.i4.s   22
255     IL_000f:  add
256     IL_0010:  stloc.0
257     IL_0011:  br.s       IL_0013
259     IL_0013:  ldloc.0
260     IL_0014:  ret  
261   } // end of method IBar::Bar2
263   .method public hidebysig newslot virtual 
264           instance int32  Bar3(int32 a) cil managed
265   {
266     // Code size       21 (0x15)
267     .maxstack  2
268     .locals init (int32 V_0)
269     IL_0000:  nop
270     IL_0001:  ldstr      "At IBar.Bar3"
271     IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
272     IL_000b:  nop
273     IL_000c:  ldarg.1
274     IL_000d:  ldc.i4.s   33
275     IL_000f:  add
276     IL_0010:  stloc.0
277     IL_0011:  br.s       IL_0013
279     IL_0013:  ldloc.0
280     IL_0014:  ret   
281   } // end of method IBar::Bar3
283   .method public hidebysig newslot virtual 
284           instance int32  Bar4(int32 a) cil managed
285   {
286     // Code size       21 (0x15)
287     .maxstack  2
288     .locals init (int32 V_0)
289     IL_0000:  nop
290     IL_0001:  ldstr      "At IBar.Bar4"
291     IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
292     IL_000b:  nop
293     IL_000c:  ldarg.1
294     IL_000d:  ldc.i4.s   44
295     IL_000f:  add
296     IL_0010:  stloc.0
297     IL_0011:  br.s       IL_0013
299     IL_0013:  ldloc.0
300     IL_0014:  ret   
301   } // end of method IBar::Bar4
303   .method public hidebysig newslot virtual 
304           instance int32  Bar5(int32 a) cil managed
305   {
306     // Code size       21 (0x15)
307     .maxstack  2
308     .locals init (int32 V_0)
309     IL_0000:  nop
310     IL_0001:  ldstr      "At IBar.Bar5"
311     IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
312     IL_000b:  nop
313     IL_000c:  ldarg.1
314     IL_000d:  ldc.i4.s   55
315     IL_000f:  add
316     IL_0010:  stloc.0
317     IL_0011:  br.s       IL_0013
319     IL_0013:  ldloc.0
320     IL_0014:  ret   
321   } // end of method IBar::Bar5
323   .method public hidebysig newslot virtual 
324           instance int32  Bar6(int32 a) cil managed
325   {
326     // Code size       21 (0x15)
327     .maxstack  2
328     .locals init (int32 V_0)
329     IL_0000:  nop
330     IL_0001:  ldstr      "At IBar.Bar6"
331     IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
332     IL_000b:  nop
333     IL_000c:  ldarg.1
334     IL_000d:  ldc.i4.s   66
335     IL_000f:  add
336     IL_0010:  stloc.0
337     IL_0011:  br.s       IL_0013
339     IL_0013:  ldloc.0
340     IL_0014:  ret   
341   } // end of method IBar::Bar6
343   .method public hidebysig newslot virtual 
344           instance int32  Bar7(int32 a) cil managed
345   {
346     // Code size       21 (0x15)
347     .maxstack  2
348     .locals init (int32 V_0)
349     IL_0000:  nop
350     IL_0001:  ldstr      "At IBar.Bar7"
351     IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
352     IL_000b:  nop
353     IL_000c:  ldarg.1
354     IL_000d:  ldc.i4.s   77
355     IL_000f:  add
356     IL_0010:  stloc.0
357     IL_0011:  br.s       IL_0013
359     IL_0013:  ldloc.0
360     IL_0014:  ret   
361   } // end of method IBar::Bar7
363   .method public hidebysig newslot virtual 
364           instance int32  Bar8(int32 a) cil managed
365   {
366     // Code size       21 (0x15)
367     .maxstack  2
368     .locals init (int32 V_0)
369     IL_0000:  nop
370     IL_0001:  ldstr      "At IBar.Bar8"
371     IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
372     IL_000b:  nop
373     IL_000c:  ldarg.1
374     IL_000d:  ldc.i4.s   88
375     IL_000f:  add
376     IL_0010:  stloc.0
377     IL_0011:  br.s       IL_0013
379     IL_0013:  ldloc.0
380     IL_0014:  ret   
381   } // end of method IBar::Bar8
383   .method public hidebysig newslot virtual 
384           instance int32  Bar9(int32 a) cil managed
385   {
386     // Code size       21 (0x15)
387     .maxstack  2
388     .locals init (int32 V_0)
389     IL_0000:  nop
390     IL_0001:  ldstr      "At IBar.Bar9"
391     IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
392     IL_000b:  nop
393     IL_000c:  ldarg.1
394     IL_000d:  ldc.i4.s   99
395     IL_000f:  add
396     IL_0010:  stloc.0
397     IL_0011:  br.s       IL_0013
399     IL_0013:  ldloc.0
400     IL_0014:  ret   
401   } // end of method IBar::Bar9 
403   //////////////////////////////////////////////////////////////////////////////
404   // Overriding IFoo
405   //////////////////////////////////////////////////////////////////////////////
407   .method private hidebysig newslot virtual final 
408           instance int32  IFoo.Foo1(int32 a) cil managed
409   {
410     .override IFoo::Foo1
411     // Code size       21 (0x15)
412     .maxstack  2
413     .locals init (int32 V_0)
414     IL_0000:  nop
415     IL_0001:  ldstr      "At IBar::IFoo.Foo1"
416     IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
417     IL_000b:  nop
418     IL_000c:  ldarg.1
419     IL_000d:  ldc.i4.s   10
420     IL_000f:  add
421     IL_0010:  stloc.0
422     IL_0011:  br.s       IL_0013
424     IL_0013:  ldloc.0
425     IL_0014:  ret
426   } // end of method IBar::IFoo.Foo1  
428   .method private hidebysig newslot virtual final 
429           instance int32  IFoo.Foo2(int32 a) cil managed
430   {
431     .override IFoo::Foo2
432     // Code size       21 (0x15)
433     .maxstack  2
434     .locals init (int32 V_0)
435     IL_0000:  nop
436     IL_0001:  ldstr      "At IBar::IFoo.Foo2"
437     IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
438     IL_000b:  nop
439     IL_000c:  ldarg.1
440     IL_000d:  ldc.i4.s   20
441     IL_000f:  add
442     IL_0010:  stloc.0
443     IL_0011:  br.s       IL_0013
445     IL_0013:  ldloc.0
446     IL_0014:  ret
447   } // end of method IBar::IFoo.Foo2  
449   .method private hidebysig newslot virtual final 
450           instance int32  IFoo.Foo3(int32 a) cil managed
451   {
452     .override IFoo::Foo3
453     // Code size       21 (0x15)
454     .maxstack  2
455     .locals init (int32 V_0)
456     IL_0000:  nop
457     IL_0001:  ldstr      "At IBar::IFoo.Foo3"
458     IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
459     IL_000b:  nop
460     IL_000c:  ldarg.1
461     IL_000d:  ldc.i4.s   30
462     IL_000f:  add
463     IL_0010:  stloc.0
464     IL_0011:  br.s       IL_0013
466     IL_0013:  ldloc.0
467     IL_0014:  ret
468   } // end of method IBar::IFoo.Foo3 
470   .method private hidebysig newslot virtual final 
471           instance int32  IFoo.Foo4(int32 a) cil managed
472   {
473     .override IFoo::Foo4
474     // Code size       21 (0x15)
475     .maxstack  2
476     .locals init (int32 V_0)
477     IL_0000:  nop
478     IL_0001:  ldstr      "At IBar::IFoo.Foo4"
479     IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
480     IL_000b:  nop
481     IL_000c:  ldarg.1
482     IL_000d:  ldc.i4.s   40
483     IL_000f:  add
484     IL_0010:  stloc.0
485     IL_0011:  br.s       IL_0013
487     IL_0013:  ldloc.0
488     IL_0014:  ret
489   } // end of method IBar::IFoo.Foo4  
491   .method private hidebysig newslot virtual final 
492           instance int32  IFoo.Foo5(int32 a) cil managed
493   {
494     .override IFoo::Foo5
495     // Code size       21 (0x15)
496     .maxstack  2
497     .locals init (int32 V_0)
498     IL_0000:  nop
499     IL_0001:  ldstr      "At IBar::IFoo.Foo5"
500     IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
501     IL_000b:  nop
502     IL_000c:  ldarg.1
503     IL_000d:  ldc.i4.s   50
504     IL_000f:  add
505     IL_0010:  stloc.0
506     IL_0011:  br.s       IL_0013
508     IL_0013:  ldloc.0
509     IL_0014:  ret
510   } // end of method IBar::IFoo.Foo5 
511 } // end of class IBar
513 .class interface private abstract auto ansi IBlah
514        implements IBar,
515                   IFoo  
517  .method public hidebysig newslot virtual
518           instance int32  Blah1(int32 c) cil managed
519   {
520     // Code size       21 (0x15)
521     .maxstack  2
522     .locals init (int32 V_0)
523     IL_0000:  nop
524     IL_0001:  ldstr      "At IBlah.Blah1"
525     IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
526     IL_000b:  nop
527     IL_000c:  ldarg.1
528     IL_000d:  ldc.i4     111
529     IL_000f:  add
530     IL_0010:  stloc.0
531     IL_0011:  br.s       IL_0013
533     IL_0013:  ldloc.0
534     IL_0014:  ret     
535   } // end of method IBlah::Blah1
537   .method public hidebysig newslot virtual
538           instance int32  Blah2(int32 c) cil managed
539   {
540     // Code size       21 (0x15)
541     .maxstack  2
542     .locals init (int32 V_0)
543     IL_0000:  nop
544     IL_0001:  ldstr      "At IBlah.Blah2"
545     IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
546     IL_000b:  nop
547     IL_000c:  ldarg.1
548     IL_000d:  ldc.i4     222
549     IL_000f:  add
550     IL_0010:  stloc.0
551     IL_0011:  br.s       IL_0013
553     IL_0013:  ldloc.0
554     IL_0014:  ret
555   } // end of method IBlah::Blah2
557   .method public hidebysig newslot virtual
558           instance int32  Blah3(int32 c) cil managed
559   {
560     // Code size       21 (0x15)
561     .maxstack  2
562     .locals init (int32 V_0)
563     IL_0000:  nop
564     IL_0001:  ldstr      "At IBlah.Blah3"
565     IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
566     IL_000b:  nop
567     IL_000c:  ldarg.1
568     IL_000d:  ldc.i4     333
569     IL_000f:  add
570     IL_0010:  stloc.0
571     IL_0011:  br.s       IL_0013
573     IL_0013:  ldloc.0
574     IL_0014:  ret   
575   } // end of method IBlah::Blah3   
577   //////////////////////////////////////////////////////////////////////////////
578   // Overriding IFoo
579   //////////////////////////////////////////////////////////////////////////////
581   .method private hidebysig newslot virtual final 
582           instance int32  IFoo.Foo6(int32 a) cil managed
583   {
584     .override IFoo::Foo6
585     // Code size       21 (0x15)
586     .maxstack  2
587     .locals init (int32 V_0)
588     IL_0000:  nop
589     IL_0001:  ldstr      "At IBlah::IFoo.Foo6"
590     IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
591     IL_000b:  nop
592     IL_000c:  ldarg.1
593     IL_000d:  ldc.i4.s   60
594     IL_000f:  add
595     IL_0010:  stloc.0
596     IL_0011:  br.s       IL_0013
598     IL_0013:  ldloc.0
599     IL_0014:  ret
600   } // end of method IBlah::IFoo.Foo6   
602  .method private hidebysig newslot virtual final 
603           instance int32  IFoo.Foo7(int32 a) cil managed
604   {
605     .override IFoo::Foo7
606     // Code size       21 (0x15)
607     .maxstack  2
608     .locals init (int32 V_0)
609     IL_0000:  nop
610     IL_0001:  ldstr      "At IBlah::IFoo.Foo7"
611     IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
612     IL_000b:  nop
613     IL_000c:  ldarg.1
614     IL_000d:  ldc.i4.s   70
615     IL_000f:  add
616     IL_0010:  stloc.0
617     IL_0011:  br.s       IL_0013
619     IL_0013:  ldloc.0
620     IL_0014:  ret
621   } // end of method IBlah::IFoo.Foo6  
623  .method private hidebysig newslot virtual final 
624           instance int32  IFoo.Foo8(int32 a) cil managed
625   {
626     .override IFoo::Foo8
627     // Code size       21 (0x15)
628     .maxstack  2
629     .locals init (int32 V_0)
630     IL_0000:  nop
631     IL_0001:  ldstr      "At IBlah::IFoo.Foo8"
632     IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
633     IL_000b:  nop
634     IL_000c:  ldarg.1
635     IL_000d:  ldc.i4.s   80
636     IL_000f:  add
637     IL_0010:  stloc.0
638     IL_0011:  br.s       IL_0013
640     IL_0013:  ldloc.0
641     IL_0014:  ret
642   } // end of method IBlah::IFoo.Foo8  
644  .method private hidebysig newslot virtual final 
645           instance int32  IFoo.Foo9(int32 a) cil managed
646   {
647     .override IFoo::Foo9
648     // Code size       21 (0x15)
649     .maxstack  2
650     .locals init (int32 V_0)
651     IL_0000:  nop
652     IL_0001:  ldstr      "At IBlah::IFoo.Foo9"
653     IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
654     IL_000b:  nop
655     IL_000c:  ldarg.1
656     IL_000d:  ldc.i4.s   90
657     IL_000f:  add
658     IL_0010:  stloc.0
659     IL_0011:  br.s       IL_0013
661     IL_0013:  ldloc.0
662     IL_0014:  ret
663   } // end of method IBlah::IFoo.Foo9
665   //////////////////////////////////////////////////////////////////////////////
666   // Overriding IBar
667   //////////////////////////////////////////////////////////////////////////////
669   .method private hidebysig newslot virtual final 
670           instance int32  IBar.Bar1(int32 a) cil managed
671   {
672     .override IBar::Bar1
673     // Code size       21 (0x15)
674     .maxstack  2
675     .locals init (int32 V_0)
676     IL_0000:  nop
677     IL_0001:  ldstr      "At IBlah::IBar.Bar1"
678     IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
679     IL_000b:  nop
680     IL_000c:  ldarg.1
681     IL_000d:  ldc.i4.s   110
682     IL_000f:  add
683     IL_0010:  stloc.0
684     IL_0011:  br.s       IL_0013
686     IL_0013:  ldloc.0
687     IL_0014:  ret
688   } // end of method IBlah::IBar.Bar1   
690   .method private hidebysig newslot virtual final 
691           instance int32  IBar.Bar2(int32 a) cil managed
692   {
693     .override IBar::Bar2
694     // Code size       21 (0x15)
695     .maxstack  2
696     .locals init (int32 V_0)
697     IL_0000:  nop
698     IL_0001:  ldstr      "At IBlah::IBar.Bar2"
699     IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
700     IL_000b:  nop
701     IL_000c:  ldarg.1
702     IL_000d:  ldc.i4     220
703     IL_000f:  add
704     IL_0010:  stloc.0
705     IL_0011:  br.s       IL_0013
707     IL_0013:  ldloc.0
708     IL_0014:  ret
709   } // end of method IBlah::IBar.Bar2
711   .method private hidebysig newslot virtual final 
712           instance int32  IBar.Bar3(int32 a) cil managed
713   {
714     .override IBar::Bar3
715     // Code size       21 (0x15)
716     .maxstack  2
717     .locals init (int32 V_0)
718     IL_0000:  nop
719     IL_0001:  ldstr      "At IBlah::IBar.Bar3"
720     IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
721     IL_000b:  nop
722     IL_000c:  ldarg.1
723     IL_000d:  ldc.i4     330
724     IL_000f:  add
725     IL_0010:  stloc.0
726     IL_0011:  br.s       IL_0013
728     IL_0013:  ldloc.0
729     IL_0014:  ret
730   } // end of method IBlah::IBar.Bar3
732   .method private hidebysig newslot virtual final 
733           instance int32  IBar.Bar4(int32 a) cil managed
734   {
735     .override IBar::Bar4
736     // Code size       21 (0x15)
737     .maxstack  2
738     .locals init (int32 V_0)
739     IL_0000:  nop
740     IL_0001:  ldstr      "At IBlah::IBar.Bar4"
741     IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
742     IL_000b:  nop
743     IL_000c:  ldarg.1
744     IL_000d:  ldc.i4     440
745     IL_000f:  add
746     IL_0010:  stloc.0
747     IL_0011:  br.s       IL_0013
749     IL_0013:  ldloc.0
750     IL_0014:  ret
751   } // end of method IBlah::IBar.Bar4
753   .method private hidebysig newslot virtual final 
754           instance int32  IBar.Bar5(int32 a) cil managed
755   {
756     .override IBar::Bar5
757     // Code size       21 (0x15)
758     .maxstack  2
759     .locals init (int32 V_0)
760     IL_0000:  nop
761     IL_0001:  ldstr      "At IBlah::IBar.Bar5"
762     IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
763     IL_000b:  nop
764     IL_000c:  ldarg.1
765     IL_000d:  ldc.i4     550
766     IL_000f:  add
767     IL_0010:  stloc.0
768     IL_0011:  br.s       IL_0013
770     IL_0013:  ldloc.0
771     IL_0014:  ret
772   } // end of method IBlah::IBar.Bar5  
773 } // end of class IBlah
775 .class private auto ansi beforefieldinit IBarImpl
776        extends [mscorlib]System.Object
777        implements IBar,
778                   IFoo  
780   .method public hidebysig specialname rtspecialname 
781           instance void  .ctor() cil managed
782   {
783     // Code size       8 (0x8)
784     .maxstack  8
785     IL_0000:  ldarg.0
786     IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
787     IL_0006:  nop
788     IL_0007:  ret
789   } // end of method IBarImpl::.ctor
791 } // end of class IBarImpl
793 .class private auto ansi beforefieldinit IBlahImpl
794        extends IBarImpl
795        implements IBlah,
796                   IBar,
797                   IFoo
799   .method private hidebysig newslot virtual final 
800           instance int32  IBlah.Blah2(int32 c) cil managed
801   {
802     .override IBlah::Blah2
803     // Code size       21 (0x15)
804     .maxstack  2
805     .locals init (int32 V_0)
806     IL_0000:  nop
807     IL_0001:  ldstr      "At IBlahImpl::IBlah.Blah2"
808     IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
809     IL_000b:  nop
810     IL_000c:  ldarg.1
811     IL_000d:  ldc.i4     2220
812     IL_000f:  add
813     IL_0010:  stloc.0
814     IL_0011:  br.s       IL_0013
816     IL_0013:  ldloc.0
817     IL_0014:  ret   
818   } // end of method IBlahImpl::IBlah.Blah2
820   .method private hidebysig newslot virtual final 
821           instance int32  IBlah.Blah3(int32 c) cil managed
822   {
823     .override IBlah::Blah3
824     // Code size       21 (0x15)
825     .maxstack  2
826     .locals init (int32 V_0)
827     IL_0000:  nop
828     IL_0001:  ldstr      "At IBlahImpl::IBlah.Blah2"
829     IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
830     IL_000b:  nop
831     IL_000c:  ldarg.1
832     IL_000d:  ldc.i4     3330
833     IL_000f:  add
834     IL_0010:  stloc.0
835     IL_0011:  br.s       IL_0013
837     IL_0013:  ldloc.0
838     IL_0014:  ret
839   } // end of method IBlahImpl::IBlah.Blah3
841   .method public hidebysig specialname rtspecialname 
842           instance void  .ctor() cil managed
843   {
844     // Code size       8 (0x8)
845     .maxstack  8
846     IL_0000:  ldarg.0
847     IL_0001:  call       instance void IBarImpl::.ctor()
848     IL_0006:  nop
849     IL_0007:  ret
850   } // end of method IBlahImpl::.ctor
852 } // end of class IBlahImpl   
854 .class interface private abstract auto ansi IFooBarBlah
855        implements IFoo,
856                   IBar,
857                   IBlah
859   .method private hidebysig newslot virtual final 
860           instance int32  IFooBarBlah.FooBarBlah1(int32 c) cil managed
861   {
862     .override IFoo::Foo1
863     .override IBar::Bar1
864     .override IBlah::Blah1
865     // Code size       21 (0x15)
866     .maxstack  2
867     .locals init (int32 V_0)
868     IL_0000:  nop
869     IL_0001:  ldstr      "At IFooBarBlah.FooBarBlah1"
870     IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
871     IL_000b:  nop
872     IL_000c:  ldarg.1
873     IL_000d:  ldc.i4     11111
874     IL_000f:  add
875     IL_0010:  stloc.0
876     IL_0011:  br.s       IL_0013
878     IL_0013:  ldloc.0
879     IL_0014:  ret   
880   } // end of method IFooBarBlah.FooBarBlah1  
881   .method private hidebysig newslot virtual final 
882           instance int32  IFooBarBlah.FooBarBlah2(int32 c) cil managed
883   {
884     .override IFoo::Foo2
885     .override IBar::Bar2
886     .override IBlah::Blah2
887     // Code size       21 (0x15)
888     .maxstack  2
889     .locals init (int32 V_0)
890     IL_0000:  nop
891     IL_0001:  ldstr      "At IFooBarBlah.FooBarBlah2"
892     IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
893     IL_000b:  nop
894     IL_000c:  ldarg.1
895     IL_000d:  ldc.i4     22222
896     IL_000f:  add
897     IL_0010:  stloc.0
898     IL_0011:  br.s       IL_0013
900     IL_0013:  ldloc.0
901     IL_0014:  ret   
902   } // end of method IFooBarBlah.FooBarBlah1
904   .method private hidebysig newslot virtual final 
905           instance int32  IFooBarBlah.FooBarBlah3(int32 c) cil managed
906   {
907     .override IFoo::Foo3
908     .override IFoo::Foo4
909     .override IFoo::Foo5
910     .override IBar::Bar3
911     .override IBar::Bar4
912     .override IBar::Bar5
913     .override IBlah::Blah3
914     // Code size       21 (0x15)
915     .maxstack  2
916     .locals init (int32 V_0)
917     IL_0000:  nop
918     IL_0001:  ldstr      "At IFooBarBlah.FooBarBlah3"
919     IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
920     IL_000b:  nop
921     IL_000c:  ldarg.1
922     IL_000d:  ldc.i4     33333
923     IL_000f:  add
924     IL_0010:  stloc.0
925     IL_0011:  br.s       IL_0013
927     IL_0013:  ldloc.0
928     IL_0014:  ret   
929   } // end of method IFooBarBlah.FooBarBlah3
930 } // end of class IFooBarBlah  
932 .class private auto ansi beforefieldinit FooBarBlahImpl
933        implements IFooBarBlah,
934                   IFoo,
935                   IBar,
936                   IBlah
938   .method public hidebysig specialname rtspecialname 
939           instance void  .ctor() cil managed
940   {
941     // Code size       8 (0x8)
942     .maxstack  8
943     IL_0000:  ldarg.0
944     IL_0001:  call       instance void IBlahImpl::.ctor()
945     IL_0006:  nop
946     IL_0007:  ret
947   } // end of method FooBarBlahImpl::.ctor
949 } // end of class FooBarBlahImpl         
951 .class private auto ansi beforefieldinit Program
952        extends [mscorlib]System.Object
954   .method public hidebysig static int32  Main() cil managed
955   {
956     .entrypoint
957     // Code size       23 (0x17)
958     .maxstack  1
959     .locals init (int32 V_0)
960     IL_0000:  nop
961     IL_0001:  call       void Program::SingleOverride()
962     IL_0006:  nop
963     IL_0007:  call       void Program::MultiOverride()
964     IL_000c:  nop
965     IL_000d:  call       int32 Test::Ret()
966     IL_0012:  stloc.0
967     IL_0013:  br.s       IL_0015
969     IL_0015:  ldloc.0
970     IL_0016:  ret
971   } // end of method Program::Main
973   .method private hidebysig static void  SingleOverride() cil managed
974   {
975     // Code size       946 (0x3b2)
976     .maxstack  2
977     .locals init (class IBarImpl V_0,
978              class IFoo V_1,
979              class IBar V_2,
980              class IBlahImpl V_3,
981              class IBlah V_4)
982     IL_0000:  nop
983     IL_0001:  newobj     instance void IBarImpl::.ctor()
984     IL_0006:  stloc.0
985     IL_0007:  ldloc.0
986     IL_0008:  stloc.1
987     IL_0009:  ldstr      "Calling IFoo.Foo methods on IBarImpl..."
988     IL_000e:  call       void [mscorlib]System.Console::WriteLine(string)
989     IL_0013:  nop
990     IL_0014:  ldloc.1
991     IL_0015:  ldc.i4.1
992     IL_0016:  callvirt   instance int32 IFoo::Foo1(int32)
993     IL_001b:  ldc.i4.s   11
994     IL_001d:  ceq
995     IL_001f:  ldstr      "Calling IFoo.Foo1 on IBarImpl"
996     IL_0024:  call       void Test::Assert(bool,
997                                            string)
998     IL_0029:  nop
999     IL_002a:  ldloc.1
1000     IL_002b:  ldc.i4.2
1001     IL_002c:  callvirt   instance int32 IFoo::Foo2(int32)
1002     IL_0031:  ldc.i4.s   22
1003     IL_0033:  ceq
1004     IL_0035:  ldstr      "Calling IFoo.Foo2 on IBarImpl"
1005     IL_003a:  call       void Test::Assert(bool,
1006                                            string)
1007     IL_003f:  nop
1008     IL_0040:  ldloc.1
1009     IL_0041:  ldc.i4.3
1010     IL_0042:  callvirt   instance int32 IFoo::Foo3(int32)
1011     IL_0047:  ldc.i4.s   33
1012     IL_0049:  ceq
1013     IL_004b:  ldstr      "Calling IFoo.Foo3 on IBarImpl"
1014     IL_0050:  call       void Test::Assert(bool,
1015                                            string)
1016     IL_0055:  nop
1017     IL_0056:  ldloc.1
1018     IL_0057:  ldc.i4.4
1019     IL_0058:  callvirt   instance int32 IFoo::Foo4(int32)
1020     IL_005d:  ldc.i4.s   44
1021     IL_005f:  ceq
1022     IL_0061:  ldstr      "Calling IFoo.Foo4 on IBarImpl"
1023     IL_0066:  call       void Test::Assert(bool,
1024                                            string)
1025     IL_006b:  nop
1026     IL_006c:  ldloc.1
1027     IL_006d:  ldc.i4.5
1028     IL_006e:  callvirt   instance int32 IFoo::Foo5(int32)
1029     IL_0073:  ldc.i4.s   55
1030     IL_0075:  ceq
1031     IL_0077:  ldstr      "Calling IFoo.Foo5 on IBarImpl"
1032     IL_007c:  call       void Test::Assert(bool,
1033                                            string)
1034     IL_0081:  nop
1035     IL_0082:  ldloc.1
1036     IL_0083:  ldc.i4.0
1037     IL_0084:  callvirt   instance int32 IFoo::Foo6(int32)
1038     IL_0089:  ldc.i4.6
1039     IL_008a:  ceq
1040     IL_008c:  ldstr      "Calling IFoo.Foo6 on IBarImpl"
1041     IL_0091:  call       void Test::Assert(bool,
1042                                            string)
1043     IL_0096:  nop
1044     IL_0097:  ldloc.1
1045     IL_0098:  ldc.i4.0
1046     IL_0099:  callvirt   instance int32 IFoo::Foo7(int32)
1047     IL_009e:  ldc.i4.7
1048     IL_009f:  ceq
1049     IL_00a1:  ldstr      "Calling IFoo.Foo7 on IBarImpl"
1050     IL_00a6:  call       void Test::Assert(bool,
1051                                            string)
1052     IL_00ab:  nop
1053     IL_00ac:  ldloc.1
1054     IL_00ad:  ldc.i4.0
1055     IL_00ae:  callvirt   instance int32 IFoo::Foo8(int32)
1056     IL_00b3:  ldc.i4.8
1057     IL_00b4:  ceq
1058     IL_00b6:  ldstr      "Calling IFoo.Foo8 on IBarImpl"
1059     IL_00bb:  call       void Test::Assert(bool,
1060                                            string)
1061     IL_00c0:  nop
1062     IL_00c1:  ldloc.1
1063     IL_00c2:  ldc.i4.0
1064     IL_00c3:  callvirt   instance int32 IFoo::Foo9(int32)
1065     IL_00c8:  ldc.i4.s   9
1066     IL_00ca:  ceq
1067     IL_00cc:  ldstr      "Calling IFoo.Foo9 on IBarImpl"
1068     IL_00d1:  call       void Test::Assert(bool,
1069                                            string)
1070     IL_00d6:  nop
1071     IL_00d7:  ldloc.0
1072     IL_00d8:  stloc.2
1073     IL_00d9:  ldstr      "Calling IBar.Bar methods on IBarImpl..."
1074     IL_00de:  call       void [mscorlib]System.Console::WriteLine(string)
1075     IL_00e3:  nop
1076     IL_00e4:  ldloc.2
1077     IL_00e5:  ldc.i4.0
1078     IL_00e6:  callvirt   instance int32 IBar::Bar1(int32)
1079     IL_00eb:  ldc.i4.s   11
1080     IL_00ed:  ceq
1081     IL_00ef:  ldstr      "Calling IBar.Bar1 on IBarImpl"
1082     IL_00f4:  call       void Test::Assert(bool,
1083                                            string)
1084     IL_00f9:  nop
1085     IL_00fa:  ldloc.2
1086     IL_00fb:  ldc.i4.0
1087     IL_00fc:  callvirt   instance int32 IBar::Bar2(int32)
1088     IL_0101:  ldc.i4.s   22
1089     IL_0103:  ceq
1090     IL_0105:  ldstr      "Calling IBar.Bar2 on IBarImpl"
1091     IL_010a:  call       void Test::Assert(bool,
1092                                            string)
1093     IL_010f:  nop
1094     IL_0110:  ldloc.2
1095     IL_0111:  ldc.i4.0
1096     IL_0112:  callvirt   instance int32 IBar::Bar3(int32)
1097     IL_0117:  ldc.i4.s   33
1098     IL_0119:  ceq
1099     IL_011b:  ldstr      "Calling IBar.Bar3 on IBarImpl"
1100     IL_0120:  call       void Test::Assert(bool,
1101                                            string)
1102     IL_0125:  nop
1103     IL_0126:  ldloc.2
1104     IL_0127:  ldc.i4.0
1105     IL_0128:  callvirt   instance int32 IBar::Bar4(int32)
1106     IL_012d:  ldc.i4.s   44
1107     IL_012f:  ceq
1108     IL_0131:  ldstr      "Calling IBar.Bar4 on IBarImpl"
1109     IL_0136:  call       void Test::Assert(bool,
1110                                            string)
1111     IL_013b:  nop
1112     IL_013c:  ldloc.2
1113     IL_013d:  ldc.i4.0
1114     IL_013e:  callvirt   instance int32 IBar::Bar5(int32)
1115     IL_0143:  ldc.i4.s   55
1116     IL_0145:  ceq
1117     IL_0147:  ldstr      "Calling IBar.Bar5 on IBarImpl"
1118     IL_014c:  call       void Test::Assert(bool,
1119                                            string)
1120     IL_0151:  nop
1121     IL_0152:  ldloc.2
1122     IL_0153:  ldc.i4.0
1123     IL_0154:  callvirt   instance int32 IBar::Bar6(int32)
1124     IL_0159:  ldc.i4.s   66
1125     IL_015b:  ceq
1126     IL_015d:  ldstr      "Calling IBar.Bar6 on IBarImpl"
1127     IL_0162:  call       void Test::Assert(bool,
1128                                            string)
1129     IL_0167:  nop
1130     IL_0168:  ldloc.2
1131     IL_0169:  ldc.i4.0
1132     IL_016a:  callvirt   instance int32 IBar::Bar7(int32)
1133     IL_016f:  ldc.i4.s   77
1134     IL_0171:  ceq
1135     IL_0173:  ldstr      "Calling IBar.Bar7 on IBarImpl"
1136     IL_0178:  call       void Test::Assert(bool,
1137                                            string)
1138     IL_017d:  nop
1139     IL_017e:  ldloc.2
1140     IL_017f:  ldc.i4.0
1141     IL_0180:  callvirt   instance int32 IBar::Bar8(int32)
1142     IL_0185:  ldc.i4.s   88
1143     IL_0187:  ceq
1144     IL_0189:  ldstr      "Calling IBar.Bar8 on IBarImpl"
1145     IL_018e:  call       void Test::Assert(bool,
1146                                            string)
1147     IL_0193:  nop
1148     IL_0194:  ldloc.2
1149     IL_0195:  ldc.i4.0
1150     IL_0196:  callvirt   instance int32 IBar::Bar9(int32)
1151     IL_019b:  ldc.i4.s   99
1152     IL_019d:  ceq
1153     IL_019f:  ldstr      "Calling IBar.Bar9 on IBarImpl"
1154     IL_01a4:  call       void Test::Assert(bool,
1155                                            string)
1156     IL_01a9:  nop
1157     IL_01aa:  newobj     instance void IBlahImpl::.ctor()
1158     IL_01af:  stloc.3
1159     IL_01b0:  ldloc.3
1160     IL_01b1:  stloc.1
1161     IL_01b2:  ldloc.1
1162     IL_01b3:  ldc.i4.1
1163     IL_01b4:  callvirt   instance int32 IFoo::Foo1(int32)
1164     IL_01b9:  ldc.i4.s   11
1165     IL_01bb:  ceq
1166     IL_01bd:  ldstr      "Calling IFoo.Foo1 on IBlahImpl"
1167     IL_01c2:  call       void Test::Assert(bool,
1168                                            string)
1169     IL_01c7:  nop
1170     IL_01c8:  ldloc.1
1171     IL_01c9:  ldc.i4.2
1172     IL_01ca:  callvirt   instance int32 IFoo::Foo2(int32)
1173     IL_01cf:  ldc.i4.s   22
1174     IL_01d1:  ceq
1175     IL_01d3:  ldstr      "Calling IFoo.Foo2 on IBlahImpl"
1176     IL_01d8:  call       void Test::Assert(bool,
1177                                            string)
1178     IL_01dd:  nop
1179     IL_01de:  ldloc.1
1180     IL_01df:  ldc.i4.3
1181     IL_01e0:  callvirt   instance int32 IFoo::Foo3(int32)
1182     IL_01e5:  ldc.i4.s   33
1183     IL_01e7:  ceq
1184     IL_01e9:  ldstr      "Calling IFoo.Foo3 on IBlahImpl"
1185     IL_01ee:  call       void Test::Assert(bool,
1186                                            string)
1187     IL_01f3:  nop
1188     IL_01f4:  ldloc.1
1189     IL_01f5:  ldc.i4.4
1190     IL_01f6:  callvirt   instance int32 IFoo::Foo4(int32)
1191     IL_01fb:  ldc.i4.s   44
1192     IL_01fd:  ceq
1193     IL_01ff:  ldstr      "Calling IFoo.Foo4 on IBlahImpl"
1194     IL_0204:  call       void Test::Assert(bool,
1195                                            string)
1196     IL_0209:  nop
1197     IL_020a:  ldloc.1
1198     IL_020b:  ldc.i4.5
1199     IL_020c:  callvirt   instance int32 IFoo::Foo5(int32)
1200     IL_0211:  ldc.i4.s   55
1201     IL_0213:  ceq
1202     IL_0215:  ldstr      "Calling IFoo.Foo5 on IBlahImpl"
1203     IL_021a:  call       void Test::Assert(bool,
1204                                            string)
1205     IL_021f:  nop
1206     IL_0220:  ldloc.1
1207     IL_0221:  ldc.i4.6
1208     IL_0222:  callvirt   instance int32 IFoo::Foo6(int32)
1209     IL_0227:  ldc.i4.s   66
1210     IL_0229:  ceq
1211     IL_022b:  ldstr      "Calling IFoo.Foo6 on IBlahImpl"
1212     IL_0230:  call       void Test::Assert(bool,
1213                                            string)
1214     IL_0235:  nop
1215     IL_0236:  ldloc.1
1216     IL_0237:  ldc.i4.7
1217     IL_0238:  callvirt   instance int32 IFoo::Foo7(int32)
1218     IL_023d:  ldc.i4.s   77
1219     IL_023f:  ceq
1220     IL_0241:  ldstr      "Calling IFoo.Foo7 on IBlahImpl"
1221     IL_0246:  call       void Test::Assert(bool,
1222                                            string)
1223     IL_024b:  nop
1224     IL_024c:  ldloc.1
1225     IL_024d:  ldc.i4.8
1226     IL_024e:  callvirt   instance int32 IFoo::Foo8(int32)
1227     IL_0253:  ldc.i4.s   88
1228     IL_0255:  ceq
1229     IL_0257:  ldstr      "Calling IFoo.Foo8 on IBlahImpl"
1230     IL_025c:  call       void Test::Assert(bool,
1231                                            string)
1232     IL_0261:  nop
1233     IL_0262:  ldloc.1
1234     IL_0263:  ldc.i4.s   9
1235     IL_0265:  callvirt   instance int32 IFoo::Foo9(int32)
1236     IL_026a:  ldc.i4.s   99
1237     IL_026c:  ceq
1238     IL_026e:  ldstr      "Calling IFoo.Foo9 on IBlahImpl"
1239     IL_0273:  call       void Test::Assert(bool,
1240                                            string)
1241     IL_0278:  nop
1242     IL_0279:  ldloc.3
1243     IL_027a:  stloc.2
1244     IL_027b:  ldstr      "Calling IBar.Bar methods on IBlahImpl..."
1245     IL_0280:  call       void [mscorlib]System.Console::WriteLine(string)
1246     IL_0285:  nop
1247     IL_0286:  ldloc.2
1248     IL_0287:  ldc.i4.1
1249     IL_0288:  callvirt   instance int32 IBar::Bar1(int32)
1250     IL_028d:  ldc.i4.s   111
1251     IL_028f:  ceq
1252     IL_0291:  ldstr      "Calling IBar.Bar1 on IBlahImpl"
1253     IL_0296:  call       void Test::Assert(bool,
1254                                            string)
1255     IL_029b:  nop
1256     IL_029c:  ldloc.2
1257     IL_029d:  ldc.i4.2
1258     IL_029e:  callvirt   instance int32 IBar::Bar2(int32)
1259     IL_02a3:  ldc.i4     0xde
1260     IL_02a8:  ceq
1261     IL_02aa:  ldstr      "Calling IBar.Bar2 on IBlahImpl"
1262     IL_02af:  call       void Test::Assert(bool,
1263                                            string)
1264     IL_02b4:  nop
1265     IL_02b5:  ldloc.2
1266     IL_02b6:  ldc.i4.3
1267     IL_02b7:  callvirt   instance int32 IBar::Bar3(int32)
1268     IL_02bc:  ldc.i4     0x14d
1269     IL_02c1:  ceq
1270     IL_02c3:  ldstr      "Calling IBar.Bar3 on IBlahImpl"
1271     IL_02c8:  call       void Test::Assert(bool,
1272                                            string)
1273     IL_02cd:  nop
1274     IL_02ce:  ldloc.2
1275     IL_02cf:  ldc.i4.4
1276     IL_02d0:  callvirt   instance int32 IBar::Bar4(int32)
1277     IL_02d5:  ldc.i4     0x1bc
1278     IL_02da:  ceq
1279     IL_02dc:  ldstr      "Calling IBar.Bar4 on IBlahImpl"
1280     IL_02e1:  call       void Test::Assert(bool,
1281                                            string)
1282     IL_02e6:  nop
1283     IL_02e7:  ldloc.2
1284     IL_02e8:  ldc.i4.5
1285     IL_02e9:  callvirt   instance int32 IBar::Bar5(int32)
1286     IL_02ee:  ldc.i4     0x22b
1287     IL_02f3:  ceq
1288     IL_02f5:  ldstr      "Calling IBar.Bar5 on IBlahImpl"
1289     IL_02fa:  call       void Test::Assert(bool,
1290                                            string)
1291     IL_02ff:  nop
1292     IL_0300:  ldloc.2
1293     IL_0301:  ldc.i4.0
1294     IL_0302:  callvirt   instance int32 IBar::Bar6(int32)
1295     IL_0307:  ldc.i4.s   66
1296     IL_0309:  ceq
1297     IL_030b:  ldstr      "Calling IBar.Bar6 on IBlahImpl"
1298     IL_0310:  call       void Test::Assert(bool,
1299                                            string)
1300     IL_0315:  nop
1301     IL_0316:  ldloc.2
1302     IL_0317:  ldc.i4.0
1303     IL_0318:  callvirt   instance int32 IBar::Bar7(int32)
1304     IL_031d:  ldc.i4.s   77
1305     IL_031f:  ceq
1306     IL_0321:  ldstr      "Calling IBar.Bar7 on IBlahImpl"
1307     IL_0326:  call       void Test::Assert(bool,
1308                                            string)
1309     IL_032b:  nop
1310     IL_032c:  ldloc.2
1311     IL_032d:  ldc.i4.0
1312     IL_032e:  callvirt   instance int32 IBar::Bar8(int32)
1313     IL_0333:  ldc.i4.s   88
1314     IL_0335:  ceq
1315     IL_0337:  ldstr      "Calling IBar.Bar8 on IBlahImpl"
1316     IL_033c:  call       void Test::Assert(bool,
1317                                            string)
1318     IL_0341:  nop
1319     IL_0342:  ldloc.2
1320     IL_0343:  ldc.i4.0
1321     IL_0344:  callvirt   instance int32 IBar::Bar9(int32)
1322     IL_0349:  ldc.i4.s   99
1323     IL_034b:  ceq
1324     IL_034d:  ldstr      "Calling IBar.Bar9 on IBlahImpl"
1325     IL_0352:  call       void Test::Assert(bool,
1326                                            string)
1327     IL_0357:  nop
1328     IL_0358:  ldloc.3
1329     IL_0359:  stloc.s    V_4
1330     IL_035b:  ldstr      "Calling IBlah.Blah methods on IBlahImpl..."
1331     IL_0360:  call       void [mscorlib]System.Console::WriteLine(string)
1332     IL_0365:  nop
1333     IL_0366:  ldloc.s    V_4
1334     IL_0368:  ldc.i4.0
1335     IL_0369:  callvirt   instance int32 IBlah::Blah1(int32)
1336     IL_036e:  ldc.i4.s   111
1337     IL_0370:  ceq
1338     IL_0372:  ldstr      "Calling IBlah.Blah1 on IBlahImpl"
1339     IL_0377:  call       void Test::Assert(bool,
1340                                            string)
1341     IL_037c:  nop
1342     IL_037d:  ldloc.s    V_4
1343     IL_037f:  ldc.i4.2
1344     IL_0380:  callvirt   instance int32 IBlah::Blah2(int32)
1345     IL_0385:  ldc.i4     0x8ae
1346     IL_038a:  ceq
1347     IL_038c:  ldstr      "Calling IBlah.Blah1 on IBlahImpl"
1348     IL_0391:  call       void Test::Assert(bool,
1349                                            string)
1350     IL_0396:  nop
1351     IL_0397:  ldloc.s    V_4
1352     IL_0399:  ldc.i4.3
1353     IL_039a:  callvirt   instance int32 IBlah::Blah3(int32)
1354     IL_039f:  ldc.i4     0xd05
1355     IL_03a4:  ceq
1356     IL_03a6:  ldstr      "Calling IBlah.Blah1 on IBlahImpl"
1357     IL_03ab:  call       void Test::Assert(bool,
1358                                            string)
1359     IL_03b0:  nop
1360     IL_03b1:  ret
1361   } // end of method Program::SingleOverride
1363   .method private hidebysig static void  MultiOverride() cil managed
1364   {
1365     // Code size       549 (0x225)
1366     .maxstack  2
1367     .locals init (class FooBarBlahImpl V_0,
1368              class IFoo V_1,
1369              class IBar V_2,
1370              class IBlah V_3)
1371     IL_0000:  nop
1372     IL_0001:  newobj     instance void FooBarBlahImpl::.ctor()
1373     IL_0006:  stloc.0
1374     IL_0007:  ldloc.0
1375     IL_0008:  stloc.1
1376     IL_0009:  ldstr      "Calling IFoo.Foo methods on FooBarBlahImpl..."
1377     IL_000e:  call       void [mscorlib]System.Console::WriteLine(string)
1378     IL_0013:  nop
1379     IL_0014:  ldloc.1
1380     IL_0015:  ldc.i4.0
1381     IL_0016:  callvirt   instance int32 IFoo::Foo1(int32)
1382     IL_001b:  ldc.i4     0x2b67
1383     IL_0020:  ceq
1384     IL_0022:  ldstr      "Calling IFoo.Foo1 on FooBarBlahImpl"
1385     IL_0027:  call       void Test::Assert(bool,
1386                                            string)
1387     IL_002c:  nop
1388     IL_002d:  ldloc.1
1389     IL_002e:  ldc.i4.0
1390     IL_002f:  callvirt   instance int32 IFoo::Foo2(int32)
1391     IL_0034:  ldc.i4     0x56ce
1392     IL_0039:  ceq
1393     IL_003b:  ldstr      "Calling IFoo.Foo2 on FooBarBlahImpl"
1394     IL_0040:  call       void Test::Assert(bool,
1395                                            string)
1396     IL_0045:  nop
1397     IL_0046:  ldloc.1
1398     IL_0047:  ldc.i4.0
1399     IL_0048:  callvirt   instance int32 IFoo::Foo3(int32)
1400     IL_004d:  ldc.i4     0x8235
1401     IL_0052:  ceq
1402     IL_0054:  ldstr      "Calling IFoo.Foo3 on FooBarBlahImpl"
1403     IL_0059:  call       void Test::Assert(bool,
1404                                            string)
1405     IL_005e:  nop
1406     IL_005f:  ldloc.1
1407     IL_0060:  ldc.i4.0
1408     IL_0061:  callvirt   instance int32 IFoo::Foo4(int32)
1409     IL_0066:  ldc.i4     0x8235
1410     IL_006b:  ceq
1411     IL_006d:  ldstr      "Calling IFoo.Foo4 on FooBarBlahImpl"
1412     IL_0072:  call       void Test::Assert(bool,
1413                                            string)
1414     IL_0077:  nop
1415     IL_0078:  ldloc.1
1416     IL_0079:  ldc.i4.0
1417     IL_007a:  callvirt   instance int32 IFoo::Foo5(int32)
1418     IL_007f:  ldc.i4     0x8235
1419     IL_0084:  ceq
1420     IL_0086:  ldstr      "Calling IFoo.Foo5 on FooBarBlahImpl"
1421     IL_008b:  call       void Test::Assert(bool,
1422                                            string)
1423     IL_0090:  nop
1424     IL_0091:  ldloc.1
1425     IL_0092:  ldc.i4.6
1426     IL_0093:  callvirt   instance int32 IFoo::Foo6(int32)
1427     IL_0098:  ldc.i4.s   66
1428     IL_009a:  ceq
1429     IL_009c:  ldstr      "Calling IFoo.Foo6 on FooBarBlahImpl"
1430     IL_00a1:  call       void Test::Assert(bool,
1431                                            string)
1432     IL_00a6:  nop
1433     IL_00a7:  ldloc.1
1434     IL_00a8:  ldc.i4.7
1435     IL_00a9:  callvirt   instance int32 IFoo::Foo7(int32)
1436     IL_00ae:  ldc.i4.s   77
1437     IL_00b0:  ceq
1438     IL_00b2:  ldstr      "Calling IFoo.Foo7 on FooBarBlahImpl"
1439     IL_00b7:  call       void Test::Assert(bool,
1440                                            string)
1441     IL_00bc:  nop
1442     IL_00bd:  ldloc.1
1443     IL_00be:  ldc.i4.8
1444     IL_00bf:  callvirt   instance int32 IFoo::Foo8(int32)
1445     IL_00c4:  ldc.i4.s   88
1446     IL_00c6:  ceq
1447     IL_00c8:  ldstr      "Calling IFoo.Foo8 on FooBarBlahImpl"
1448     IL_00cd:  call       void Test::Assert(bool,
1449                                            string)
1450     IL_00d2:  nop
1451     IL_00d3:  ldloc.1
1452     IL_00d4:  ldc.i4.s   9
1453     IL_00d6:  callvirt   instance int32 IFoo::Foo9(int32)
1454     IL_00db:  ldc.i4.s   99
1455     IL_00dd:  ceq
1456     IL_00df:  ldstr      "Calling IFoo.Foo9 on FooBarBlahImpl"
1457     IL_00e4:  call       void Test::Assert(bool,
1458                                            string)
1459     IL_00e9:  nop
1460     IL_00ea:  ldloc.0
1461     IL_00eb:  stloc.2
1462     IL_00ec:  ldstr      "Calling IBar.Bar methods on FooBarBlahImpl..."
1463     IL_00f1:  call       void [mscorlib]System.Console::WriteLine(string)
1464     IL_00f6:  nop
1465     IL_00f7:  ldloc.2
1466     IL_00f8:  ldc.i4.0
1467     IL_00f9:  callvirt   instance int32 IBar::Bar1(int32)
1468     IL_00fe:  ldc.i4     0x2b67
1469     IL_0103:  ceq
1470     IL_0105:  ldstr      "Calling IBar.Bar1 on FooBarBlahImpl"
1471     IL_010a:  call       void Test::Assert(bool,
1472                                            string)
1473     IL_010f:  nop
1474     IL_0110:  ldloc.2
1475     IL_0111:  ldc.i4.0
1476     IL_0112:  callvirt   instance int32 IBar::Bar2(int32)
1477     IL_0117:  ldc.i4     0x56ce
1478     IL_011c:  ceq
1479     IL_011e:  ldstr      "Calling IBar.Bar2 on FooBarBlahImpl"
1480     IL_0123:  call       void Test::Assert(bool,
1481                                            string)
1482     IL_0128:  nop
1483     IL_0129:  ldloc.2
1484     IL_012a:  ldc.i4.0
1485     IL_012b:  callvirt   instance int32 IBar::Bar3(int32)
1486     IL_0130:  ldc.i4     0x8235
1487     IL_0135:  ceq
1488     IL_0137:  ldstr      "Calling IBar.Bar3 on FooBarBlahImpl"
1489     IL_013c:  call       void Test::Assert(bool,
1490                                            string)
1491     IL_0141:  nop
1492     IL_0142:  ldloc.2
1493     IL_0143:  ldc.i4.0
1494     IL_0144:  callvirt   instance int32 IBar::Bar4(int32)
1495     IL_0149:  ldc.i4     0x8235
1496     IL_014e:  ceq
1497     IL_0150:  ldstr      "Calling IBar.Bar4 on FooBarBlahImpl"
1498     IL_0155:  call       void Test::Assert(bool,
1499                                            string)
1500     IL_015a:  nop
1501     IL_015b:  ldloc.2
1502     IL_015c:  ldc.i4.0
1503     IL_015d:  callvirt   instance int32 IBar::Bar5(int32)
1504     IL_0162:  ldc.i4     0x8235
1505     IL_0167:  ceq
1506     IL_0169:  ldstr      "Calling IBar.Bar5 on FooBarBlahImpl"
1507     IL_016e:  call       void Test::Assert(bool,
1508                                            string)
1509     IL_0173:  nop
1510     IL_0174:  ldloc.2
1511     IL_0175:  ldc.i4.0
1512     IL_0176:  callvirt   instance int32 IBar::Bar6(int32)
1513     IL_017b:  ldc.i4.s   66
1514     IL_017d:  ceq
1515     IL_017f:  ldstr      "Calling IBar.Bar6 on FooBarBlahImpl"
1516     IL_0184:  call       void Test::Assert(bool,
1517                                            string)
1518     IL_0189:  nop
1519     IL_018a:  ldloc.2
1520     IL_018b:  ldc.i4.0
1521     IL_018c:  callvirt   instance int32 IBar::Bar7(int32)
1522     IL_0191:  ldc.i4.s   77
1523     IL_0193:  ceq
1524     IL_0195:  ldstr      "Calling IBar.Bar7 on FooBarBlahImpl"
1525     IL_019a:  call       void Test::Assert(bool,
1526                                            string)
1527     IL_019f:  nop
1528     IL_01a0:  ldloc.2
1529     IL_01a1:  ldc.i4.0
1530     IL_01a2:  callvirt   instance int32 IBar::Bar8(int32)
1531     IL_01a7:  ldc.i4.s   88
1532     IL_01a9:  ceq
1533     IL_01ab:  ldstr      "Calling IBar.Bar8 on FooBarBlahImpl"
1534     IL_01b0:  call       void Test::Assert(bool,
1535                                            string)
1536     IL_01b5:  nop
1537     IL_01b6:  ldloc.2
1538     IL_01b7:  ldc.i4.0
1539     IL_01b8:  callvirt   instance int32 IBar::Bar9(int32)
1540     IL_01bd:  ldc.i4.s   99
1541     IL_01bf:  ceq
1542     IL_01c1:  ldstr      "Calling IBar.Bar9 on FooBarBlahImpl"
1543     IL_01c6:  call       void Test::Assert(bool,
1544                                            string)
1545     IL_01cb:  nop
1546     IL_01cc:  ldloc.0
1547     IL_01cd:  stloc.3
1548     IL_01ce:  ldstr      "Calling IBlah.Blah methods on FooBarBlahImpl..."
1549     IL_01d3:  call       void [mscorlib]System.Console::WriteLine(string)
1550     IL_01d8:  nop
1551     IL_01d9:  ldloc.3
1552     IL_01da:  ldc.i4.0
1553     IL_01db:  callvirt   instance int32 IBlah::Blah1(int32)
1554     IL_01e0:  ldc.i4     0x2b67
1555     IL_01e5:  ceq
1556     IL_01e7:  ldstr      "Calling IBlah.Blah1 on FooBarBlahImpl"
1557     IL_01ec:  call       void Test::Assert(bool,
1558                                            string)
1559     IL_01f1:  nop
1560     IL_01f2:  ldloc.3
1561     IL_01f3:  ldc.i4.0
1562     IL_01f4:  callvirt   instance int32 IBlah::Blah2(int32)
1563     IL_01f9:  ldc.i4     0x56ce
1564     IL_01fe:  ceq
1565     IL_0200:  ldstr      "Calling IBlah.Blah1 on FooBarBlahImpl"
1566     IL_0205:  call       void Test::Assert(bool,
1567                                            string)
1568     IL_020a:  nop
1569     IL_020b:  ldloc.3
1570     IL_020c:  ldc.i4.0
1571     IL_020d:  callvirt   instance int32 IBlah::Blah3(int32)
1572     IL_0212:  ldc.i4     0x8235
1573     IL_0217:  ceq
1574     IL_0219:  ldstr      "Calling IBlah.Blah1 on FooBarBlahImpl"
1575     IL_021e:  call       void Test::Assert(bool,
1576                                            string)
1577     IL_0223:  nop
1578     IL_0224:  ret
1579   } // end of method Program::MultiOverride
1581   .method public hidebysig specialname rtspecialname 
1582           instance void  .ctor() cil managed
1583   {
1584     // Code size       8 (0x8)
1585     .maxstack  8
1586     IL_0000:  ldarg.0
1587     IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
1588     IL_0006:  nop
1589     IL_0007:  ret
1590   } // end of method Program::.ctor
1592 } // end of class Program  
1594 .class private auto ansi beforefieldinit Test
1595        extends [mscorlib]System.Object
1597   .field private static bool Pass
1598   .method public hidebysig static int32  Ret() cil managed
1599   {
1600     // Code size       19 (0x13)
1601     .maxstack  1
1602     .locals init (int32 V_0)
1603     IL_0000:  nop
1604     IL_0001:  ldsfld     bool Test::Pass
1605     IL_0006:  brtrue.s   IL_000c
1607     IL_0008:  ldc.i4.s   101
1608     IL_000a:  br.s       IL_000e
1610     IL_000c:  ldc.i4.s   100
1611     IL_000e:  stloc.0
1612     IL_000f:  br.s       IL_0011
1614     IL_0011:  ldloc.0
1615     IL_0012:  ret
1616   } // end of method Test::Ret
1618   .method public hidebysig static void  Assert(bool cond,
1619                                                string msg) cil managed
1620   {
1621     // Code size       47 (0x2f)
1622     .maxstack  2
1623     .locals init (bool V_0)
1624     IL_0000:  nop
1625     IL_0001:  ldarg.0
1626     IL_0002:  stloc.0
1627     IL_0003:  ldloc.0
1628     IL_0004:  brfalse.s  IL_0015
1630     IL_0006:  nop
1631     IL_0007:  ldstr      "PASS"
1632     IL_000c:  call       void [mscorlib]System.Console::WriteLine(string)
1633     IL_0011:  nop
1634     IL_0012:  nop
1635     IL_0013:  br.s       IL_002e
1637     IL_0015:  nop
1638     IL_0016:  ldstr      "FAIL: "
1639     IL_001b:  ldarg.1
1640     IL_001c:  call       string [mscorlib]System.String::Concat(string,
1641                                                                 string)
1642     IL_0021:  call       void [mscorlib]System.Console::WriteLine(string)
1643     IL_0026:  nop
1644     IL_0027:  ldc.i4.0
1645     IL_0028:  stsfld     bool Test::Pass
1646     IL_002d:  nop
1647     IL_002e:  ret
1648   } // end of method Test::Assert
1650   .method public hidebysig specialname rtspecialname 
1651           instance void  .ctor() cil managed
1652   {
1653     // Code size       8 (0x8)
1654     .maxstack  8
1655     IL_0000:  ldarg.0
1656     IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
1657     IL_0006:  nop
1658     IL_0007:  ret
1659   } // end of method Test::.ctor
1661   .method private hidebysig specialname rtspecialname static 
1662           void  .cctor() cil managed
1663   {
1664     // Code size       7 (0x7)
1665     .maxstack  8
1666     IL_0000:  ldc.i4.1
1667     IL_0001:  stsfld     bool Test::Pass
1668     IL_0006:  ret
1669   } // end of method Test::.cctor
1671 } // end of class Test
1674 // =============================================================
1676 // *********** DISASSEMBLY COMPLETE ***********************
1677 // WARNING: Created Win32 resource file methodimpl.res