private void initialize() { VERSION = config.getString("jpf.version", VERSION); memoryReserve = new byte[config.getInt("jpf.memory_reserve", 64 * 1024)]; // in bytes try { Class<?>[] vmArgTypes = {JPF.class, Config.class}; Object[] vmArgs = {this, config}; vm = config.getEssentialInstance("vm.class", JVM.class, vmArgTypes, vmArgs); Class<?>[] searchArgTypes = {Config.class, JVM.class}; Object[] searchArgs = {config, vm}; search = config.getEssentialInstance("search.class", Search.class, searchArgTypes, searchArgs); // although the Reporter will always be notified last, this has to be set // first so that it can register utility listeners like Statistics that // can be used by configured listeners Class<?>[] reporterArgTypes = {Config.class, JPF.class}; Object[] reporterArgs = {config, this}; reporter = config.getInstance("report.class", Reporter.class, reporterArgTypes, reporterArgs); if (reporter != null) { search.setReporter(reporter); } addListeners(); config.addChangeListener(new ConfigListener()); } catch (JPFConfigException cx) { logger.severe(cx.toString()); // cx.getCause().printStackTrace(); throw new ExitException(false, cx); } }