package org.zwobble.mammoth.internal.util; import java.util.Optional; import java.util.function.BiFunction; public class Optionals { public static Optional first(Optional first, Optional second) { if (first.isPresent()) { return first; } else { return second; } } public static Optional flatMap( Optional first, Optional second, BiFunction> function) { if (first.isPresent() && second.isPresent()) { return function.apply(first.get(), second.get()); } else { return Optional.empty(); } } public static Optional map( Optional first, Optional second, BiFunction function) { if (first.isPresent() && second.isPresent()) { return Optional.of(function.apply(first.get(), second.get())); } else { return Optional.empty(); } } }