code: public ConfigBuilder loadProps(Properties props, String scopePrefix) {
      Preconditions.checkNotNull(props);
      Preconditions.checkNotNull(scopePrefix);
  
      int scopePrefixLen = scopePrefix.length();
  
      for (Map.Entry<Object, Object> propEntry : props.entrySet()) {
        String propName = propEntry.getKey().toString();
        if (propName.startsWith(scopePrefix)) {
          String scopedName = propName.substring(scopePrefixLen);
          if (scopedName.isEmpty()) {
            throw new RuntimeException("Illegal scoped property:" + propName);
          }
          if (!Character.isAlphabetic(scopedName.charAt(0))) {
            throw new RuntimeException(
                "Scoped name for property " + propName + " should start with a character: " + scopedName);
          }
          this.primitiveProps.put(scopedName, propEntry.getValue());
        }
      }
  
      return this;
    }
docs: Loads properties which have a given name prefix into the config. The following restrictions
  apply:
  <ul>
  <li>No property can have a name that is equal to the prefix
  <li>After removal of the prefix, the remaining property name should start with a letter.
  </ul>
  
  @param  props          the collection from where to load the properties
  @param  scopePrefix    only properties with this prefix will be considered. The prefix will be
  removed from the names of the keys added to the {@link Config} object.
  The prefix can be an empty string but cannot be null.