public <T> IfrVfrStatus statusOf(Track<T> track, Instant time) {
        checkNotNull(track);
        checkNotNull(time);
        checkArgument(
            track.asTimeWindow().contains(time),
            "This track does not exist at this moment in time"
        );

        EnumMultiset<IfrVfrStatus> counts = EnumMultiset.create(IfrVfrStatus.class);
        Collection<Point<T>> localPoints = track.kNearestPoints(time, numPointsToConsider);

        for (Point<T> point : localPoints) {
            counts.add(statusOf(point));
        }
        return (counts.count(IFR) > counts.count(VFR)) ? IFR : VFR;
    }
@Test
    public void testStatusOfPoint_goodBeaconAndGoodcallsign_vfr() {
        String rawNop = "[RH],STARS,D21_B,03/24/2018,14:42:00.130,N518SP,C172,,5256,032,110,186,042.92704,-083.70974,3472,5256,-14.5730,42.8527,1,Y,A,D21,,POL,ARB,1446,ARB,ACT,VFR,,01500,,,,,,S,1,,0,{RH}";
        Point<NopHit> point = NopHit.from(rawNop);

        assertTrue(point.rawData().hasFlightRules());
        assertTrue(point.hasValidCallsign());
        assertEquals(IfrVfrStatus.from(point.rawData().flightRules()), VFR);

        IfrVfrAssigner assigner = new IfrVfrAssigner();

        assertEquals(VFR, assigner.statusOf(point));
    }