code: @Override
    public JsonElement serialize(BoundingBox src, Type typeOfSrc, JsonSerializationContext context) {
      JsonArray bbox = new JsonArray();
  
      // Southwest
      Point point = src.southwest();
      List<Double> unshiftedCoordinates =
              CoordinateShifterManager.getCoordinateShifter().unshiftPoint(point);
  
      bbox.add(new JsonPrimitive(GeoJsonUtils.trim(unshiftedCoordinates.get(0))));
      bbox.add(new JsonPrimitive(GeoJsonUtils.trim(unshiftedCoordinates.get(1))));
      if (point.hasAltitude()) {
        bbox.add(new JsonPrimitive(unshiftedCoordinates.get(2)));
      }
  
      // Northeast
      point = src.northeast();
      unshiftedCoordinates =
              CoordinateShifterManager.getCoordinateShifter().unshiftPoint(point);
      bbox.add(new JsonPrimitive(GeoJsonUtils.trim(unshiftedCoordinates.get(0))));
      bbox.add(new JsonPrimitive(GeoJsonUtils.trim(unshiftedCoordinates.get(1))));
      if (point.hasAltitude()) {
        bbox.add(new JsonPrimitive(unshiftedCoordinates.get(2)));
      }
  
      return bbox;
    }
docs: Converts the {@link BoundingBox} object into a JsonArray.
  
  @param src       a {@link BoundingBox}
  @param typeOfSrc common superinterface for all types in the Java
  @param context   context for deserialization that is passed to a custom deserializer during
  invocation of its {@link com.google.gson.JsonDeserializationContext} method
  @return a JsonArray containing the raw coordinates
  @since 3.0.0