void evaluate2() throws InterruptedException {
		if (!getAsTask()) {
			EventQueue.invokeLater(new Runnable() {
				public void run() {
					notifyExecution("script start");
				}
			});
		}
		stop = false;
		interrupted = false;
		if (script == null) {
			out(ScriptEvent.FAILED, "No script.");
			return;
		}
		script = script.trim();
		if (script.equals("")) {
			out(ScriptEvent.FAILED, "No script.");
			return;
		}
		script = removeCommentedOutScripts(script);
		script = useTaskScripts(script);
		script = separateExternalScripts(script);
		script = storeMouseScripts(script);
		script = storeKeyScripts(script);
		String[] command = COMMAND_BREAK.split(script);
		if (command.length < 1) {
			out(ScriptEvent.FAILED, "No script.");
			return;
		}
		evalDefinitions(command);
		evalCommandSet(command);
		String s = null;
		try {
			s = scriptQueue.removeFirst();
		}
		catch (Exception e) {
			s = null;
		}
		if (s != null) {
			setScript(s);
			evaluate2();
		}
		else {
			stop();
		}
	}