code: def woodbury_chol(self):
          
          if self._woodbury_chol is None:
              # compute woodbury chol from
              if self._woodbury_inv is not None:
                  winv = np.atleast_3d(self._woodbury_inv)
                  self._woodbury_chol = np.zeros(winv.shape)
                  for p in range(winv.shape[-1]):
                      self._woodbury_chol[:, :, p] = pdinv(winv[:, :, p])[2]
                      # Li = jitchol(self._woodbury_inv)
                      # self._woodbury_chol, _ = dtrtri(Li)
                      # W, _, _, _, = pdinv(self._woodbury_inv)
                      # symmetrify(W)
                      # self._woodbury_chol = jitchol(W)
              # try computing woodbury chol from cov
              elif self._covariance is not None:
                  raise NotImplementedError("TODO: check code here")
                  B = self._K - self._covariance
                  tmp, _ = dpotrs(self.K_chol, B)
                  self._woodbury_inv, _ = dpotrs(self.K_chol, tmp.T)
                  _, _, self._woodbury_chol, _ = pdinv(self._woodbury_inv)
              else:
                  raise ValueError("insufficient information to compute posterior")
          return self._woodbury_chol
docs: return $L_{W}$ where L is the lower triangular Cholesky decomposition of the Woodbury matrix
          $$
          L_{W}L_{W}^{\top} = W^{-1}
          W^{-1} := \texttt{Woodbury inv}
          $$