public void actionPerformed(ActionEvent e) {
		JComboBox combo = new JComboBox();
		// Figure out what existing environments in the program have
		// the type of structure that we need.
		EnvironmentFrame[] frames = Universe.frames();
		for (int i = 0; i < frames.length; i++) {
			if (!isApplicable(frames[i].getEnvironment().getObject())
					|| frames[i].getEnvironment() == environment)
				continue;
			combo.addItem(frames[i]);
		}
		// Set up our automaton.
		FiniteStateAutomaton automaton = (FiniteStateAutomaton) environment
				.getObject();

		if (combo.getItemCount() == 0) {
			JOptionPane.showMessageDialog(Universe
					.frameForEnvironment(environment), "No other FAs around!");
			return;
		}
		if (automaton.getInitialState() == null) {
			JOptionPane.showMessageDialog(Universe
					.frameForEnvironment(environment),
					"This automaton has no initial state!");
			return;
		}
		// Prompt the user.
		int result = JOptionPane.showOptionDialog(Universe
				.frameForEnvironment(environment), combo, "Compare against FA",
				JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE,
				null, null, null);
		if (result != JOptionPane.YES_OPTION && result != JOptionPane.OK_OPTION)
			return;
		FiniteStateAutomaton other = (FiniteStateAutomaton) ((EnvironmentFrame) combo
				.getSelectedItem()).getEnvironment().getObject();
		if (other.getInitialState() == null) {
			JOptionPane.showMessageDialog(Universe
					.frameForEnvironment(environment),
					"The other automaton has no initial state!");
			return;
		}
		other = (FiniteStateAutomaton) UselessStatesDetector
				.cleanAutomaton(other);
		automaton = (FiniteStateAutomaton) UselessStatesDetector
				.cleanAutomaton(automaton);
		String checkedMessage = checker.equals(other, automaton) ? "They ARE equivalent!"
				: "They AREN'T equivalent!";
		JOptionPane.showMessageDialog(
				Universe.frameForEnvironment(environment), checkedMessage);
	}