code: public static <T extends NamedConfig> T getConfig(ConfigPatternMatcher configPatternMatcher,
                                                        Map<String, T> configs, String name,
                                                        Class clazz) {
          return getConfig(configPatternMatcher, configs, name, clazz, (BiConsumer<T, String>) DEFAULT_NAME_SETTER);
      }
docs: Returns a config for the given name, creating one
  if necessary and adding it to the collection of known configurations.
  <p>
  The configuration is found by matching the configuration name
  pattern to the provided {@code name} without the partition qualifier
  (the part of the name after {@code '@'}).
  If no configuration matches, it will create one by cloning the
  {@code "default"} configuration and add it to the configuration
  collection.
  <p>
  This method is intended to easily and fluently create and add
  configurations more specific than the default configuration without
  explicitly adding it by invoking addXConfig(..)
  <p>
  Because it adds new configurations if they are not already present,
  this method is intended to be used before this config is used to
  create a hazelcast instance. Afterwards, newly added configurations
  may be ignored.
  
  @param name name of the config
  @return the configuration
  @throws ConfigurationException if ambiguous configurations are found
  @see StringPartitioningStrategy#getBaseName(java.lang.String)
  @see Config#setConfigPatternMatcher(ConfigPatternMatcher)
  @see Config##getConfigPatternMatcher()