public ArrayList getProductionsForPushTwoTransition(Transition transition,
			Automaton automaton) {
		ArrayList list = new ArrayList();
		String fromState = transition.getFromState().getName();
		String toState = transition.getToState().getName();
		PDATransition trans = (PDATransition) transition;
		String toPop = trans.getStringToPop();
		String toRead = trans.getInputToRead();
		String toPush = trans.getStringToPush();
		String toPushOne = toPush.substring(0, 1);
		String toPushTwo = toPush.substring(1);

		State[] states = automaton.getStates();
		for (int k = 0; k < states.length; k++) {
			String state = states[k].getName();
			String lhs = LEFT_PAREN.concat(fromState.concat(toPop.concat(state
					.concat(RIGHT_PAREN))));
			for (int j = 0; j < states.length; j++) {
				String lstate = states[j].getName();
				String variable1 = LEFT_PAREN.concat(toState.concat(toPushOne
						.concat(lstate.concat(RIGHT_PAREN))));
				String variable2 = LEFT_PAREN.concat(lstate.concat(toPushTwo
						.concat(state.concat(RIGHT_PAREN))));

				/** Map to unique variables. */
				if (MAP.get(lhs) == null) {
					if (isStartSymbol(lhs, automaton))
						MAP.put(lhs, START_SYMBOL);
					else
						MAP.put(lhs, getUniqueVariable());
				}
				if (MAP.get(variable1) == null) {
					if (isStartSymbol(variable1, automaton))
						MAP.put(variable1, START_SYMBOL);
					else
						MAP.put(variable1, getUniqueVariable());
				}
				if (MAP.get(variable2) == null) {
					if (isStartSymbol(variable2, automaton))
						MAP.put(variable2, START_SYMBOL);
					else
						MAP.put(variable2, getUniqueVariable());
				}

				String rhs = toRead.concat(variable1.concat(variable2));

				Production p = new Production(lhs, rhs);
				list.add(p);
			}
		}
		return list;
	}