void (final @Nullable Runnable postRunnable) { VirtualFile localVirtualFile; synchronized (myLock) { localVirtualFile = myLocalVirtualFile; } final RemoteContentProvider contentProvider = myManager.findContentProvider(myUrl); if (localVirtualFile == null || !contentProvider.equals(myContentProvider) || !contentProvider.isUpToDate(myUrl, localVirtualFile)) { myContentProvider = contentProvider; addDownloadingListener(new MyRefreshingDownloadingListener(postRunnable)); restartDownloading(); } }