interface Stack { pop(): T zip(a: Stack): Stack<{ x: T; y: S }> } interface MyStack extends Stack { zip(a: Stack): Stack<{ x: T; y: S }> }