@SuppressWarnings("unused")
	private void SetUpNFA(){
		
		// for every state
		for (int i = 0; i < mStates.size(); ++i){
			
			State st = mStates.get(i);
			for (int j = 0; j < mStates.size(); ++j) mStates.get(j).mUsed = false;
			st.mUsed = true;
			DoEpsilonTransitions_eNFA();
			for (int j = 0; j < mStates.size(); ++j){
				State st_e = mStates.get(j);
				if (st_e.mUsed && mTransitions.containsKey(st_e)){
					List<Transition> ls = mTransitions.get(st_e);
					for (Iterator<Transition> ite = ls.iterator(); ite.hasNext();){
						Transition tr = ite.next();
						
						for (int k = 0; k < mStates.size(); ++k) mStates.get(k).mUsed = false;
						st.mUsed = true;
						DoEpsilonTransitions_eNFA();
						InputChar_eNFA(tr.mInputC);
						
						for (int x = 0; x < mStates.size(); ++x){
							if (mStates.get(x).mUsed && mStates.get(x) != st){
								if (!st.mTransitions.containsKey(tr.mInputC))
									st.mTransitions.put(tr.mInputC, new ArrayList<State>());
								st.mTransitions.get(tr.mInputC).add(mStates.get(x));
							}
						}
					}
				}
			}
		}
	}