def METHOD_NAME(self, x):
    """
    :param x: the input into the bijection
    :type x: torch.Tensor
    Invokes the bijection x=>y; in the prototypical context of a
    :class:`~pyro.distributions.TransformedDistribution` `x` is a sample from
    the base distribution (or the output of a previous transform)
    """
    x1, x2 = x[..., : self.split_dim], x[..., self.split_dim :]
    if not self.identity:
        y1 = self.lower_spline(x1)
        log_detK = self.lower_spline._cache_log_detJ
    else:
        y1 = x1
    upper_spline = self.upper_spline.condition(x1)
    y2 = upper_spline(x2)
    log_detJ = upper_spline._cache_log_detJ
    if not self.identity:
        log_detJ = torch.cat([log_detJ, log_detK], dim=-1)
    self._cache_log_detJ = log_detJ
    return torch.cat([y1, y2], dim=-1)