public void dump() {
        if( this.isEmpty() ) {
            System.out.println("NFA is empty");
            return;
        }
        for( String str : theTable.keySet() ) {
            System.out.println("Transitions with \"" + (str.equals("\0") ? "epsilon" : str) + "\".");
            for( State state : theTable.get( str ).keySet() ) {
                if( state.equals( startState ) )
                    System.out.print( "From state : &" + state.getName() + "& to " );
                else
                    System.out.print( "From state : " + state.getName() + " to " );
                for( State st : (HashSet<State>)theTable.get( str ).get( state ) ) {
                    System.out.print( st.getName().equals( finalState.getName() ) ? "*" + st.getName() + "*" : st.getName() + "," );
                }
                System.out.println();
            }
        }
    }