public boolean equals(FiniteStateAutomaton fsa1, FiniteStateAutomaton fsa2) {
		// Clone for safety.
		fsa1 = (FiniteStateAutomaton) fsa1.clone();
		fsa2 = (FiniteStateAutomaton) fsa2.clone();

		// Make sure they're DFAs.
		fsa1 = nfaConverter.convertToDFA(fsa1);
		fsa2 = nfaConverter.convertToDFA(fsa2);
		// Minimize the DFAs.
		minimizer.initializeMinimizer();
		fsa1 = (FiniteStateAutomaton) minimizer.getMinimizeableAutomaton(fsa1);
		javax.swing.tree.DefaultTreeModel tree = minimizer
				.getDistinguishableGroupsTree(fsa1);
		fsa1 = minimizer.getMinimumDfa(fsa1, tree);

		minimizer.initializeMinimizer();
		fsa2 = (FiniteStateAutomaton) minimizer.getMinimizeableAutomaton(fsa2);
		tree = minimizer.getDistinguishableGroupsTree(fsa2);
		fsa2 = minimizer.getMinimumDfa(fsa2, tree);

		// Check the minimized DFAs to see if they are the same.
		return checker.equals(fsa1, fsa2);
	}