class GitHubUtil {

    public List<GHRepository> getGHRepositories(Multimap<String, String> pathToDockerfileInParentRepo,
                                                 GHMyself currentUser) throws InterruptedException {
        List<GHRepository> listOfRepos = new ArrayList<>();
        while (true) {
            Map<String, GHRepository> repoByName = getReposForUserAtCurrentInstant(currentUser);
            boolean listOfReposHasRecentForks = true;
            for (String s : pathToDockerfileInParentRepo.keySet()) {
                String forkName = s.substring(s.lastIndexOf('/') + 1);
                log.info(String.format("Verifying that %s has been forked", forkName));
                if (repoByName.containsKey(forkName)) {
                    listOfRepos.add(repoByName.get(forkName));
                } else {
                    log.debug("Forking is still in progress for {}" , forkName);
                    listOfReposHasRecentForks = false;
                }
            }
            if (listOfReposHasRecentForks) {
                break;
            } else {
                log.info("Waiting for GitHub API cache to clear...");
                waitFor(TimeUnit.MINUTES.toMillis(1));
            }
        }
        return listOfRepos;
    }

    public  GitHubUtil(GitHub gitHub);

}