public static void generate(
     final Module module, final GeneratingCompiler compiler, boolean withDependentModules) {
   if (withDependentModules) {
     Set<Module> modules = new HashSet<Module>();
     collectModules(module, modules, ModuleManager.getInstance(module.getProject()).getModules());
     for (Module module1 : modules) {
       generate(module1, compiler);
     }
   } else {
     generate(module, compiler);
   }
 }
 public static void generate(final Module module, GeneratingCompiler compiler) {
   assert !ApplicationManager.getApplication().isDispatchThread();
   final CompileContext[] contextWrapper = new CompileContext[1];
   ApplicationManager.getApplication()
       .runReadAction(
           new Runnable() {
             public void run() {
               Project project = module.getProject();
               if (project.isDisposed()) return;
               CompilerTask task =
                   new CompilerTask(project, true, "Android auto-generation", true);
               CompileScope scope = new ModuleCompileScope(module, false);
               contextWrapper[0] =
                   new CompileContextImpl(project, task, scope, null, false, false);
             }
           });
   generate(compiler, contextWrapper[0]);
 }