public static <K> void merge(VectorSTL<K> v1, VectorSTL<K> v2, VectorSTL<K> destination,
			Comparator<K> comparator) {
		destination.clear();
		destination.reserve(v1.size() + v2.size());
		IteratorSTL<K> it1 = v1.begin();
		IteratorSTL<K> it2 = v2.begin();
		while (!it1.isEnd() && !it2.isEnd()) {
			if (comparator.compare(it1.get(), it2.get()) <= 0) {
				destination.push_back(it1.get());
				it1.increment();
			}
			else {
				destination.push_back(it2.get());
				it2.increment();
			}
		}
		while (!it1.isEnd()) {
			destination.push_back(it1.get());
			it1.increment();
		}
		while (!it2.isEnd()) {
			destination.push_back(it2.get());
			it2.increment();
		}
	}
Returns an iterator postioned at the item in the vector that is the smallest key less than
the given key.  This method assumes the vector is sorted in ascending order.
@param key the key for which to find the upper bound
@return an iterator postioned at the item in the vector that is the smallest key less than
the given key. 
@throws UnsupportedOperationException if T is not comparable
Ghidra/Framework/Generic/src/main/java/generic/stl/VectorSTL.java