code: public void start()
     {
        try
        {
           // Start from extensions first
           String[] paths = configExtensionPaths.toArray(new String[configExtensionPaths.size()]);
           for (int i = paths.length - 1; i >= 0; i--)
           {
              // We start from the last one because as it is the one with highest priority
              if (i == paths.length - 1)
              {
                 init(configurationService.getInputStream(paths[i]));
              }
              else
              {
                 merge(configurationService.getInputStream(paths[i]));
              }
           }
  
           // Then from normal config
           if (configExtensionPaths.isEmpty())
           {
              init(configurationService.getInputStream(param.getValue()));
           }
           else
           {
              merge(configurationService.getInputStream(param.getValue()));
           }
  
           // Then from config from persister
           if (configurationPersister != null)
           {
              if (configurationPersister.hasConfig())
              {
                 merge(configurationPersister.read());
              }
  
              // Store the merged configuration
              retain();
           }
        }
        catch (RepositoryConfigurationException e)
        {
           throw new RuntimeException(e);
        }
        catch (Exception e)
        {
           throw new RuntimeException(new RepositoryConfigurationException("Fail to init from xml! Reason: " + e, e));
        }
     }
docs: {@inheritDoc}