private void ProcessState(StateDFA state){
		// For each symbol.
		for (int i = 0; i < mParser.GetSymbols().size(); ++i){
			SetStateForNFA(state);
			mNFA.InputSymbol(i);
			if (!mNFA.UsedStatesExist()) continue;
			
			StateDFA newState = CreateState();
			int newStateIndex;
			if ((newStateIndex = GetIndexOf(newState)) == -1){ // does this state already exist?
				mStates.add(newState); // if not: add it
				ProcessState(newState);
			}
			else newState = mStates.get(newStateIndex); // if yes: get it
			
			// Now create the transition
			if (!mTransitions.containsKey(state)) mTransitions.put(state, new ArrayList<Transition>());
			Transition tempT = new Transition();
			tempT.mInput = i;
			tempT.mNextState = newState;
			mTransitions.get(state).add(tempT);
		}
	}