def METHOD_NAME(self, signal):
    """
    Compute the NUFFT adjoint using this plan instance.
    :param signal: Signal to be transformed. For a single transform,
        this should be a a 1D array of len `num_pts`.
        For a batch, signal should have shape `(ntransforms, num_pts)`.
    :returns: Transformed signal `(sz)` or `(ntransforms, sz)`.
    """
    # Note, there is a corner case for ntransforms == 1.
    if self.ntransforms > 1 or (self.ntransforms == 1 and len(signal.shape) == 2):
        assert (
            len(signal.shape) == 2
        ), f"For multiple {self.dim}D adjoints, signal should be a {self.ntransforms} element stack of {self.num_pts}."
        assert (
            signal.shape[0] == self.ntransforms
        ), "For multiple transforms, signal stack length should match ntransforms {self.ntransforms}."
        # finufft is expecting flat array for 1D case.
        if self.ntransforms == 1:
            signal = signal.reshape(self.num_pts)
    # FINUFFT was designed for a complex input array
    signal = np.array(signal, copy=False, dtype=self.complex_dtype, order="C")
    result = self._adjoint_plan.execute(signal)
    return result