class ManagementModelMerger extends MavenModelMerger {

        public Model mergeManagedDependencies(Model model) {<FILL_FUNCTION_BODY>}

        @Override
        protected void mergeDependency_Optional(
                Dependency.Builder builder,
                Dependency target,
                Dependency source,
                boolean sourceDominant,
                Map<Object, Object> context) {
            // optional flag is not managed
        }

        @Override
        protected void mergeDependency_Exclusions(
                Dependency.Builder builder,
                Dependency target,
                Dependency source,
                boolean sourceDominant,
                Map<Object, Object> context) {
            List<Exclusion> tgt = target.getExclusions();
            if (tgt.isEmpty()) {
                List<Exclusion> src = source.getExclusions();
                builder.exclusions(src);
            }
        }
    }

            DependencyManagement dependencyManagement = model.getDependencyManagement();
            if (dependencyManagement != null) {
                Map<Object, Dependency> dependencies = new HashMap<>();
                Map<Object, Object> context = Collections.emptyMap();

                for (Dependency dependency : model.getDependencies()) {
                    Object key = getDependencyKey().apply(dependency);
                    dependencies.put(key, dependency);
                }

                boolean modified = false;
                for (Dependency managedDependency : dependencyManagement.getDependencies()) {
                    Object key = getDependencyKey().apply(managedDependency);
                    Dependency dependency = dependencies.get(key);
                    if (dependency != null) {
                        Dependency merged = mergeDependency(dependency, managedDependency, false, context);
                        if (merged != dependency) {
                            dependencies.put(key, merged);
                            modified = true;
                        }
                    }
                }

                if (modified) {
                    List<Dependency> newDeps = new ArrayList<>(dependencies.size());
                    for (Dependency dep : model.getDependencies()) {
                        Object key = getDependencyKey().apply(dep);
                        Dependency dependency = dependencies.get(key);
                        newDeps.add(dependency);
                    }
                    return Model.newBuilder(model).dependencies(newDeps).build();
                }
            }
            return model;
        
<no_super_class>