title: What is it called when C# overloads a Class name based on generics?
body: <p>E.g. I saw the following code for the first time today.</p>
  
  <pre><code>public abstract class SimpleFilter&lt;T&gt;
  {
      //blah
  }
  
  public abstract class SimpleFilter&lt;TA, TB&gt; : SimpleFilter&lt;SimpleFilter&lt;TA,TB&gt;.Pair&gt; {
  
      //blah
      public struct Pair
      {
       // blah
      }
  }
  </code></pre>
  
  <p>So the classes have the same name, but different amounts / types of generic parameters?</p>
  
  <p>What gives?</p>