synchronized(instance)
{
List<Object> decoratorStack = new ArrayList<Object>();
List<Decorator<?>> decoratorList = component.getDecoratorStack();
Iterator<Decorator<?>> itList = decoratorList.iterator();
BeanManager manager = component.getWebBeansContext().getBeanManagerImpl();
while (itList.hasNext())
{
Object decoratorInstance ;
WebBeansDecorator<Object> decorator = (WebBeansDecorator<Object>) itList.next();
decoratorInstance = ownerCreationalContext.getDependentDecorator(instance, decorator);
if(decoratorInstance == null)
{
decoratorInstance = manager.getReference(decorator, decorator.getBeanClass(), ownerCreationalContext);
decorator.setInjections(decoratorInstance, ownerCreationalContext);
decorator.setDelegate(decoratorInstance, delegate);
ownerCreationalContext.addDependent(instance, decorator, decoratorInstance);