@SuppressWarnings("unchecked")
		private final int fbinarySearch(final int[] indexes, final int len,
				final int val, final Comparator<? super F> comp) {
			int left = 0, mid = 0, right = len - 1, cmp = 0;
			final F base = (F)elementData[backingpos[val]];
			while (left <= right) {
				mid = (left + right) >>> 1;
				cmp = comp.compare(base, (F)elementData[indexes[mid]]);
				if (cmp == 0) {
					while (cmp == 0 && mid < right && comp.compare(
							base, (F)elementData[indexes[mid + 1]]) == 0) {
						mid++;
					}
					return mid + 1;
				} else if (cmp < 0) {
					right = mid - 1;
				} else {
					left = mid + 1;
				}
			}
			return left;
		}