How does TypeScript check equality for infinite recursive types?
Example:
// LL is the same as L unfolded once type L = [] | {item: number, next: L} ty