class MinTimestampTracker implements TimestampTracker<E> {

    public void addElement(final Stamped<E> elem) {
        if (elem == null) throw new NullPointerException();

        Stamped<E> maxElem = ascendingSubsequence.peekLast();
        while (maxElem != null && maxElem.timestamp >= elem.timestamp) {
            ascendingSubsequence.removeLast();
            maxElem = ascendingSubsequence.peekLast();
        }
        ascendingSubsequence.offerLast(elem); //lower timestamps have been retained and all greater/equal removed
    }

}