private boolean add(long transactionId) { int index = findInterval(transactionId); boolean addedToExisting = false; if (index < intervals.size()) { Interval interval = intervals.get(index); if (interval.start == transactionId + 1) { interval.start = transactionId; addedToExisting = true; } else if (interval.end + 1 == transactionId) { interval.end = transactionId; addedToExisting = true; } else if (interval.start <= transactionId && transactionId <= interval.end) { return false; } } if (!addedToExisting) { intervals.add(index, new Interval(transactionId, transactionId)); } if (intervals.size() > 1) { joinAdjacentIntervals(index); } return true; }