private static void initChoiceCombinationAndChoices() {
		if (choiceCombination == null || choiceCombination.length == 0) {
			return;
		}
		indexsArray = new Integer[choiceCombination.length];

		for (int i = 0; i < choiceCombination.length; i++) {
			indexsArray[i] = i;
			String itemString = choiceCombination[i];
			if (itemString == null || itemString.length() == 0) {
				continue;// FIXME should throw exception to make sure index is consistent with ChoiceCombination.
			}
			char[] chars = itemString.toCharArray();
			List<Choice> choiceList = new ArrayList<Choice>();
			for (int j = 0; j < chars.length; j++) {
				Choice choice = new Choice(String.valueOf(chars[j]));
				choiceList.add(choice);
			}

			choiceCombinationMap.put(i, choiceList);

		}

	}