docs: def index_list_for_sort_order(x: List[Any], key: Callable[[Any], Any] = None,
                                reverse: bool = False) -> List[int]:
      """
      Returns a list of indexes of ``x``, IF ``x`` WERE TO BE SORTED.
  
      Args:
          x: data
          key: function to be applied to the data to generate a sort key; this
              function is passed as the ``key=`` parameter to :func:`sorted`;
              the default is ``itemgetter(1)``
          reverse: reverse the sort order?
  
      Returns:
          list of integer index values
  
      Example:
  
      .. code-block:: python
  
          z = ["a", "c", "b"]
          index_list_for_sort_order(z)  # [0, 2, 1]
          index_list_for_sort_order(z, reverse=True)  # [1, 2, 0]
          q = [("a", 9), ("b", 8), ("c", 7)]
          index_list_for_sort_order(q, key=itemgetter(1))
  
      """
      def key_with_user_func(idx_val: Tuple[int, Any]):
          return key(idx_val[1])
      if key:
          sort_key = key_with_user_func
          # see the simpler version below
      else:
          sort_key = itemgetter(1)
          # enumerate, below, will return tuples of (index, value), so
          # itemgetter(1) means sort by the value
      index_value_list = sorted(enumerate(x), key=sort_key, reverse=reverse)
      return [i for i, _ in index_value_list]