// Path: src/main/java/com/github/davidmoten/util/ObjectsHelper.java
// public final class ObjectsHelper {
// 
//     private ObjectsHelper() {
//         // prevent instantiation
//     }
// 
//     static void instantiateForTestCoveragePurposesOnly() {
//         new ObjectsHelper();
//     }
// 
//     @SuppressWarnings("unchecked")
//     public static <T> Optional<T> asClass(Object object, Class<T> cls) {
//         if (object == null)
//             return absent();
//         else if (object.getClass() != cls)
//             return absent();
//         else
//             return Optional.of((T) object);
//     }
// 
// }


import com.github.davidmoten.util.ObjectsHelper;
import com.google.common.base.Objects;
import com.google.common.base.Optional;
import com.google.common.base.Preconditions;
    public Box mbb() {
        return this;
    }

    @Override
    public String toString() {
        StringBuilder b = new StringBuilder();
        b.append("Box [x1=");
        b.append(x1);
        b.append(", y1=");
        b.append(y1);
        b.append(", z1=");
        b.append(z1);
        b.append(", x2=");
        b.append(x2);
        b.append(", y2=");
        b.append(y2);
        b.append(", z2=");
        b.append(z2);
        b.append("]");
        return b.toString();
    }

    @Override
    public int hashCode() {
        return Objects.hashCode(x1, y1, x2, y2);
    }

    @Override
    public boolean equals(Object obj) {
// Path: src/main/java/com/github/davidmoten/util/ObjectsHelper.java
// public final class ObjectsHelper {
// 
//     private ObjectsHelper() {
//         // prevent instantiation
//     }
// 
//     static void instantiateForTestCoveragePurposesOnly() {
//         new ObjectsHelper();
//     }
// 
//     @SuppressWarnings("unchecked")
//     public static <T> Optional<T> asClass(Object object, Class<T> cls) {
//         if (object == null)
//             return absent();
//         else if (object.getClass() != cls)
//             return absent();
//         else
//             return Optional.of((T) object);
//     }
// 
// }


// Path: src/main/java/com/github/davidmoten/rtree3d/geometry/Box.java
import com.github.davidmoten.util.ObjectsHelper;
import com.google.common.base.Objects;
import com.google.common.base.Optional;
import com.google.common.base.Preconditions;

    public Box mbb() {
        return this;
    }

    @Override
    public String toString() {
        StringBuilder b = new StringBuilder();
        b.append("Box [x1=");
        b.append(x1);
        b.append(", y1=");
        b.append(y1);
        b.append(", z1=");
        b.append(z1);
        b.append(", x2=");
        b.append(x2);
        b.append(", y2=");
        b.append(y2);
        b.append(", z2=");
        b.append(z2);
        b.append("]");
        return b.toString();
    }

    @Override
    public int hashCode() {
        return Objects.hashCode(x1, y1, x2, y2);
    }

    @Override
    public boolean equals(Object obj) {
        Optional<Box> other = ObjectsHelper.asClass(obj, Box.class);