pub fn generate_image<W, F, IR>(
    image: &DynamicImage,
    pattern_size: NonZeroU32,
    output_size: Size,
    orientations: &[Orientation],
    wrap: W,
    forbid: F,
    retry: IR
) -> IR::ImageReturn where
    W: Wrap,
    F: ForbidPattern + Send + Sync + Clone,
    IR: ImageRetry