void run() {

		// load the nml
		Frame frame = new Frame();
		FileDialog fileDialog = new FileDialog(frame, "open nml file",
				FileDialog.LOAD);
		fileDialog.setVisible(true);
		String filePath = fileDialog.getDirectory();
		String fileName = fileDialog.getFile();
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		try {
			DocumentBuilder builder = factory.newDocumentBuilder();
			Document library = builder.parse(filePath + fileName);
			Element root = library.getDocumentElement();
			Element[] collection = getElementsByTagName(root, "COLLECTION");

			trackNodes = getElementsByTagName(collection[0], "ENTRY");

		} catch (Exception e) {
			System.out.println(e);
		}

		// inspects the folder
		fileDialog = new FileDialog(frame, "open files directory",
				FileDialog.LOAD);
		fileDialog.setVisible(true);
		File selectedFolder = new File(fileDialog.getDirectory());

		// write result in
		fileDialog = new FileDialog(frame, "save text result", FileDialog.SAVE);
		fileDialog.setVisible(true);
		try {
			PrintWriter out = new PrintWriter(fileDialog.getDirectory()
					+ fileDialog.getFile());

			File[] files = selectedFolder.listFiles();
			for (int i = 0; i < files.length; i++) {
				String oneFileName = files[i].toString();
				int afterDir = oneFileName.length() - 1;
				while (afterDir >= 0 && oneFileName.charAt(afterDir) != '\\')
					afterDir--;
				oneFileName = oneFileName.substring(afterDir + 1);
				long modifiedTime = files[i].lastModified();
				if (!isFileReferenced(oneFileName)) {
					out.println("NO  : " + modifiedTime + " " + oneFileName);
				} else {
					out.println("YES : " + modifiedTime + " " + oneFileName);
				}
			}

			out.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}

	}