code: private static <E> ListIterator<E> constrainedListIterator(
        ListIterator<E> listIterator, Constraint<? super E> constraint) {
      return new ConstrainedListIterator<E>(listIterator, constraint);
    }
docs: Returns a constrained view of the specified list iterator, using the
  specified constraint. Any operations that would add new elements to the
  underlying list will be verified by the constraint.
  
  @param listIterator the iterator for which to return a constrained view
  @param constraint the constraint for elements in the list
  @return a constrained view of the specified iterator