docs: @Nullable
      public SxGeoResult get(@NotNull String ip) {
          if (!IPV4_PATTERN.matcher(ip).matches()) {
              throw new IllegalArgumentException("Illegal IP address: " + ip);
          }
          clientQueriesCount++;
          List<SxGeoResult> cachedResult = cache == null ? null : cache.getList(ip);
          if (cachedResult != null) {
              return cachedResult.isEmpty() ? null : cachedResult.get(0);
          }
          try {
              NodeList ipNodes = query(ip);
              SxGeoResult result = ipNodes.getLength() == 0 ? null : parseIp((Element) ipNodes.item(0));
              if (cache != null) {
                  cache.add(ip, Collections.singletonList(result));
              }
              return result;
          } catch (ParserConfigurationException | SAXException | IOException e) {
              throw new RuntimeException(e);
          }
      }