anchor.diff:    This is actually a pretty good starting point. In particular, this organization
     follows the [Angular Style Guide](https://github.com/johnpapa/angular-styleguide),
     which is an important [preparation step](#following-the-angular-style-guide) before
  -  a successful upgrade. 
  -  
  +  a successful upgrade.
  +
     * Each controller, factory, and filter is in its own source file, as per the
       [Rule of 1](https://github.com/johnpapa/angular-styleguide#single-responsibility).
     * The `core`, `phoneDetail`, and `phoneList` modules are each in their
  
positive.code:   shim file. We'll also change how the app and unit tests files themselves are loaded.
    We will *watch* them so that the test suite is triggered when changes occur, but we
    won't have Karma *include* them because that is now done by SystemJS and the shim.
    
  +makeExample('upgrade-phonecat/ts/typescript-conversion/test/karma.conf.1.js', 'files', 'test/karma.conf.js')
  
  :marked
    Now we have the infrastructure in place and can convert the test files themselves.
    This mainly just consists for changing the file extensions of those files, and adding
    the necessary imports to them.
    
    In the checkmark filter spec, we'll import the core module file, so that it is
    available when we load the corresponding Angular module:
    
  +makeExample('upgrade-phonecat/ts/typescript-conversion/test/unit/checkmark.filter.spec.ts', 'top', 'test/unit/checkmark.filter.spec.ts')
  
  :marked
  
negative.code:   service did. You can remove the old `phones.factory.ts` file. Now we just
    need to register the new service into the application, so that our Angular 1
    controllers will be able to use it.
  
    `UpgradeAdapter` has a `downgradeNg2Provider` method for the purpose of making
    Angular 2 services available to Angular 1 code. The problem is that we don't have
    our `UpgradeAdapter` available in `core.module.ts` where the `Phones` service should
    be registered. We only have it in `app.module.ts`. There should only be one
    `UpgradeAdapter` in an application, so we need to find a way to share our
    instance between the two code modules.
  
    What we'll do is create a new module that instantiates `UpgradeAdapter`
    and exports the instance. We can then just pull it in wherever we need it,
    so that we're using the same object everywhere. Let's put this new file
    under `core`:
  
  +makeExample('upgrade-phonecat/ts/ng2_initial/app/js/core/upgrade_adapter.ts', 'full', 'app/js/core/upgrade_adapter.ts')
  
  :marked
    In `app.module.ts` we should now just import this adapter instead of making a separate one:
  
  +makeExample('upgrade-phonecat/ts/ng2_initial/app/js/app.module.ts', 'adapter-state-import')
  
  :marked
    Also remove the line from `app.module.ts` that is instantiating `UpgradeAdapter`. It's no
    longer needed since we import the instance from elsewhere.
  
    We'll then do the same in `core.module.ts` as well. Then we can register the `Phones` service into it.
    While doing that, we can remove the module's dependency to `ngResource`, which
    we're no longer using.
  
  +makeExample('upgrade-phonecat/ts/ng2_initial/app/js/core/core.module.ts', null, 'app/js/core/core.module.ts')
  
  :marked
    Note that we actually needed to do two registrations here:
  
    1. Register `Phones` as an **Angular 2 provider** with the `addProvider`
       method. That's the same method that we used earlier for `HTTP_PROVIDERS`.
    2. Register an **Angular 1 factory** called `phones`, which will be a *downgraded*
       version of the `Phones` service.
  
    At this point we can switch our two controllers to use the new service
    instead of the old one. We `$inject` it as the downgraded `phones` factory,
    but it's really an instance of the `Phones` class and we can annotate its type
    accordingly:
  
  +makeExample('upgrade-phonecat/ts/ng2_initial/app/js/phone_detail/phone_detail.controller.ts', null, 'app/js/phone_detail/phone_detail.controller.ts')
  
  +makeExample('upgrade-phonecat/ts/ng2_initial/app/js/phone_list/phone_list.controller.ts', null, 'app/js/phone_list/phone_list.controller.ts')
  