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);
    }
}
