in src/SourcemapToolkit.SourcemapParser/IReadOnlyListExtensions.cs [25:51]
public static int BinarySearch<T>(this IReadOnlyList<T> input, T item, IComparer<T> comparer)
{
int lo = 0;
int hi = input.Count - 1;
while (lo <= hi)
{
int i = lo + ((hi - lo) >> 1);
int order = comparer.Compare(input[i], item);
if (order == 0)
{
return i;
}
if (order < 0)
{
lo = i + 1;
}
else
{
hi = i - 1;
}
}
return ~lo;
}