code: public static final void run(final Class<? extends Jawn> jawn, final String ... args) {
          Jawn instance = DynamicClassFactory.createInstance(jawn);
          
          if (instance.mode == Modes.DEV) {
              // load the instance with a non-caching classloader
              final Jawn dynamicInstance = DynamicClassFactory
                  .createInstance(
                      DynamicClassFactory.getCompiledClass(jawn.getName(), false), 
                      Jawn.class
                  );
              
              // look for changes to reload
              final Consumer<Jawn> reloader = (newJawnInstance) -> dynamicInstance.bootstrap.reboot___strap(newJawnInstance.routePopulator());
              PackageWatcher watcher = new PackageWatcher(jawn, reloader);
              
              // start the watcher
              try {
                  watcher.start();
              } catch (IOException | InterruptedException e) {
                  logger.error("Starting " + PackageWatcher.class, e);
              }
              
              // clean up when shutting the whole thing down
              dynamicInstance.onShutdown(() -> {
                  try {
                      watcher.close();
                  } catch (IOException e) {
                      logger.error("Closing " + PackageWatcher.class, e);
                  }
              });
              
              instance = dynamicInstance;
          }
          
          run(instance, args);
      }
docs: /*private static final void run(final Supplier<Jawn> jawn, final String ... args) {
  run(jawn.get(), args);
  }