pub fn merge_opt_i7<I1, I2, I3, I4, I5, I6, I7, F, O>( I1: Option<I1>, I2: Option<I2>, I3: Option<I3>, I4: Option<I4>, I5: Option<I5>, I6: Option<I6>, I7: Option<I7>, func: F, ) -> Option<O>where F: Fn(Option<I1>, Option<I2>, Option<I3>, Option<I4>, Option<I5>, Option<I6>, Option<I7>) -> Option<O>,