virtual tribool accept(const Spectrum& spectrum) const
    {
        CVParam param = spectrum.cvParamChild(MS_spectrum_type);
        if (param.cvid == CVID_Unknown) return boost::logic::indeterminate;
        if (!cvIsA(param.cvid, MS_mass_spectrum))
            return true; // MS level filter doesn't affect non-MS spectra

        param = spectrum.cvParam(MS_ms_level);
        if (param.cvid == CVID_Unknown) return boost::logic::indeterminate;

        return (param.valueAs<int>() == 2);
    }