@Override
	public boolean parseInput(String line, List<Object> result)
			throws IllegalArgumentException {
		if (result == null) {
			throw new IllegalArgumentException("param result must not be null.");
		}
		if (!result.isEmpty()) {
			throw new IllegalArgumentException("param result must be empty");
		}
		if (line == null) {
			throw new IllegalArgumentException("param line must not be null");
		}
		boolean hasRequestedQuit = line.trim().
				equalsIgnoreCase(EnumInterpreterStrings.QUIT.toString())
				|| line.trim().equalsIgnoreCase(EnumInterpreterStrings.EXIT.toString());
		if (hasRequestedQuit) {
			result.add("\n");
		} else {
			try {
				Class<?> tehClass = Class.forName(line);
				StringBuilder superClasses = new StringBuilder();
				superClasses.append(EnumInterpreterStrings.HEADER);
				superClasses.append("\n");
				while (tehClass != null) {
					superClasses.append(tehClass);
					superClasses.append("\n");
					tehClass = tehClass.getSuperclass();
				}
				result.add(superClasses.toString());
				result.add(EnumInterpreterStrings.DEFAULTPROMPT);
			}
			catch (ClassNotFoundException ex) {
				result.clear();
				result.add(EnumInterpreterStrings.ERRORPROMPT);
			}
		}
		assert !result.isEmpty(): "result must not be empty";
		
		return hasRequestedQuit;
	}