docs: public static <E> List<E> constrainedList(List<E> list, Constraint<? super E> constraint) {
      return (list instanceof RandomAccess)
          ? new ConstrainedRandomAccessList<E>(list, constraint)
          : new ConstrainedList<E>(list, constraint);
    }