code: @Override
      public ListIterator<E> listIterator(int index)
      {
          if (this.lists.size() > 1 || this.lists.isEmpty())
          {
              this.flattenLists();
          }
          return super.listIterator(index);
      }
docs: a list iterator is a problem for a composite list as going back in the order of the list is an issue,
  as are the other methods like set() and add() (and especially, remove).
  Convert the internal lists to one list (if not already just one list)
  and return that list's list iterator.
  <p>
  AFAIK list iterator is only commonly used in sorting.
  
  @return a ListIterator for this, with internal state convertedto one list if needed.