docs: def getIndex(predicateFn: Callable[[T], bool], items: List[T]) -> int:
      """
      Finds the index of an item in list, which satisfies predicate
      :param predicateFn: predicate function to run on items of list
      :param items: list of tuples
      :return: first index for which predicate function returns True
      """
      try:
          return next(i for i, v in enumerate(items) if predicateFn(v))
      except StopIteration:
          return -1