public static int BinarySearch()

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;
		}