tests/cases/conformance/classes/propertyMemberDeclarations/memberFunctionDeclarations/memberFunctionsWithPrivateOverloads.ts(43,11): error TS2341: Property 'foo' is private and only accessible within class 'C'.
tests/cases/conformance/classes/propertyMemberDeclarations/memberFunctionDeclarations/memberFunctionsWithPrivateOverloads.ts(46,10): error TS2684: The 'this' context of type 'D<number>' is not assignable to method's 'this' of type 'D<T>'.
  Type 'number' is not assignable to type 'T'.
    'T' could be instantiated with an arbitrary type which could be unrelated to 'number'.
tests/cases/conformance/classes/propertyMemberDeclarations/memberFunctionDeclarations/memberFunctionsWithPrivateOverloads.ts(46,12): error TS2341: Property 'foo' is private and only accessible within class 'D<T>'.
tests/cases/conformance/classes/propertyMemberDeclarations/memberFunctionDeclarations/memberFunctionsWithPrivateOverloads.ts(48,12): error TS2341: Property 'foo' is private and only accessible within class 'C'.
tests/cases/conformance/classes/propertyMemberDeclarations/memberFunctionDeclarations/memberFunctionsWithPrivateOverloads.ts(49,12): error TS2341: Property 'bar' is private and only accessible within class 'D<T>'.


==== tests/cases/conformance/classes/propertyMemberDeclarations/memberFunctionDeclarations/memberFunctionsWithPrivateOverloads.ts (5 errors) ====
    class C {
        private foo(x: number);
        private foo(x: number, y: string);
        private foo(x: any, y?: any) { }
    
        private bar(x: 'hi');
        private bar(x: string);
        private bar(x: number, y: string);
        private bar(x: any, y?: any) { }
    
        private static foo(x: number);
        private static foo(x: number, y: string);
        private static foo(x: any, y?: any) { }
    
        private static bar(x: 'hi');
        private static bar(x: string);
        private static bar(x: number, y: string);
        private static bar(x: any, y?: any) { }
    }
    
    class D<T> {
        private foo(x: number);
        private foo(x: T, y: T);
        private foo(x: any, y?: any) { }
    
        private bar(x: 'hi');
        private bar(x: string);
        private bar(x: T, y: T);
        private bar(x: any, y?: any) { }
    
        private static foo(x: number);
        private static foo(x: number, y: number);
        private static foo(x: any, y?: any) { }
    
        private static bar(x: 'hi');
        private static bar(x: string);
        private static bar(x: number, y: number);
        private static bar(x: any, y?: any) { }
    
    }
    
    var c: C;
    var r = c.foo(1); // error
              ~~~
!!! error TS2341: Property 'foo' is private and only accessible within class 'C'.
    
    var d: D<number>;
    var r2 = d.foo(2); // error
             ~
!!! error TS2684: The 'this' context of type 'D<number>' is not assignable to method's 'this' of type 'D<T>'.
!!! error TS2684:   Type 'number' is not assignable to type 'T'.
!!! error TS2684:     'T' could be instantiated with an arbitrary type which could be unrelated to 'number'.
               ~~~
!!! error TS2341: Property 'foo' is private and only accessible within class 'D<T>'.
    
    var r3 = C.foo(1); // error
               ~~~
!!! error TS2341: Property 'foo' is private and only accessible within class 'C'.
    var r4 = D.bar(''); // error
               ~~~
!!! error TS2341: Property 'bar' is private and only accessible within class 'D<T>'.