public IEnumerator <Landis.Library.DensityCohorts.ISpeciesCohorts> GetEnumerator()
 {
     foreach (ISpecies species in cohorts.Keys)
     {
         Landis.Library.DensityCohorts.SpeciesCohorts speciescohort = GetSpeciesCohort(cohorts[species]);
         yield return((Library.DensityCohorts.ISpeciesCohorts)speciescohort);
     }
 }
 IEnumerator <Landis.Library.AgeOnlyCohorts.ISpeciesCohorts> IEnumerable <Landis.Library.AgeOnlyCohorts.ISpeciesCohorts> .GetEnumerator()
 {
     foreach (ISpecies species in cohorts.Keys)
     {
         Landis.Library.DensityCohorts.SpeciesCohorts  speciescohort = GetSpeciesCohort(cohorts[species]);
         Landis.Library.AgeOnlyCohorts.ISpeciesCohorts isp           = (Landis.Library.AgeOnlyCohorts.ISpeciesCohorts)speciescohort;
         yield return(isp);
     }
 }
        void ISiteCohorts.RemoveMarkedCohorts(ISpeciesCohortsDisturbance disturbance)
        {
            /*
             * if (AgeOnlyDisturbanceEvent != null)
             * {
             *  AgeOnlyDisturbanceEvent(this, new Landis.Library.BiomassCohorts.DisturbanceEventArgs(disturbance.CurrentSite, disturbance.Type));
             * }
             */

            // Does this only occur when a site is disturbed?
            //Allocation.ReduceDeadPools(this, disturbance.Type);

            //  Go through list of species cohorts from back to front so that
            //  a removal does not mess up the loop.
            int totalReduction = 0;

            List <Cohort> ToRemove = new List <Cohort>();

            SpeciesCohortBoolArray isSpeciesCohortDamaged = new SpeciesCohortBoolArray();

            foreach (ISpecies spc in cohorts.Keys)
            {
                Landis.Library.DensityCohorts.SpeciesCohorts speciescohort = GetSpeciesCohort(cohorts[spc]);

                isSpeciesCohortDamaged.SetAllFalse(speciescohort.Count);

                disturbance.MarkCohortsForDeath(speciescohort, isSpeciesCohortDamaged);

                for (int c = 0; c < isSpeciesCohortDamaged.Count; c++)
                {
                    if (isSpeciesCohortDamaged[c])
                    {
                        totalReduction += speciescohort[c].Treenumber;

                        ToRemove.Add(cohorts[spc][c]);
//                        ToRemove.AddRange(cohorts[spc].Where(o => o.Age == speciescohort[c].Age));
                    }
                }
            }
            foreach (Cohort cohort in ToRemove)
            {
                Landis.Library.DensityCohorts.Cohort.KilledByAgeOnlyDisturbance(disturbance, cohort, disturbance.CurrentSite, disturbance.Type);
                RemoveCohort(cohort, disturbance.Type);
            }
        }