// Path: src/main/java/com/github/davidmoten/rx2/exceptions/ThrowingException.java
// public final class ThrowingException extends RuntimeException {
// 
//     private static final long serialVersionUID = 8336479045139136638L;
// 
// }


import com.github.davidmoten.rx2.exceptions.ThrowingException;
import io.reactivex.functions.BiFunction;
package com.github.davidmoten.rx2;



public final class BiFunctions {

    private BiFunctions() {
        // prevent instantiation
    }

    @SuppressWarnings("unchecked")
    public static <A, B, C> BiFunction<A, B, C> throwing() {
        return (BiFunction<A, B, C>) ThrowingHolder.INSTANCE;
    }

    private static final class ThrowingHolder {
        static BiFunction<Object, Object, Object> INSTANCE = new BiFunction<Object, Object, Object>() {

            @Override
            public Object apply(Object t1, Object t2) throws Exception {
// Path: src/main/java/com/github/davidmoten/rx2/exceptions/ThrowingException.java
// public final class ThrowingException extends RuntimeException {
// 
//     private static final long serialVersionUID = 8336479045139136638L;
// 
// }


// Path: src/main/java/com/github/davidmoten/rx2/BiFunctions.java
import com.github.davidmoten.rx2.exceptions.ThrowingException;
import io.reactivex.functions.BiFunction;

package com.github.davidmoten.rx2;



public final class BiFunctions {

    private BiFunctions() {
        // prevent instantiation
    }

    @SuppressWarnings("unchecked")
    public static <A, B, C> BiFunction<A, B, C> throwing() {
        return (BiFunction<A, B, C>) ThrowingHolder.INSTANCE;
    }

    private static final class ThrowingHolder {
        static BiFunction<Object, Object, Object> INSTANCE = new BiFunction<Object, Object, Object>() {

            @Override
            public Object apply(Object t1, Object t2) throws Exception {
                throw new ThrowingException();