private void invokeQueue() {
		if (active)
			return;
		synchronized (LOCK_QUEUE) {
			if (queue.isEmpty())
				return;
		}
		active = true;
		new Thread() {
			@Override
			public void run() {
				report.toggleProcess(true);
				boolean queueEmpty;
				synchronized (LOCK_QUEUE) {
					queueEmpty = queue.isEmpty();
				}
				while (!queueEmpty) {
					CompilationTask task;
					synchronized (LOCK_QUEUE) {
						task = queue.get(0);
						queue.remove(0);
					}
					task.run(compiler);
					synchronized (LOCK_QUEUE) {
						queueEmpty = queue.isEmpty();
					}
				}
				report.toggleProcess(false);
				active = false;
				//invokeQueue();
			}
		}.start();
	}