protected void pruneChanges() {
		for (int i = 0; i < changes.size(); i++) {
			Change c = changes.get(i);
			if (c.getType() != Change.DELETE)
				continue;
			boolean keep = false;

			// Do not delete universities that have at least one course.
			if (c.getObject() instanceof DescRec) {
				DescRec dr = (DescRec) c.getObject();
				for (CourseRec cr : courseModel.getCourses(dr.getSource())) {
					if (cr.getUniversities().contains(dr)) {
						keep = true;
						break;
					}
				}
			}

			// Do not delete classes that are DONE or AUDITED.
			if (c.getObject() instanceof CourseRec) {
				Status st = ((CourseRec) c.getObject()).getStatus();
				keep = st == Status.DONE || st == Status.AUDITED;
			}

			if (keep)
				changes.remove(i--);
		}
	}