apply3<C, D, E, F>(ob: Supplier< Either<A, C> >, oc: Supplier< Either<A, D> >, od: Supplier< Either<A, E> >, f: (a: B, b: C, c: D, d: E)=>F): Either<A, F> {
        return this.flatMap(a => ob().flatMap(b => oc().flatMap(c => od().map(d => f(a, b, c, d)))));
    }