class GeographicBoundingBox implements BoundingBox<GeographicPosition>, Comparable<GeographicBoundingBox>, Serializable {

    public static GeographicBoundingBox merge(GeographicBoundingBox box1, GeographicBoundingBox box2)
            throws IllegalArgumentException
    {
        if (box1 == null)
        {
            if (box2 != null)
            {
                return box2;
            }
            return null;
        }
        else if (box2 == null)
        {
            return box1;
        }

        if (box1.getAltitudeReference() != box2.getAltitudeReference())
        {
            throw new IllegalArgumentException(
                    "Incompatible altitudes references: " + box1.getAltitudeReference() + " and " + box2.getAltitudeReference());
        }

        return merge(box1, box2, box1.getAltitudeReference());
    }

    public  GeographicBoundingBox(GeographicPosition lowerLeftCorner, GeographicPosition upperRightCorner);
    public  GeographicBoundingBox(LatLonAlt lowerLeftCorner, LatLonAlt upperRightCorner);

}