docs: public static <T> List<T> reverse(List<T> list) {
      if (list instanceof ImmutableList) {
        return ((ImmutableList<T>) list).reverse();
      } else if (list instanceof ReverseList) {
        return ((ReverseList<T>) list).getForwardList();
      } else if (list instanceof RandomAccess) {
        return new RandomAccessReverseList<T>(list);
      } else {
        return new ReverseList<T>(list);
      }
    }