=== tests/cases/compiler/genericPrototypeProperty2.ts === interface EventTarget { x } >EventTarget : Symbol(EventTarget, Decl(genericPrototypeProperty2.ts, 0, 0)) >x : Symbol(x, Decl(genericPrototypeProperty2.ts, 0, 23)) class BaseEvent { >BaseEvent : Symbol(BaseEvent, Decl(genericPrototypeProperty2.ts, 0, 27)) target: EventTarget; >target : Symbol(target, Decl(genericPrototypeProperty2.ts, 1, 17)) >EventTarget : Symbol(EventTarget, Decl(genericPrototypeProperty2.ts, 0, 0)) } class MyEvent extends BaseEvent { >MyEvent : Symbol(MyEvent, Decl(genericPrototypeProperty2.ts, 3, 1)) >T : Symbol(T, Decl(genericPrototypeProperty2.ts, 5, 14)) >EventTarget : Symbol(EventTarget, Decl(genericPrototypeProperty2.ts, 0, 0)) >BaseEvent : Symbol(BaseEvent, Decl(genericPrototypeProperty2.ts, 0, 27)) target: T; >target : Symbol(target, Decl(genericPrototypeProperty2.ts, 5, 56)) >T : Symbol(T, Decl(genericPrototypeProperty2.ts, 5, 14)) } class BaseEventWrapper { >BaseEventWrapper : Symbol(BaseEventWrapper, Decl(genericPrototypeProperty2.ts, 7, 1)) t: BaseEvent; >t : Symbol(t, Decl(genericPrototypeProperty2.ts, 8, 24)) >BaseEvent : Symbol(BaseEvent, Decl(genericPrototypeProperty2.ts, 0, 27)) } class MyEventWrapper extends BaseEventWrapper { >MyEventWrapper : Symbol(MyEventWrapper, Decl(genericPrototypeProperty2.ts, 10, 1)) >BaseEventWrapper : Symbol(BaseEventWrapper, Decl(genericPrototypeProperty2.ts, 7, 1)) t: MyEvent; // any satisfies constraint and passes assignability check between 'target' properties >t : Symbol(t, Decl(genericPrototypeProperty2.ts, 12, 47)) >MyEvent : Symbol(MyEvent, Decl(genericPrototypeProperty2.ts, 3, 1)) }