//Original code namespace ConsoleApplication4 { class Program { static Action F() { var d = new Dictionary(); var freakingLargeDictionary = new Dictionary(); //Filling our freakingLargeDictionary with some random data. var a1 = new Action(() => { d.Add("a1", "a1"); freakingLargeDictionary.Add("a1", "a1"); }); var a2 = new Action(() => { d.Add("a2", "a2"); }); return a2; } static void Main(string[] args) { //You've just captured a couple of useless gigabytes with "a", right? var a = F(); } } } //Disassembly namespace ConsoleApplication4 { internal class Program { [CompilerGenerated] private sealed class <>c__DisplayClass2 { public Dictionary d; public Dictionary freakingLargeDictionary; public void b__0() { this.d.Add("a1", "a1"); this.freakingLargeDictionary.Add("a1", "a1"); } public void b__1() { this.d.Add("a2", "a2"); } } private static Action F() { Program.<>c__DisplayClass2 <>c__DisplayClass = new Program.<>c__DisplayClass2(); <>c__DisplayClass.d = new Dictionary(); <>c__DisplayClass.freakingLargeDictionary = new Dictionary(); Action a = new Action(<>c__DisplayClass.b__0); return new Action(<>c__DisplayClass.b__1); } private static void Main(string[] args) { Action a = Program.F(); } } }