public final void registerOption(final String flagId, final String tooltip,
			char shortFlag, final String longFlag, boolean argExpected) {
		this.dirty = true;
		if (shortFlag != Flag.NoShortFlag) {
			this.shortToId.put((int) shortFlag, flagId);
		}
		this.idToShort.put(flagId, (int) shortFlag);
		if (longFlag != Flag.NoLongFlag) {
			this.longToId.put(longFlag, flagId);
		}
		this.idToLong.put(flagId, longFlag);

		this.help.put(flagId, tooltip);
		this.registeredFlags.add(flagId);
		int s = 0;
		if (!argExpected) {
			s |= Flag.PRIMITIVE;
		}
		this.state.put(flagId, s);
		this.unknownOption = null;
	}