private static VirtualFile refreshVFS(final File directory) {
final Ref<VirtualFile> result = new Ref<VirtualFile>();
ApplicationManager.getApplication().runWriteAction(new Runnable() {
public void run() {
final LocalFileSystem lfs = LocalFileSystem.getInstance();
final VirtualFile vDir = lfs.refreshAndFindFileByIoFile(directory);
result.set(vDir);
if (vDir != null) {
final LocalFileSystem.WatchRequest watchRequest = lfs.addRootToWatch(vDir.getPath(), true);
((NewVirtualFile)vDir).markDirtyRecursively();
vDir.refresh(false, true);