continue; }   for ( Character currChar : alpha ) {
Vector<IntegerSet> statePowerSet;
    public static FSA determ(FSA aut, JDialog _waitDlg) {        FSA dfaResult = new FSA();        BusyDialog waitDlg = (BusyDialog)_waitDlg;                /* erstelle die Zustandsmenge des Automaten */        Set<Integer> tempSet;        IntegerSet stateSet;                stateSet = new IntegerSet();                for ( Integer i : aut.getStates() ) {            stateSet.insert(i);        }                // Potenzmenge davon berechnen        Vector<IntegerSet> statePowerSet;                //waitDlg.setCurrentStep("calculating powerset");        statePowerSet = stateSet.getPowerset();                // aktuelle teilmenge der Potenzmenge        Vector<Integer> currentSet;                // eingabealphabet        Vector<Character> alpha;                alpha = aut.getAlphabet();                // aktuelle Transitionsliste        LinkedList<Transition> transList;                // der neue Zustand (==Zustandsmenge) im neuen Automaten        IntegerSet destSet;        int stateId;                int progress,count = -1,pSetSize = statePowerSet.size();                // nimm einen Zustand des neuen Automaten her... (also eine Teilmenge der Potmenge)        for ( IntegerSet currentIntSet : statePowerSet ) {                        count++;                        progress = (count*100)/pSetSize;                        //  waitDlg.setProgress(progress);            //  waitDlg.setCurrentStep("checking set "+count+" of "+pSetSize);                        // (TODO?) IntegerSet implementiert (noch) nicht Iterator            currentSet = currentIntSet.pureElements();                        // eine spezielle Teilmenge der Potenzmenge, nmlich die leere            // Menge, wird gesondert behandelt, sie dient gewissermaen            // als Fangzustand            if (currentSet.isEmpty()) {                // fge fr alle Buchstaben die Transitionen ein die beim                // Zustand verbleibt                stateId = statePowerSet.indexOf(currentIntSet);                                for ( Character cChar : alpha ) {                    dfaResult.addTransition(stateId,stateId, cChar);                }                                continue;            }                        // durchlaufe fr diesen Zustand alle Buchstaben des Eingabealphabets            for ( Character currChar : alpha ) {                                // lege eine neue (zunchst) leere Menge an, hier kommen                // alle Zustnde hinein die von stateId mit currChar aus erreichbar sind                destSet = new IntegerSet();                                // durchlaufe die aktuelle Menge (=Zustand) ....                for ( Integer stId : currentSet ) {                                        // besorge alle Transitionen dieses (alten) Zustands aus dem                    // alten Automaten                    transList = aut.getStateTransitions(stId);                                        if (transList==null) continue;                                        // betrachte nun die ausgehenden Transition dieses ZUstands im alten Aut.                    for ( Transition t : transList ) {                                                // gab es im alten Automaten eine Transition von stateId mit currChar                        // irgendwo anders hin, fge den jeweiligen Zielzustand in die                        // neue Zielzustandsmenge ein                        if (t.getChar() == currChar && t.getStartState()==stId) {                            destSet.insert(t.getEndState());                                                    }                                            }                                        // ber den Index im Vector der Potenzmenge werden die einzelnen                    // Menge eindeutig identifiziert, hier wird die endgltige Transition eingefgt                                    }                                dfaResult.addTransition(statePowerSet.indexOf(currentIntSet),                    statePowerSet.indexOf(destSet),                    currChar);            }                    }                // bestimme den neuen Startzustand des Automaten        // der neue Startzustand ist jene Zustandsmenge, welche alle alten        // Startzustnde enthlt, die Potenzmenge wird danach durchsucht        // wird auch in der schleife weiter unten getan        IntegerSet oldStartSet = aut.getStartSet();                // abschlieend bestimmen wir nun noch die neuen Endzustnde des Automaten        // dazu nehmen wir die ursprngliche Endzustandsmenge und schneiden mit        // jedem Element der Potenzmenge, ist der Schnitt nicht leer, ist der        // entsprechende Zustand (==Menge) ein endzustand im neuen Automat        // einfach gesagt, jede Zustandsmenge des Potenzautomaten die        // den einen alten Endzustand enthlt ist Endzustand.                IntegerSet oldFinalSet = aut.getFinalSet();                IntegerSet myClone;                for ( IntegerSet currentIntSet : statePowerSet ) {                        // bevor wir hier rumschneiden, erst schauen ob das nicht            // der neue Startzustand ist            if (currentIntSet.equals(oldStartSet)) {                dfaResult.setStartFlag(statePowerSet.indexOf(currentIntSet), true);            }                        myClone = (IntegerSet)currentIntSet.clone();                        myClone.intersect(oldFinalSet);                        if (!myClone.isEmpty()) {                dfaResult.setFinalFlag(statePowerSet.indexOf(currentIntSet),  true);            }        }                // erzeuge die noch nicht vorhandenen Pixelpositionen der Zustnde        dfaResult = generatePositions(dfaResult);                //waitDlg.setCurrentStep("reducing");                // ein wenig Minimierung ohne den User zu fragen ;)        // knnte man als optional einbauen        dfaResult = removeIsolatedStates(dfaResult);                return dfaResult;    }