title: Why is it not "inconsistent accessibility" to use a private nested type inside a generic type in the interface list?
body: <p>In case the title is not completely self-explanatory, here's the code that puzzles me:</p>
  
  <pre><code>public interface IFoo&lt;T&gt;
  {
  }
  
  public class MyClass : IFoo&lt;MyClass.NestedInMyClass&gt;
  {
    private class NestedInMyClass
    {
    }
  }
  </code></pre>
  
  <p>I'm suprised this compiles with no error. It feels like I'm exposing a <code>private</code> type. <strong>Shouldn't this be illegal?</strong></p>
  
  <p>Maybe your answers will simply be <em>"There's no rule against that, so why wouldn't it be OK?"</em> Perhaps it's equally surprising that <code>MyClass.NestedInMyClass</code> is even in "scope". If I remove the <code>MyClass.</code> qualification, it will not compile.</p>
  
  <p>(If I change <code>IFoo&lt;&gt;</code> into a generic <em>class</em>, which should then become base class of <code>MyClass</code>, this <em>is</em> illegal, for a base type must be at least as accessible as the type itself.)</p>
  
  <p>I tried this with the C# 4 compiler of Visual Studio 2010.</p>