private void removeListener() throws NoSuchMethodException,
			SecurityException, IllegalArgumentException, IllegalAccessException {

		Class<?> guiType = getGui().getClass();
		Class<?> type = guiType;
		while (type != null && !type.equals(Object.class)) {
			for (Field field : type.getDeclaredFields()) {
				if (JComponent.class.isAssignableFrom(field.getType())) {
					field.setAccessible(true);
					JComponent component = (JComponent) field.get(gui);

					if (component instanceof JButton) {
						((JButton) component)
								.removeActionListener(actionListener);
					} else if (component instanceof JTextField) {
						((JTextField) component).getDocument()
								.removeDocumentListener(actionListener);
					}
				}
			}
			type = type.getSuperclass();
		}

		active = false;
	}