public Species(ISimulation simulation, IAgent exemplar, params UniqueIdentifier[] derivedFromSpeciesIds) { if (simulation == null) throw new ArgumentNullException("simulation"); if (exemplar == null) throw new ArgumentNullException("exemplar"); this.Simulation = simulation; this.firstSeen = simulation.CurrentGeneration; this.ResourcesFromResourceNodes = 0; this.ResourcesFromAgents = 0; this.Population = 0; this.id = CreateUniqueIdentifier(exemplar); this.derivedFromSpeciesIds.AddRange(derivedFromSpeciesIds); this.exemplar = exemplar.DeepCopy(); }