NodeImpl predecessor()

in component-dsl/src/main/java/org/apache/aries/component/dsl/internal/ConcurrentDoublyLinkedList.java [843:859]


    NodeImpl<E> predecessor() {
        NodeImpl<E> n = this;
        for (;;) {
            NodeImpl<E> b = n.getPrev();
            if (b == null)
                return n.findPredecessorOf(this);
            NodeImpl<E> s = b.getNext();
            if (s == this)
                return b;
            if (s == null || !s.isMarker()) {
                NodeImpl<E> p = b.findPredecessorOf(this);
                if (p != null)
                    return p;
            }
            n = b;
        }
    }