code: public static DynamicPropertyFactory initWithConfigurationSource(DynamicPropertySupport dynamicPropertySupport) {
          synchronized (ConfigurationManager.class) {
              if (dynamicPropertySupport == null) {
                  throw new IllegalArgumentException("dynamicPropertySupport is null");
              }
              AbstractConfiguration configuration = null;
              if (dynamicPropertySupport instanceof AbstractConfiguration) {
                  configuration = (AbstractConfiguration) dynamicPropertySupport;
              } else if (dynamicPropertySupport instanceof ConfigurationBackedDynamicPropertySupportImpl) {
                  configuration = ((ConfigurationBackedDynamicPropertySupportImpl) dynamicPropertySupport).getConfiguration();
              }
              if (initializedWithDefaultConfig) {
                  config = null;
              } else if (config != null && config != dynamicPropertySupport) {
                  throw new IllegalStateException("DynamicPropertyFactory is already initialized with a diffrerent configuration source: " + config);
              }
              if (ConfigurationManager.isConfigurationInstalled()
                      && (configuration != null && configuration != ConfigurationManager.instance)) {
                  throw new IllegalStateException("ConfigurationManager is already initialized with configuration "
                          + ConfigurationManager.getConfigInstance());
              }
              if (configuration != null && configuration != ConfigurationManager.instance) {
                  ConfigurationManager.setDirect(configuration);
              }
              setDirect(dynamicPropertySupport);
              return instance;
          }
      }
docs: Initialize the factory with a {@link DynamicPropertySupport}.
  <p/>
  The initialization will register a {@link PropertyListener} with the DynamicPropertySupport so that DynamicProperty
  will receives a callback and refresh its value when a property is changed.
  <p/>
  If the factory is already initialized with a default configuration source (see {@link #getInstance()}), it will re-register
  itself with the new configuration source passed to this method. Otherwise, this method will throw IllegalArgumentException
  if it has been initialized with a non-default configuration source. This method should be only called once.
  
  @param dynamicPropertySupport DynamicPropertySupport to be associated with the DynamicProperty
  @return the instance of DynamicPropertyFactory
  @throws IllegalArgumentException if the factory has already been initialized with a different and non-default configuration source