def METHOD_NAME(self, payload: InferenceRequest) -> List[ResponseOutput]:
    decoded_request = self.decode_request(payload, default_codec=NumpyRequestCodec)
    outputs = []
    for request_output in payload.outputs:  # type: ignore
        predict_fn = getattr(self._model, request_output.name)
        y = predict_fn(decoded_request)
        # If output is a Pandas DataFrame, encode it manually
        if PandasCodec.can_encode(y):
            if len(payload.outputs) > 1:  # type: ignore
                all_output_names = [o.name for o in payload.outputs]  # type: ignore
                raise InferenceError(
                    f"{request_output.name} returned columnar data of type"
                    f" {type(y)} and {all_output_names} were"
                    f" requested. Cannot encode multiple columnar data responses"
                    f" into one response."
                )
            # Use PandasCodec manually, to obtain the list of outputs
            return PandasCodec.encode_outputs(y)
        output = self.encode(y, request_output, default_codec=NumpyCodec)
        outputs.append(output)
    return outputs