anchor.diff:  // for details. All rights reserved. Use of this source code is governed by a
   // BSD-style license that can be found in the LICENSE file.
   
  +import 'package:analyzer/file_system/memory_file_system.dart';
   import 'package:nnbd_migration/src/front_end/migration_info.dart';
   import 'package:nnbd_migration/src/front_end/navigation_tree_renderer.dart';
   import 'package:nnbd_migration/src/front_end/path_mapper.dart';
   import 'package:nnbd_migration/src/front_end/web/navigation_tree.dart';
   import 'package:test/test.dart';
   import 'package:test_reflective_loader/test_reflective_loader.dart';
  +import 'package:path/path.dart' as path;
   
   import 'nnbd_migration_test_base.dart';
   
  
positive.code:     await buildInfoForTestFiles(files, includedRoot: packageRoot);
      var migrationInfo =
          MigrationInfo(infos, {}, resourceProvider.pathContext, packageRoot);
      return NavigationTreeRenderer(migrationInfo, PathMapper(resourceProvider))
          .render();
    }
  
    Future<void> test_containsEditCounts() async {
  
negative.code:     expect(
          libNode,
          isNavigationTreeNode.named('lib').havingSubtree([
            isNavigationTreeNode.named('src').havingSubtree([
              isNavigationTreeNode.havingHref(
                  '/project/lib/src/b.dart', pathMapper)
            ]),
            isNavigationTreeNode.havingHref('/project/lib/a.dart', pathMapper)
          ]));
  
      var toolNode = response[1];
      expect(toolNode.href, pathMapper.map(convertPath('/project/tool.dart')));
    }
  
    Future<void> test_containsMultipleLinks_multipleDepths() async {
  