docs: public Properties processFlatProps(Map<String, Object> props, String elementName) {
          final Properties properties = new Properties();
          List<Map<String, Object>> listOfPropMaps = Nester.nest(elementName, props);
          if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
              Tr.debug(tc, "listOfPropMaps: " + listOfPropMaps);
          }
          if (!listOfPropMaps.isEmpty()) {
              // Just get the first one (there should only ever be one)
              Map<String, Object> elementProps = listOfPropMaps.get(0);
              if (elementProps != null) {
                  // get the properties specified on the parent element
                  getConfigProperties(elementProps, properties, elementName);
                  // get the properties specified on the <property> sub elements
                  listOfPropMaps = Nester.nest("property", elementProps);
                  if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                      Tr.debug(tc, "subelement listOfPropMaps: " + listOfPropMaps);
                  }
                  if (!listOfPropMaps.isEmpty()) {
                      Map<String, Object> subElementProps = new HashMap<String, Object>();
                      for (Map<String, Object> propMap : listOfPropMaps) {
                          subElementProps.put((String) propMap.get("name"), (String) propMap.get("value"));
                      }
                      getConfigProperties(subElementProps, properties, elementName);
                  }
              }
          }
          // Fill in defaults for anything not explicitly specified in the config
          if (elementName.equals(CFG_KEY_SCOPE_TO_CLAIM_MAP)) {
              for (String scope : specDefinedScopes) {
                  if (!properties.containsKey(scope)) {
                      properties.put(scope, specScopesToClaims.get(scope));
                      if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                          Tr.debug(tc, "adding default claims for scope " + scope + " : " + Arrays.toString(specScopesToClaims.get(scope)));
                      }
                  }
              }
          } else if (elementName.equals(CFG_KEY_CLAIM_TO_UR_MAP)) {
              for (String claim : supportedSpecDefinedClaims) {
                  if (!properties.containsKey(claim)) {
                      properties.put(claim, defaultClaimsToVMMProperties.get(claim));
                      if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                          Tr.debug(tc, "adding default vmm property for claim " + claim + " : " + defaultClaimsToVMMProperties.get(claim));
                      }
                  }
              }
          }
          return properties;
      }