}
}
final protected PicoContainer wrapComponentInstances(final Class decoratingComponentAdapterClass, final PicoContainer picoContainer, final Object[] wrapperDependencies) {
assertTrue(DecoratingComponentAdapter.class.isAssignableFrom(decoratingComponentAdapterClass));
final MutablePicoContainer mutablePicoContainer = new DefaultPicoContainer();
final int size = (wrapperDependencies != null ? wrapperDependencies.length : 0) + 1;
final Collection allComponentAdapters = picoContainer.getComponentAdapters();
for (final Iterator iter = allComponentAdapters.iterator(); iter.hasNext();) {
final Parameter[] parameters = new Parameter[size];
parameters[0] = new ConstantParameter(iter.next());
for (int i = 1; i < parameters.length; i++) {
parameters[i] = new ConstantParameter(wrapperDependencies[i - 1]);
}
final MutablePicoContainer instantiatingPicoContainer = new DefaultPicoContainer(new ConstructorInjectionComponentAdapterFactory());
instantiatingPicoContainer.registerComponentImplementation("decorator", decoratingComponentAdapterClass, parameters);
mutablePicoContainer.registerComponent((ComponentAdapter) instantiatingPicoContainer.getComponentInstance("decorator"));
}
return mutablePicoContainer;
}