hunk.code_window:   const cjh = experimental.jobs.createJobHandler;
     const handler = cjh<json.JsonObject, BuilderInput, OutT>((options, context) => {
       const scheduler = context.scheduler;
       const progressChannel = context.createChannel('progress');
       const logChannel = context.createChannel('log');
       let currentState: BuilderProgressState = BuilderProgressState.Stopped;
       const teardownLogics: Array<() => (PromiseLike<void> | void)> = [];
       let tearingDown = false;
  
hunk.labels: keep keep keep keep add keep keep keep
hunk.after_edit:     const analyticsChannel = context.createChannel('analytics');
  
hunk.file_path: packages/angular_devkit/architect/src/create-builder.ts
hunk.type: add
file: /**
   * @license
   * Copyright Google Inc. All Rights Reserved.
   *
   * Use of this source code is governed by an MIT-style license that can be
   * found in the LICENSE file at https://angular.io/license
   */
  
  import { Architect } from '@angular-devkit/architect/src/index2';
  import { logging } from '@angular-devkit/core';
  import { createArchitect, host } from '../utils';
  
  
  describe('Browser Builder errors', () => {
    const targetSpec = { project: 'app', target: 'build' };
    let architect: Architect;
  
    beforeEach(async () => {
      await host.initialize().toPromise();
      architect = (await createArchitect(host.root())).architect;
    });
    afterEach(async () => host.restore().toPromise());
  
    it('shows error when files are not part of the compilation', async () => {
      host.replaceInFile('src/tsconfig.app.json', '"compilerOptions": {', `
        "files": ["main.ts"],
        "compilerOptions": {
      `);
      const logger = new logging.Logger('');
      const logs: string[] = [];
      logger.subscribe(e => logs.push(e.message));
  
      const run = await architect.scheduleTarget(targetSpec, {}, { logger });
      const output = await run.result;
      expect(output.success).toBe(false);
      expect(logs.join()).toContain('polyfills.ts is missing from the TypeScript');
      await run.stop();
    });
  
    it('shows TS syntax errors', async () => {
      host.appendToFile('src/app/app.component.ts', ']]]');
      const logger = new logging.Logger('');
      const logs: string[] = [];
      logger.subscribe(e => logs.push(e.message));
  
      const run = await architect.scheduleTarget(targetSpec, {}, { logger });
      const output = await run.result;
      expect(output.success).toBe(false);
      expect(logs.join()).toContain('Declaration or statement expected');
      await run.stop();
    });
  
    it('shows static analysis errors', async () => {
      host.replaceInFile('src/app/app.component.ts', `'app-root'`, `(() => 'app-root')()`);
      const logger = new logging.Logger('');
      const logs: string[] = [];
      logger.subscribe(e => logs.push(e.message));
  
      const run = await architect.scheduleTarget(targetSpec, { aot: true }, { logger });
      const output = await run.result;
      expect(output.success).toBe(false);
      expect(logs.join()).toContain('Function expressions are not supported in');
      await run.stop();
    });
  });
  