def METHOD_NAME(self, x: Tensor) -> Tensor:
    """
    Parameters
    ----------
    x
        Input Tensor
    Returns
    -------
    Tensor
        Jacobian of the SNMLPBlock evaluated at x.
    """
    if self._jacobian_method == "ignore":
        return x * 0
    elif self._jacobian_method == "bf":
        if (
            len(self._cached_inputs) > 0
            and self._cached_inputs[0] is not x
        ):
            warnings.warn(
                "Input not the same, recomputing forward for jacobian"
                " term..."
            )
            self(x)
        return jacobian_sn_mlp_block_bf(
            [(l, i) for l, i in zip(self._layers, self._cached_inputs)]
        )
    raise NotImplementedError(self._jacobian_method)