code: private void handleProperties(Properties properties) throws OptionParserException {
          if (properties == null) {
              return;
          }
  
          for (Enumeration<?> e = properties.propertyNames(); e.hasMoreElements();) {
              String name = e.nextElement().toString();
              Option opt = options.getOption(name);
              if (opt == null) {
                  throw new UnrecognizedOptionException("Default option wasn't defined", name);
              }
  
              // if the option is part of a group, check if another option of the group has been selected
              OptionGroup group = options.getOptionGroup(opt);
              boolean selected = (group != null && group.getSelected() != null);
              if (!parsedOptions.hasOption(name) && !selected) {
                  // get the value from the properties
                  String value = properties.getProperty(name);
                  if (opt.hasValue()) {
                      if (opt.getValues() == null || opt.getValues().length == 0) {
                          opt.addValue(value);
                      }
                  } else if (!("yes".equalsIgnoreCase(value)
                          || "true".equalsIgnoreCase(value)
                          || "1".equalsIgnoreCase(value))) {
                      // if the value is not yes, true or 1 then don't add the option to the ParsedOptions
                      continue;
                  }
                  handleOption(opt);
                  currentOption = null;
              }
          }
      }
docs: Sets the values of Options using the values in {@code properties}.
  
  @param properties the value properties to be processed
  @throws OptionParserException if option parsing fails