//---------------------------------------------------------------------

        int IDisturbance.ReduceOrKillMarkedCohort(ICohort cohort)
        {
            int reduction = 0;
            SpecificAgesCohortSelector specificAgeCohortSelector;

            if (partialCohortSelectors.TryGetValue(cohort.Species, out specificAgeCohortSelector))
            {
                Percentage percentage;
                if (specificAgeCohortSelector.Selects(cohort, out percentage))
                {
                    reduction = (int)(percentage * cohort.Biomass);
                }
            }
            if (reduction > 0)
            {
                cohortCounts.IncrementCount(cohort.Species);
                if (reduction < cohort.Biomass)
                {
                    partialCohortCounts.IncrementCount(cohort.Species);
                }
            }

            Record(reduction, cohort);
            return(reduction);
        }
        //---------------------------------------------------------------------

        int Landis.Library.DensityCohorts.IDisturbance.ReduceOrKillMarkedCohort(Landis.Library.DensityCohorts.ICohort cohort)
        {
            int reduction = 0;
            SpecificAgesCohortSelector specificAgeCohortSelector;

            if (partialCohortSelectors.TryGetValue(cohort.Species, out specificAgeCohortSelector))
            {
                uint removal;
                if (specificAgeCohortSelector.Selects(cohort, out removal))
                {
                    reduction = (int)(removal);
                }
            }
            if (reduction > 0)
            {
                cohortCounts.IncrementCount(cohort.Species);
                if (reduction < cohort.Treenumber)
                {
                    partialCohortCounts.IncrementCount(cohort.Species);
                }
            }

            Record(reduction, cohort);
            return(reduction);
        }