docs: def _build_filter_methods(cls, **meths):
          """Given Node types, build the corresponding i?filter shortcuts.
  
          The should be given as keys storing the method's base name paired with
          values storing the corresponding :class:`.Node` type. For example, the
          dict may contain the pair ``("templates", Template)``, which will
          produce the methods :meth:`ifilter_templates` and
          :meth:`filter_templates`, which are shortcuts for
          :meth:`ifilter(forcetype=Template) <ifilter>` and
          :meth:`filter(forcetype=Template) <filter>`, respectively. These
          shortcuts are added to the class itself, with an appropriate docstring.
          """
          doc = """Iterate over {0}.
  
          This is equivalent to :meth:`{1}` with *forcetype* set to
          :class:`~{2.__module__}.{2.__name__}`.
          """
          make_ifilter = lambda ftype: (lambda self, *a, **kw:
                                        self.ifilter(forcetype=ftype, *a, **kw))
          make_filter = lambda ftype: (lambda self, *a, **kw:
                                       self.filter(forcetype=ftype, *a, **kw))
          for name, ftype in (meths.items() if py3k else meths.iteritems()):
              ifilter = make_ifilter(ftype)
              filter = make_filter(ftype)
              ifilter.__doc__ = doc.format(name, "ifilter", ftype)
              filter.__doc__ = doc.format(name, "filter", ftype)
              setattr(cls, "ifilter_" + name, ifilter)
              setattr(cls, "filter_" + name, filter)