For the following TypeScript code: ```ts import { ZodType, z } from 'zod' class Super { protected _inputSchema: ZodType | undefined protected _outputSchema: ZodType | undefined input(outputSchema: ZodType): Super { const refinedInstance = this as unknown as Super refinedInstance._inputSchema = inputSchema return refinedInstance } output(outputSchema: ZodType): Super { const refinedInstance = this as unknown as Super refinedInstance._outputSchema = outputSchema return refinedInstance } } class SubA extends Super {} class SubB extends Super {} ``` ```ts const a = new SubA() a.output() // SubA const b = new SubB() b.output() // SubB ``` How can I change this implementation so `input` and `output` return the correct subclassed types?