code: def filter(self, s, method='exact', order=None):
          
          if self._modulation_first:
              return super(Modulation, self).filter(s, method='exact')
          else:
              # The dot product with each modulated kernel is equivalent to the
              # GFT, as for the localization and the IGFT.
              y = np.empty((self.G.n_vertices, self.G.n_vertices))
              for i in range(self.G.n_vertices):
                  x = s * self._kernels.localize(i)
                  y[i] = np.sqrt(self.G.n_vertices) * self.G.gft(x)
              return y
docs: TODO: indirection will be removed when poly filtering is merged.
          TODO: with _filter and shape handled in Filter.filter, synthesis will work.