Require analyzer 2.7.0, use AnalysisContextCollection, switch from deprecated APIs. (#3183)

diff --git a/lib/src/dart.dart b/lib/src/dart.dart
index e498058..97219dc 100644
--- a/lib/src/dart.dart
+++ b/lib/src/dart.dart
@@ -7,8 +7,7 @@
 import 'dart:io';
 
 import 'package:analyzer/dart/analysis/analysis_context.dart';
-import 'package:analyzer/dart/analysis/context_builder.dart';
-import 'package:analyzer/dart/analysis/context_locator.dart';
+import 'package:analyzer/dart/analysis/analysis_context_collection.dart';
 import 'package:analyzer/dart/analysis/results.dart';
 import 'package:analyzer/dart/analysis/session.dart';
 import 'package:analyzer/dart/ast/ast.dart';
@@ -67,21 +66,22 @@
       modificationStamp: 0,
     );
 
+    var contextCollection = AnalysisContextCollection(
+      includedPaths: [path],
+      resourceProvider: resourceProvider,
+      sdkPath: getSdkPath(),
+    );
+
     // Add new contexts for the given path.
-    var contextLocator = ContextLocator(resourceProvider: resourceProvider);
-    var roots = contextLocator.locateRoots(includedPaths: [path]);
-    for (var root in roots) {
-      var contextRootPath = root.root.path;
+    for (var analysisContext in contextCollection.contexts) {
+      var contextRootPath = analysisContext.contextRoot.root.path;
 
       // If there is already a context for this context root path, keep it.
       if (_contexts.containsKey(contextRootPath)) {
         continue;
       }
 
-      var contextBuilder = ContextBuilder();
-      var context = contextBuilder.createContext(
-          contextRoot: root, sdkPath: getSdkPath());
-      _contexts[contextRootPath] = context;
+      _contexts[contextRootPath] = analysisContext;
     }
   }
 
@@ -94,7 +94,7 @@
   /// Throws [AnalyzerErrorGroup] is the file has parsing errors.
   CompilationUnit parse(String path) {
     path = p.normalize(p.absolute(path));
-    var parseResult = _getExistingSession(path).getParsedUnit2(path);
+    var parseResult = _getExistingSession(path).getParsedUnit(path);
     if (parseResult is ParsedUnitResult) {
       if (parseResult.errors.isNotEmpty) {
         throw AnalyzerErrorGroup(parseResult.errors);
diff --git a/lib/src/null_safety_analysis.dart b/lib/src/null_safety_analysis.dart
index 93c8993..2ad034d 100644
--- a/lib/src/null_safety_analysis.dart
+++ b/lib/src/null_safety_analysis.dart
@@ -4,9 +4,9 @@
 
 import 'dart:async';
 
-import 'package:analyzer/dart/analysis/context_builder.dart';
-import 'package:analyzer/dart/analysis/context_locator.dart';
+import 'package:analyzer/dart/analysis/analysis_context_collection.dart';
 import 'package:analyzer/dart/analysis/results.dart';
+import 'package:analyzer/file_system/physical_file_system.dart';
 import 'package:cli_util/cli_util.dart';
 import 'package:path/path.dart' as path;
 import 'package:source_span/source_span.dart';
@@ -175,14 +175,13 @@
         final libDir =
             path.absolute(path.normalize(path.join(packageDir, 'lib')));
         if (dirExists(libDir)) {
-          final analysisSession = ContextBuilder()
-              .createContext(
-                sdkPath: getSdkPath(),
-                contextRoot: ContextLocator().locateRoots(
-                  includedPaths: [path.normalize(packageDir)],
-                ).first,
-              )
-              .currentSession;
+          var contextCollection = AnalysisContextCollection(
+            includedPaths: [path.normalize(packageDir)],
+            resourceProvider: PhysicalResourceProvider.INSTANCE,
+            sdkPath: getSdkPath(),
+          );
+          var analysisContext = contextCollection.contexts.first;
+          var analysisSession = analysisContext.currentSession;
 
           for (final file in listDir(libDir,
               recursive: true, includeDirs: false, includeHidden: true)) {
@@ -190,7 +189,7 @@
               final fileUrl =
                   'package:${dependencyId.name}/${path.relative(file, from: libDir)}';
               final someUnitResult =
-                  analysisSession.getParsedUnit2(path.normalize(file));
+                  analysisSession.getParsedUnit(path.normalize(file));
               ParsedUnitResult unitResult;
               if (someUnitResult is ParsedUnitResult) {
                 unitResult = someUnitResult;
diff --git a/pubspec.yaml b/pubspec.yaml
index 3bfe095..8c76708 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -6,7 +6,7 @@
 dependencies:
   # Note: Pub's test infrastructure assumes that any dependencies used in tests
   # will be hosted dependencies.
-  analyzer: ^1.5.0
+  analyzer: ^2.7.0
   args: ^2.1.0
   async: ^2.6.1
   cli_util: ^0.3.5