Either<L, R> ensure(bool predicate(R r), R fallback()) => fold((_) => this, (r) => predicate(r) ? this : right(fallback()));