=== tests/cases/compiler/indexerReturningTypeParameter1.ts === interface f { >f : Symbol(f, Decl(indexerReturningTypeParameter1.ts, 0, 0)) groupBy(): { [key: string]: T[]; }; >groupBy : Symbol(groupBy, Decl(indexerReturningTypeParameter1.ts, 0, 13)) >T : Symbol(T, Decl(indexerReturningTypeParameter1.ts, 1, 12)) >key : Symbol(key, Decl(indexerReturningTypeParameter1.ts, 1, 21)) >T : Symbol(T, Decl(indexerReturningTypeParameter1.ts, 1, 12)) } var a: f; >a : Symbol(a, Decl(indexerReturningTypeParameter1.ts, 3, 3)) >f : Symbol(f, Decl(indexerReturningTypeParameter1.ts, 0, 0)) var r = a.groupBy(); >r : Symbol(r, Decl(indexerReturningTypeParameter1.ts, 4, 3)) >a.groupBy : Symbol(f.groupBy, Decl(indexerReturningTypeParameter1.ts, 0, 13)) >a : Symbol(a, Decl(indexerReturningTypeParameter1.ts, 3, 3)) >groupBy : Symbol(f.groupBy, Decl(indexerReturningTypeParameter1.ts, 0, 13)) class c { >c : Symbol(c, Decl(indexerReturningTypeParameter1.ts, 4, 20)) groupBy(): { [key: string]: T[]; } { >groupBy : Symbol(groupBy, Decl(indexerReturningTypeParameter1.ts, 6, 9)) >T : Symbol(T, Decl(indexerReturningTypeParameter1.ts, 7, 12)) >key : Symbol(key, Decl(indexerReturningTypeParameter1.ts, 7, 21)) >T : Symbol(T, Decl(indexerReturningTypeParameter1.ts, 7, 12)) return null; } } var a2: c; >a2 : Symbol(a2, Decl(indexerReturningTypeParameter1.ts, 11, 3)) >c : Symbol(c, Decl(indexerReturningTypeParameter1.ts, 4, 20)) var r2 = a2.groupBy(); >r2 : Symbol(r2, Decl(indexerReturningTypeParameter1.ts, 12, 3)) >a2.groupBy : Symbol(c.groupBy, Decl(indexerReturningTypeParameter1.ts, 6, 9)) >a2 : Symbol(a2, Decl(indexerReturningTypeParameter1.ts, 11, 3)) >groupBy : Symbol(c.groupBy, Decl(indexerReturningTypeParameter1.ts, 6, 9))