Elements. Deprecate Element.declaration/nonSynthetic.

Change-Id: I72074b7bb0237ce2d5b2abf21bf65d76481157f8
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/418926
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
diff --git a/pkg/analyzer/api.txt b/pkg/analyzer/api.txt
index d1ae6d3..2b5b466 100644
--- a/pkg/analyzer/api.txt
+++ b/pkg/analyzer/api.txt
@@ -3099,7 +3099,7 @@
     new (constructor: Element Function())
     children (getter: List<Element>, deprecated)
     context (getter: AnalysisContext@2)
-    declaration (getter: Element?)
+    declaration (getter: Element?, deprecated)
     displayName (getter: String)
     documentationComment (getter: String?)
     enclosingElement3 (getter: Element?, deprecated)
@@ -3141,7 +3141,7 @@
     name (getter: String?)
     nameLength (getter: int)
     nameOffset (getter: int)
-    nonSynthetic (getter: Element)
+    nonSynthetic (getter: Element, deprecated)
     session (getter: AnalysisSession?)
     sinceSdkVersion (getter: Version?)
     source (getter: Source?)
@@ -3540,7 +3540,7 @@
     computeConstantValue (method: DartObject? Function())
   _ExistingElement (class extends Object implements Element):
     new (constructor: _ExistingElement Function())
-    declaration (getter: Element)
+    declaration (getter: Element, deprecated)
     library (getter: LibraryElement, deprecated)
     librarySource (getter: Source)
     source (getter: Source)
diff --git a/pkg/analyzer/lib/dart/element/element.dart b/pkg/analyzer/lib/dart/element/element.dart
index 7b9b8b7..482a7b3 100644
--- a/pkg/analyzer/lib/dart/element/element.dart
+++ b/pkg/analyzer/lib/dart/element/element.dart
@@ -429,6 +429,7 @@
   /// from the class, without any substitutions. If this element is already a
   /// declaration (or a synthetic element, e.g. a synthetic property accessor),
   /// return itself.
+  @Deprecated(elementModelDeprecationMsg)
   Element? get declaration;
 
   /// The display name of this element, possibly the empty string if the
@@ -603,6 +604,7 @@
   /// element is returned. For example, for a synthetic getter of a
   /// non-synthetic field the field is returned; for a synthetic constructor
   /// the enclosing class is returned.
+  @Deprecated(elementModelDeprecationMsg)
   Element get nonSynthetic;
 
   /// The analysis session in which this element is defined.
@@ -2386,6 +2388,7 @@
 @AnalyzerPublicApi(
     message: 'Exposed because it is implemented by various elements')
 abstract class _ExistingElement implements Element {
+  @Deprecated(elementModelDeprecationMsg)
   @override
   Element get declaration;