docs: private Map<String, Object> loadPropertyFiles() {
          final Map<String, Object> definedProps = new HashMap<>();
          for (int propertyFileIndex = 0; propertyFileIndex < propertyFiles.size(); propertyFileIndex++) {
              final String filename = propertyFiles.elementAt(propertyFileIndex);
              final Properties props = new Properties();
              FileInputStream fis = null;
              try {
                  fis = new FileInputStream(filename);
                  props.load(fis);
              } catch (final IOException e) {
                  System.out.println("Could not load property file " + filename + ": " + e.getMessage());
              } finally {
                  FileUtils.close(fis);
              }
  
              // ensure that -D properties take precedence
              final Enumeration propertyNames = props.propertyNames();
              while (propertyNames.hasMoreElements()) {
                  final String name = propertyNames.nextElement().toString();
                  if (!definedProps.containsKey(name)) {
                      final Argument arg = getPluginArguments().get("--" + name);
                      final String value = props.getProperty(name);
                      if (arg != null) {
                          definedProps.put(name, arg.getValue(value));
                      } else {
                          definedProps.put(name, value);
                      }
                  }
              }
          }
          return definedProps;
      }