title: Why do inner classes make private methods accessible?
body: <p>I don't understand why this compiles. f() and g() are visible from the inner classes, despite being  private. Are they treated special specially because they are inner classes?</p>
  
  <p>If A and B are not static classes, it's still the same.</p>
  
  <pre><code>class NotPrivate {
      private static class A {
          private void f() {
              new B().g();
          }
      }
  
      private static class B {
          private void g() {
              new A().f();
          }
      }
  }
  </code></pre>