docs: def where(self, predicate):
          """
          Returns new Enumerable where elements matching predicate are selected
          :param predicate: predicate as a lambda expression
          :return: new Enumerable object
          """
          if predicate is None:
              raise NullArgumentError("No predicate given for where clause")
          return Enumerable(itertools.ifilter(predicate, self))