Great. But now let’s make a small tweak: [Benchmark] public int GetLength() { ITuple t = (5, 6, 7); Ignore(t); return t.Length; } [MethodImpl(MethodImplOptions.NoInlining)] private static void Ignore(object o) { } Here I’ve forced the boxing by needing the object to exist in order to call the Ignore method, and previously that was enough to disable the ability to devirtualize the t.Length call. Bu