title: Why does roslyn wrap objects in structures when put in arrays?
body: <p>While reading through the source code of <a href="https://github.com/dotnet/roslyn">Roslyn on GitHub</a>, I noticed the much used <a href="https://github.com/dotnet/roslyn/blob/master/src/Compilers/Core/SharedCollections/ObjectPool%601.cs"><code>ObjectPool&lt;T&gt;</code></a> class. It is used to reduce memory overhead.</p>
  
  <p>Internally it uses <a href="https://github.com/dotnet/roslyn/blob/master/src/Compilers/Core/SharedCollections/ObjectPool%601.cs#L57">an array</a> to store the pooled objects.
  What I don't understand is why it uses a private struct called <code>Element</code> containing a single field of type <code>T</code> as array element, instead of just using <code>T</code>.</p>
  
  <p>Is this out of concern for performance? Memory overhead?</p>