@Override
  @SuppressWarnings("rawtypes")
  public Collection<AsyncBeanDef> lookupBeans(String name) {
    final Collection<SyncBeanDef> beanDefs = bm.lookupBeans(name);

    final List<AsyncBeanDef> asyncBeanDefs = new ArrayList<AsyncBeanDef>();
    for (final SyncBeanDef beanDef : beanDefs) {
      asyncBeanDefs.add(createAsyncBeanDef(beanDef));
    }

    return asyncBeanDefs;
  }
  @Override
  @SuppressWarnings("unchecked")
  public <T> Collection<AsyncBeanDef<T>> lookupBeans(Class<T> type, Annotation... qualifiers) {
    final Collection<SyncBeanDef<T>> beanDefs = bm.lookupBeans(type, qualifiers);

    final List<AsyncBeanDef<T>> asyncBeanDefs = new ArrayList<AsyncBeanDef<T>>();
    for (final SyncBeanDef<T> beanDef : beanDefs) {
      asyncBeanDefs.add(createAsyncBeanDef(beanDef));
    }

    return asyncBeanDefs;
  }
 @Override
 public boolean addDestructionCallback(
     Object beanInstance, DestructionCallback<?> destructionCallback) {
   return bm.addDestructionCallback(beanInstance, destructionCallback);
 }
 @Override
 public void destroyAllBeans() {
   bm.destroyAllBeans();
 }
 @Override
 public boolean isProxyReference(Object ref) {
   return bm.isProxyReference(ref);
 }
 @Override
 public Object getActualBeanReference(Object ref) {
   return bm.getActualBeanReference(ref);
 }
 @Override
 public boolean isManaged(Object ref) {
   return bm.isManaged(ref);
 }
 @Override
 public void destroyBean(Object ref) {
   bm.destroyBean(ref);
 }
 @Override
 @SuppressWarnings({"unchecked"})
 public <T> AsyncBeanDef<T> lookupBean(Class<T> type, Annotation... qualifiers) {
   final SyncBeanDef<T> beanDef = bm.lookupBean(type, qualifiers);
   return createAsyncBeanDef(beanDef);
 }