public void CompressMissedMonoisotopics()
        {
            cList.Clear();
            L.neucode_labeled = false;

            List <double> possibleMissedMonoisotopicsList =
                Enumerable.Range(-3, 7).Select(x =>
                                               1000d + ((double)x) * Lollipop.MONOISOTOPIC_UNIT_MASS).ToList();

            int counter = 0;

            foreach (double mass in possibleMissedMonoisotopicsList)
            {
                Component c = new Component();
                InputFile i = new InputFile("path", Purpose.Identification);
                c.input_file = i;
                c.id         = counter.ToString();
                c.weighted_monoisotopic_mass = mass;
                if (counter == 3)
                {
                    ChargeState cs1 = new ChargeState(10, 100d, (mass + 10d * Lollipop.PROTON_MASS) / 10d);//(int charge_count, double intensity, double mz_centroid)
                    c.charge_states.Add(cs1);
                }
                else
                {
                    ChargeState cs1 = new ChargeState(10, 50d, (mass + 10d * Lollipop.PROTON_MASS) / 10d);//(int charge_count, double intensity, double mz_centroid)
                    c.charge_states.Add(cs1);
                }

                c.min_scan = 1;
                c.max_scan = 2;
                c.calculate_properties();
                cList.Add(c);
                counter++;
            }

            List <Component> compressed = new List <Component>(cr.remove_monoisotopic_duplicates_harmonics_from_same_scan(cList));

            Assert.AreEqual(1, compressed.Count);
            Assert.AreEqual(400d, compressed.FirstOrDefault().intensity_sum);

            foreach (double mass in possibleMissedMonoisotopicsList)
            {
                Component c = new Component();
                InputFile i = new InputFile("path", Purpose.Identification);
                c.input_file = i;
                c.id         = counter.ToString();
                c.weighted_monoisotopic_mass = mass + 1000d;

                if (counter == 10)
                {
                    ChargeState cs1 = new ChargeState(10, 100d, (c.weighted_monoisotopic_mass + 10d * Lollipop.PROTON_MASS) / 10d);//(int charge_count, double intensity, double mz_centroid)
                    c.charge_states.Add(cs1);
                }
                else
                {
                    ChargeState cs1 = new ChargeState(10, 50d, (c.weighted_monoisotopic_mass + 10d * Lollipop.PROTON_MASS) / 10d);//(int charge_count, double intensity, double mz_centroid)
                    c.charge_states.Add(cs1);
                }

                c.min_scan = 3;
                c.max_scan = 4;
                c.calculate_properties();
                cList.Add(c);
                counter++;
            }

            compressed = cr.remove_monoisotopic_duplicates_harmonics_from_same_scan(cList);

            Assert.AreEqual(2, compressed.Count);
        }