C# value type boxing under the hood