pub(super) fn simulate<'p, M: MathsCore, G: RngCore<M>, A: Algorithm<'p, M, G, O, R, P>, O: Scenario<M, G>, R: Reporter, P: LocalPartition<'p, R>>(
local_partition: &mut P,
sample: Sample,
rng: G,
scenario: ScenarioCogs<M, G, O>,
algorithm_args: A::Arguments,
pause_before: Option<NonNegativeF64>
) -> Result<SimulationOutcome<M, G>>