code: public <R extends Runnable> AbstractModule run(final Class<R> klass) {
          Closure initializer = new Closure() {
              @Override
              public void exec(Object... args) {
                  String m = "exec(Object...)";
                  try {
                      m = "creating task " + klass.getName();
                      RunnableCreator creator = GWT.create(RunnableCreator.class);
                      R runnable = creator.create(klass);
  
                      m = "creating binder for task " + klass.getName();
                      RunnableBinderFactory binderFactory = GWT.create(RunnableBinderFactory.class);
                      JSClosure binder = binderFactory.create(runnable);
                      if (binder != null) {
                          m = "injecting dependencies into task " + klass.getName();
                          binder.apply(args);
                      }
                      m = "running task " + klass.getName();
                      runnable.run();
                  } catch (Exception e) {
                      LOG.log(Level.WARNING, "Exception while " + m, e);
                  }
              }
          };
          RunnableDependencyInspector inspector = GWT.create(RunnableDependencyInspector.class);
          String[] dependencies = inspector.inspect(klass);
          ngo.run(JSArray.create(dependencies), JSClosure.create(initializer));
          return this;
      }
docs: Runs module initialization task provided by <code>klass</code>.
  Whilst the task is defined as a <code>Runnable</code>, the task is not
  executed in a separate thread. The tasks are executed synchronously.
  
  @param runnable Module initialization task.
  @since 0.1.1