--- jsr166/src/main/java/util/ArrayDeque.java 2005/09/17 13:21:19 1.24 +++ jsr166/src/main/java/util/ArrayDeque.java 2005/09/17 17:22:17 1.25 @@ -479,6 +479,14 @@ public class ArrayDeque extends Abstr return removeFirst(); } + private void checkInvariants() { + assert elements[tail] == null; + assert head == tail ? elements[head] == null : + (elements[head] != null && + elements[(tail - 1) & (elements.length - 1)] != null); + assert elements[(head - 1) & (elements.length - 1)] == null; + } + /** * Removes the element at the specified position in the elements array, * adjusting head and tail as necessary. This can result in motion of @@ -490,6 +498,7 @@ public class ArrayDeque extends Abstr * @return true if elements moved backwards */ private boolean delete(int i) { + checkInvariants(); final E[] elements = this.elements; final int mask = elements.length - 1; final int h = head; @@ -608,7 +617,6 @@ public class ArrayDeque extends Abstr } } - private class DescendingIterator implements Iterator { /* * This class is nearly a mirror-image of DeqIterator, using @@ -829,6 +837,5 @@ public class ArrayDeque extends Abstr // Read in all elements in the proper order. for (int i = 0; i < size; i++) elements[i] = (E)s.readObject(); - } }