tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinSubclass2.ts(13,9): error TS2445: Property 'x' is protected and only accessible within class 'Derived3' and its subclasses.
tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinSubclass2.ts(26,9): error TS2446: Property 'x' is protected and only accessible through an instance of class 'Derived1'.
tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinSubclass2.ts(28,9): error TS2446: Property 'x' is protected and only accessible through an instance of class 'Derived1'.
tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinSubclass2.ts(29,9): error TS2445: Property 'x' is protected and only accessible within class 'Derived3' and its subclasses.
tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinSubclass2.ts(30,9): error TS2446: Property 'x' is protected and only accessible through an instance of class 'Derived1'.
tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinSubclass2.ts(42,9): error TS2446: Property 'x' is protected and only accessible through an instance of class 'Derived2'.
tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinSubclass2.ts(43,9): error TS2446: Property 'x' is protected and only accessible through an instance of class 'Derived2'.
tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinSubclass2.ts(45,9): error TS2445: Property 'x' is protected and only accessible within class 'Derived3' and its subclasses.
tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinSubclass2.ts(59,9): error TS2446: Property 'x' is protected and only accessible through an instance of class 'Derived3'.
tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinSubclass2.ts(60,9): error TS2446: Property 'x' is protected and only accessible through an instance of class 'Derived3'.
tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinSubclass2.ts(61,9): error TS2446: Property 'x' is protected and only accessible through an instance of class 'Derived3'.
tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinSubclass2.ts(63,9): error TS2446: Property 'x' is protected and only accessible through an instance of class 'Derived3'.
tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinSubclass2.ts(75,9): error TS2446: Property 'x' is protected and only accessible through an instance of class 'Derived4'.
tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinSubclass2.ts(76,9): error TS2446: Property 'x' is protected and only accessible through an instance of class 'Derived4'.
tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinSubclass2.ts(77,9): error TS2446: Property 'x' is protected and only accessible through an instance of class 'Derived4'.
tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinSubclass2.ts(78,9): error TS2445: Property 'x' is protected and only accessible within class 'Derived3' and its subclasses.
tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinSubclass2.ts(90,1): error TS2445: Property 'x' is protected and only accessible within class 'Base' and its subclasses.
tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinSubclass2.ts(91,1): error TS2445: Property 'x' is protected and only accessible within class 'Base' and its subclasses.
tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinSubclass2.ts(92,1): error TS2445: Property 'x' is protected and only accessible within class 'Base' and its subclasses.
tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinSubclass2.ts(93,1): error TS2445: Property 'x' is protected and only accessible within class 'Derived3' and its subclasses.
tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinSubclass2.ts(94,1): error TS2445: Property 'x' is protected and only accessible within class 'Base' and its subclasses.


==== tests/cases/conformance/classes/members/accessibility/protectedClassPropertyAccessibleWithinSubclass2.ts (21 errors) ====
    class Base {
        protected x: string;
        method() {
            var b: Base;
            var d1: Derived1;
            var d2: Derived2;
            var d3: Derived3;
            var d4: Derived4;
    
            b.x;            // OK, accessed within their declaring class
            d1.x;           // OK, accessed within their declaring class
            d2.x;           // OK, accessed within their declaring class
            d3.x;           // Error, redefined in a subclass, can only be accessed in the declaring class or one of its subclasses
            ~~~~
!!! error TS2445: Property 'x' is protected and only accessible within class 'Derived3' and its subclasses.
            d4.x;           // OK, accessed within their declaring class
        }
    }
    
    class Derived1 extends Base {
        method1() {
            var b: Base;
            var d1: Derived1;
            var d2: Derived2;
            var d3: Derived3;
            var d4: Derived4;
    
            b.x;            // Error, isn't accessed through an instance of the enclosing class
            ~~~
!!! error TS2446: Property 'x' is protected and only accessible through an instance of class 'Derived1'.
            d1.x;           // OK, accessed within a class derived from their declaring class, and through an instance of the enclosing class
            d2.x;           // Error, isn't accessed through an instance of the enclosing class
            ~~~~
!!! error TS2446: Property 'x' is protected and only accessible through an instance of class 'Derived1'.
            d3.x;           // Error, redefined in a subclass, can only be accessed in the declaring class or one of its subclasses
            ~~~~
!!! error TS2445: Property 'x' is protected and only accessible within class 'Derived3' and its subclasses.
            d4.x;           // Error, isn't accessed through an instance of the enclosing class
            ~~~~
!!! error TS2446: Property 'x' is protected and only accessible through an instance of class 'Derived1'.
        }
    }
    
    class Derived2 extends Base {
        method2() {
            var b: Base;
            var d1: Derived1;
            var d2: Derived2;
            var d3: Derived3;
            var d4: Derived4;
    
            b.x;            // Error, isn't accessed through an instance of the enclosing class
            ~~~
!!! error TS2446: Property 'x' is protected and only accessible through an instance of class 'Derived2'.
            d1.x;           // Error, isn't accessed through an instance of the enclosing class
            ~~~~
!!! error TS2446: Property 'x' is protected and only accessible through an instance of class 'Derived2'.
            d2.x;           // OK, accessed within a class derived from their declaring class, and through an instance of the enclosing class
            d3.x;           // Error, redefined in a subclass, can only be accessed in the declaring class or one of its subclasses
            ~~~~
!!! error TS2445: Property 'x' is protected and only accessible within class 'Derived3' and its subclasses.
            d4.x;           // OK, accessed within a class derived from their declaring class, and through an instance of the enclosing class or one of its subclasses
        }
    }
    
    class Derived3 extends Derived1 {
        protected x: string;
        method3() {
            var b: Base;
            var d1: Derived1;
            var d2: Derived2;
            var d3: Derived3;
            var d4: Derived4;
    
            b.x;            // Error, isn't accessed through an instance of the enclosing class
            ~~~
!!! error TS2446: Property 'x' is protected and only accessible through an instance of class 'Derived3'.
            d1.x;           // Error, isn't accessed through an instance of the enclosing class
            ~~~~
!!! error TS2446: Property 'x' is protected and only accessible through an instance of class 'Derived3'.
            d2.x;           // Error, isn't accessed through an instance of the enclosing class
            ~~~~
!!! error TS2446: Property 'x' is protected and only accessible through an instance of class 'Derived3'.
            d3.x;           // OK, accessed within their declaring class
            d4.x;           // Error, isn't accessed through an instance of the enclosing class
            ~~~~
!!! error TS2446: Property 'x' is protected and only accessible through an instance of class 'Derived3'.
        }
    }
    
    class Derived4 extends Derived2 {
        method4() {
            var b: Base;
            var d1: Derived1;
            var d2: Derived2;
            var d3: Derived3;
            var d4: Derived4;
    
            b.x;            // Error, isn't accessed through an instance of the enclosing class
            ~~~
!!! error TS2446: Property 'x' is protected and only accessible through an instance of class 'Derived4'.
            d1.x;           // Error, isn't accessed through an instance of the enclosing class
            ~~~~
!!! error TS2446: Property 'x' is protected and only accessible through an instance of class 'Derived4'.
            d2.x;           // Error, isn't accessed through an instance of the enclosing class
            ~~~~
!!! error TS2446: Property 'x' is protected and only accessible through an instance of class 'Derived4'.
            d3.x;           // Error, redefined in a subclass, can only be accessed in the declaring class or one of its subclasses
            ~~~~
!!! error TS2445: Property 'x' is protected and only accessible within class 'Derived3' and its subclasses.
            d4.x;           // OK, accessed within a class derived from their declaring class, and through an instance of the enclosing class
        }
    }
    
    
    var b: Base;
    var d1: Derived1;
    var d2: Derived2;
    var d3: Derived3;
    var d4: Derived4;
    
    b.x;                    // Error, neither within their declaring class nor classes derived from their declaring class
    ~~~
!!! error TS2445: Property 'x' is protected and only accessible within class 'Base' and its subclasses.
    d1.x;                   // Error, neither within their declaring class nor classes derived from their declaring class
    ~~~~
!!! error TS2445: Property 'x' is protected and only accessible within class 'Base' and its subclasses.
    d2.x;                   // Error, neither within their declaring class nor classes derived from their declaring class
    ~~~~
!!! error TS2445: Property 'x' is protected and only accessible within class 'Base' and its subclasses.
    d3.x;                   // Error, neither within their declaring class nor classes derived from their declaring class
    ~~~~
!!! error TS2445: Property 'x' is protected and only accessible within class 'Derived3' and its subclasses.
    d4.x;                   // Error, neither within their declaring class nor classes derived from their declaring class
    ~~~~
!!! error TS2445: Property 'x' is protected and only accessible within class 'Base' and its subclasses.