public void AddExperiment(SEP_ExperimentHandler h)
        {
            if (h == null)
            {
                return;
            }

            if (h.vessel != vessel)
            {
                return;
            }

            SEP_ExperimentSection section = new SEP_ExperimentSection(h, h.vessel);

            if (section == null)
            {
                return;
            }

            experiments.Add(h);
            experimentSections.Add(section);

            if (vesselUISection == null)
            {
                return;
            }

            vesselUISection.AddExperimentSection(section);

            _expcount = getExpCountString();

            vesselUISection.setExpCount(_expcount);
        }
        public void RemoveExperiment(SEP_ExperimentHandler h)
        {
            if (h == null)
            {
                return;
            }

            for (int i = experiments.Count - 1; i >= 0; i--)
            {
                SEP_ExperimentHandler handler = experiments[i];

                if (handler == null)
                {
                    continue;
                }

                if (handler != h)
                {
                    continue;
                }

                experiments.Remove(h);
                break;
            }

            for (int i = experimentSections.Count - 1; i >= 0; i--)
            {
                SEP_ExperimentSection section = experimentSections[i];

                if (section == null)
                {
                    continue;
                }

                if (section.Handler != h)
                {
                    continue;
                }

                section.OnDestroy();
                experimentSections.Remove(section);
                section = null;

                break;
            }

            _expcount = getExpCountString();

            if (vesselUISection != null)
            {
                vesselUISection.setExpCount(_expcount);
            }
        }
        private void onAddExperiment(Vessel v, SEP_ExperimentHandler h)
        {
            if (v == null)
            {
                return;
            }

            if (v != vessel)
            {
                return;
            }

            if (h == null)
            {
                return;
            }

            if (h.vessel != vessel)
            {
                return;
            }

            SEP_ExperimentSection section = addExperimentSection(h);

            if (section == null)
            {
                return;
            }

            experiments.Add(h);
            experimentSections.Add(section);

            if (vesselUISection == null)
            {
                return;
            }

            vesselUISection.AddExperimentSection(section);

            _expcount = getExpCountString();
        }
        private void onRemoveExperiment(Vessel v, SEP_ExperimentHandler h)
        {
            if (v == null)
            {
                return;
            }

            if (v != vessel)
            {
                return;
            }

            if (h == null)
            {
                return;
            }

            if (experiments.Any(a => a == h))
            {
                experiments.Remove(h);
            }

            if (experimentSections.Any(e => e.Handler == h))
            {
                SEP_ExperimentSection section = experimentSections.FirstOrDefault(x => x.Handler == h);

                if (section == null)
                {
                    return;
                }

                section.OnDestroy();
                experimentSections.Remove(section);
                section = null;
            }

            _expcount = getExpCountString();
        }