=== tests/cases/compiler/genericReversingTypeParameters.ts === class BiMap { >BiMap : BiMap, Symbol(BiMap, Decl(genericReversingTypeParameters.ts, 0, 0)) >K : K, Symbol(K, Decl(genericReversingTypeParameters.ts, 0, 12)) >V : V, Symbol(V, Decl(genericReversingTypeParameters.ts, 0, 14)) private inverseBiMap: BiMap; >inverseBiMap : BiMap, Symbol(inverseBiMap, Decl(genericReversingTypeParameters.ts, 0, 19)) >BiMap : BiMap, Symbol(BiMap, Decl(genericReversingTypeParameters.ts, 0, 0)) >V : V, Symbol(V, Decl(genericReversingTypeParameters.ts, 0, 14)) >K : K, Symbol(K, Decl(genericReversingTypeParameters.ts, 0, 12)) public get(key: K): V { return null; } >get : (key: K) => V, Symbol(get, Decl(genericReversingTypeParameters.ts, 1, 38)) >key : K, Symbol(key, Decl(genericReversingTypeParameters.ts, 2, 15)) >K : K, Symbol(K, Decl(genericReversingTypeParameters.ts, 0, 12)) >V : V, Symbol(V, Decl(genericReversingTypeParameters.ts, 0, 14)) >null : null public inverse(): BiMap { return null; } >inverse : () => BiMap, Symbol(inverse, Decl(genericReversingTypeParameters.ts, 2, 42)) >BiMap : BiMap, Symbol(BiMap, Decl(genericReversingTypeParameters.ts, 0, 0)) >V : V, Symbol(V, Decl(genericReversingTypeParameters.ts, 0, 14)) >K : K, Symbol(K, Decl(genericReversingTypeParameters.ts, 0, 12)) >null : null } var b = new BiMap(); >b : BiMap, Symbol(b, Decl(genericReversingTypeParameters.ts, 6, 3)) >new BiMap() : BiMap >BiMap : typeof BiMap, Symbol(BiMap, Decl(genericReversingTypeParameters.ts, 0, 0)) var r1 = b.get(''); >r1 : number, Symbol(r1, Decl(genericReversingTypeParameters.ts, 7, 3)) >b.get('') : number >b.get : (key: string) => number, Symbol(BiMap.get, Decl(genericReversingTypeParameters.ts, 1, 38)) >b : BiMap, Symbol(b, Decl(genericReversingTypeParameters.ts, 6, 3)) >get : (key: string) => number, Symbol(BiMap.get, Decl(genericReversingTypeParameters.ts, 1, 38)) >'' : string var i = b.inverse(); // used to get the type wrong here. >i : BiMap, Symbol(i, Decl(genericReversingTypeParameters.ts, 8, 3)) >b.inverse() : BiMap >b.inverse : () => BiMap, Symbol(BiMap.inverse, Decl(genericReversingTypeParameters.ts, 2, 42)) >b : BiMap, Symbol(b, Decl(genericReversingTypeParameters.ts, 6, 3)) >inverse : () => BiMap, Symbol(BiMap.inverse, Decl(genericReversingTypeParameters.ts, 2, 42)) var r2b = i.get(1); >r2b : string, Symbol(r2b, Decl(genericReversingTypeParameters.ts, 9, 3)) >i.get(1) : string >i.get : (key: number) => string, Symbol(BiMap.get, Decl(genericReversingTypeParameters.ts, 1, 38)) >i : BiMap, Symbol(i, Decl(genericReversingTypeParameters.ts, 8, 3)) >get : (key: number) => string, Symbol(BiMap.get, Decl(genericReversingTypeParameters.ts, 1, 38)) >1 : number