@Override
    public E next() {
      fullyLock();
      try {
        if (current == null) {
          throw new NoSuchElementException();
        }
        E x = currentElement;
        lastRet = current;
        current = nextNode(current);
        currentElement = (current == null) ? null : current.item;
        return x;
      } finally {
        fullyUnlock();
      }
    }
Returns the next live successor of p, or null if no such.

Unlike other traversal methods, iterators need to handle both: - dequeued nodes (p.next == p)
- (possibly multiple) interior removed nodes (p.item == null)
geode-core/src/main/java/org/apache/geode/internal/cache/ForceableLinkedBlockingQueue.java