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