missed a file.


git-svn-id: https://svn.apache.org/repos/asf/maven/maven-2/branches/maven-2.2.x@796892 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/maven-core/src/main/java/org/apache/maven/container/ContainerUtils.java b/maven-core/src/main/java/org/apache/maven/container/ContainerUtils.java
new file mode 100644
index 0000000..feed93a
--- /dev/null
+++ b/maven-core/src/main/java/org/apache/maven/container/ContainerUtils.java
@@ -0,0 +1,53 @@
+package org.apache.maven.container;
+
+import org.codehaus.plexus.PlexusContainer;
+import org.codehaus.plexus.component.repository.ComponentDescriptor;
+
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.Set;
+
+public class ContainerUtils
+{
+    
+    public static Set<String> findChildComponentHints( String role, PlexusContainer parent, PlexusContainer child )
+    {
+        return findChildComponents( role, parent, child ).keySet();
+    }
+    
+    @SuppressWarnings( "unchecked" )
+    public static Map<String, ComponentDescriptor> findChildComponents( String role, PlexusContainer parent, PlexusContainer child )
+    {
+        Map<String, ComponentDescriptor> parentComponents = parent.getComponentDescriptorMap( role );
+        if ( parentComponents != null )
+        {
+            parentComponents = new LinkedHashMap<String, ComponentDescriptor>( parentComponents );
+        }
+        
+        Map<String, ComponentDescriptor> childComponents = child.getComponentDescriptorMap( role );
+        if ( childComponents == null )
+        {
+            return new HashMap<String, ComponentDescriptor>();
+        }
+        else
+        {
+            childComponents = new LinkedHashMap<String, ComponentDescriptor>( childComponents );
+            if ( parentComponents != null && !parentComponents.isEmpty() )
+            {
+                for ( Map.Entry<String, ComponentDescriptor> entry : parentComponents.entrySet() )
+                {
+                    String hint = entry.getKey();
+                    
+                    if ( childComponents.containsKey( hint ) && entry.getValue() == childComponents.get( hint ) )
+                    {
+                        childComponents.remove( hint );
+                    }
+                }
+            }
+        }
+        
+        return childComponents;
+    }
+
+}