// Path: modules/utils/src/main/java/com/intuit/autumn/utils/PropertyFactory.java
// public static Properties create(final String propertyResourceName) {
//     return create(propertyResourceName, null);
// }


import com.google.common.util.concurrent.Service;
import com.google.inject.Injector;
import com.google.inject.Module;
import com.netflix.governator.configuration.CompositeConfigurationProvider;
import com.netflix.governator.configuration.PropertiesConfigurationProvider;
import com.netflix.governator.configuration.SystemConfigurationProvider;
import com.netflix.governator.guice.BootstrapBinder;
import com.netflix.governator.guice.BootstrapModule;
import com.netflix.governator.guice.LifecycleInjector;
import com.netflix.governator.lifecycle.LifecycleManager;
import org.slf4j.Logger;
import javax.annotation.Nullable;
import java.util.Collection;
import java.util.Properties;
import java.util.Set;
import static com.google.common.collect.Sets.newHashSet;
import static com.intuit.autumn.utils.PropertyFactory.create;
import static java.util.Arrays.asList;
import static java.util.Collections.EMPTY_LIST;
import static org.slf4j.LoggerFactory.getLogger;
                    @Override
                    public void configure(BootstrapBinder binder) {
                        CompositeConfigurationProvider compositeConfigurationProvider = new CompositeConfigurationProvider();

                        for (Properties property : getConfigurations()) {
                            compositeConfigurationProvider.add(new PropertiesConfigurationProvider(property));
                        }

                        binder.bindConfigurationProvider().toInstance(compositeConfigurationProvider);
                    }
                })
                .withModuleClasses(modules.getResources())
                .build()
                .createInjector();

        lifecycleManager = injector.getInstance(LifecycleManager.class);

        try {
            lifecycleManager.start();
        } catch (Exception e) {
            throw new ServiceManagerException("unable to start the lifecycle manager", e);
        }

        return injector;
    }

    private Set<Properties> getConfigurations() {
        Set<Properties> configs = newHashSet();

        for (String configurationResource : this.configurations.getResources()) {
// Path: modules/utils/src/main/java/com/intuit/autumn/utils/PropertyFactory.java
// public static Properties create(final String propertyResourceName) {
//     return create(propertyResourceName, null);
// }


// Path: modules/service/src/main/java/com/intuit/autumn/service/ServiceManager.java
import com.google.common.util.concurrent.Service;
import com.google.inject.Injector;
import com.google.inject.Module;
import com.netflix.governator.configuration.CompositeConfigurationProvider;
import com.netflix.governator.configuration.PropertiesConfigurationProvider;
import com.netflix.governator.configuration.SystemConfigurationProvider;
import com.netflix.governator.guice.BootstrapBinder;
import com.netflix.governator.guice.BootstrapModule;
import com.netflix.governator.guice.LifecycleInjector;
import com.netflix.governator.lifecycle.LifecycleManager;
import org.slf4j.Logger;
import javax.annotation.Nullable;
import java.util.Collection;
import java.util.Properties;
import java.util.Set;
import static com.google.common.collect.Sets.newHashSet;
import static com.intuit.autumn.utils.PropertyFactory.create;
import static java.util.Arrays.asList;
import static java.util.Collections.EMPTY_LIST;
import static org.slf4j.LoggerFactory.getLogger;

                    @Override
                    public void configure(BootstrapBinder binder) {
                        CompositeConfigurationProvider compositeConfigurationProvider = new CompositeConfigurationProvider();

                        for (Properties property : getConfigurations()) {
                            compositeConfigurationProvider.add(new PropertiesConfigurationProvider(property));
                        }

                        binder.bindConfigurationProvider().toInstance(compositeConfigurationProvider);
                    }
                })
                .withModuleClasses(modules.getResources())
                .build()
                .createInjector();

        lifecycleManager = injector.getInstance(LifecycleManager.class);

        try {
            lifecycleManager.start();
        } catch (Exception e) {
            throw new ServiceManagerException("unable to start the lifecycle manager", e);
        }

        return injector;
    }

    private Set<Properties> getConfigurations() {
        Set<Properties> configs = newHashSet();

        for (String configurationResource : this.configurations.getResources()) {
            configs.add(create(configurationResource));