package jio;
import static java.util.Objects.requireNonNull;
import java.util.List;
import java.util.function.BiConsumer;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.Supplier;
/**
* Represents an expression made up of different test-effect branches and a default effect. Each branch consists of a
* predicate (concretely a boolean effect) and an associated effect. The expression is reduced to the effect of the
* first predicate that succeeds and is evaluated to true. If no predicate is evaluated to true, then the expression is
* reduced to the default effect.
*
* Predicates can be evaluated either in parallel with the static factory method {@code CondExp.par} or sequentially
* with {@code CondExp.seq}.
*
* @param