docs: def single(self, predicate):
          """
          Returns single element that matches given predicate.
          Raises:
              * NoMatchingElement error if no matching elements are found
              * MoreThanOneMatchingElement error if more than one matching
              element is found
          :param predicate: predicate as a lambda expression
          :return: Matching element as object
          """
          result = self.where(predicate).to_list()
          count = len(result)
          if count == 0:
              raise NoMatchingElement("No matching element found")
          if count > 1:
              raise MoreThanOneMatchingElement(
                  "More than one matching element found. Use where instead"
              )
          return result[0]