protected static WikidataTranslations load(BufferedReader reader, Duration maxAge, int updateLimit, Clock clock)
    throws IOException {
    WikidataTranslations mappings = new WikidataTranslations();
    String line;
    Instant updateTimeLimit = maxAge.isZero() ? null : Instant.now(clock).minus(maxAge);
    int updateCounter = 0;
    while ((line = reader.readLine()) != null) {
      JsonNode node = objectMapper.readTree(line);
      long id = Long.parseLong(node.get(0).asText());

      Instant updateTime = Instant.EPOCH;
      if (node.has(2)) {
        updateTime = Instant.ofEpochMilli(node.get(2).asLong());
      }
      if (updateTimeLimit != null && updateTime.isBefore(updateTimeLimit) &&
        (updateLimit <= 0 || updateCounter < updateLimit)) {
        // do not load old entries => new translations will be fetched later
        updateCounter++;
        continue;
      }
      mappings.putUpdateTime(id, updateTime);

      ObjectNode theseMappings = (ObjectNode) node.get(1);
      theseMappings.fields().forEachRemaining(entry -> mappings.put(id, entry.getKey(), entry.getValue().asText()));
    }
    if (updateCounter > 0) {
      LOGGER.info("{} translations dropped as too old, will be re-fetched", updateCounter);
    }
    return mappings;
  }
Returns translations parsed from {@code reader} where each line is a JSON array where first element is the ID and
second element is a map from language to translation.
planetiler-core/src/main/java/com/onthegomap/planetiler/util/Wikidata.java