private void merge(List<List<Stat>> stats) {
        Iterators<Stat> iterators = new Iterators<Stat>(stats);
        while (iterators.hasValues()) {
            List<Stat> nextValues = iterators.getNextValues();
            Date minDate = getMinDate(nextValues);
            for (int i = 0; i < iterators.count(); i++) {
                if (sameDate(nextValues.get(i), minDate)) {
                    iterators.goNext(i);
                }
            }
            addIfNotNullAndLatestNotSame(new TimelineItem(minDate, iterators.getCurrentValues()));
        }
    }