pub fn simulate<'p, M: MathsCore, H: Habitat<M>, G: PrimeableRng<M>, D: DispersalSampler<M, H, G>, T: TurnoverRate<M, H>, N: SpeciationProbability<M, H>, A: SingularActiveLineageSampler<M, H, G, IndependentLineageStore<M, H>, NeverEmigrationExit, D, IndependentCoalescenceSampler<M, H>, T, N, IndependentEventSampler<M, H, G, NeverEmigrationExit, D, T, N>, NeverImmigrationEntry>, R: Reporter, P: LocalPartition<'p, R>, L: IntoIterator<Item = Lineage>>(
simulation: &mut Simulation<M, H, G, IndependentLineageStore<M, H>, NeverEmigrationExit, D, IndependentCoalescenceSampler<M, H>, T, N, IndependentEventSampler<M, H, G, NeverEmigrationExit, D, T, N>, NeverImmigrationEntry, A>,
lineages: L,
dedup_cache: DedupCache,
step_slice: NonZeroU64,
event_slice: EventSlice,
pause_before: Option<NonNegativeF64>,
local_partition: &mut P
) -> (Status, NonNegativeF64, u64, impl IntoIterator<Item = Lineage>)