docs: def distinct(self, key=lambda x: x):
          """
          Returns enumerable containing elements that are distinct based on
          given key selector
          :param key: key selector as lambda expression
          :return: new Enumerable object
          """
          return Enumerable(self.group_by(key=key).select(lambda g: g.first()).to_list())