var sourceParts = changeDetectorDefinitions.map(function (definition) {
     var codegen;
     var sourcePart;
     // TODO(tbosch): move the 2 code generators to the same place, one with .dart and one with .ts
     // suffix
     // and have the same API for calling them!
     if (lang_1.IS_DART) {
         codegen = new change_detector_codegen_1.Codegen(PREGEN_PROTO_CHANGE_DETECTOR_MODULE);
         var className = "_" + definition.id;
         var typeRef = (index === 0 && componentType.isHost) ?
             'dynamic' :
             "" + source_module_1.moduleRef(componentType.moduleUrl) + componentType.name;
         codegen.generate(typeRef, className, definition);
         factories.push(className + ".newChangeDetector");
         sourcePart = codegen.toString();
     }
     else {
         codegen = new change_detection_jit_generator_1.ChangeDetectorJITGenerator(definition, "" + UTIL_MODULE + UTIL, "" + ABSTRACT_CHANGE_DETECTOR_MODULE + ABSTRACT_CHANGE_DETECTOR, "" + CONSTANTS_MODULE + CHANGE_DETECTOR_STATE);
         factories.push("function(dispatcher) { return new " + codegen.typeName + "(dispatcher); }");
         sourcePart = codegen.generateSource();
     }
     index++;
     return sourcePart;
 });
 var sourceParts = changeDetectorDefinitions.map(definition => {
     var codegen;
     var sourcePart;
     // TODO(tbosch): move the 2 code generators to the same place, one with .dart and one with .ts
     // suffix
     // and have the same API for calling them!
     if (IS_DART) {
         codegen = new Codegen(PREGEN_PROTO_CHANGE_DETECTOR_MODULE);
         var className = `_${definition.id}`;
         var typeRef = (index === 0 && componentType.isHost) ?
             'dynamic' :
             `${moduleRef(componentType.moduleUrl)}${componentType.name}`;
         codegen.generate(typeRef, className, definition);
         factories.push(`${className}.newChangeDetector`);
         sourcePart = codegen.toString();
     }
     else {
         codegen = new ChangeDetectorJITGenerator(definition, `${UTIL_MODULE}${UTIL}`, `${ABSTRACT_CHANGE_DETECTOR_MODULE}${ABSTRACT_CHANGE_DETECTOR}`, `${CONSTANTS_MODULE}${CHANGE_DETECTOR_STATE}`);
         factories.push(`function() { return new ${codegen.typeName}(); }`);
         sourcePart = codegen.generateSource();
     }
     index++;
     return sourcePart;
 });