Replace getBasestElement() with Element.declaration (#2106)

diff --git a/lib/src/model/accessor.dart b/lib/src/model/accessor.dart
index cf539b7..856010a 100644
--- a/lib/src/model/accessor.dart
+++ b/lib/src/model/accessor.dart
@@ -182,9 +182,7 @@
               ? t.getGetter(element.name)
               : t.getSetter(element.name);
           if (accessor != null) {
-            if (accessor is Member) {
-              accessor = PackageGraph.getBasestElement(accessor);
-            }
+            accessor = accessor.declaration;
             Class parentClass =
                 ModelElement.fromElement(t.element, packageGraph);
             List<Field> possibleFields = [];
diff --git a/lib/src/model/inheritable.dart b/lib/src/model/inheritable.dart
index 59423f1..b905bcd 100644
--- a/lib/src/model/inheritable.dart
+++ b/lib/src/model/inheritable.dart
@@ -3,7 +3,6 @@
 // BSD-style license that can be found in the LICENSE file.
 
 import 'package:analyzer/dart/element/element.dart';
-import 'package:analyzer/src/dart/element/member.dart' show Member;
 import 'package:dartdoc/src/model/model.dart';
 import 'package:dartdoc/src/special_elements.dart';
 
@@ -41,10 +40,7 @@
   @override
   Container computeCanonicalEnclosingContainer() {
     if (isInherited) {
-      Element searchElement = element;
-      searchElement = searchElement is Member
-          ? PackageGraph.getBasestElement(searchElement)
-          : searchElement;
+      Element searchElement = element.declaration;
       // TODO(jcollins-g): generate warning if an inherited element's definition
       // is in an intermediate non-canonical class in the inheritance chain?
       Class previous;
diff --git a/lib/src/model/model_element.dart b/lib/src/model/model_element.dart
index 234bd75..b352c43 100644
--- a/lib/src/model/model_element.dart
+++ b/lib/src/model/model_element.dart
@@ -208,9 +208,8 @@
     // TODO(jcollins-g): Refactor object model to instantiate 'ModelMembers'
     //                   for members?
     if (e is Member) {
-      var basest = PackageGraph.getBasestElement(e);
       originalMember = e;
-      e = basest;
+      e = e.declaration;
     }
     Tuple3<Element, Library, Container> key =
         Tuple3(e, library, enclosingContainer);
diff --git a/lib/src/model/package_graph.dart b/lib/src/model/package_graph.dart
index 5fd3640..1025e27 100644
--- a/lib/src/model/package_graph.dart
+++ b/lib/src/model/package_graph.dart
@@ -9,7 +9,6 @@
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:analyzer/dart/element/element.dart';
 import 'package:analyzer/src/dart/analysis/driver.dart';
-import 'package:analyzer/src/dart/element/member.dart';
 import 'package:analyzer/src/generated/sdk.dart';
 import 'package:analyzer/src/generated/source.dart';
 import 'package:analyzer/src/generated/source_io.dart';
@@ -672,15 +671,6 @@
     return _canonicalLibraryFor[e];
   }
 
-  // TODO(jcollins-g): Revise when dart-lang/sdk#29600 is fixed.
-  static Element getBasestElement(Element possibleMember) {
-    Element element = possibleMember;
-    while (element is Member) {
-      element = (element as Member).declaration;
-    }
-    return element;
-  }
-
   /// Tries to find a canonical ModelElement for this element.  If we know
   /// this element is related to a particular class, pass preferredClass to
   /// disambiguate.
@@ -715,7 +705,7 @@
     // TODO(jcollins-g): The data structures should be changed to eliminate guesswork
     // with member elements.
     if (e is ClassMemberElement || e is PropertyAccessorElement) {
-      if (e is Member) e = getBasestElement(e);
+      e = e.declaration;
       Set<ModelElement> candidates = Set();
       Tuple2<Element, Library> iKey = Tuple2(e, lib);
       Tuple4<Element, Library, Class, ModelElement> key =