==== tests/cases/compiler/overEagerReturnTypeSpecialization.ts (1 errors) ====
    //Note: Below simpler repro
    
    interface I1<T> {
        func<U>(callback: (value: T) => U): I1<U>;
    }
     
    declare var v1: I1<number>;
    var r1: I1<string> = v1.func(num => num.toString()) // Correctly returns an I1<string>
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
               .func(str => str.length);    // should error
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! overEagerReturnTypeSpecialization.ts(8,5): error TS2012: Cannot convert 'I1<number>' to 'I1<string>':
!!! 	Types of property 'func' of types 'I1<number>' and 'I1<string>' are incompatible:
!!! 		Call signatures of types '<U>(callback: (value: number) => U) => I1<U>' and '<U>(callback: (value: string) => U) => I1<U>' are incompatible:
!!! 			Call signatures of types '(value: number) => any' and '(value: string) => any' are incompatible.
!!! 			Call signatures of types '(value: string) => any' and '(value: number) => any' are incompatible.
    
    var r2: I1<number> = v1.func(num => num.toString()) // Correctly returns an I1<string>
               .func(str => str.length);    // should be ok 
     
     