=== tests/cases/compiler/privacyGetter.ts ===
export module m1 {
>m1 : typeof m1

    export class C1_public {
>C1_public : C1_public

        private f1() {
>f1 : () => void
        }
    }

    class C2_private {
>C2_private : C2_private
    }

    export class C3_public {
>C3_public : C3_public

        private get p1_private() {
>p1_private : C1_public

            return new C1_public();
>new C1_public() : C1_public
>C1_public : typeof C1_public
        }

        private set p1_private(m1_c3_p1_arg: C1_public) {
>p1_private : C1_public
>m1_c3_p1_arg : C1_public
>C1_public : C1_public
        }

        private get p2_private() {
>p2_private : C1_public

            return new C1_public();
>new C1_public() : C1_public
>C1_public : typeof C1_public
        }

        private set p2_private(m1_c3_p2_arg: C1_public) {
>p2_private : C1_public
>m1_c3_p2_arg : C1_public
>C1_public : C1_public
        }

        private get p3_private() {
>p3_private : C2_private

            return new C2_private();
>new C2_private() : C2_private
>C2_private : typeof C2_private
        }

        private set p3_private(m1_c3_p3_arg: C2_private) {
>p3_private : C2_private
>m1_c3_p3_arg : C2_private
>C2_private : C2_private
        }

        public get p4_public(): C2_private { // error
>p4_public : C2_private
>C2_private : C2_private

            return new C2_private(); //error
>new C2_private() : C2_private
>C2_private : typeof C2_private
        }

        public set p4_public(m1_c3_p4_arg: C2_private) { // error
>p4_public : C2_private
>m1_c3_p4_arg : C2_private
>C2_private : C2_private
        }
    }

    class C4_private {
>C4_private : C4_private

        private get p1_private() {
>p1_private : C1_public

            return new C1_public();
>new C1_public() : C1_public
>C1_public : typeof C1_public
        }

        private set p1_private(m1_c3_p1_arg: C1_public) {
>p1_private : C1_public
>m1_c3_p1_arg : C1_public
>C1_public : C1_public
        }

        private get p2_private() {
>p2_private : C1_public

            return new C1_public();
>new C1_public() : C1_public
>C1_public : typeof C1_public
        }

        private set p2_private(m1_c3_p2_arg: C1_public) {
>p2_private : C1_public
>m1_c3_p2_arg : C1_public
>C1_public : C1_public
        }

        private get p3_private() {
>p3_private : C2_private

            return new C2_private();
>new C2_private() : C2_private
>C2_private : typeof C2_private
        }

        private set p3_private(m1_c3_p3_arg: C2_private) {
>p3_private : C2_private
>m1_c3_p3_arg : C2_private
>C2_private : C2_private
        }

        public get p4_public(): C2_private {
>p4_public : C2_private
>C2_private : C2_private

            return new C2_private();
>new C2_private() : C2_private
>C2_private : typeof C2_private
        }

        public set p4_public(m1_c3_p4_arg: C2_private) {
>p4_public : C2_private
>m1_c3_p4_arg : C2_private
>C2_private : C2_private
        }
    }
}

module m2 {
>m2 : typeof m2

    export class m2_C1_public {
>m2_C1_public : m2_C1_public

        private f1() {
>f1 : () => void
        }
    }

    class m2_C2_private {
>m2_C2_private : m2_C2_private
    }

    export class m2_C3_public {
>m2_C3_public : m2_C3_public

        private get p1_private() {
>p1_private : m2_C1_public

            return new m2_C1_public();
>new m2_C1_public() : m2_C1_public
>m2_C1_public : typeof m2_C1_public
        }

        private set p1_private(m2_c3_p1_arg: m2_C1_public) {
>p1_private : m2_C1_public
>m2_c3_p1_arg : m2_C1_public
>m2_C1_public : m2_C1_public
        }

        private get p2_private() {
>p2_private : m2_C1_public

            return new m2_C1_public();
>new m2_C1_public() : m2_C1_public
>m2_C1_public : typeof m2_C1_public
        }

        private set p2_private(m2_c3_p2_arg: m2_C1_public) {
>p2_private : m2_C1_public
>m2_c3_p2_arg : m2_C1_public
>m2_C1_public : m2_C1_public
        }

        private get p3_private() {
>p3_private : m2_C2_private

            return new m2_C2_private();
>new m2_C2_private() : m2_C2_private
>m2_C2_private : typeof m2_C2_private
        }

        private set p3_private(m2_c3_p3_arg: m2_C2_private) {
>p3_private : m2_C2_private
>m2_c3_p3_arg : m2_C2_private
>m2_C2_private : m2_C2_private
        }

        public get p4_public(): m2_C2_private {
>p4_public : m2_C2_private
>m2_C2_private : m2_C2_private

            return new m2_C2_private();
>new m2_C2_private() : m2_C2_private
>m2_C2_private : typeof m2_C2_private
        }

        public set p4_public(m2_c3_p4_arg: m2_C2_private) {
>p4_public : m2_C2_private
>m2_c3_p4_arg : m2_C2_private
>m2_C2_private : m2_C2_private
        }
    }

    class m2_C4_private {
>m2_C4_private : m2_C4_private

        private get p1_private() {
>p1_private : m2_C1_public

            return new m2_C1_public();
>new m2_C1_public() : m2_C1_public
>m2_C1_public : typeof m2_C1_public
        }

        private set p1_private(m2_c3_p1_arg: m2_C1_public) {
>p1_private : m2_C1_public
>m2_c3_p1_arg : m2_C1_public
>m2_C1_public : m2_C1_public
        }

        private get p2_private() {
>p2_private : m2_C1_public

            return new m2_C1_public();
>new m2_C1_public() : m2_C1_public
>m2_C1_public : typeof m2_C1_public
        }

        private set p2_private(m2_c3_p2_arg: m2_C1_public) {
>p2_private : m2_C1_public
>m2_c3_p2_arg : m2_C1_public
>m2_C1_public : m2_C1_public
        }

        private get p3_private() {
>p3_private : m2_C2_private

            return new m2_C2_private();
>new m2_C2_private() : m2_C2_private
>m2_C2_private : typeof m2_C2_private
        }

        private set p3_private(m2_c3_p3_arg: m2_C2_private) {
>p3_private : m2_C2_private
>m2_c3_p3_arg : m2_C2_private
>m2_C2_private : m2_C2_private
        }

        public get p4_public(): m2_C2_private {
>p4_public : m2_C2_private
>m2_C2_private : m2_C2_private

            return new m2_C2_private();
>new m2_C2_private() : m2_C2_private
>m2_C2_private : typeof m2_C2_private
        }

        public set p4_public(m2_c3_p4_arg: m2_C2_private) {
>p4_public : m2_C2_private
>m2_c3_p4_arg : m2_C2_private
>m2_C2_private : m2_C2_private
        }
    }
}

class C5_private {
>C5_private : C5_private

    private f() {
>f : () => void
    }
}

export class C6_public {
>C6_public : C6_public
}

export class C7_public {
>C7_public : C7_public

    private get p1_private() {
>p1_private : C6_public

        return new C6_public();
>new C6_public() : C6_public
>C6_public : typeof C6_public
    }

    private set p1_private(m1_c3_p1_arg: C6_public) {
>p1_private : C6_public
>m1_c3_p1_arg : C6_public
>C6_public : C6_public
    }

    private get p2_private() {
>p2_private : C6_public

        return new C6_public();
>new C6_public() : C6_public
>C6_public : typeof C6_public
    }

    private set p2_private(m1_c3_p2_arg: C6_public) {
>p2_private : C6_public
>m1_c3_p2_arg : C6_public
>C6_public : C6_public
    }

    private get p3_private() {
>p3_private : C5_private

        return new C5_private();
>new C5_private() : C5_private
>C5_private : typeof C5_private
    }

    private set p3_private(m1_c3_p3_arg: C5_private) {
>p3_private : C5_private
>m1_c3_p3_arg : C5_private
>C5_private : C5_private
    }

    public get p4_public(): C5_private { // error
>p4_public : C5_private
>C5_private : C5_private

        return new C5_private(); //error
>new C5_private() : C5_private
>C5_private : typeof C5_private
    }

    public set p4_public(m1_c3_p4_arg: C5_private) { // error
>p4_public : C5_private
>m1_c3_p4_arg : C5_private
>C5_private : C5_private
    }
}

class C8_private {
>C8_private : C8_private

    private get p1_private() {
>p1_private : C6_public

        return new C6_public();
>new C6_public() : C6_public
>C6_public : typeof C6_public
    }

    private set p1_private(m1_c3_p1_arg: C6_public) {
>p1_private : C6_public
>m1_c3_p1_arg : C6_public
>C6_public : C6_public
    }

    private get p2_private() {
>p2_private : C6_public

        return new C6_public();
>new C6_public() : C6_public
>C6_public : typeof C6_public
    }

    private set p2_private(m1_c3_p2_arg: C6_public) {
>p2_private : C6_public
>m1_c3_p2_arg : C6_public
>C6_public : C6_public
    }

    private get p3_private() {
>p3_private : C5_private

        return new C5_private();
>new C5_private() : C5_private
>C5_private : typeof C5_private
    }

    private set p3_private(m1_c3_p3_arg: C5_private) {
>p3_private : C5_private
>m1_c3_p3_arg : C5_private
>C5_private : C5_private
    }

    public get p4_public(): C5_private {
>p4_public : C5_private
>C5_private : C5_private

        return new C5_private();
>new C5_private() : C5_private
>C5_private : typeof C5_private
    }

    public set p4_public(m1_c3_p4_arg: C5_private) {
>p4_public : C5_private
>m1_c3_p4_arg : C5_private
>C5_private : C5_private
    }
}
