apply2<B, C, D>( ob: Supplier< Optional<B> >, oc: Supplier< Optional<C> >, f: ( a: A, b: B, c: C ) => D ): Optional<D> {
        return this.flatMap( a => ob().flatMap( b => oc().map( c => f( a, b, c ) ) ) );
    }