class DeployRegistry extends DependencyTree<String, DeploymentDescriptor> {
    // this is needed to handle requiredBy dependencies
    private final Map<String, DeploymentDescriptor> deployments = Collections
                                                                    .synchronizedSortedMap(new TreeMap<String, DeploymentDescriptor>());

    public void add(DeploymentDescriptor deployment) {
        deployments.put(deployment.getName(), deployment);
    }

    public void remove(String key) {
        deployments.remove(key);
    }

    @Override
    public List<Entry<String, DeploymentDescriptor>> getResolvedEntries() {
        if (!deployments.isEmpty()) {
            commitDeployments();
        }
        return super.getResolvedEntries();
    }

    @Override
    public List<Entry<String, DeploymentDescriptor>> getMissingRequirements() {
        if (!deployments.isEmpty()) {
            commitDeployments();
        }
        return super.getMissingRequirements();
    }

    @Override
    public DeploymentDescriptor get(String key) {
        if (!deployments.isEmpty()) {
            commitDeployments();
        }
        return super.get(key);
    }

    @Override
    public Collection<Entry<String, DeploymentDescriptor>> getEntries() {
        if (!deployments.isEmpty()) {
            commitDeployments();
        }
        return super.getEntries();
    }

    @Override
    public List<DeploymentDescriptor> getResolvedObjects() {
        if (!deployments.isEmpty()) {
            commitDeployments();
        }
        return super.getResolvedObjects();
    }

    @Override
    public List<DeploymentDescriptor> getPendingObjects() {
        if (!deployments.isEmpty()) {
            commitDeployments();
        }
        return super.getPendingObjects();
    }

    @Override
    public Entry<String, DeploymentDescriptor> getEntry(String key) {
        if (!deployments.isEmpty()) {
            commitDeployments();
        }
        return super.getEntry(key);
    }

    @Override
    public List<Entry<String, DeploymentDescriptor>> getPendingEntries() {
        if (!deployments.isEmpty()) {
            commitDeployments();
        }
        return super.getPendingEntries();
    }

    private void commitDeployments() {<FILL_FUNCTION_BODY>}
}

        for (DeploymentDescriptor fd : deployments.values()) {
            add(fd.getModuleName(), fd, fd.getRequiredModules());
        }
        deployments.clear();
    
<methods>public void <init>() ,public transient void add(java.lang.String, com.alipay.sofa.boot.isle.deployment.DeploymentDescriptor, java.lang.String[]) ,public void add(java.lang.String, com.alipay.sofa.boot.isle.deployment.DeploymentDescriptor, Collection<java.lang.String>) ,public void add(java.lang.String, com.alipay.sofa.boot.isle.deployment.DeploymentDescriptor) ,public void clear() ,public com.alipay.sofa.boot.isle.deployment.DeploymentDescriptor get(java.lang.String) ,public Collection<Entry<java.lang.String,com.alipay.sofa.boot.isle.deployment.DeploymentDescriptor>> getEntries() ,public Entry<java.lang.String,com.alipay.sofa.boot.isle.deployment.DeploymentDescriptor> getEntry(java.lang.String) ,public List<Entry<java.lang.String,com.alipay.sofa.boot.isle.deployment.DeploymentDescriptor>> getMissingRequirements() ,public List<Entry<java.lang.String,com.alipay.sofa.boot.isle.deployment.DeploymentDescriptor>> getPendingEntries() ,public List<com.alipay.sofa.boot.isle.deployment.DeploymentDescriptor> getPendingObjects() ,public List<Entry<java.lang.String,com.alipay.sofa.boot.isle.deployment.DeploymentDescriptor>> getResolvedEntries() ,public List<com.alipay.sofa.boot.isle.deployment.DeploymentDescriptor> getResolvedObjects() ,public Iterator<Entry<java.lang.String,com.alipay.sofa.boot.isle.deployment.DeploymentDescriptor>> iterator() ,public void remove(java.lang.String) ,public void resolve(Entry<java.lang.String,com.alipay.sofa.boot.isle.deployment.DeploymentDescriptor>) ,public void unregister(Entry<java.lang.String,com.alipay.sofa.boot.isle.deployment.DeploymentDescriptor>) ,public void unresolve(Entry<java.lang.String,com.alipay.sofa.boot.isle.deployment.DeploymentDescriptor>) <variables>private final non-sealed Map<java.lang.String,Entry<java.lang.String,com.alipay.sofa.boot.isle.deployment.DeploymentDescriptor>> registry,private final non-sealed List<Entry<java.lang.String,com.alipay.sofa.boot.isle.deployment.DeploymentDescriptor>> resolved