@NotNull
  public List<GitlabProject> fetchProjects() throws Exception {
    final ResponseHandler<List<GitlabProject>> handler = new GsonMultipleObjectsDeserializer<>(GSON, LIST_OF_PROJECTS_TYPE);
    final String projectUrl = getRestApiUrl("projects");
    final List<GitlabProject> result = new ArrayList<>();
    int pageNum = 1;
    while (true) {
      final URIBuilder paginatedProjectsUrl = new URIBuilder(projectUrl)
        .addParameter("page", String.valueOf(pageNum))
        .addParameter("per_page", "30");
      // In v4 this endpoint otherwise returns all projects visible to the current user
      paginatedProjectsUrl.addParameter("membership", "true");
      final List<GitlabProject> page = getHttpClient().execute(new HttpGet(paginatedProjectsUrl.build()), handler);
      // Gitlab's REST API doesn't allow to know beforehand how many projects are available
      if (page.isEmpty()) {
        break;
      }
      result.addAll(page);
      pageNum++;
    }
    myProjects = result;
    return Collections.unmodifiableList(myProjects);
  }
@NotNull
  public List<GitlabProject> fetchProjects()