r'''Computes :math:`\langle C,M_lAM_rV_n\rangle` efficiently with a
        three-term recurrence.

def _apply_projection(self, Av):
        r'''Computes :math:`\langle C,M_lAM_rV_n\rangle` efficiently with a
        three-term recurrence.'''
        PAv, UAp = self.projection.apply_complement(Av, return_Ya=True)
        self._UAps.append(UAp)
        c = UAp.copy()
        rhos = self.rhos
        if self.iter > 0:
            c -= (1 + rhos[-1]/rhos[-2])*self._UAps[-2]
        if self.iter > 1:
            c += rhos[-2]/rhos[-3]*self._UAps[-3]
        c *= ((-1)**self.iter) / numpy.sqrt(rhos[-1])
        if self.iter > 0:
            c -= numpy.sqrt(rhos[-2]/rhos[-1]) * self.C[:, [-1]]
        self.C = numpy.c_[self.C, c]
        return PAv