Upgrade to analyzer 0.39.2+1 and fix using deprecated APIs. (#2093)

diff --git a/lib/src/element_type.dart b/lib/src/element_type.dart
index fc0d5ef..3e9e618 100644
--- a/lib/src/element_type.dart
+++ b/lib/src/element_type.dart
@@ -10,6 +10,7 @@
 import 'package:analyzer/dart/element/element.dart';
 import 'package:analyzer/dart/element/nullability_suffix.dart';
 import 'package:analyzer/dart/element/type.dart';
+import 'package:analyzer/src/generated/type_system.dart';
 import 'package:dartdoc/src/model/model.dart';
 import 'package:dartdoc/src/render/element_type_renderer.dart';
 
@@ -278,8 +279,8 @@
   DartType get instantiatedType {
     if (_instantiatedType == null) {
       if (!interfaceType.typeArguments.every((t) => t is InterfaceType)) {
-        _instantiatedType =
-            packageGraph.typeSystem.instantiateToBounds(interfaceType);
+        var typeSystem = library.element.typeSystem as TypeSystemImpl;
+        _instantiatedType = typeSystem.instantiateToBounds(interfaceType);
       } else {
         _instantiatedType = interfaceType;
       }
diff --git a/lib/src/model/extension.dart b/lib/src/model/extension.dart
index 6755a70..018bcae 100644
--- a/lib/src/model/extension.dart
+++ b/lib/src/model/extension.dart
@@ -36,7 +36,7 @@
 
   /// The instantiated to bounds [extendedType] of this extension is a subtype of
   /// [t].
-  bool isSubtypeOf(DefinedElementType t) => packageGraph.typeSystem
+  bool isSubtypeOf(DefinedElementType t) => library.typeSystem
       .isSubtypeOf(extendedType.instantiatedType, t.instantiatedType);
 
   bool isBoundSupertypeTo(DefinedElementType t) =>
@@ -52,7 +52,7 @@
     visited.add(superType);
     if (superClass == extendedType.type.element &&
         (superType == extendedType.instantiatedType ||
-            packageGraph.typeSystem
+            library.typeSystem
                 .isSubtypeOf(superType, extendedType.instantiatedType))) {
       return true;
     }
diff --git a/lib/src/model/library.dart b/lib/src/model/library.dart
index aa54ce0..7b511ca 100644
--- a/lib/src/model/library.dart
+++ b/lib/src/model/library.dart
@@ -5,6 +5,7 @@
 import 'package:analyzer/dart/analysis/results.dart';
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/dart/element/element.dart';
+import 'package:analyzer/dart/element/type_system.dart';
 import 'package:analyzer/dart/element/visitor.dart';
 import 'package:analyzer/source/line_info.dart';
 import 'package:analyzer/src/dart/analysis/driver.dart';
@@ -77,11 +78,11 @@
     // Initialize the list of elements defined in this library and
     // exported via its export directives.
     Set<Element> exportedAndLocalElements =
-        _libraryElement.exportNamespace.definedNames.values.toSet();
+        element.exportNamespace.definedNames.values.toSet();
     // TODO(jcollins-g): Consider switch to [_libraryElement.topLevelElements].
     exportedAndLocalElements
-        .addAll(getDefinedElements(_libraryElement.definingCompilationUnit));
-    for (CompilationUnitElement cu in _libraryElement.parts) {
+        .addAll(getDefinedElements(element.definingCompilationUnit));
+    for (CompilationUnitElement cu in element.parts) {
       exportedAndLocalElements.addAll(getDefinedElements(cu));
     }
     _exportedAndLocalElements = exportedAndLocalElements.toList();
@@ -105,7 +106,7 @@
 
   List<String> _allOriginalModelElementNames;
 
-  bool get isInSdk => _libraryElement.isInSdk;
+  bool get isInSdk => element.isInSdk;
 
   final Package _package;
 
@@ -160,11 +161,14 @@
 
   @override
   CompilationUnitElement get compilationUnitElement =>
-      (element as LibraryElement).definingCompilationUnit;
+      element.definingCompilationUnit;
 
   @override
   Iterable<Class> get classes => allClasses.where((c) => !c.isErrorOrException);
 
+  @override
+  LibraryElement get element => super.element;
+
   List<Extension> _extensions;
 
   @override
@@ -240,10 +244,8 @@
     if (_importedExportedLibraries == null) {
       _importedExportedLibraries = Set();
       Set<LibraryElement> importedExportedLibraryElements = Set();
-      importedExportedLibraryElements
-          .addAll((element as LibraryElement).importedLibraries);
-      importedExportedLibraryElements
-          .addAll((element as LibraryElement).exportedLibraries);
+      importedExportedLibraryElements.addAll(element.importedLibraries);
+      importedExportedLibraryElements.addAll(element.exportedLibraries);
       for (LibraryElement l in importedExportedLibraryElements) {
         Library lib = ModelElement.from(l, library, packageGraph);
         _importedExportedLibraries.add(lib);
@@ -260,7 +262,7 @@
     if (_prefixToLibrary == null) {
       _prefixToLibrary = {};
       // It is possible to have overlapping prefixes.
-      for (ImportElement i in (element as LibraryElement).imports) {
+      for (ImportElement i in element.imports) {
         // Ignore invalid imports.
         if (i.prefix?.name != null && i.importedLibrary != null) {
           _prefixToLibrary.putIfAbsent(i.prefix?.name, () => Set());
@@ -401,8 +403,7 @@
 
   InheritanceManager3 get inheritanceManager {
     if (_inheritanceManager == null) {
-      var typeSystem = element.context.typeSystem;
-      _inheritanceManager = InheritanceManager3(typeSystem);
+      _inheritanceManager = InheritanceManager3();
     }
     return _inheritanceManager;
   }
@@ -479,6 +480,8 @@
     return _typedefs;
   }
 
+  TypeSystem get typeSystem => element.typeSystem;
+
   List<Class> _classes;
 
   List<Class> get allClasses {
@@ -493,8 +496,6 @@
     return _classes;
   }
 
-  LibraryElement get _libraryElement => (element as LibraryElement);
-
   Class getClassByName(String name) {
     return allClasses.firstWhere((it) => it.name == name, orElse: () => null);
   }
diff --git a/lib/src/model/model_element.dart b/lib/src/model/model_element.dart
index 8d33b86..b1b4a59 100644
--- a/lib/src/model/model_element.dart
+++ b/lib/src/model/model_element.dart
@@ -666,9 +666,8 @@
 
         if (candidateLibraries != null) {
           candidateLibraries = candidateLibraries.where((l) {
-            Element lookup = (l.element as LibraryElement)
-                .exportNamespace
-                .definedNames[topLevelElement?.name];
+            Element lookup =
+                l.element.exportNamespace.definedNames[topLevelElement?.name];
             if (lookup is PropertyAccessorElement) {
               lookup = (lookup as PropertyAccessorElement).variable;
             }
diff --git a/lib/src/model/package_builder.dart b/lib/src/model/package_builder.dart
index 6e0982d..572faed 100644
--- a/lib/src/model/package_builder.dart
+++ b/lib/src/model/package_builder.dart
@@ -46,12 +46,7 @@
     RendererFactory rendererFactory = HtmlRenderFactory();
 
     PackageGraph newGraph = PackageGraph.UninitializedPackageGraph(
-        config,
-        driver,
-        await driver.currentSession.typeSystem,
-        sdk,
-        hasEmbedderSdkFiles,
-        rendererFactory);
+        config, driver, sdk, hasEmbedderSdkFiles, rendererFactory);
     await getLibraries(newGraph);
     await newGraph.initializePackageGraph();
     return newGraph;
diff --git a/lib/src/model/package_graph.dart b/lib/src/model/package_graph.dart
index 30d6808..5fd3640 100644
--- a/lib/src/model/package_graph.dart
+++ b/lib/src/model/package_graph.dart
@@ -13,7 +13,6 @@
 import 'package:analyzer/src/generated/sdk.dart';
 import 'package:analyzer/src/generated/source.dart';
 import 'package:analyzer/src/generated/source_io.dart';
-import 'package:analyzer/src/generated/type_system.dart' show Dart2TypeSystem;
 import 'package:collection/collection.dart';
 import 'package:dartdoc/src/dartdoc_options.dart';
 import 'package:dartdoc/src/model/model.dart';
@@ -25,8 +24,8 @@
 import 'package:dartdoc/src/warnings.dart';
 
 class PackageGraph {
-  PackageGraph.UninitializedPackageGraph(this.config, this.driver,
-      this.typeSystem, this.sdk, this.hasEmbedderSdk, this.rendererFactory)
+  PackageGraph.UninitializedPackageGraph(this.config, this.driver, this.sdk,
+      this.hasEmbedderSdk, this.rendererFactory)
       : packageMeta = config.topLevelPackageMeta,
         session = driver.currentSession {
     _packageWarningCounter = PackageWarningCounter(this);
@@ -232,7 +231,6 @@
   /// TODO(brianwilkerson) Replace the driver with the session.
   final AnalysisDriver driver;
   final AnalysisSession session;
-  final Dart2TypeSystem typeSystem;
   final DartSdk sdk;
 
   Map<Source, SdkLibrary> _sdkLibrarySources;
@@ -678,7 +676,7 @@
   static Element getBasestElement(Element possibleMember) {
     Element element = possibleMember;
     while (element is Member) {
-      element = (element as Member).baseElement;
+      element = (element as Member).declaration;
     }
     return element;
   }
diff --git a/pubspec.yaml b/pubspec.yaml
index e6a69a3..c5e3100 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -7,7 +7,7 @@
   sdk: '>=2.6.0 <3.0.0'
 
 dependencies:
-  analyzer: ^0.39.1
+  analyzer: ^0.39.2+1
   args: '>=1.5.0 <2.0.0'
   collection: ^1.2.0
   crypto: ^2.0.6