class ReferencedEnvelope3D extends ReferencedEnvelope implements BoundingBox3D {

	public ReferencedEnvelope3D intersection(ReferencedEnvelope3D env) {
		ensureCompatibleReferenceSystem( env );
		
		if (isNull() || env.isNull() || !intersects( env))
			return new ReferencedEnvelope3D();

		double intMinX = getMinX() > env.getMinX() ? getMinX() : env.getMinX();
		double intMinY = getMinY() > env.getMinY() ? getMinY() : env.getMinY();
		double intMinZ = minz > env.minz ? minz : env.minz;
		double intMaxX = getMaxX() < env.getMaxX() ? getMaxX() : env.getMaxX();
		double intMaxY = getMaxY() < env.getMaxY() ? getMaxY() : env.getMaxY();
		double intMaxZ = maxz < env.maxz ? maxz : env.maxz;

		return new ReferencedEnvelope3D(intMinX, intMaxX, intMinY, intMaxY, intMinZ, intMaxZ, env.getCoordinateReferenceSystem());
	}

	public  ReferencedEnvelope3D();
	public  ReferencedEnvelope3D(CoordinateReferenceSystem crs);
	public  ReferencedEnvelope3D(final double x1, final double x2, final double y1, final double y2,
    		final double z1, final double z2, final CoordinateReferenceSystem crs);
	public  ReferencedEnvelope3D(final ReferencedEnvelope3D envelope);
	public  ReferencedEnvelope3D(final BoundingBox3D bbox);
	public  ReferencedEnvelope3D(final Envelope envelope, final CoordinateReferenceSystem crs);
	public  ReferencedEnvelope3D(final org.opengis.geometry.Envelope envelope);
	public  ReferencedEnvelope3D(final ReferencedEnvelope3D envelope, final CoordinateReferenceSystem crs);

}