@Override
    public boolean test(Pair<Point, Point> pair) {

        if (timeDeltaIsSmall(pair.first().time(), pair.second().time())) {
            return distIsSmall(pair);
        } else {
            /*
             * reject points with large time deltas because we don't want to rely on a numerically
             * unstable process
             */
            return false;
        }
    }
@Test
    public void testCase2() {

        DistanceFilter filter = newTestFilter();

        LatLong position1 = new LatLong(0.0, 0.0);
        double notTooFarInNm = MAX_DISTANCE_IN_FEET * 0.5 / Spherical.feetPerNM();

        Point p1 = new PointBuilder()
            .latLong(position1)
            .time(Instant.EPOCH)
            .altitude(Distance.ofFeet(500.0))
            .build();

        Point p2 = new PointBuilder()
            .latLong(position1.projectOut(90.0, notTooFarInNm)) //move the position
            .time(Instant.EPOCH.plusMillis(MAX_TIME_DELTA_IN_MILLISEC * 2))
            .altitude(Distance.ofFeet(500.0))
            .build();

        assertFalse(filter.test(Pair.of(p1, p2)));
        assertFalse(filter.test(Pair.of(p2, p1)));
    }