code: public ExtensionArchive getExtensionArchiveForBundle(Bundle bundle,
                                                           Set<String> extraClasses,
                                                           Set<String> extraAnnotations,
                                                           boolean applicationBDAsVisible,
                                                           boolean extClassesOnly) throws CDIException {
  
          ExtensionArchive extensionArchive = null;
          extensionArchive = extensionArchives.get(bundle);
          if (extensionArchive == null) {
              Container container = getContainerForBundle(bundle);
              //get hold of bundle classloader
              BundleWiring bundleWiring = bundle.adapt(BundleWiring.class);
              ClassLoader loader = bundleWiring.getClassLoader();
              if (container != null) {
                  ExtensionContainerInfo containerInfo = new ExtensionContainerInfo(container, loader, CDIServiceUtils.getSymbolicNameWithoutMinorOrMicroVersionPart(bundle.getSymbolicName())
                                                                                                       + "_"
                                                                                                       + CDIServiceUtils.getOSGIVersionForBndName(bundle.getVersion()), extraClasses, extraAnnotations, applicationBDAsVisible, extClassesOnly);
  
                  extensionArchive = new ExtensionArchiveImpl(containerInfo, this);
                  ExtensionArchive oldExtensionArchive = extensionArchives.putIfAbsent(bundle, extensionArchive);
                  if (oldExtensionArchive != null) {
                      extensionArchive = oldExtensionArchive;
                  }
              }
          }
          return extensionArchive;
      }
docs: {@inheritDoc}
  
  @throws CDIException