=== tests/cases/conformance/classes/members/inheritanceAndOverriding/derivedClassOverridesProtectedMembers3.ts ===
var x: { foo: string; }
>x : Symbol(x, Decl(derivedClassOverridesProtectedMembers3.ts, 0, 3))
>foo : Symbol(foo, Decl(derivedClassOverridesProtectedMembers3.ts, 0, 8))

var y: { foo: string; bar: string; }
>y : Symbol(y, Decl(derivedClassOverridesProtectedMembers3.ts, 1, 3))
>foo : Symbol(foo, Decl(derivedClassOverridesProtectedMembers3.ts, 1, 8))
>bar : Symbol(bar, Decl(derivedClassOverridesProtectedMembers3.ts, 1, 21))

class Base {
>Base : Symbol(Base, Decl(derivedClassOverridesProtectedMembers3.ts, 1, 36))

    a: typeof x;
>a : Symbol(Base.a, Decl(derivedClassOverridesProtectedMembers3.ts, 3, 12))
>x : Symbol(x, Decl(derivedClassOverridesProtectedMembers3.ts, 0, 3))

    b(a: typeof x) { }
>b : Symbol(Base.b, Decl(derivedClassOverridesProtectedMembers3.ts, 4, 16))
>a : Symbol(a, Decl(derivedClassOverridesProtectedMembers3.ts, 5, 6))
>x : Symbol(x, Decl(derivedClassOverridesProtectedMembers3.ts, 0, 3))

    get c() { return x; }
>c : Symbol(Base.c, Decl(derivedClassOverridesProtectedMembers3.ts, 5, 22), Decl(derivedClassOverridesProtectedMembers3.ts, 6, 25))
>x : Symbol(x, Decl(derivedClassOverridesProtectedMembers3.ts, 0, 3))

    set c(v: typeof x) { }
>c : Symbol(Base.c, Decl(derivedClassOverridesProtectedMembers3.ts, 5, 22), Decl(derivedClassOverridesProtectedMembers3.ts, 6, 25))
>v : Symbol(v, Decl(derivedClassOverridesProtectedMembers3.ts, 7, 10))
>x : Symbol(x, Decl(derivedClassOverridesProtectedMembers3.ts, 0, 3))

    d: (a: typeof x) => void;
>d : Symbol(Base.d, Decl(derivedClassOverridesProtectedMembers3.ts, 7, 26))
>a : Symbol(a, Decl(derivedClassOverridesProtectedMembers3.ts, 8, 8))
>x : Symbol(x, Decl(derivedClassOverridesProtectedMembers3.ts, 0, 3))

    static r: typeof x;
>r : Symbol(Base.r, Decl(derivedClassOverridesProtectedMembers3.ts, 8, 29))
>x : Symbol(x, Decl(derivedClassOverridesProtectedMembers3.ts, 0, 3))

    static s(a: typeof x) { }
>s : Symbol(Base.s, Decl(derivedClassOverridesProtectedMembers3.ts, 10, 23))
>a : Symbol(a, Decl(derivedClassOverridesProtectedMembers3.ts, 11, 13))
>x : Symbol(x, Decl(derivedClassOverridesProtectedMembers3.ts, 0, 3))

    static get t() { return x; }
>t : Symbol(Base.t, Decl(derivedClassOverridesProtectedMembers3.ts, 11, 29), Decl(derivedClassOverridesProtectedMembers3.ts, 12, 32))
>x : Symbol(x, Decl(derivedClassOverridesProtectedMembers3.ts, 0, 3))

    static set t(v: typeof x) { }
>t : Symbol(Base.t, Decl(derivedClassOverridesProtectedMembers3.ts, 11, 29), Decl(derivedClassOverridesProtectedMembers3.ts, 12, 32))
>v : Symbol(v, Decl(derivedClassOverridesProtectedMembers3.ts, 13, 17))
>x : Symbol(x, Decl(derivedClassOverridesProtectedMembers3.ts, 0, 3))

    static u: (a: typeof x) => void;
>u : Symbol(Base.u, Decl(derivedClassOverridesProtectedMembers3.ts, 13, 33))
>a : Symbol(a, Decl(derivedClassOverridesProtectedMembers3.ts, 14, 15))
>x : Symbol(x, Decl(derivedClassOverridesProtectedMembers3.ts, 0, 3))

    constructor(a: typeof x) {}
>a : Symbol(a, Decl(derivedClassOverridesProtectedMembers3.ts, 16, 16))
>x : Symbol(x, Decl(derivedClassOverridesProtectedMembers3.ts, 0, 3))
}

// Errors
// decrease visibility of all public members to protected
class Derived1 extends Base {
>Derived1 : Symbol(Derived1, Decl(derivedClassOverridesProtectedMembers3.ts, 17, 1))
>Base : Symbol(Base, Decl(derivedClassOverridesProtectedMembers3.ts, 1, 36))

    protected a: typeof x;
>a : Symbol(Derived1.a, Decl(derivedClassOverridesProtectedMembers3.ts, 21, 29))
>x : Symbol(x, Decl(derivedClassOverridesProtectedMembers3.ts, 0, 3))

    constructor(a: typeof x) { super(a); }
>a : Symbol(a, Decl(derivedClassOverridesProtectedMembers3.ts, 23, 16))
>x : Symbol(x, Decl(derivedClassOverridesProtectedMembers3.ts, 0, 3))
>super : Symbol(Base, Decl(derivedClassOverridesProtectedMembers3.ts, 1, 36))
>a : Symbol(a, Decl(derivedClassOverridesProtectedMembers3.ts, 23, 16))
}

class Derived2 extends Base {
>Derived2 : Symbol(Derived2, Decl(derivedClassOverridesProtectedMembers3.ts, 24, 1))
>Base : Symbol(Base, Decl(derivedClassOverridesProtectedMembers3.ts, 1, 36))

    protected b(a: typeof x) { }
>b : Symbol(Derived2.b, Decl(derivedClassOverridesProtectedMembers3.ts, 26, 29))
>a : Symbol(a, Decl(derivedClassOverridesProtectedMembers3.ts, 27, 16))
>x : Symbol(x, Decl(derivedClassOverridesProtectedMembers3.ts, 0, 3))

    constructor(a: typeof x) { super(a); }
>a : Symbol(a, Decl(derivedClassOverridesProtectedMembers3.ts, 28, 16))
>x : Symbol(x, Decl(derivedClassOverridesProtectedMembers3.ts, 0, 3))
>super : Symbol(Base, Decl(derivedClassOverridesProtectedMembers3.ts, 1, 36))
>a : Symbol(a, Decl(derivedClassOverridesProtectedMembers3.ts, 28, 16))
}

class Derived3 extends Base {
>Derived3 : Symbol(Derived3, Decl(derivedClassOverridesProtectedMembers3.ts, 29, 1))
>Base : Symbol(Base, Decl(derivedClassOverridesProtectedMembers3.ts, 1, 36))

    protected get c() { return x; }
>c : Symbol(Derived3.c, Decl(derivedClassOverridesProtectedMembers3.ts, 31, 29))
>x : Symbol(x, Decl(derivedClassOverridesProtectedMembers3.ts, 0, 3))

    constructor(a: typeof x) { super(a); }
>a : Symbol(a, Decl(derivedClassOverridesProtectedMembers3.ts, 33, 16))
>x : Symbol(x, Decl(derivedClassOverridesProtectedMembers3.ts, 0, 3))
>super : Symbol(Base, Decl(derivedClassOverridesProtectedMembers3.ts, 1, 36))
>a : Symbol(a, Decl(derivedClassOverridesProtectedMembers3.ts, 33, 16))
}

class Derived4 extends Base {
>Derived4 : Symbol(Derived4, Decl(derivedClassOverridesProtectedMembers3.ts, 34, 1))
>Base : Symbol(Base, Decl(derivedClassOverridesProtectedMembers3.ts, 1, 36))

    protected set c(v: typeof x) { }
>c : Symbol(Derived4.c, Decl(derivedClassOverridesProtectedMembers3.ts, 36, 29))
>v : Symbol(v, Decl(derivedClassOverridesProtectedMembers3.ts, 37, 20))
>x : Symbol(x, Decl(derivedClassOverridesProtectedMembers3.ts, 0, 3))

    constructor(a: typeof x) { super(a); }
>a : Symbol(a, Decl(derivedClassOverridesProtectedMembers3.ts, 38, 16))
>x : Symbol(x, Decl(derivedClassOverridesProtectedMembers3.ts, 0, 3))
>super : Symbol(Base, Decl(derivedClassOverridesProtectedMembers3.ts, 1, 36))
>a : Symbol(a, Decl(derivedClassOverridesProtectedMembers3.ts, 38, 16))
}

class Derived5 extends Base {
>Derived5 : Symbol(Derived5, Decl(derivedClassOverridesProtectedMembers3.ts, 39, 1))
>Base : Symbol(Base, Decl(derivedClassOverridesProtectedMembers3.ts, 1, 36))

    protected d: (a: typeof x) => void ;
>d : Symbol(Derived5.d, Decl(derivedClassOverridesProtectedMembers3.ts, 41, 29))
>a : Symbol(a, Decl(derivedClassOverridesProtectedMembers3.ts, 42, 18))
>x : Symbol(x, Decl(derivedClassOverridesProtectedMembers3.ts, 0, 3))

    constructor(a: typeof x) { super(a); }
>a : Symbol(a, Decl(derivedClassOverridesProtectedMembers3.ts, 43, 16))
>x : Symbol(x, Decl(derivedClassOverridesProtectedMembers3.ts, 0, 3))
>super : Symbol(Base, Decl(derivedClassOverridesProtectedMembers3.ts, 1, 36))
>a : Symbol(a, Decl(derivedClassOverridesProtectedMembers3.ts, 43, 16))
}

class Derived6 extends Base {
>Derived6 : Symbol(Derived6, Decl(derivedClassOverridesProtectedMembers3.ts, 44, 1))
>Base : Symbol(Base, Decl(derivedClassOverridesProtectedMembers3.ts, 1, 36))

    protected static r: typeof x;
>r : Symbol(Derived6.r, Decl(derivedClassOverridesProtectedMembers3.ts, 46, 29))
>x : Symbol(x, Decl(derivedClassOverridesProtectedMembers3.ts, 0, 3))

    constructor(a: typeof x) { super(a); }
>a : Symbol(a, Decl(derivedClassOverridesProtectedMembers3.ts, 48, 16))
>x : Symbol(x, Decl(derivedClassOverridesProtectedMembers3.ts, 0, 3))
>super : Symbol(Base, Decl(derivedClassOverridesProtectedMembers3.ts, 1, 36))
>a : Symbol(a, Decl(derivedClassOverridesProtectedMembers3.ts, 48, 16))
}

class Derived7 extends Base {
>Derived7 : Symbol(Derived7, Decl(derivedClassOverridesProtectedMembers3.ts, 49, 1))
>Base : Symbol(Base, Decl(derivedClassOverridesProtectedMembers3.ts, 1, 36))

    protected static s(a: typeof x) { }
>s : Symbol(Derived7.s, Decl(derivedClassOverridesProtectedMembers3.ts, 51, 29))
>a : Symbol(a, Decl(derivedClassOverridesProtectedMembers3.ts, 52, 23))
>x : Symbol(x, Decl(derivedClassOverridesProtectedMembers3.ts, 0, 3))

    constructor(a: typeof x) { super(a); }
>a : Symbol(a, Decl(derivedClassOverridesProtectedMembers3.ts, 53, 16))
>x : Symbol(x, Decl(derivedClassOverridesProtectedMembers3.ts, 0, 3))
>super : Symbol(Base, Decl(derivedClassOverridesProtectedMembers3.ts, 1, 36))
>a : Symbol(a, Decl(derivedClassOverridesProtectedMembers3.ts, 53, 16))
}

class Derived8 extends Base {
>Derived8 : Symbol(Derived8, Decl(derivedClassOverridesProtectedMembers3.ts, 54, 1))
>Base : Symbol(Base, Decl(derivedClassOverridesProtectedMembers3.ts, 1, 36))

    protected static get t() { return x; }
>t : Symbol(Derived8.t, Decl(derivedClassOverridesProtectedMembers3.ts, 56, 29))
>x : Symbol(x, Decl(derivedClassOverridesProtectedMembers3.ts, 0, 3))

    constructor(a: typeof x) { super(a); }
>a : Symbol(a, Decl(derivedClassOverridesProtectedMembers3.ts, 58, 16))
>x : Symbol(x, Decl(derivedClassOverridesProtectedMembers3.ts, 0, 3))
>super : Symbol(Base, Decl(derivedClassOverridesProtectedMembers3.ts, 1, 36))
>a : Symbol(a, Decl(derivedClassOverridesProtectedMembers3.ts, 58, 16))
}

class Derived9 extends Base {
>Derived9 : Symbol(Derived9, Decl(derivedClassOverridesProtectedMembers3.ts, 59, 1))
>Base : Symbol(Base, Decl(derivedClassOverridesProtectedMembers3.ts, 1, 36))

    protected static set t(v: typeof x) { }
>t : Symbol(Derived9.t, Decl(derivedClassOverridesProtectedMembers3.ts, 61, 29))
>v : Symbol(v, Decl(derivedClassOverridesProtectedMembers3.ts, 62, 27))
>x : Symbol(x, Decl(derivedClassOverridesProtectedMembers3.ts, 0, 3))

    constructor(a: typeof x) { super(a); }
>a : Symbol(a, Decl(derivedClassOverridesProtectedMembers3.ts, 63, 16))
>x : Symbol(x, Decl(derivedClassOverridesProtectedMembers3.ts, 0, 3))
>super : Symbol(Base, Decl(derivedClassOverridesProtectedMembers3.ts, 1, 36))
>a : Symbol(a, Decl(derivedClassOverridesProtectedMembers3.ts, 63, 16))
}

class Derived10 extends Base {
>Derived10 : Symbol(Derived10, Decl(derivedClassOverridesProtectedMembers3.ts, 64, 1))
>Base : Symbol(Base, Decl(derivedClassOverridesProtectedMembers3.ts, 1, 36))

    protected static u: (a: typeof x) => void ;
>u : Symbol(Derived10.u, Decl(derivedClassOverridesProtectedMembers3.ts, 66, 30))
>a : Symbol(a, Decl(derivedClassOverridesProtectedMembers3.ts, 67, 25))
>x : Symbol(x, Decl(derivedClassOverridesProtectedMembers3.ts, 0, 3))

    constructor(a: typeof x) { super(a); }
>a : Symbol(a, Decl(derivedClassOverridesProtectedMembers3.ts, 68, 16))
>x : Symbol(x, Decl(derivedClassOverridesProtectedMembers3.ts, 0, 3))
>super : Symbol(Base, Decl(derivedClassOverridesProtectedMembers3.ts, 1, 36))
>a : Symbol(a, Decl(derivedClassOverridesProtectedMembers3.ts, 68, 16))
}
