private PageMultipleChoice createMultipleChoice() {
			PageMultipleChoice m = new PageMultipleChoice();
			m.setIndex(indexOfComponent);
			m.setPage(page);
			if (uid != null) {
				m.setUid(uid);
				uid = null;
			}
			if (layout != null) {
				m.setQuestionPosition(layout);
				layout = null;
			}
			m.setSingleSelection(singleSelection);
			m.changeNumberOfChoices(nrow == 0 ? 4 : nrow);
			for (int i = 0; i < nrow; i++)
				m.setChoice(i, choices[i]);
			if (answer != null) {
				StringTokenizer st = new StringTokenizer(answer);
				int[] key = new int[st.countTokens()];
				int k = 0;
				while (st.hasMoreTokens()) {
					Integer ig = Parser.parseInt(st.nextToken());
					if (ig != null)
						key[k++] = ig.intValue();
				}
				m.setAnswer(key);
				answer = null;
			}
			boolean needCache = ConnectionManager.sharedInstance().isCachingAllowed() && page.isRemote();
			if (titleText != null) {
				if (needCache) {
					File cml = ConnectionManager.sharedInstance().getLocalCopy(page.getAddress());
					if (cml != null && cml.exists())
						m.setBase(cml);
				}
				// do not restore the base, see createTextBox()
				m.setQuestion(titleText);
				titleText = null;
				if (needCache) // FIXME: Do we want to check caching for all linked files?
					m.cacheLinkedFiles(page.getPathBase());
			}
			if (!opaque) {
				m.setOpaque(false);
				opaque = true;
			}
			else {
				if ((argb1 | ARGB_NOT_SET) != ARGB_NOT_SET) {
					m.setBackground(new Color(argb1));
					argb1 = ARGB_NOT_SET;
				}
			}
			if (script != null) {
				m.stringToScripts(script);
				script = null;
			}
			if (clear) {
				m.addClearAnswerButton();
				clear = false;
			}
			else {
				m.removeClearAnswerButton();
			}
			if (submit) {
				m.addCheckAnswerButton();
				submit = false;
			}
			else {
				m.removeCheckAnswerButton();
			}
			if (borderType != null) {
				m.setBorderType(borderType);
				borderType = null;
			}
			m.setChangable(page.isEditable());
			if (width > 0 && height > 0) {
				m.setPreferredSize(new Dimension((int) width, (int) height));
				width = height = 0;
			}
			if (ConnectionManager.sharedInstance().isCachingAllowed()) {
				if (page.isRemote())
					m.cacheLinkedFiles(page.getPathBase());
			}
			m.clearSelection();
			String key = page.getAddress() + "#" + ModelerUtilities.getSortableString(indexOfComponent, 3) + "%"
					+ m.getClass().getName();
			QuestionAndAnswer qa = UserData.sharedInstance().getData(key);
			if (qa != null) {
				answer = qa.getAnswer();
				if (answer != null && !answer.equals("-1")) {
					StringTokenizer st = new StringTokenizer(answer);
					int[] val = new int[st.countTokens()];
					int k = 0;
					while (st.hasMoreTokens()) {
						Integer ig = Parser.parseInt(st.nextToken());
						if (ig != null)
							val[k++] = ig.intValue();
					}
					if (val.length > 0) {
						for (int i : val)
							m.setSelected(i, true);
					}
					answer = null;
				}
			}
			else {
				qa = new QuestionAndAnswer(m.getQuestion() + '\n' + m.formatChoices() + "\nMy answer is ", "-1",
						m.answerToString());
				UserData.sharedInstance().putData(key, qa);
			}
			htmlComponentConnector.enroll(m.getQuestionTextBox());
			indexOfComponent++;
			iChoice = 0;
			singleSelection = true;
			nrow = 0;
			description = null;
			return m;
		}