public @NotNull List<RemoteRepositoryDescription> getRepositories(@NotNull String subject) throws IOException {
    // workaround, API requires authorization
    String url = BintrayModel.Repository.getUrl(subject, null);
    return HttpRequests.request(url).accept("application/xml").connect(request -> {
      try {
        String response = request.readString(null);

        Pattern extractRepoNamePattern = Pattern.compile("<a\\shref=\"([^/]+)/\">\\1/</a>");

        List<RemoteRepositoryDescription> result = new ArrayList<>();
        Matcher matcher = extractRepoNamePattern.matcher(response);
        while (matcher.find()) {
          result.add(toRepositoryDescription(new BintrayModel.Repository(subject, matcher.group(1))));
        }
        return result;
      }
      catch (HttpRequests.HttpStatusException e) {
        if (e.getStatusCode() == HttpURLConnection.HTTP_UNAUTHORIZED) {
          return emptyList();
        }
        throw e;
      }
    });
  }
public @NotNull List<RemoteRepositoryDescription> getRepositories(@NotNull String subject)