public Object parseClass() throws ParseException, IOException {
		int linenr = scanner.getLineNr();
		int token = scanner.getToken();
		if (token != IDENTIFIER_TOKEN)
			throw new ParseException(linenr, "Class name expected");
		Object instance;
		try {
			Class clazz = Class.forName("jode.obfuscator.modules."
					+ scanner.getValue());
			instance = clazz.newInstance();
		} catch (ClassNotFoundException ex) {
			throw new ParseException(scanner.getLineNr(), "Class `"
					+ scanner.getValue() + "' not found");
		} catch (Exception ex) {
			throw new ParseException(scanner.getLineNr(), "Class `"
					+ scanner.getValue() + "' not valid: " + ex.getMessage());
		}

		token = scanner.getToken();
		if (token == OPENBRACE_TOKEN) {
			if (!(instance instanceof OptionHandler))
				throw new ParseException(scanner.getLineNr(), "Class `"
						+ instance.getClass().getName()
						+ "' doesn't handle options.");
			parseOptions((OptionHandler) instance);
			if (scanner.getToken() != CLOSEBRACE_TOKEN)
				throw new ParseException(scanner.getLineNr(), "`}' expected");
		} else
			scanner.pushbackToken(token);
		return instance;
	}