code: @GwtCompatible(serializable = true)
    // type parameter <S> lets us avoid the extra <String> in statements like:
    // Ordering<Iterable<String>> o =
    //     Ordering.<String>natural().lexicographical();
    public <S extends T> Ordering<Iterable<S>> lexicographical() {
      /*
       * Note that technically the returned ordering should be capable of
       * handling not just {@code Iterable<S>} instances, but also any {@code
       * Iterable<? extends S>}. However, the need for this comes up so rarely
       * that it doesn't justify making everyone else deal with the very ugly
       * wildcard.
       */
      return new LexicographicalOrdering<S>(this);
    }
docs: Returns a new ordering which sorts iterables by comparing corresponding elements pairwise until
  a nonzero result is found; imposes "dictionary order". If the end of one iterable is reached,
  but not the other, the shorter iterable is considered to be less than the longer one. For
  example, a lexicographical natural ordering over integers considers {@code [] < [1] < [1, 1] <
  [1, 2] < [2]}.
  
  <p>Note that {@code ordering.lexicographical().reverse()} is not equivalent to {@code
  ordering.reverse().lexicographical()} (consider how each would order {@code [1]} and {@code [1,
  1]}).
  
  <p><b>Java 8 users:</b> Use {@link Comparators#lexicographical(Comparator)} instead.
  
  @since 2.0