private static void generateInjectorForJvmCodegen() throws IOException {
   DependencyInjectorGenerator generator = new DependencyInjectorGenerator(false);
   generator.addPublicParameter(JetStandardLibrary.class);
   generator.addParameter(BindingContext.class);
   generator.addParameter(DiType.listOf(JetFile.class));
   generator.addParameter(Project.class);
   generator.addPublicField(JetTypeMapper.class);
   generator.addField(true, IntrinsicMethods.class, "intrinsics", null);
   generator.generate("compiler/backend/src", "org.jetbrains.jet.di", "InjectorForJvmCodegen");
 }
 private static void generateInjectorForTopDownAnalyzerForJs() throws IOException {
   DependencyInjectorGenerator generator = new DependencyInjectorGenerator(false);
   generateInjectorForTopDownAnalyzerCommon(generator);
   generator.addParameter(ModuleConfiguration.class);
   generator.generate(
       "js/js.translator/src", "org.jetbrains.jet.di", "InjectorForTopDownAnalyzerForJs");
 }
 private static void generateInjectorForTopDownAnalyzerBasic() throws IOException {
   DependencyInjectorGenerator generator = new DependencyInjectorGenerator(false);
   generateInjectorForTopDownAnalyzerCommon(generator);
   generator.addParameter(ModuleConfiguration.class);
   generator.generate(
       "compiler/frontend/src", "org.jetbrains.jet.di", "InjectorForTopDownAnalyzerBasic");
 }
  private static void generateInjectorForTopDownAnalyzerCommon(
      DependencyInjectorGenerator generator) {
    // Fields
    generator.addPublicField(TopDownAnalyzer.class);
    generator.addPublicField(TopDownAnalysisContext.class);
    generator.addPublicField(BodyResolver.class);
    generator.addPublicField(ControlFlowAnalyzer.class);
    generator.addPublicField(DeclarationsChecker.class);
    generator.addPublicField(DescriptorResolver.class);

    // Parameters
    generator.addPublicParameter(Project.class);
    generator.addPublicParameter(TopDownAnalysisParameters.class);
    generator.addPublicParameter(ObservableBindingTrace.class);
    generator.addParameter(ModuleDescriptor.class);
    generator.addParameter(JetControlFlowDataTraceFactory.class, false);
  }