code: private void setScalarValue(
              final CommandLineArgumentParser commandLineArgumentParser,
              final List<String> originalValues) // Note that these might be tag surrogates
      {
          if (getHasBeenSet() || originalValues.size() > 1) {
              throw new CommandLineException.BadArgumentValue(
                      String.format("Argument '%s' cannot be specified more than once.", getArgumentAliasDisplayString()));
          }
  
          if (isFlag() && originalValues.isEmpty()){
              setArgumentValue(true);
          } else {
              final String stringValue = originalValues.get(0);
              Object value = null;
              if (stringValue.equals(NULL_ARGUMENT_STRING)) {
                  if (getUnderlyingField().getType().isPrimitive()) {
                      throw new CommandLineException.BadArgumentValue(
                              String.format("Argument '%s' is not a nullable argument type.", getArgumentAliasDisplayString()));
                  }
              } else {
                  final Pair<String, String> normalizedSurrogatePair = getNormalizedTagValuePair(commandLineArgumentParser, stringValue);
                  value = getValuePopulatedWithTags(normalizedSurrogatePair.getLeft(), normalizedSurrogatePair.getRight());
              }
              checkArgumentRange(value);
              setArgumentValue(value);
          }
      }
docs: one value, in which case we throw.