title: Why is TreeSet<T> an internal type in .NET?
body: <p>So, I was just digging around Reflector trying to find the implementation details of HashSet (out of sheer curiosity based on the answer to another question here) and noticed the following:</p>
  
  <pre><code>internal class TreeSet&lt;T&gt; : ICollection&lt;T&gt;, IEnumerable&lt;T&gt;, ICollection,
      IEnumerable, ISerializable, IDeserializationCallback
  </code></pre>
  
  <p>Without looking too deep into the details, it looks like a Self-Balancing Binary Search Tree.</p>
  
  <p>My question is, is there anybody out there with the insight as to why this class is <code>internal</code>? Is it simply because the other collection types use it internally and hide the complexities of a BST from the general masses...or am I way off base?</p>