in packages/flow-remove-types/index.js [554:578]
function findTokenIndex(tokens, offset, matchBiasParam) {
// Token ranges often overlap at the edges e.g {start: 0, end: 100}, {start: 100, end: 300}. The
// `matchBiasParam` param allows a user to specify what to do in this case, defaulting to matching
// against the start of a token range.
var matchBias = matchBiasParam === 'end' ? 'end' : 'start';
var min = 0;
var max = tokens.length - 1;
var ptr;
while (min <= max) {
ptr = ((min + max) / 2) | 0;
var token = tokens[ptr];
var end = endOf(token);
var start = startOf(token);
if (end < offset || (matchBias === 'start' && end === offset)) {
min = ptr + 1;
} else if (start > offset || (matchBias === 'end' && start === offset)) {
max = ptr - 1;
} else {
return ptr;
}
}
return ptr;
}