public LongOpt(String name, int has_arg, StringBuffer flag, int val)
			throws IllegalArgumentException {
		// Validate has_arg
		if ((has_arg != NO_ARGUMENT) && (has_arg != REQUIRED_ARGUMENT)
				&& (has_arg != OPTIONAL_ARGUMENT)) {
			Object[] msgArgs = { new Integer(has_arg).toString() };
			throw new IllegalArgumentException(MessageFormat.format(
					_messages.getString("getopt.invalidValue"), msgArgs));
		}

		// Store off values
		this.name = name;
		this.has_arg = has_arg;
		this.flag = flag;
		this.val = val;
	}