int (int clientOffset) { return ObjectUtils.binarySearch(0, myChanges.size(), i->{ ChangeEntry changeEntry = myChanges.get(i); if (changeEntry.clientStartOffset > clientOffset) return 1; if (changeEntry.clientStartOffset + changeEntry.change.getText().length() < clientOffset) return -1; return 0; }); }