docs: @Pure
  	public static <E> boolean contains(List<E> list, Comparator<? super E> comparator, E data) {
  		assert list != null;
  		assert comparator != null;
  		assert data != null;
  		int first = 0;
  		int last = list.size() - 1;
  		while (last >= first) {
  			final int center = (first + last) / 2;
  			final E dt = list.get(center);
  			final int cmpR = comparator.compare(data, dt);
  			if (cmpR == 0) {
  				return true;
  			} else if (cmpR < 0) {
  				last = center - 1;
  			} else {
  				first = center + 1;
  			}
  		}
  		return false;
  	}