@Override public void blur(int verses, RestrictionType restrict) { assert verses >= 0; optimizeWrites(); raiseNormalizeProtection(); if (!restrict.equals(RestrictionType.NONE)) { super.blur(verses, restrict); } else { optimizeWrites(); raiseEventSuppresion(); raiseNormalizeProtection(); int maximumOrdinal = getVersification().maximumOrdinal(); BitSet newStore = new BitSet(maximumOrdinal + 1); for (int i = store.nextSetBit(0); i >= 0; i = store.nextSetBit(i + 1)) { int start = Math.max(1, i - verses); int end = Math.min(maximumOrdinal, i + verses); for (int j = start; j <= end; j++) { newStore.set(j); } } store = newStore; lowerNormalizeProtection(); if (lowerEventSuppressionAndTest()) { fireIntervalAdded(this, null, null); } } }