@NotNull
  public DirtyScopeTestInfo getState() {
    synchronized (myLock) {
      final Module[] vfsChangedModules = myVFSChangedModules.toArray(Module.EMPTY_ARRAY);
      final List<Module> unsavedChangedModuleList = new ArrayList<>(getAllDirtyModules());
      ContainerUtil.removeAll(unsavedChangedModuleList, vfsChangedModules);
      final Module[] unsavedChangedModules = unsavedChangedModuleList.toArray(Module.EMPTY_ARRAY);
      //noinspection unchecked
      final List<VirtualFile> excludedFiles = myExcludedFilesScope instanceof Iterable
                                              ? ContainerUtil.newArrayList((Iterable<VirtualFile>)myExcludedFilesScope)
                                              : Collections.emptyList();
      return new DirtyScopeTestInfo(vfsChangedModules, unsavedChangedModules, excludedFiles.toArray(VirtualFile.EMPTY_ARRAY),
                                    getDirtyScope());
    }
  }
@NotNull
  public DirtyScopeTestInfo getState()