I have a test class:
public class Test {
    private static class Nested1 {
        Nested2 n2 = new Nested2();
    }
    private static class Nested2 {
        Nested1 n1 = new Nested1();
    }
}
As I understand, static nested classes are regular static member of the enclosing class, that are still top-level classes. When I compile the above code, I get four files:
Test$1.classTest$Nested1.classTest$Nested2.classTest.class
Compiled from "Test.java"
class Test$Nested1 {
  Test$Nested2 n2;
  private Test$Nested1();
  Test$Nested1(Test$1);
}
My questions:
Why do I have an additional class
Test$1.class.class Test$1 { }- Why does 
Test$Nested1.class'constructor have an input of type:Test$1? 
Test.java
public class Test {  
    private static class Nested1 {
        Nested2 n2 = new Nested2();
    }
    private static class Nested2 {
        Nested1 n1 = new Nested1();
    }
}
I am using Java 1.8.