docs: public final Either<L, R> filter(Function<? super R, ? extends Boolean> pred,
                                       Function<? super R, ? extends L> leftFn) {
          return flatMap(r -> pred.apply(r) ? right(r) : left(leftFn.apply(r)));
      }