pub fn merge_opt_i4<I1, I2, I3, I4, F, O>( I1: Option<I1>, I2: Option<I2>, I3: Option<I3>, I4: Option<I4>, func: F, ) -> Option<O>where F: Fn(Option<I1>, Option<I2>, Option<I3>, Option<I4>) -> Option<O>,