tests/cases/compiler/genericReversingTypeParameters.ts(8,10): error TS2684: The 'this' context of type 'BiMap<string, number>' is not assignable to method's 'this' of type 'BiMap<K, V>'.
  Type 'string' is not assignable to type 'K'.
    'K' could be instantiated with an arbitrary type which could be unrelated to 'string'.
tests/cases/compiler/genericReversingTypeParameters.ts(9,9): error TS2684: The 'this' context of type 'BiMap<string, number>' is not assignable to method's 'this' of type 'BiMap<K, V>'.
tests/cases/compiler/genericReversingTypeParameters.ts(10,11): error TS2684: The 'this' context of type 'BiMap<number, string>' is not assignable to method's 'this' of type 'BiMap<K, V>'.
  Type 'number' is not assignable to type 'K'.
    'K' could be instantiated with an arbitrary type which could be unrelated to 'number'.


==== tests/cases/compiler/genericReversingTypeParameters.ts (3 errors) ====
    class BiMap<K, V> {
        private inverseBiMap: BiMap<V, K>;
        public get(key: K): V { return null; }
        public inverse(): BiMap<V, K> { return null; }
    }
    
    var b = new BiMap<string, number>();
    var r1 = b.get(''); 
             ~
!!! error TS2684: The 'this' context of type 'BiMap<string, number>' is not assignable to method's 'this' of type 'BiMap<K, V>'.
!!! error TS2684:   Type 'string' is not assignable to type 'K'.
!!! error TS2684:     'K' could be instantiated with an arbitrary type which could be unrelated to 'string'.
    var i = b.inverse(); // used to get the type wrong here.
            ~
!!! error TS2684: The 'this' context of type 'BiMap<string, number>' is not assignable to method's 'this' of type 'BiMap<K, V>'.
    var r2b = i.get(1); 
              ~
!!! error TS2684: The 'this' context of type 'BiMap<number, string>' is not assignable to method's 'this' of type 'BiMap<K, V>'.
!!! error TS2684:   Type 'number' is not assignable to type 'K'.
!!! error TS2684:     'K' could be instantiated with an arbitrary type which could be unrelated to 'number'.