clearViolations();
clearViolations(sc);
	private void fireRules(SessionContents sc, AbstractAttribute attr, int sequenceId) {		int noOfRulesChecked = 0;		int noOfRulesFired = 0;		long time0 = System.currentTimeMillis();		boolean notFinished;		clearViolations();		List<AbstractRule> rules = new ArrayList<AbstractRule>(allRules);		do {			notFinished = false;			Iterator<AbstractRule> it = rules.iterator();			while (it.hasNext()) {				AbstractRule rule = it.next();				AbstractRule.Result result = rule.execute(sc, sequenceId);				noOfRulesChecked++;				if (result.violationOccured()) {					Logger.getInstance().debug("Violation occured: " + result.getViolation());					attr.addViolation(result.getViolation());				}				if (result.hasChangedAttributes()) {					// knowledge base changed => we are not finished yet					noOfRulesFired++;					notFinished = true;					Logger.getInstance().debug("Fired rule: " + rule);					// remove rules when fired					if (result.hasFired()) {						it.remove();					}				}			}		} while (notFinished);		Logger.getInstance().info(				"(" + noOfRulesChecked + " / " + noOfRulesFired + ") (checked / fired) rules in "						+ (System.currentTimeMillis() - time0) + " msecs");	}