class SystemParameters {

    public void injectInto(DeploymentDescriptor descriptor) {
        for (Module module : descriptor.getModules()) {
            Map<String, Object> moduleSystemParameters = getModuleParameters(module);
            module.setParameters(MapUtil.merge(moduleSystemParameters, module.getParameters()));
        }
        for (Resource resource : descriptor.getResources()) {
            Map<String, Object> resourceSystemParameters = getResourceParameters(resource);
            resource.setParameters(MapUtil.merge(resourceSystemParameters, resource.getParameters()));
        }
        Map<String, Object> generalSystemParameters = getGeneralParameters();
        descriptor.setParameters(MapUtil.merge(generalSystemParameters, descriptor.getParameters()));
    }

    public  SystemParameters(Builder builder);

}