code: public static void fillProperties(Properties props, String resourceName, ClassLoader classLoader)
              throws IOException {
          Enumeration<URL> urls = classLoader.getResources(resourceName);
          while (urls.hasMoreElements()) {
              URL url = urls.nextElement();
              URLConnection con = url.openConnection();
              try (InputStream is = con.getInputStream()) {
                  if (resourceName.endsWith(XML_FILE_EXTENSION)) {
                      props.loadFromXML(is);
                  } else {
                      props.load(is);
                  }
              }
          }
          if (resourceName.endsWith(ENCRYPTED_RESOURCE_NAME_SUFFIX)) {
              for (Map.Entry<?, ?> entry: props.entrySet()) {
                  Object key = entry.getKey();
                  Object val = entry.getValue();
                  if (val instanceof String) {
                      String value = (String)val;
                      if (PropertyValueEncryptionUtils.isEncryptedValue(value)) {
                          value = PropertyValueEncryptionUtils.decrypt(value, PBEncryptionUtils.getEncryptor());
                          props.put(key, value);
                      }
                  }
              }
          }
      }
docs: Fill the given properties from the specified class path resource (in ISO-8859-1 encoding).
  <p>Merges properties if more than one resource of the same name
  found in the class path.</p>
  
  @param props the Properties instance to load into
  @param resourceName the name of the class path resource
  @param classLoader the class loader
  @throws IOException if loading failed