code: private void validateBoundsDefinitions() {
          // bounds should be only set for numeric arguments and if the type is integer it should
          // be set to an integer
          if (!Number.class.isAssignableFrom(getUnderlyingFieldClass())) {
              if (hasBoundedRange() || hasRecommendedRange()) {
                  throw new CommandLineException.CommandLineParserInternalException(
                          String.format(
                                  "Min/max value ranges can only be set for numeric arguments. " +
                                  "Argument --%s has a minimum or maximum value but has a non-numeric type.",
                                  getLongName()));
              }
          }
          if (Integer.class.isAssignableFrom(getUnderlyingFieldClass())) {
              if (!isInfinityOrMathematicalInteger(getMaxValue())
                      || !isInfinityOrMathematicalInteger(getMinValue())
                      || !isInfinityOrMathematicalInteger(getMaxRecommendedValue())
                      || !isInfinityOrMathematicalInteger(getMinRecommendedValue())) {
                  throw new CommandLineException.CommandLineParserInternalException(
                          String.format(
                                  "Integer argument --%s has a minimum or maximum attribute with a non-integral value.",
                                  getLongName()));
              }
          }
      }
docs: and are self-consistent.