==== tests/cases/compiler/objectTypesIdentityWithCallSignaturesDifferingParamCounts2.ts (4 errors) ====
    // object types are identical structurally
    
    interface I {
        (x: string): string;
    }
    
    interface I2<T> {
        (x: T): T;
    }
    
    var a: { (x: string, y: string): string }
    
    function foo2(x: I);
    function foo2(x: I); // error
    ~~~~~~~~~~~~~~~~~~~~
!!! objectTypesIdentityWithCallSignaturesDifferingParamCounts2.ts(14,1): error TS2144: Duplicate overload signature for 'foo2'.
    function foo2(x: any) { }
    
    function foo3(x: typeof a);
    function foo3(x: typeof a); // error
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! objectTypesIdentityWithCallSignaturesDifferingParamCounts2.ts(18,1): error TS2144: Duplicate overload signature for 'foo3'.
    function foo3(x: any) { }
    
    function foo4(x: I2<string>);
    function foo4(x: I2<string>); // error
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! objectTypesIdentityWithCallSignaturesDifferingParamCounts2.ts(22,1): error TS2144: Duplicate overload signature for 'foo4'.
    function foo4(x: any) { }
    
    function foo5(x: I2<string>);
    function foo5(x: I2<number>); // ok
    function foo5(x: any) { }
    
    function foo13(x: I);
    function foo13(x: typeof a); // ok
    function foo13(x: any) { }
    
    function foo14(x: I);
    function foo14(x: I2<string>); // error
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!!! objectTypesIdentityWithCallSignaturesDifferingParamCounts2.ts(34,1): error TS2144: Duplicate overload signature for 'foo14'.
    function foo14(x: any) { }
    
    function foo14b(x: typeof a);
    function foo14b(x: I2<string>); // ok
    function foo14b(x: any) { }
    
    function foo15(x: I);
    function foo15(x: I2<number>); // ok
    function foo15(x: any) { }