@@ -91,8 +91,7 @@ public void remove(T element) {
9191 }
9292 if (insertionPosition == lastElementPosition ) {
9393 // The element was the last one added; we can simply remove it.
94- elementList .remove (insertionPosition );
95- lastElementPosition --;
94+ elementList .remove (lastElementPosition --);
9695 } else {
9796 // We replace the element with null, creating a gap.
9897 elementList .set (insertionPosition , null );
@@ -210,8 +209,7 @@ private void forEachCompacting(Consumer<T> elementConsumer) {
210209
211210 private @ Nullable T removeLastNonGap (int gapPosition ) {
212211 while (lastElementPosition >= gapPosition ) {
213- var lastRemovedElement = elementList .remove (lastElementPosition );
214- lastElementPosition --;
212+ var lastRemovedElement = elementList .remove (lastElementPosition --);
215213 if (lastRemovedElement != null ) {
216214 return lastRemovedElement ;
217215 }
@@ -285,20 +283,15 @@ public void clear(Consumer<T> elementConsumer) {
285283 forceClear ();
286284 return ;
287285 }
288- var oldLastElementPosition = lastElementPosition ;
289- for (var i = 0 ; i <= oldLastElementPosition ; i ++) {
286+ for (var i = 0 ; i <= lastElementPosition ; i ++) {
290287 var element = elementList .get (i );
291288 if (element == null ) {
292289 continue ;
293290 }
294291 elementConsumer .accept (element );
295- if (lastElementPosition != oldLastElementPosition ) {
296- throw new IllegalStateException ("Impossible state: the IndexedSet was modified while being cleared." );
297- }
298292 elementPositionTracker .clearPosition (element );
299293 // We can stop early once all non-gap elements have been processed.
300- nonGapCount --;
301- if (nonGapCount == 0 ) {
294+ if (--nonGapCount == 0 ) {
302295 break ;
303296 }
304297 }
0 commit comments