code: @Override
    public JsonElement serialize(Point src, Type typeOfSrc, JsonSerializationContext context) {
      JsonArray rawCoordinates = new JsonArray();
  
      // Unshift coordinates
      List<Double> unshiftedCoordinates =
              CoordinateShifterManager.getCoordinateShifter().unshiftPoint(src);
  
      rawCoordinates.add(new JsonPrimitive(GeoJsonUtils.trim(unshiftedCoordinates.get(0))));
      rawCoordinates.add(new JsonPrimitive(GeoJsonUtils.trim(unshiftedCoordinates.get(1))));
  
      // Includes altitude
      if (src.hasAltitude()) {
        rawCoordinates.add(new JsonPrimitive(unshiftedCoordinates.get(2)));
      }
  
      return rawCoordinates;
    }
docs: Required to handle the special case where the altitude might be a Double.NaN, which isn't a
  valid double value as per JSON specification.
  
  @param src       A {@link Point} defined by a longitude, latitude, and optionally, an
  altitude.
  @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 1.0.0