private static synchronized void setupCaches() {
        if (repoListCache != null && repoReleasesCache != null && repoFileCache != null) {
            // Caches already created
            return;
        }
        
        repoListCache = CacheBuilder.newBuilder()
            .expireAfterWrite(REPO_LIST_CACHE_EXPIRY_TIME_MINS, TimeUnit.MINUTES)
            .build();
        
        repoReleasesCache = CacheBuilder.newBuilder()
            .expireAfterWrite(RELEASE_CACHE_EXPIRY_TIME_MINS, TimeUnit.MINUTES)
            .build();
        
        repoFileCache = CacheBuilder.newBuilder().build();
    }