code: public ArgumentListBuilder addKeyValuePairsFromPropertyString(String prefix, String properties, VariableResolver<String> vr, Set<String> propsToMask) throws IOException {
          if(properties==null)    return this;
  
          properties = Util.replaceMacro(properties, propertiesGeneratingResolver(vr));
  
          for (Entry<Object,Object> entry : Util.loadProperties(properties).entrySet()) {
              addKeyValuePair(prefix, (String)entry.getKey(), entry.getValue().toString(), (propsToMask != null) && propsToMask.contains(entry.getKey()));
          }
          return this;
      }
docs: Adds key value pairs as "-Dkey=value -Dkey=value ..." by parsing a given string using {@link Properties} with masking.
  
  @param prefix
  The '-D' portion of the example. Defaults to -D if null.
  @param properties
  The persisted form of {@link Properties}. For example, "abc=def\nghi=jkl". Can be null, in which
  case this method becomes no-op.
  @param vr
  {@link VariableResolver} to resolve variables in properties string.
  @param propsToMask
  Set containing key names to mark as masked in the argument list. Key
  names that do not exist in the set will be added unmasked.
  @since 1.378