public TestContainer start() throws TestContainerException {
    ClassLoader parent = null;
    try {
      final Map<String, String> p = new HashMap<String, String>(m_properties);
      String folder = p.get("org.osgi.framework.storage");
      if (folder == null) {
        folder = System.getProperty("org.osgi.framework.storage");
      }
      if (folder == null) {
        // folder = System.getProperty( "user.home" ) + File.separator + "osgi";
        folder = getCache();
      }
      LOG.debug("Cache folder set to " + folder);
      FileUtils.delete(new File(folder));
      // load default stuff

      p.put("org.osgi.framework.storage", folder);
      //  System.setProperty( "org.osgi.vendor.framework", "org.ops4j.pax.exam" );

      p.put(
          "org.osgi.framework.system.packages.extra",
          "org.ops4j.pax.exam;version=" + skipSnapshotFlag(Info.getPaxExamVersion()));

      parent = Thread.currentThread().getContextClassLoader();
      // Thread.currentThread().setContextClassLoader( null );

      m_framework = m_frameworkFactory.newFramework(p);
      m_framework.init();

      installAndStartBundles(m_framework.getBundleContext());

      Thread.currentThread().setContextClassLoader(parent);

    } catch (Exception e) {
      throw new TestContainerException("Problem starting test container.", e);
    } finally {
      if (parent != null) {
        Thread.currentThread().setContextClassLoader(parent);
      }
    }
    return this;
  }
 private static Option getOptions(
     final Method methodName, final Collection<JUnit4ConfigMethod> configMethods)
     throws Exception {
   // always add the junit extender
   final DefaultCompositeOption option =
       new DefaultCompositeOption(
           mavenBundle()
               .groupId("org.ops4j.pax.exam")
               .artifactId("pax-exam")
               .version(Info.getPaxExamVersion())
               .update(Info.isPaxExamSnapshotVersion())
               .startLevel(START_LEVEL_SYSTEM_BUNDLES),
           mavenBundle()
               .groupId("org.ops4j.pax.exam")
               .artifactId("pax-exam-junit-extender")
               .version(Info.getPaxExamVersion())
               .update(Info.isPaxExamSnapshotVersion())
               .startLevel(START_LEVEL_SYSTEM_BUNDLES),
           mavenBundle()
               .groupId("org.ops4j.pax.exam")
               .artifactId("pax-exam-junit-extender-impl")
               .version(Info.getPaxExamVersion())
               .update(Info.isPaxExamSnapshotVersion())
               .startLevel(START_LEVEL_SYSTEM_BUNDLES));
   // add options based on available configuration options from the test itself
   for (JUnit4ConfigMethod configMethod : configMethods) {
     if (configMethod.matches(methodName)) {
       option.add(configMethod.getOptions());
     }
   }
   // add junit bundles, if the user did not add junit bundles into configuration
   if (OptionUtils.filter(JUnitBundlesOption.class, option).length == 0) {
     option.add(junitBundles());
   }
   return option;
 }