def _rmatmat(self, X: Array) -> Array:
        """ Defines multiplication XA of the LinearOperator A with a dense array X (k,d)
            where A (self) is shape (d,c). By default uses jvp to compute the transpose."""
        XT = X.T
        if self.isa(cola.annotations.SelfAdjoint):
            return self.xnp.conj(self._matmat(self.xnp.conj(XT)).T)
        primals = self.xnp.zeros(shape=(self.shape[1], XT.shape[1]), dtype=XT.dtype, device=self.device)
        out = self.xnp.linear_transpose(self._matmat, primals=primals, duals=XT)
        return out.T
 Defines multiplication XA of the LinearOperator A with a dense array X (k,d)
            where A (self) is shape (d,c). By default uses jvp to compute the transpose.
cola/ops/operator_base.py