// @strict: true class A { unmeasurableUsage!: {[K in keyof T]-?: T[K]}; } class B extends A { method(): string | (this extends C ? undefined : null) { return ""; } } class C extends B { marker!: string; } const x = new C<{}>(); const y = x.method(); // usage flags `method` in `B` as circular and marks `y` as the error-any type