docs: public int compareTo(final List<? extends Character> l) {
          if (l == this) return 0;
          if (l instanceof CharArrayList) {
              final CharListIterator i1 = listIterator(), i2 = ((CharArrayList) l).listIterator();
              int r;
              char e1, e2;
              while (i1.hasNext() && i2.hasNext()) {
                  e1 = i1.nextChar();
                  e2 = i2.nextChar();
                  if ((r = (e1 - e2)) != 0) return r;
              }
              return i2.hasNext() ? -1 : (i1.hasNext() ? 1 : 0);
          }
          ListIterator<? extends Character> i1 = listIterator(), i2 = l.listIterator();
          int r;
          while (i1.hasNext() && i2.hasNext()) {
              if ((r = ((Comparable<? super Character>) i1.next()).compareTo(i2.next())) != 0) return r;
          }
          return i2.hasNext() ? -1 : (i1.hasNext() ? 1 : 0);
      }