// Path: common/src/main/java/eu/mikroskeem/shuriken/common/SneakyThrow.java
// public class SneakyThrow {
//     /**
//      * Good old SneakyThrows! Throws checked exceptions everywhere you want
//      *
//      * @param t Throwable
//      */
//     @Contract("_ -> fail")
//     public static void throwException(Throwable t) {
//         throw SneakyThrow.<RuntimeException>_throwException(t);
//     }
// 
//     @Contract("_ -> fail")
//     @SuppressWarnings("unchecked")
//     private static <T extends Throwable> T _throwException(Throwable t) throws T {
//         throw (T) Ensure.notNull(t, "Throwable should not be null");
//     }
// }


import eu.mikroskeem.shuriken.common.SneakyThrow;
import java.util.function.BiFunction;
package eu.mikroskeem.shuriken.common.function;



/**
 * @author Mark Vainomaa
 */
@FunctionalInterface
public interface UncheckedBiFunction<A, B, R, E extends Throwable> extends BiFunction<A, B, R> {
    @Override
// Path: common/src/main/java/eu/mikroskeem/shuriken/common/SneakyThrow.java
// public class SneakyThrow {
//     /**
//      * Good old SneakyThrows! Throws checked exceptions everywhere you want
//      *
//      * @param t Throwable
//      */
//     @Contract("_ -> fail")
//     public static void throwException(Throwable t) {
//         throw SneakyThrow.<RuntimeException>_throwException(t);
//     }
// 
//     @Contract("_ -> fail")
//     @SuppressWarnings("unchecked")
//     private static <T extends Throwable> T _throwException(Throwable t) throws T {
//         throw (T) Ensure.notNull(t, "Throwable should not be null");
//     }
// }


// Path: common/src/main/java/eu/mikroskeem/shuriken/common/function/UncheckedBiFunction.java
import eu.mikroskeem.shuriken.common.SneakyThrow;
import java.util.function.BiFunction;

package eu.mikroskeem.shuriken.common.function;



/**
 * @author Mark Vainomaa
 */
@FunctionalInterface
public interface UncheckedBiFunction<A, B, R, E extends Throwable> extends BiFunction<A, B, R> {
    @Override
    default R apply(A a, B b) { try { return actualApply(a, b); } catch (Throwable e) { SneakyThrow.throwException(e); return null; } }