@Override
    public void accept(T newPoint) {

        considerAdvancingCurrentTime(newPoint.time());

        if (newPoint.time().isBefore(currentTime)) {
            lastDroppedPoint = newPoint;
            rejectedPointHandler.accept(newPoint);
        } else {
            targetPointConsumer.accept(newPoint);
        }
    }
@Test
    public void testPointsActuallyDeliveredAreOrdered() {

        TestConsumer testConsumer = new TestConsumer();

        StrictTimeSortEnforcer<Point> sorted = new StrictTimeSortEnforcer<>(testConsumer);

        //only points with indice 0, 1, 3, 5, 6 should be delivered
        List<Point> testData = testData(0, 1, -1, 2, -3, 3, 4, -1, 3);

        for (Point point : testData) {
            sorted.accept(point);
        }

        assertEquals(
            5, testConsumer.points.size(),
            "Exactly 5 points should have been delivered"
        );
    }