class Outer { private static class Nested1 { public Nested1(){} public Nested1(int a) { this(); } protected Nested1(char c) { this(); } private Nested1(boolean b) { this(); } } protected static class Nested2 { public Nested2(){} public Nested2(int a) { this(); } protected Nested2(char c) { this(); } private Nested2(boolean b) { this(); } } static class Nested3 { public Nested3(){} public Nested3(int a) { this(); } protected Nested3(char c) { this(); } private Nested3(boolean b) { this(); } } public static class Nested4 { public Nested4(){} public Nested4(int a) { this(); } protected Nested4(char c) { this(); } private Nested4(boolean b) { this(); } } static void foo() { Nested1 nested1 = new Nested1(1); Nested2 nested2 = new Nested2(2); Nested3 nested3 = new Nested3(3); Nested4 nested4 = new Nested4(4); } }