public Terminated<Element> create() {
		if (ready() == false) {
			throw new IllegalStateException();
		}
		final String header = getDataSource().next().getElement();
		assert header.startsWith("{*");

		final UFont font = new UFont("Default", Font.PLAIN, 12);
		final ElementMenuBar result = new ElementMenuBar(font, getDictionary());

		String subentry = null;

		while (getDataSource().peek(0).getElement().equals("}") == false) {
			final Terminated<String> t = getDataSource().next();
			final String s = t.getElement();
			if (subentry == null) {
				result.addEntry(s);
			} else if (subentry.length() == 0) {
				subentry = s;
			} else {
				result.addSubEntry(subentry, s);
			}
			if (t.getTerminator() == Terminator.NEWLINE) {
				subentry = "";
			}
		}
		final Terminated<String> next = getDataSource().next();
		return new Terminated<Element>(result, next.getTerminator());
	}