genericWithOpenTypeParameters1.ts(2,19): error TS2322: Type 'null' is not assignable to type 'T'.
  'T' could be instantiated with an arbitrary type which could be unrelated to 'null'.
genericWithOpenTypeParameters1.ts(7,40): error TS2345: Argument of type 'number' is not assignable to parameter of type 'T'.
  'T' could be instantiated with an arbitrary type which could be unrelated to 'number'.
genericWithOpenTypeParameters1.ts(8,41): error TS2558: Expected 0 type arguments, but got 1.
genericWithOpenTypeParameters1.ts(9,41): error TS2558: Expected 0 type arguments, but got 1.


==== genericWithOpenTypeParameters1.ts (4 errors) ====
    class B<T> {
       foo(x: T): T { return null; }
                      ~~~~~~
!!! error TS2322: Type 'null' is not assignable to type 'T'.
!!! error TS2322:   'T' could be instantiated with an arbitrary type which could be unrelated to 'null'.
    }
    
    declare var x: B<number>;
    x.foo(1); // no error
    var f = <T>(x: B<T>) => { return x.foo(1); } // error
                                           ~
!!! error TS2345: Argument of type 'number' is not assignable to parameter of type 'T'.
!!! error TS2345:   'T' could be instantiated with an arbitrary type which could be unrelated to 'number'.
    var f2 = <T>(x: B<T>) => { return x.foo<T>(1); } // error
                                            ~
!!! error TS2558: Expected 0 type arguments, but got 1.
    var f3 = <T>(x: B<T>) => { return x.foo<number>(1); } // error
                                            ~~~~~~
!!! error TS2558: Expected 0 type arguments, but got 1.
    var f4 = (x: B<number>) => { return x.foo(1); } // no error
    