public static boolean isOpCritical(SourcePackage pkg, ArrayList<Operation> code, int begin, Operation op) {
		switch (op.op) {
			case RET:
			case WHILE:
			case IF:
			case REP:
			case FOR:
			case ITER:
				return true;
			case CALL:
				if (!Directives.has(pkg.getFunction(op.args[1]),"pure")) {
					return true;
				}
			default:
				if (op.op.hasLVar()) {
					return isVarCritical(pkg, code, begin+1, op.args[0]);
				} else {
					return true;
				}
		}
	}