private void checkAction(Action action) {
		if (curAction < expectedActions.size()) {
			final Action exp = expectedActions.get(curAction);

			DEBUGLOG.fine("Expected: '" + exp + "'; actual: '" + action + "' " + "<"
					+ (!exp.isCompatibleTo(action) ? "not " : "") + "compatible>" + "<"
					+ (!exp.equals(action) ? "not " : "") + "equal>");

			if (exp.isCompatibleTo(action)) {
				if (exp.equals(action)) {
					curAction++;
					prevAction = null;
				}
			} else {
				String message = "You should " + exp + " instead!";
				// don't count if the same wrong action is performed twice!
				if (prevAction == null || !prevAction.equals(action)) {
					prevAction = action;
					stat.errorCount++;
					throw new SelectionException(message);
				}
				throw new SelectionException(message, true);
			}
		} else if (!config.getAlgorithm().allowsMoreActions()) {
			throw new SelectionException("No more actions necessary!");
		}
	}