private void processTextFile(File file) {
		BufferedReader is = null;
		PrintWriter pw = null;
		TextModes modes = new TextModes();
		try {
			pw = new PrintWriter(file.getAbsolutePath().replace(REMOVE_FROM_PATH, ""));
			is = new BufferedReader(new FileReader(file));
			String aline;
			List<String> lines = new ArrayList<>();
			while ((aline = is.readLine()) != null) {
				lines.add(aline);
			}
			List<String> outLines = processTextFileLines(lines, file, modes);
			for (String modLine : outLines) {
				pw.println(modLine);
			}
		} catch (IOException e) {
			System.err.printf("I/O Error on %s: %s%n", file, e);
		} finally {
			if (modes.fileChanged) {
				log.info(file + " had change(s)"); // XXX run diff?
			}
			if (modes.inCutMode) {
				System.err.println("WARNING: " + file + " file ends in cut mode!");
			}
			if (modes.inCommentMode) {
				System.err.println("WARNING: " + file + " file ends in commenting-out mode!");
			}
			if (is != null) {
				try {
					is.close();
				} catch (IOException annoyingLittleCheckedException) {
					annoyingLittleCheckedException.printStackTrace();
				}
			}
			if (pw != null) {
				pw.close();
			}
		}
	}