// Path: src/main/java/com/shapesecurity/functional/data/HashCodeBuilder.java
// @CheckReturnValue
// public final class HashCodeBuilder {
//     //int is a 32 bit integer
//     private static final int INITIAL_VALUE = -2128831035;
//     private static final int MULT = 16777619;
//     private static final int NULL_SIGIL = -1150993239;
// 
//     public static int init() {
//         return INITIAL_VALUE;
//     }
// 
//     public static int put(int hash, @Nullable Object os) {
//         int p = os == null ? NULL_SIGIL : os.hashCode();
//         hash = hash * MULT ^ (p & 255);
//         p >>>= 8;
//         hash = hash * MULT ^ (p & 255);
//         p >>>= 8;
//         hash = hash * MULT ^ (p & 255);
//         p >>>= 8;
//         hash = hash * MULT ^ (p & 255);
//         return hash;
//     }
// 
//     public static int putChar(int hash, char p) {
//         hash = hash * MULT ^ (p & 255);
//         p >>>= 8;
//         hash = hash * MULT ^ (p & 255);
//         return hash;
//     }
// }


import com.shapesecurity.functional.data.HashCodeBuilder;
import javax.annotation.CheckReturnValue;
import javax.annotation.Nonnull;
        return new Pair<>(f.apply(this.left), this.right);
    }

    @Nonnull
    @Deprecated
    public <A1> Pair<A1, B> mapA(@Nonnull F<A, A1> f) {
        return this.mapLeft(f);
    }

    @Nonnull
    public <B1> Pair<A, B1> mapRight(@Nonnull F<B, B1> f) {
        return new Pair<>(this.left, f.apply(this.right));
    }

    @Nonnull
    @Deprecated
    public <B1> Pair<A, B1> mapB(@Nonnull F<B, B1> f) {
        return this.mapRight(f);
    }

    @SuppressWarnings("unchecked")
    @Override
    public boolean equals(Object obj) {
        return obj == this || obj instanceof Pair &&
                ((Pair<A, B>) obj).left.equals(this.left) &&
                ((Pair<A, B>) obj).right.equals(this.right);
    }

    @Override
    public int hashCode() {
// Path: src/main/java/com/shapesecurity/functional/data/HashCodeBuilder.java
// @CheckReturnValue
// public final class HashCodeBuilder {
//     //int is a 32 bit integer
//     private static final int INITIAL_VALUE = -2128831035;
//     private static final int MULT = 16777619;
//     private static final int NULL_SIGIL = -1150993239;
// 
//     public static int init() {
//         return INITIAL_VALUE;
//     }
// 
//     public static int put(int hash, @Nullable Object os) {
//         int p = os == null ? NULL_SIGIL : os.hashCode();
//         hash = hash * MULT ^ (p & 255);
//         p >>>= 8;
//         hash = hash * MULT ^ (p & 255);
//         p >>>= 8;
//         hash = hash * MULT ^ (p & 255);
//         p >>>= 8;
//         hash = hash * MULT ^ (p & 255);
//         return hash;
//     }
// 
//     public static int putChar(int hash, char p) {
//         hash = hash * MULT ^ (p & 255);
//         p >>>= 8;
//         hash = hash * MULT ^ (p & 255);
//         return hash;
//     }
// }


// Path: src/main/java/com/shapesecurity/functional/Pair.java
import com.shapesecurity.functional.data.HashCodeBuilder;
import javax.annotation.CheckReturnValue;
import javax.annotation.Nonnull;

        return new Pair<>(f.apply(this.left), this.right);
    }

    @Nonnull
    @Deprecated
    public <A1> Pair<A1, B> mapA(@Nonnull F<A, A1> f) {
        return this.mapLeft(f);
    }

    @Nonnull
    public <B1> Pair<A, B1> mapRight(@Nonnull F<B, B1> f) {
        return new Pair<>(this.left, f.apply(this.right));
    }

    @Nonnull
    @Deprecated
    public <B1> Pair<A, B1> mapB(@Nonnull F<B, B1> f) {
        return this.mapRight(f);
    }

    @SuppressWarnings("unchecked")
    @Override
    public boolean equals(Object obj) {
        return obj == this || obj instanceof Pair &&
                ((Pair<A, B>) obj).left.equals(this.left) &&
                ((Pair<A, B>) obj).right.equals(this.right);
    }

    @Override
    public int hashCode() {
        int hash = HashCodeBuilder.put(HashCodeBuilder.init(), "Pair");