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 testMissingAltitude_aka_modeCSwap_2() {
        /*
         * This is another mode C swap test.
         *
         * This test contains a much smaller change (from 1k to 0 instead of from 22k to 0).
         * This test data also has a missing altitude value at the very front of the track.
         */

        Track<NopHit> testTrack2 = createTrackFromResource(VerticalOutlierDetector.class, "AltitudeOutlier_2.txt");

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

        confirmExactlyTheseOutliers(
            outliers,
            "[RH],AGW,ERI_B,09/20/2017,17:36:47.160,,,,1200,000,84,247,042.22935,-079.88024,106,,14.12,10.6,,,,ERI,,,,,???,,,,,4277,???,,00,,,1,,0,,95.17,90.78,{RH}",
            "[RH],AGW,ERI_B,09/20/2017,17:39:00.896,,,,1200,000,87,246,042.20291,-079.94142,106,,11.19,9.45,,,,ERI,,,,,???,,,,,5502,???,,00,,,1,,0,,92.47,89.19,{RH}"
        );
    }