private static Optional<List<Double>> doubleListFromCommaList(String commaList, int minItems, int maxItems,
    boolean strict) {
    final String[] splits = commaList.split(",");
    if (splits.length < minItems) {
      if (strict) {
        throw new IllegalArgumentException("expected at least " + minItems + " doubles");
      } else {
        return Optional.empty();
      }
    } else if (splits.length > 3 && strict) {
      throw new IllegalArgumentException("expected at most " + maxItems + " doubles");
    }
    return Optional.of(Arrays.stream(splits)
      .limit(maxItems)
      .map(Double::parseDouble)
      .toList());
  }
Container for everything related to (de-)serialization of {@link TileArchiveMetadata}
planetiler-core/src/main/java/com/onthegomap/planetiler/archive/TileArchiveMetadataDeSer.java