pub fn simulate<'p, M: MathsCore, H: Habitat<M>, G: RngCore<M>, S: LocallyCoherentLineageStore<M, H>, D: DispersalSampler<M, H, G>, C: CoalescenceSampler<M, H, S>, T: TurnoverRate<M, H>, N: SpeciationProbability<M, H>, O: Decomposition<M, H>, E: EventSampler<M, H, G, S, DomainEmigrationExit<M, H, O>, D, C, T, N>, A: ActiveLineageSampler<M, H, G, S, DomainEmigrationExit<M, H, O>, D, C, T, N, E, BufferedImmigrationEntry>, P: Reporter, L: LocalPartition<'p, P>>(
    simulation: &mut Simulation<M, H, G, S, DomainEmigrationExit<M, H, O>, D, C, T, N, E, BufferedImmigrationEntry, A>,
    independent_time_slice: PositiveF64,
    local_partition: &mut L
) -> (Status, NonNegativeF64, u64)