def METHOD_NAME(self, coarse_operator):
    verbose = gpt.default.is_verbose("block_operator")
    coarse_otype = gpt.ot_vector_complex_additive_group(len(self.basis))
    def mat(dst, src):
        csrc = [gpt.lattice(self.coarse_grid, coarse_otype) for x in src]
        cdst = [gpt.lattice(self.coarse_grid, coarse_otype) for x in src]
        t0 = gpt.time()
        self.project(csrc, src)
        t1 = gpt.time()
        coarse_operator(cdst, csrc)
        t2 = gpt.time()
        self.promote(dst, cdst)
        t3 = gpt.time()
        if verbose:
            gpt.message(
                "fine_operator acting on %d vector(s) in %g s (project %g s, coarse_operator %g s, promote %g s)"
                % (len(src), t3 - t0, t1 - t0, t2 - t1, t3 - t2)
            )
    return gpt.matrix_operator(
        mat=mat,
        vector_space=gpt.vector_space.explicit_lattice(self.basis[0]),
        accept_list=True,
    )