in component-dsl/src/main/java/org/apache/aries/component/dsl/internal/ConcurrentDoublyLinkedList.java [799:814]
NodeImpl<E> successor() {
NodeImpl<E> f = nextNonmarker();
for (;;) {
if (f == null)
return null;
if (!f.isDeleted()) {
if (f.getPrev() != this && !isDeleted())
f.setPrev(this); // relink f's prev
return f;
}
NodeImpl<E> s = f.nextNonmarker();
if (f == getNext())
casNext(f, s); // unlink f
f = s;
}
}