pub fn merge_opt_i9<I1, I2, I3, I4, I5, I6, I7, I8, I9, F, O>(
I1: Option<I1>,
I2: Option<I2>,
I3: Option<I3>,
I4: Option<I4>,
I5: Option<I5>,
I6: Option<I6>,
I7: Option<I7>,
I8: Option<I8>,
I9: Option<I9>,
func: F,
) -> Option<O>