def METHOD_NAME(self, differentiable, x_init):
    """Given a starting point, `x_init`, takes one LBFGS step
    to optimize the differentiable function.
    :param function differentiable: a function amenable to torch
        autograd
    :param torch.Tensor x_init: the initial point
    """
    # transform x to an unconstrained domain
    unconstrained_x_init = transform_to(self.constraints).inv(x_init)
    unconstrained_x = unconstrained_x_init.detach().clone().requires_grad_(True)
    # TODO: Use LBFGS with line search by pytorch #8824 merged
    minimizer = optim.LBFGS([unconstrained_x], max_eval=20)
    def closure():
        minimizer.zero_grad()
        if (torch.log(torch.abs(unconstrained_x)) > 25.0).any():
            return torch.tensor(float("inf"))
        x = transform_to(self.constraints)(unconstrained_x)
        y = differentiable(x)
        autograd.backward(
            unconstrained_x, autograd.grad(y, unconstrained_x, retain_graph=True)
        )
        return y
    minimizer.step(closure)
    # after finding a candidate in the unconstrained domain,
    # convert it back to original domain.
    x = transform_to(self.constraints)(unconstrained_x)
    opt_y = differentiable(x)
    return x.detach(), opt_y.detach()