function binaryIndex(array, value, retHighest) {
	      var low = 0,
	          high = array ? array.length : low;

	      if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {
	        while (low < high) {
	          var mid = (low + high) >>> 1,
	              computed = array[mid];

	          if (retHighest ? (computed <= value) : (computed < value)) {
	            low = mid + 1;
	          } else {
	            high = mid;
	          }
	        }
	        return high;
	      }
	      return binaryIndexBy(array, value, identity, retHighest);
	    }
Performs a binary search of `array` to determine the index at which `value`
should be inserted into `array` in order to maintain its sort order.

@private
@param {Array} array The sorted array to inspect.
@param {*} value The value to evaluate.
@param {boolean} [retHighest] Specify returning the highest, instead
 of the lowest, index at which a value should be inserted into `array`.
@returns {number} Returns the index at which `value` should be inserted
 into `array`.