public static synchronized HashSet<String> guessLang(FSA aut, int step) {
public static synchronized HashSet<String> guessLang(FSA aut, int step) throws OutOfMemoryError {
    public static synchronized HashSet<String> guessLang(FSA aut, int step) {        Vector<Character> alpha;        alpha = aut.getAlphabet();                Vector<String> words;        Vector<String> newWords;        HashSet<String> lang;                words = new Vector<String>();        String newWord;        lang = new HashSet<String>();        String curr;                boolean autType = aut.isDeterministic();                /*            words ist die Menge aller Strings aus denen wir noch neue            Kombinationen bilden knnen, anfangs wird jeder einzelne Buchstabe            des Eingabealphabets dort hineingetan        */        for ( Iterator<Character> it = alpha.iterator(); it.hasNext(); ) {            words.add(it.next().toString());        }                for (int i = 0 ; i < step ; i++ ) {                        /* teste die aktuelle Wortliste */                        for ( Iterator<String> strIt = words.iterator(); strIt.hasNext(); ) {                curr = strIt.next();                                /* da der Automat whrend des Sprachtests nicht verndert                   wird kann der in FSA.java eingebaute Determinismustest                   bersprungen werden                 */                                if (aut.accepts(curr, true, autType)) {                    lang.add(curr);                }            }                        newWords = new Vector<String>();                        /* hinter jedes Wort der aktuellen Wortliste wird jeder Buchstabe               des Eingabealphabets gehngt, die neu enstandenen Wrter ersetzen               die alten wodurch nie alle Wrter im Speicher gehalten werden mssen            */                        for ( Iterator<String> strIt = words.iterator(); strIt.hasNext(); ) {                                    newWord = strIt.next();                                                    for ( Iterator<Character> alphaIt = alpha.iterator(); alphaIt.hasNext(); ) {                        newWords.add(newWord+alphaIt.next().toString());                            }                            }            System.out.println(newWords.size());                        words.clear();            words.addAll(newWords);        }                return lang;    }