/// <summary>
        /// Removes the cohorts that are completed removed by disturbance.
        /// </summary>
        /// <returns>
        /// The total biomass of all the cohorts damaged by the disturbance.
        /// </returns>
        public float MarkCohorts(AgeOnlyCohorts.ISpeciesCohortsDisturbance disturbance)
        {
            isSpeciesCohortDamaged.SetAllFalse(Count);
            disturbance.MarkCohortsForDeath(this, isSpeciesCohortDamaged);

            //  Go backwards through list of cohort data, so the removal of an
            //  item doesn't mess up the loop.
            isMaturePresent = false;
            float totalReduction = 0;

            for (int i = cohorts.Count - 1; i >= 0; i--)
            {
                if (isSpeciesCohortDamaged[i])
                {
                    Cohort cohort = new Cohort(species, cohorts[i]);
                    totalReduction += cohort.Wood;

                    RemoveCohort(i, cohort, disturbance.CurrentSite,
                                 disturbance.Type);
                    Cohort.KilledByAgeOnlyDisturbance(this, cohort, disturbance.CurrentSite, disturbance.Type);

                    cohort = null;
                }
                else if (cohorts[i].Age >= species.Maturity)
                {
                    isMaturePresent = true;
                }
            }
            return(totalReduction);
        }
 public int ReduceOrKillMarkedCohort(ICohort cohort)
 {
     if (ageCohortDisturbance.MarkCohortForDeath(cohort))
     {
         Cohort.KilledByAgeOnlyDisturbance(this, cohort,
                                           ageCohortDisturbance.CurrentSite,
                                           ageCohortDisturbance.Type);
         return((int)cohort.Wood);
     }
     else
     {
         return(0);
     }
 }