public ArrayList<AnalysisResult<T>> getOutliers(Track<T> track) {

        // the stream is wonky due to the raw type, probably could be improved

        return track.points().stream()
            .map(point -> analyzePoint(point, track))
            .filter(analysisResult -> analysisResult.isOutlier())
            .collect(toCollection(ArrayList::new));
    }
@Test
    public void testMinimumOutlier() {
        /*
         * Confirm that a flat altitude profile with a single 400-foot deviation (i.e. 4 times the
         * minimum possible altitude change) DOES create an outlier.
         */
        Track<NopHit> testTrack2 = createTrackFromResource(VerticalOutlierDetector.class, "MinimumAltitudeOutlier.txt");

        Collection<AnalysisResult<NopHit>> outliers = (new VerticalOutlierDetector<NopHit>()).getOutliers(testTrack2);

        confirmExactlyTheseOutliers(
            outliers,
            "[RH],AGW,RDG,09/20/2017,17:28:02.096,,,,2525,204,425,252,040.49450,-075.76505,110,,10.66,5.09,,,,RDG,,,,,???,,,,,4221,???,,00,,,1,,0,,90.31,88.64,{RH}"
        );
    }