code: public static <K, V> Map<K, V> getMap(String mapName, Class<K> keyClass, Class<V> valueClass) {
        Map<K, V> map = new HashMap<>();
        getPropertiesMatching(StringPredicates.STARTS_WITH(mapName, true)).forEach(property -> {
           if (property.length() > mapName.length()) {
              String k = property.substring(mapName.length() + 1);
              map.put(Convert.convert(k, keyClass), get(property).as(valueClass));
           }
        });
        return map;
     }
docs: <p>Creates a map from a number of config properties. For example, given the following config excerpt:</p>
  <pre>
  {@code
  mymap {
  key1 = 100
  key2 = 200
  key3 = 300
  }
  }*
  </pre>
  <p>We can create map containing <code>{key1=100,key2=200,key3=300}</code>, but calling the method using:
  <code>getMap("mymap", String.class, Integer.class);</code></p>
  
  @param <K>        the key type parameter
  @param <V>        the value type parameter
  @param mapName    the name of the map that is used to find map entries.
  @param keyClass   the key class
  @param valueClass the value class
  @return A map containing keys and values whose properties are <code>mapName.*</code> where "*" is a wildcard for
  key names