/** * Sets the specified range of characters in the character set so that subsequent calls to {@code * test} for characters within the range will return {@code true}. * * @see #union */ private void set(Range r) { if (ranges.isEmpty()) { ranges.add(r); refreshAsciiSet(); return; } int pos = find(r.first); if (((pos != ranges.size()) && ranges.get(pos).includes(r)) || ((pos != 0) && ranges.get(pos - 1).includes(r))) { return; } if ((pos != 0) && ranges.get(pos - 1).mergeable(r)) { merge(pos - 1, r); } else if ((pos != ranges.size()) && ranges.get(pos).mergeable(r)) { merge(pos, r); } else { ranges.add(pos, r); } refreshAsciiSet(); }