pub trait Recursion {
    type Output;
    // Required method
    fn recurse(
        &self,
        g: &mut Random,
        inner: RecursiveSampler<Self>,
    ) -> Self::Output
       where Self: Sized;
}pub trait Recursion {
    type Output;
    // Required method
    fn recurse(
        &self,
        g: &mut Random,
        inner: RecursiveSampler<Self>,
    ) -> Self::Output
       where Self: Sized;
}