public void run() {
		decompiler.setOption("verbose", verboseCheck.getState() ? "1" : "0");
		decompiler.setOption("pretty", prettyCheck.getState() ? "1" : "0");
		errorArea.setText("");
		// /#ifdef AWT10
		// / saveButton.disable();
		// /#else
		saveButton.setEnabled(false);
		// /#endif

		lastClassName = classField.getText();
		String newClassPath = classpathField.getText();
		if (!newClassPath.equals(lastClassPath)) {
			decompiler.setClassPath(newClassPath);
			lastClassPath = newClassPath;
		}

		try {
			Writer writer = new BufferedWriter(new AreaWriter(sourcecodeArea),
					512);
			try {
				decompiler.decompile(lastClassName, writer, null);
			} catch (IllegalArgumentException ex) {
				sourcecodeArea.setText("`" + lastClassName
						+ "' is not a class name.\n"
						+ "You have to give a full qualified classname "
						+ "with '.' as package delimiter \n"
						+ "and without .class ending.");
				return;
			}
			// /#ifdef AWT10
			// / saveButton.enable();
			// /#else
			saveButton.setEnabled(true);
			// /#endif
		} catch (Throwable t) {
			sourcecodeArea.setText("Didn't succeed.\n"
					+ "Check the below area for more info.");
			t.printStackTrace();
		} finally {
			synchronized (this) {
				decompileThread = null;
				// /#ifdef AWT10
				// / startButton.enable();
				// /#else
				startButton.setEnabled(true);
				// /#endif
			}
		}
	}