public void AddActionCell(int inputIndex, int stateIndex, ActionType actionType, int actionSpecificValue_a, int actionSpecificValue_b, int productionPriroty){
		TableKey tempTK = new TableKey(inputIndex, stateIndex);
		Cell_Action newCA = new Cell_Action();
		newCA.mActionType = actionType;
		newCA.mActionSpecificValue_a = actionSpecificValue_a;
		newCA.mActionSpecificValue_b = actionSpecificValue_b;
		newCA.mProductionPriroty = productionPriroty;
		
		Cell_Action oldCA = mCellsA.get(tempTK);
		if (oldCA == null) {
			mCellsA.put(tempTK, newCA);
			return;
		}
		// Move has advantage over reduce.
		if (newCA.mActionType == ActionType.Move && oldCA.mActionType == ActionType.Reduce){
			mCellsA.put(tempTK, newCA);
			return;
		}
		// If there is contradiction between two reduce actions, use the one with greater priority (smaller number).
		if (newCA.mActionType == ActionType.Reduce && oldCA.mActionType == ActionType.Reduce &&
				newCA.mProductionPriroty < oldCA.mProductionPriroty){
			mCellsA.put(tempTK, newCA);
			return;
		}
	}