// once caused stack overflow interface Query { selectMany(selector: (item: T) => U[]): Query; selectMany(arraySelector: (item: T) => U[], resultSelector: (outer: T, inner: U) => R): Query; }