@Override public void parse(List<String> arguments) { final Optional<V> value; if (!arguments.isEmpty()) { value = Optional .of(option.argumentType.parse(option, Joiner.on(ArgumentParser.ARG_LIST_SEPARATOR).join(arguments))); } else if (!option.isArgOptional()) { throw new CliException("The option " + option + " requires a " + option.argumentType.name() + " argument.", CauseType.MISSING_ARG, option); } else { value = Optional.absent(); } handler.execute(subject, value); }