private void compareDirectories() {
		progress = 0;
		long start = System.currentTimeMillis();
		// create array and fill him directories size
		ArrayList<Long> sizes = new ArrayList<Long>();
		for (int i=0; i<directoryArray.size(); i++) {
			calculataAndPublishProgress(i, directoryArray.size(), "State 2 of 5: Calculate directories size! ");
			sizes.add(getDirectorySize(directoryArray.get(i).getAbsolutePath()));
		}
		progress = 0;
		for (int i=0; i<directoryArray.size(); i++) {
			calculataAndPublishProgress(i, directoryArray.size(), "State 3 of 5: Find duplicate directories! ");
			ArrayList<File> duplicateDirectory = new ArrayList<File>();
			for (int j=(i+1); j<directoryArray.size(); j++) {
				if ( 
						(sizes.get(i).equals(sizes.get(j)))
						&& (sizes.get(i) > 0)
						&& (compateDirectoriesContent(directoryArray.get(i), directoryArray.get(j)))
						&& (!isAlreadyAdded(directoryArray.get(i)))
						) {
					if (!notFirst) {
						duplicateDirectory.add(directoryArray.get(i));
						duplicateDirectory.add(directoryArray.get(j));
						directoryArray.remove(j); j--;
						notFirst = true;
					} else {
						duplicateDirectory.add(directoryArray.get(j));
						directoryArray.remove(j); j--;
					}
				}
			}
			notFirst = false;
			if (duplicateDirectory.size() > 0){
				resultDirectoriesArray.add(new DirectoriesDuplicateContainer(duplicateDirectory, sizes.get(i)));
			}
		}
		st = 1;
		publish("Finish search dup dir", "1");
		System.out.println("1 "+(System.currentTimeMillis() - start));
	}