public char[] MONACharToCharSet(char[] MONAChar, int index) {
			char[] result = null;
			// Base case (reading last character in oneChar which is the least
			// significant bit)
			if (index == 7) {
				if (MONAChar[index] == '0' || MONAChar[index] == '1') {
					result = new char[1];
					if (MONAChar[index] == '0')
						result[0] = 0;
					else
						result[0] = 1;
				} else {// oneChar[index] == 'x'
					result = new char[2];
					result[0] = 0;
					result[1] = 1;
				}
			} else {
				// get all possible char values from suffix subarray then add
				// current values to it
				char[] prevResult = MONACharToCharSet(MONAChar, (index + 1));
				if (MONAChar[index] == '0' || MONAChar[index] == '1') {
					result = prevResult;
					for (int i = 0; i < prevResult.length; i++)
						result[i] = (char) (result[i] + (((int) MONAChar[index]) - 48)
								* Math.pow(2, (7 - index)));
				} else {// oneChar[index] == 'x'
					result = new char[prevResult.length * 2];
					// first multiply by 0
					for (int i = 0; i < prevResult.length; i++)
						result[i] = prevResult[i];
					// then multiply by 1
					for (int i = 0; i < prevResult.length; i++)
						result[i + prevResult.length] = (char) (prevResult[i] + Math
								.pow(2, (7 - index)));
				}
			}
			return result;
		}