in jflex/src/main/java/jflex/core/unicode/IntCharSet.java [100:130]
private int indexOf(int c) {
int start = 0;
int end = intervals.size() - 1;
while (start <= end) {
int check = (start + end) / 2;
Interval i = intervals.get(check);
if (start == end) {
return i.contains(c) ? start : -1;
}
if (c < i.start) {
end = check - 1;
continue;
}
if (c > i.end) {
start = check + 1;
continue;
}
if (DEBUG) assert intervals.get(check).contains(c);
return check;
}
if (DEBUG) {
for (Interval i : intervals) assert (!i.contains(c));
}
return -1;
}