Since the `environment.getProperty(fqKey)` already resolves the property for the key using all the available `PropertySources`, there is an issue with ordering where the flattened module options need to get the highest precedence in Module Context application's `PropertySources`. Currently, I see this in `SimpleModule`:
```
@Override
	public void initialize() {
		this.application.initializers(new ContextIdApplicationContextInitializer(this.toString()));
		ConfigurableEnvironment environment = new StandardEnvironment();
		if (parent != null) {
			copyEnvironment(environment, parent.getEnvironment());
		}
		for (PropertySource<?> source : propertySources) {
			environment.getPropertySources().addLast(source);
		}
```
Because of this, the flattened properties along with the module properties get the lowest precedence over the `PropertySources`. This could potentially override any of the module options computed before. 
I was thinking we can even remove the `PropertySources` copied from the parent environment (CommonContext) in `SimpleModule` initialize() , since `DefaultsProvidingModuleOptionsMetadataResolver` obviously resolves the module options using these `PropertySources`. or, we can do addFirst() instead of addLast() in the above code in `SimpleModule` initialize().