code: public static Furnace getInstance(final ClassLoader clientLoader, final ClassLoader furnaceLoader)
     {
        try
        {
           Class<?> furnaceType = furnaceLoader.loadClass("org.jboss.forge.furnace.impl.FurnaceImpl");
           final Object instance = furnaceType.newInstance();
  
           final Furnace furnace = (Furnace) ClassLoaderAdapterBuilder
                    .callingLoader(clientLoader)
                    .delegateLoader(furnaceLoader)
                    .enhance(instance, Furnace.class);
  
           Callable<Set<ClassLoader>> whitelistCallback = new Callable<Set<ClassLoader>>()
           {
              volatile long lastRegistryVersion = -1;
              final Set<ClassLoader> result = Sets.getConcurrentSet();
  
              @Override
              public Set<ClassLoader> call() throws Exception
              {
                 if (furnace.getStatus().isStarted())
                 {
                    long registryVersion = furnace.getAddonRegistry().getVersion();
                    if (registryVersion != lastRegistryVersion)
                    {
                       result.clear();
                       lastRegistryVersion = registryVersion;
                       for (Addon addon : furnace.getAddonRegistry().getAddons())
                       {
                          ClassLoader classLoader = addon.getClassLoader();
                          if (classLoader != null)
                             result.add(classLoader);
                       }
                    }
                 }
  
                 return result;
              }
           };
  
           return (Furnace) ClassLoaderAdapterBuilder
                    .callingLoader(clientLoader)
                    .delegateLoader(furnaceLoader)
                    .whitelist(whitelistCallback)
                    .enhance(instance, Furnace.class);
        }
        catch (Exception e)
        {
           throw new RuntimeException(e);
        }
     }
docs: Produce a {@link Furnace} instance using the first given {@link ClassLoader} to act as the client for which
  {@link Class} instances should be translated across {@link ClassLoader} boundaries, and the second given
  {@link ClassLoader} to load core furnace implementation classes.