code: public final Either<L, R> filter(Function<? super R, ? extends Boolean> pred, Supplier<L> leftSupplier) {
          return filter(pred, __ -> leftSupplier.get());
      }
docs: If this is a right value, apply <code>pred</code> to it. If the result is <code>true</code>, return the same
  value; otherwise, return the result of <code>leftSupplier</code> wrapped as a left value.
  <p>
  If this is a left value, return it.
  
  @param pred         the predicate to apply to a right value
  @param leftSupplier the supplier of a left value if pred fails
  @return this if a left value or a right value that pred matches; otherwise, the result of leftSupplier wrapped in
  a left