[analyzer] Annotate experimental and deprecated APIs in api.txt file

It occurred to me that it might make it easier to code review changes
to `api.txt` if it included annotations of when an API was marked
`@experimental` or `@deprecated`.

Change-Id: If52eebe2e5086e92491d53bd9d63d3b18c79901e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/413243
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
diff --git a/pkg/analyzer/api.txt b/pkg/analyzer/api.txt
index 1202062..3c85676 100644
--- a/pkg/analyzer/api.txt
+++ b/pkg/analyzer/api.txt
@@ -1,13 +1,13 @@
 package:analyzer/dart/analysis/analysis_context.dart:
   AnalysisContext@1 (class extends Object):
     new (constructor: AnalysisContext@1 Function())
-    analysisOptions (getter: AnalysisOptions)
+    analysisOptions (getter: AnalysisOptions, deprecated)
     contextRoot (getter: ContextRoot)
     currentSession (getter: AnalysisSession)
     sdkRoot (getter: Folder?)
     applyPendingFileChanges (method: Future<List<String>> Function())
     changeFile (method: void Function(String))
-    getAnalysisOptionsForFile (method: AnalysisOptions Function(File))
+    getAnalysisOptionsForFile (method: AnalysisOptions Function(File), experimental)
 package:analyzer/dart/analysis/analysis_context_collection.dart:
   AnalysisContextCollection (class extends Object):
     new (constructor: AnalysisContextCollection Function({List<String>? excludedPaths, required List<String> includedPaths, ResourceProvider? resourceProvider, String? sdkPath}))
@@ -151,9 +151,9 @@
     new (constructor: CannotResolveUriResult Function())
   DisposedAnalysisContextResult (class extends Object implements InvalidResult, SomeErrorsResult, SomeFileResult, SomeParsedLibraryResult, SomeParsedUnitResult, SomeResolvedLibraryResult, SomeResolvedUnitResult, SomeUnitElementResult):
     new (constructor: DisposedAnalysisContextResult Function())
-  ElementDeclarationResult (class extends Object):
+  ElementDeclarationResult (class extends Object, deprecated):
     new (constructor: ElementDeclarationResult Function())
-    element (getter: Element)
+    element (getter: Element, deprecated)
     fragment (getter: Fragment)
     node (getter: AstNode)
     parsedUnit (getter: ParsedUnitResult?)
@@ -182,8 +182,8 @@
     new (constructor: InvalidResult Function())
   LibraryElementResult (class extends Object implements SomeLibraryElementResult):
     new (constructor: LibraryElementResult Function())
-    element (getter: LibraryElement)
-    element2 (getter: LibraryElement2)
+    element (getter: LibraryElement, deprecated)
+    element2 (getter: LibraryElement2, experimental)
   NotElementOfThisSessionResult (class extends Object implements InvalidResult, SomeParsedLibraryResult, SomeResolvedLibraryResult):
     new (constructor: NotElementOfThisSessionResult Function())
   NotLibraryButPartResult (class extends Object implements InvalidResult, SomeLibraryElementResult, SomeParsedLibraryResult, SomeResolvedLibraryResult):
@@ -199,25 +199,25 @@
   ParsedLibraryResult (class extends Object implements SomeParsedLibraryResult, AnalysisResult):
     new (constructor: ParsedLibraryResult Function())
     units (getter: List<ParsedUnitResult>)
-    getElementDeclaration (method: ElementDeclarationResult? Function(Element))
-    getElementDeclaration2 (method: ElementDeclarationResult? Function(Fragment))
-    getFragmentDeclaration (method: FragmentDeclarationResult? Function(Fragment))
+    getElementDeclaration (method: ElementDeclarationResult? Function(Element), deprecated)
+    getElementDeclaration2 (method: ElementDeclarationResult? Function(Fragment), deprecated, experimental)
+    getFragmentDeclaration (method: FragmentDeclarationResult? Function(Fragment), experimental)
   ParsedUnitResult (class extends Object implements SomeParsedUnitResult, AnalysisResultWithErrors):
     new (constructor: ParsedUnitResult Function())
     unit (getter: CompilationUnit)
   ResolvedLibraryResult (class extends Object implements ParsedLibraryResult, SomeResolvedLibraryResult):
     new (constructor: ResolvedLibraryResult Function())
-    element (getter: LibraryElement)
-    element2 (getter: LibraryElement2)
+    element (getter: LibraryElement, deprecated)
+    element2 (getter: LibraryElement2, experimental)
     typeProvider (getter: TypeProvider)
     units (getter: List<ResolvedUnitResult>)
     unitWithPath (method: ResolvedUnitResult? Function(String))
   ResolvedUnitResult (class extends Object implements ParsedUnitResult, SomeResolvedUnitResult):
     new (constructor: ResolvedUnitResult Function())
     exists (getter: bool)
-    libraryElement (getter: LibraryElement)
-    libraryElement2 (getter: LibraryElement2)
-    libraryFragment (getter: LibraryFragment)
+    libraryElement (getter: LibraryElement, deprecated)
+    libraryElement2 (getter: LibraryElement2, experimental)
+    libraryFragment (getter: LibraryFragment, experimental)
     typeProvider (getter: TypeProvider)
     typeSystem (getter: TypeSystem)
   SomeErrorsResult (class extends Object):
@@ -238,8 +238,8 @@
     new (constructor: SomeUnitElementResult Function())
   UnitElementResult (class extends Object implements SomeUnitElementResult, FileResult):
     new (constructor: UnitElementResult Function())
-    element (getter: CompilationUnitElement)
-    fragment (getter: LibraryFragment)
+    element (getter: CompilationUnitElement, deprecated)
+    fragment (getter: LibraryFragment, experimental)
   UnspecifiedInvalidResult (class extends Object implements InvalidResult, SomeLibraryElementResult, SomeParsedLibraryResult):
     new (constructor: UnspecifiedInvalidResult Function())
   UriOfExternalLibraryResult (class extends Object implements InvalidResult, SomeParsedLibraryResult, SomeResolvedLibraryResult):
@@ -255,12 +255,12 @@
     getFile (method: SomeFileResult Function(String))
     getLibraryByUri (method: Future<SomeLibraryElementResult> Function(String))
     getParsedLibrary (method: SomeParsedLibraryResult Function(String))
-    getParsedLibraryByElement (method: SomeParsedLibraryResult Function(LibraryElement))
-    getParsedLibraryByElement2 (method: SomeParsedLibraryResult Function(LibraryElement2))
+    getParsedLibraryByElement (method: SomeParsedLibraryResult Function(LibraryElement), deprecated)
+    getParsedLibraryByElement2 (method: SomeParsedLibraryResult Function(LibraryElement2), experimental)
     getParsedUnit (method: SomeParsedUnitResult Function(String))
     getResolvedLibrary (method: Future<SomeResolvedLibraryResult> Function(String))
-    getResolvedLibraryByElement (method: Future<SomeResolvedLibraryResult> Function(LibraryElement))
-    getResolvedLibraryByElement2 (method: Future<SomeResolvedLibraryResult> Function(LibraryElement2))
+    getResolvedLibraryByElement (method: Future<SomeResolvedLibraryResult> Function(LibraryElement), deprecated)
+    getResolvedLibraryByElement2 (method: Future<SomeResolvedLibraryResult> Function(LibraryElement2), experimental)
     getResolvedUnit (method: Future<SomeResolvedUnitResult> Function(String))
     getUnitElement (method: Future<SomeUnitElementResult> Function(String))
   InconsistentAnalysisException (class extends AnalysisException):
@@ -286,8 +286,8 @@
     arguments (getter: ArgumentList?)
     atSign (getter: Token)
     constructorName (getter: SimpleIdentifier?)
-    element (getter: Element?)
-    element2 (getter: Element2?)
+    element (getter: Element?, deprecated)
+    element2 (getter: Element2?, experimental)
     elementAnnotation (getter: ElementAnnotation?)
     name (getter: Identifier)
     parent (getter: AstNode)
@@ -312,8 +312,8 @@
     message (getter: Expression?)
     rightParenthesis (getter: Token)
   AssignedVariablePattern (class extends Object implements VariablePattern):
-    element (getter: Element?)
-    element2 (getter: Element2?)
+    element (getter: Element?, deprecated)
+    element2 (getter: Element2?, experimental)
   AssignmentExpression (class extends Object implements NullShortableExpression, MethodReferenceExpression, CompoundAssignmentExpression):
     leftHandSide (getter: Expression)
     operator (getter: Token)
@@ -513,13 +513,13 @@
     visitYieldStatement (method: R? Function(YieldStatement))
   AugmentedExpression (class extends Object implements Expression):
     augmentedKeyword (getter: Token)
-    element (getter: Element?)
-    fragment (getter: Fragment?)
+    element (getter: Element?, deprecated)
+    fragment (getter: Fragment?, experimental)
   AugmentedInvocation (class extends Object implements Expression):
     arguments (getter: ArgumentList)
     augmentedKeyword (getter: Token)
-    element (getter: ExecutableElement?)
-    fragment (getter: ExecutableFragment?)
+    element (getter: ExecutableElement?, deprecated)
+    fragment (getter: ExecutableFragment?, experimental)
     typeArguments (getter: TypeArgumentList?)
   AwaitExpression (class extends Object implements Expression):
     awaitKeyword (getter: Token)
@@ -565,23 +565,23 @@
     rightParenthesis (getter: Token?)
     stackTraceParameter (getter: CatchClauseParameter?)
   CatchClauseParameter (class extends AstNode):
-    declaredElement (getter: LocalVariableElement?)
-    declaredElement2 (getter: LocalVariableElement2?)
-    declaredFragment (getter: LocalVariableFragment?)
+    declaredElement (getter: LocalVariableElement?, deprecated)
+    declaredElement2 (getter: LocalVariableElement2?, experimental)
+    declaredFragment (getter: LocalVariableFragment?, experimental)
     name (getter: Token)
   ClassDeclaration (class extends Object implements NamedCompilationUnitMember):
     abstractKeyword (getter: Token?)
-    augmentKeyword (getter: Token?)
+    augmentKeyword (getter: Token?, experimental)
     baseKeyword (getter: Token?)
     classKeyword (getter: Token)
-    declaredElement (getter: ClassElement?)
-    declaredFragment (getter: ClassFragment?)
+    declaredElement (getter: ClassElement?, deprecated)
+    declaredFragment (getter: ClassFragment?, experimental)
     extendsClause (getter: ExtendsClause?)
     finalKeyword (getter: Token?)
     implementsClause (getter: ImplementsClause?)
     interfaceKeyword (getter: Token?)
     leftBracket (getter: Token)
-    macroKeyword (getter: Token?)
+    macroKeyword (getter: Token?, deprecated)
     members (getter: NodeList<ClassMember>)
     mixinKeyword (getter: Token?)
     nativeClause (getter: NativeClause?)
@@ -593,8 +593,8 @@
   ClassTypeAlias (class extends Object implements TypeAlias):
     abstractKeyword (getter: Token?)
     baseKeyword (getter: Token?)
-    declaredElement (getter: ClassElement?)
-    declaredFragment (getter: ClassFragment?)
+    declaredElement (getter: ClassElement?, deprecated)
+    declaredFragment (getter: ClassFragment?, experimental)
     equals (getter: Token)
     finalKeyword (getter: Token?)
     implementsClause (getter: ImplementsClause?)
@@ -608,10 +608,10 @@
   Combinator (class extends Object implements AstNode):
     keyword (getter: Token)
   Comment (class extends Object implements AstNode):
-    codeBlocks (getter: List<MdCodeBlock>)
-    docDirectives (getter: List<DocDirective>)
-    docImports (getter: List<DocImport>)
-    hasNodoc (getter: bool)
+    codeBlocks (getter: List<MdCodeBlock>, experimental)
+    docDirectives (getter: List<DocDirective>, experimental)
+    docImports (getter: List<DocImport>, experimental)
+    hasNodoc (getter: bool, experimental)
     references (getter: NodeList<CommentReference>)
     tokens (getter: List<Token>)
   CommentReferableExpression (class extends Object implements Expression)
@@ -621,8 +621,8 @@
   CompilationUnit (class extends Object implements AstNode):
     beginToken (getter: Token)
     declarations (getter: NodeList<CompilationUnitMember>)
-    declaredElement (getter: CompilationUnitElement?)
-    declaredFragment (getter: LibraryFragment?)
+    declaredElement (getter: CompilationUnitElement?, deprecated)
+    declaredFragment (getter: LibraryFragment?, experimental)
     directives (getter: NodeList<Directive>)
     endToken (getter: Token)
     featureSet (getter: FeatureSet)
@@ -633,11 +633,11 @@
     sortedDirectivesAndDeclarations (getter: List<AstNode>)
   CompilationUnitMember (class extends Object implements Declaration)
   CompoundAssignmentExpression (class extends Object implements Expression):
-    readElement (getter: Element?)
-    readElement2 (getter: Element2?)
+    readElement (getter: Element?, deprecated)
+    readElement2 (getter: Element2?, experimental)
     readType (getter: DartType?)
-    writeElement (getter: Element?)
-    writeElement2 (getter: Element2?)
+    writeElement (getter: Element?, deprecated)
+    writeElement2 (getter: Element2?, experimental)
     writeType (getter: DartType?)
   ConditionalExpression (class extends Object implements Expression):
     colon (getter: Token)
@@ -661,8 +661,8 @@
     augmentKeyword (getter: Token?)
     body (getter: FunctionBody)
     constKeyword (getter: Token?)
-    declaredElement (getter: ConstructorElement?)
-    declaredFragment (getter: ConstructorFragment?)
+    declaredElement (getter: ConstructorElement?, deprecated)
+    declaredFragment (getter: ConstructorFragment?, experimental)
     externalKeyword (getter: Token?)
     factoryKeyword (getter: Token?)
     initializers (getter: NodeList<ConstructorInitializer>)
@@ -686,8 +686,8 @@
   ConstructorReference (class extends Object implements Expression, CommentReferableExpression):
     constructorName (getter: ConstructorName)
   ConstructorReferenceNode (class extends Object implements AstNode):
-    element (getter: ConstructorElement2?)
-    staticElement (getter: ConstructorElement?)
+    element (getter: ConstructorElement2?, experimental)
+    staticElement (getter: ConstructorElement?, deprecated)
   ConstructorSelector (class extends Object implements AstNode):
     name (getter: SimpleIdentifier)
     period (getter: Token)
@@ -701,11 +701,11 @@
     precedence (getter: PatternPrecedence)
     unParenthesized (getter: DartPattern)
   Declaration (class extends Object implements AnnotatedNode):
-    declaredElement (getter: Element?)
-    declaredFragment (getter: Fragment?)
+    declaredElement (getter: Element?, deprecated)
+    declaredFragment (getter: Fragment?, experimental)
   DeclaredIdentifier (class extends Object implements Declaration):
-    declaredElement (getter: LocalVariableElement?)
-    declaredElement2 (getter: LocalVariableElement2?)
+    declaredElement (getter: LocalVariableElement?, deprecated)
+    declaredElement2 (getter: LocalVariableElement2?, experimental)
     declaredFragment (getter: LocalVariableFragment?)
     isConst (getter: bool)
     isFinal (getter: bool)
@@ -713,8 +713,8 @@
     name (getter: Token)
     type (getter: TypeAnnotation?)
   DeclaredVariablePattern (class extends Object implements VariablePattern):
-    declaredElement (getter: BindPatternVariableElement?)
-    declaredElement2 (getter: BindPatternVariableElement2?)
+    declaredElement (getter: BindPatternVariableElement?, deprecated)
+    declaredElement2 (getter: BindPatternVariableElement2?, experimental)
     declaredFragment (getter: BindPatternVariableFragment?)
     keyword (getter: Token?)
     type (getter: TypeAnnotation?)
@@ -723,7 +723,7 @@
     parameter (getter: NormalFormalParameter)
     separator (getter: Token?)
   Directive (class extends Object implements AnnotatedNode):
-    element (getter: Element?)
+    element (getter: Element?, deprecated)
   DoStatement (class extends Object implements Statement):
     body (getter: Statement)
     condition (getter: Expression)
@@ -747,17 +747,17 @@
     typeArguments (getter: TypeArgumentList?)
   EnumConstantDeclaration (class extends Object implements Declaration):
     arguments (getter: EnumConstantArguments?)
-    augmentKeyword (getter: Token?)
-    constructorElement (getter: ConstructorElement?)
-    constructorElement2 (getter: ConstructorElement2?)
-    declaredElement (getter: FieldElement?)
-    declaredFragment (getter: FieldFragment?)
+    augmentKeyword (getter: Token?, experimental)
+    constructorElement (getter: ConstructorElement?, deprecated)
+    constructorElement2 (getter: ConstructorElement2?, experimental)
+    declaredElement (getter: FieldElement?, deprecated)
+    declaredFragment (getter: FieldFragment?, experimental)
     name (getter: Token)
   EnumDeclaration (class extends Object implements NamedCompilationUnitMember):
-    augmentKeyword (getter: Token?)
+    augmentKeyword (getter: Token?, experimental)
     constants (getter: NodeList<EnumConstantDeclaration>)
-    declaredElement (getter: EnumElement?)
-    declaredFragment (getter: EnumFragment?)
+    declaredElement (getter: EnumElement?, deprecated)
+    declaredFragment (getter: EnumFragment?, experimental)
     enumKeyword (getter: Token)
     implementsClause (getter: ImplementsClause?)
     leftBracket (getter: Token)
@@ -767,15 +767,15 @@
     typeParameters (getter: TypeParameterList?)
     withClause (getter: WithClause?)
   ExportDirective (class extends Object implements NamespaceDirective):
-    element (getter: LibraryExportElement?)
+    element (getter: LibraryExportElement?, deprecated)
     exportKeyword (getter: Token)
-    libraryExport (getter: LibraryExport?)
+    libraryExport (getter: LibraryExport?, experimental)
   Expression (class extends Object implements CollectionElement):
-    correspondingParameter (getter: FormalParameterElement?)
+    correspondingParameter (getter: FormalParameterElement?, experimental)
     inConstantContext (getter: bool)
     isAssignable (getter: bool)
     precedence (getter: Precedence)
-    staticParameterElement (getter: ParameterElement?)
+    staticParameterElement (getter: ParameterElement?, deprecated)
     staticType (getter: DartType?)
     unParenthesized (getter: Expression)
   ExpressionFunctionBody (class extends Object implements FunctionBody):
@@ -791,9 +791,9 @@
     extendsKeyword (getter: Token)
     superclass (getter: NamedType)
   ExtensionDeclaration (class extends Object implements CompilationUnitMember):
-    augmentKeyword (getter: Token?)
-    declaredElement (getter: ExtensionElement?)
-    declaredFragment (getter: ExtensionFragment?)
+    augmentKeyword (getter: Token?, experimental)
+    declaredElement (getter: ExtensionElement?, deprecated)
+    declaredFragment (getter: ExtensionFragment?, experimental)
     extensionKeyword (getter: Token)
     leftBracket (getter: Token)
     members (getter: NodeList<ClassMember>)
@@ -807,19 +807,19 @@
     onKeyword (getter: Token)
   ExtensionOverride (class extends Object implements Expression):
     argumentList (getter: ArgumentList)
-    element (getter: ExtensionElement)
-    element2 (getter: ExtensionElement2)
+    element (getter: ExtensionElement, deprecated)
+    element2 (getter: ExtensionElement2, experimental)
     extendedType (getter: DartType?)
     importPrefix (getter: ImportPrefixReference?)
     isNullAware (getter: bool)
     name (getter: Token)
     typeArgumentTypes (getter: List<DartType>?)
     typeArguments (getter: TypeArgumentList?)
-  ExtensionTypeDeclaration (class extends Object implements NamedCompilationUnitMember):
-    augmentKeyword (getter: Token?)
+  ExtensionTypeDeclaration (class extends Object implements NamedCompilationUnitMember, experimental):
+    augmentKeyword (getter: Token?, experimental)
     constKeyword (getter: Token?)
-    declaredElement (getter: ExtensionTypeElement?)
-    declaredFragment (getter: ExtensionTypeFragment?)
+    declaredElement (getter: ExtensionTypeElement?, deprecated)
+    declaredFragment (getter: ExtensionTypeFragment?, experimental)
     extensionKeyword (getter: Token)
     implementsClause (getter: ImplementsClause?)
     leftBracket (getter: Token)
@@ -830,7 +830,7 @@
     typeParameters (getter: TypeParameterList?)
   FieldDeclaration (class extends Object implements ClassMember):
     abstractKeyword (getter: Token?)
-    augmentKeyword (getter: Token?)
+    augmentKeyword (getter: Token?, experimental)
     covariantKeyword (getter: Token?)
     externalKeyword (getter: Token?)
     fields (getter: VariableDeclarationList)
@@ -838,7 +838,7 @@
     semicolon (getter: Token)
     staticKeyword (getter: Token?)
   FieldFormalParameter (class extends Object implements NormalFormalParameter):
-    declaredFragment (getter: FieldFormalParameterFragment?)
+    declaredFragment (getter: FieldFormalParameterFragment?, experimental)
     keyword (getter: Token?)
     name (getter: Token)
     parameters (getter: FormalParameterList?)
@@ -886,8 +886,8 @@
     rightParenthesis (getter: Token)
   FormalParameter (class extends Object implements AstNode):
     covariantKeyword (getter: Token?)
-    declaredElement (getter: ParameterElement?)
-    declaredFragment (getter: FormalParameterFragment?)
+    declaredElement (getter: ParameterElement?, deprecated)
+    declaredFragment (getter: FormalParameterFragment?, experimental)
     isConst (getter: bool)
     isExplicitlyTyped (getter: bool)
     isFinal (getter: bool)
@@ -905,8 +905,8 @@
   FormalParameterList (class extends Object implements AstNode):
     leftDelimiter (getter: Token?)
     leftParenthesis (getter: Token)
-    parameterElements (getter: List<ParameterElement?>)
-    parameterFragments (getter: List<FormalParameterFragment?>)
+    parameterElements (getter: List<ParameterElement?>, deprecated)
+    parameterFragments (getter: List<FormalParameterFragment?>, experimental)
     parameters (getter: NodeList<FormalParameter>)
     rightDelimiter (getter: Token?)
     rightParenthesis (getter: Token)
@@ -916,12 +916,12 @@
     isSynchronous (getter: bool)
     keyword (getter: Token?)
     star (getter: Token?)
-    isPotentiallyMutatedInScope (method: bool Function(VariableElement))
-    isPotentiallyMutatedInScope2 (method: bool Function(VariableElement2))
+    isPotentiallyMutatedInScope (method: bool Function(VariableElement), deprecated)
+    isPotentiallyMutatedInScope2 (method: bool Function(VariableElement2), experimental)
   FunctionDeclaration (class extends Object implements NamedCompilationUnitMember):
-    augmentKeyword (getter: Token?)
-    declaredElement (getter: ExecutableElement?)
-    declaredFragment (getter: ExecutableFragment?)
+    augmentKeyword (getter: Token?, experimental)
+    declaredElement (getter: ExecutableElement?, deprecated)
+    declaredFragment (getter: ExecutableFragment?, experimental)
     externalKeyword (getter: Token?)
     functionExpression (getter: FunctionExpression)
     isGetter (getter: bool)
@@ -932,21 +932,21 @@
     functionDeclaration (getter: FunctionDeclaration)
   FunctionExpression (class extends Object implements Expression):
     body (getter: FunctionBody)
-    declaredElement (getter: ExecutableElement?)
-    declaredFragment (getter: ExecutableFragment?)
+    declaredElement (getter: ExecutableElement?, deprecated)
+    declaredFragment (getter: ExecutableFragment?, experimental)
     parameters (getter: FormalParameterList?)
     typeParameters (getter: TypeParameterList?)
   FunctionExpressionInvocation (class extends Object implements NullShortableExpression, InvocationExpression):
-    element (getter: ExecutableElement2?)
+    element (getter: ExecutableElement2?, experimental)
     function (getter: Expression)
-    staticElement (getter: ExecutableElement?)
+    staticElement (getter: ExecutableElement?, deprecated)
   FunctionReference (class extends Object implements Expression, CommentReferableExpression):
     function (getter: Expression)
     typeArgumentTypes (getter: List<DartType>?)
     typeArguments (getter: TypeArgumentList?)
   FunctionTypeAlias (class extends Object implements TypeAlias):
-    declaredElement (getter: TypeAliasElement?)
-    declaredFragment (getter: TypeAliasFragment?)
+    declaredElement (getter: TypeAliasElement?, deprecated)
+    declaredFragment (getter: TypeAliasFragment?, experimental)
     parameters (getter: FormalParameterList)
     returnType (getter: TypeAnnotation?)
     typeParameters (getter: TypeParameterList?)
@@ -974,9 +974,9 @@
     hiddenNames (getter: NodeList<SimpleIdentifier>)
   Identifier (class extends Object implements Expression, CommentReferableExpression):
     isPrivateName (static method: bool Function(String))
-    element (getter: Element2?)
+    element (getter: Element2?, experimental)
     name (getter: String)
-    staticElement (getter: Element?)
+    staticElement (getter: Element?, deprecated)
   IfElement (class extends Object implements CollectionElement):
     caseClause (getter: CaseClause?)
     elseElement (getter: CollectionElement?)
@@ -1000,19 +1000,19 @@
     interfaces (getter: NodeList<NamedType>)
   ImplicitCallReference (class extends Object implements MethodReferenceExpression):
     expression (getter: Expression)
-    staticElement (getter: MethodElement)
+    staticElement (getter: MethodElement, deprecated)
     typeArgumentTypes (getter: List<DartType>)
     typeArguments (getter: TypeArgumentList?)
   ImportDirective (class extends Object implements NamespaceDirective):
     asKeyword (getter: Token?)
     deferredKeyword (getter: Token?)
-    element (getter: LibraryImportElement?)
+    element (getter: LibraryImportElement?, deprecated)
     importKeyword (getter: Token)
-    libraryImport (getter: LibraryImport?)
+    libraryImport (getter: LibraryImport?, experimental)
     prefix (getter: SimpleIdentifier?)
   ImportPrefixReference (class extends Object implements AstNode):
-    element (getter: Element?)
-    element2 (getter: Element2?)
+    element (getter: Element?, deprecated)
+    element2 (getter: Element2?, experimental)
     name (getter: Token)
     period (getter: Token)
   IndexExpression (class extends Object implements NullShortableExpression, MethodReferenceExpression):
@@ -1064,8 +1064,8 @@
     labels (getter: NodeList<Label>)
     statement (getter: Statement)
   LibraryDirective (class extends Object implements Directive):
-    element (getter: LibraryElement?)
-    element2 (getter: LibraryElement2?)
+    element (getter: LibraryElement?, deprecated)
+    element2 (getter: LibraryElement2?, experimental)
     libraryKeyword (getter: Token)
     name2 (getter: LibraryIdentifier?)
     semicolon (getter: Token)
@@ -1111,8 +1111,8 @@
   MethodDeclaration (class extends Object implements ClassMember):
     augmentKeyword (getter: Token?)
     body (getter: FunctionBody)
-    declaredElement (getter: ExecutableElement?)
-    declaredFragment (getter: ExecutableFragment?)
+    declaredElement (getter: ExecutableElement?, deprecated)
+    declaredFragment (getter: ExecutableFragment?, experimental)
     externalKeyword (getter: Token?)
     isAbstract (getter: bool)
     isGetter (getter: bool)
@@ -1134,13 +1134,13 @@
     realTarget (getter: Expression?)
     target (getter: Expression?)
   MethodReferenceExpression (class extends Object implements Expression):
-    element (getter: MethodElement2?)
-    staticElement (getter: MethodElement?)
+    element (getter: MethodElement2?, experimental)
+    staticElement (getter: MethodElement?, deprecated)
   MixinDeclaration (class extends Object implements NamedCompilationUnitMember):
     augmentKeyword (getter: Token?)
     baseKeyword (getter: Token?)
-    declaredElement (getter: MixinElement?)
-    declaredFragment (getter: MixinFragment?)
+    declaredElement (getter: MixinElement?, deprecated)
+    declaredFragment (getter: MixinFragment?, experimental)
     implementsClause (getter: ImplementsClause?)
     leftBracket (getter: Token)
     members (getter: NodeList<ClassMember>)
@@ -1154,13 +1154,13 @@
   NamedCompilationUnitMember (class extends Object implements CompilationUnitMember):
     name (getter: Token)
   NamedExpression (class extends Object implements Expression):
-    element (getter: ParameterElement?)
-    element2 (getter: FormalParameterElement?)
+    element (getter: ParameterElement?, deprecated)
+    element2 (getter: FormalParameterElement?, experimental)
     expression (getter: Expression)
     name (getter: Label)
   NamedType (class extends Object implements TypeAnnotation):
-    element (getter: Element?)
-    element2 (getter: Element2?)
+    element (getter: Element?, deprecated)
+    element2 (getter: Element2?, experimental)
     importPrefix (getter: ImportPrefixReference?)
     isDeferred (getter: bool)
     name2 (getter: Token)
@@ -1180,15 +1180,15 @@
   NodeList (class<E extends AstNode> extends Object implements List<E>):
     beginToken (getter: Token?)
     endToken (getter: Token?)
-    length= (setter: int)
+    length= (setter: int, deprecated)
     owner (getter: AstNode)
     [] (method: E Function(int))
     accept (method: void Function(AstVisitor<dynamic>))
-    add (method: void Function(E))
-    addAll (method: void Function(Iterable<E>))
-    clear (method: void Function())
-    insert (method: void Function(int, E))
-    removeAt (method: E Function(int))
+    add (method: void Function(E), deprecated)
+    addAll (method: void Function(Iterable<E>), deprecated)
+    clear (method: void Function(), deprecated)
+    insert (method: void Function(int, E), deprecated)
+    removeAt (method: E Function(int), deprecated)
   NormalFormalParameter (class extends Object implements FormalParameter, AnnotatedNode)
   NullAssertPattern (class extends Object implements DartPattern):
     operator (getter: Token)
@@ -1218,8 +1218,8 @@
     rightParenthesis (getter: Token)
   PartDirective (class extends Object implements UriBasedDirective):
     configurations (getter: NodeList<Configuration>)
-    element (getter: PartElement?)
-    partInclude (getter: PartInclude?)
+    element (getter: PartElement?, deprecated)
+    partInclude (getter: PartInclude?, experimental)
     partKeyword (getter: Token)
     semicolon (getter: Token)
   PartOfDirective (class extends Object implements Directive):
@@ -1234,8 +1234,8 @@
     pattern (getter: DartPattern)
   PatternField (class extends Object implements AstNode):
     effectiveName (getter: String?)
-    element (getter: Element?)
-    element2 (getter: Element2?)
+    element (getter: Element?, deprecated)
+    element2 (getter: Element2?, experimental)
     name (getter: PatternFieldName?)
     pattern (getter: DartPattern)
   PatternFieldName (class extends Object implements AstNode):
@@ -1253,12 +1253,12 @@
     element (getter: MethodElement2?)
     operand (getter: Expression)
     operator (getter: Token)
-    staticElement (getter: MethodElement?)
+    staticElement (getter: MethodElement?, deprecated)
   PrefixExpression (class extends Object implements Expression, NullShortableExpression, MethodReferenceExpression, CompoundAssignmentExpression):
     element (getter: MethodElement2?)
     operand (getter: Expression)
     operator (getter: Token)
-    staticElement (getter: MethodElement?)
+    staticElement (getter: MethodElement?, deprecated)
   PrefixedIdentifier (class extends Object implements Identifier):
     identifier (getter: SimpleIdentifier)
     isDeferred (getter: bool)
@@ -1303,19 +1303,19 @@
     period (getter: Token?)
     thisKeyword (getter: Token)
   RelationalPattern (class extends Object implements DartPattern):
-    element (getter: MethodElement?)
-    element2 (getter: MethodElement2?)
+    element (getter: MethodElement?, deprecated)
+    element2 (getter: MethodElement2?, experimental)
     operand (getter: Expression)
     operator (getter: Token)
-  RepresentationConstructorName (class extends Object implements AstNode):
+  RepresentationConstructorName (class extends Object implements AstNode, experimental):
     name (getter: Token)
     period (getter: Token)
-  RepresentationDeclaration (class extends Object implements AstNode):
-    constructorElement (getter: ConstructorElement?)
-    constructorFragment (getter: ConstructorFragment?)
+  RepresentationDeclaration (class extends Object implements AstNode, experimental):
+    constructorElement (getter: ConstructorElement?, deprecated)
+    constructorFragment (getter: ConstructorFragment?, experimental)
     constructorName (getter: RepresentationConstructorName?)
-    fieldElement (getter: FieldElement?)
-    fieldFragment (getter: FieldFragment?)
+    fieldElement (getter: FieldElement?, deprecated)
+    fieldFragment (getter: FieldFragment?, experimental)
     fieldMetadata (getter: NodeList<Annotation>)
     fieldName (getter: Token)
     fieldType (getter: TypeAnnotation)
@@ -1426,7 +1426,7 @@
     expression (getter: Expression)
     throwKeyword (getter: Token)
   TopLevelVariableDeclaration (class extends Object implements CompilationUnitMember):
-    augmentKeyword (getter: Token?)
+    augmentKeyword (getter: Token?, experimental)
     externalKeyword (getter: Token?)
     semicolon (getter: Token)
     variables (getter: VariableDeclarationList)
@@ -1437,7 +1437,7 @@
     finallyKeyword (getter: Token?)
     tryKeyword (getter: Token)
   TypeAlias (class extends Object implements NamedCompilationUnitMember):
-    augmentKeyword (getter: Token?)
+    augmentKeyword (getter: Token?, experimental)
     semicolon (getter: Token)
     typedefKeyword (getter: Token)
   TypeAnnotation (class extends Object implements AstNode):
@@ -1451,8 +1451,8 @@
     type (getter: NamedType)
   TypeParameter (class extends Object implements Declaration):
     bound (getter: TypeAnnotation?)
-    declaredElement (getter: TypeParameterElement?)
-    declaredFragment (getter: TypeParameterFragment?)
+    declaredElement (getter: TypeParameterElement?, deprecated)
+    declaredFragment (getter: TypeParameterFragment?, experimental)
     extendsKeyword (getter: Token?)
     name (getter: Token)
   TypeParameterList (class extends Object implements AstNode):
@@ -1466,9 +1466,9 @@
   UriBasedDirective (class extends Object implements Directive):
     uri (getter: StringLiteral)
   VariableDeclaration (class extends Object implements Declaration):
-    declaredElement (getter: VariableElement?)
-    declaredElement2 (getter: LocalVariableElement2?)
-    declaredFragment (getter: VariableFragment?)
+    declaredElement (getter: VariableElement?, deprecated)
+    declaredElement2 (getter: LocalVariableElement2?, experimental)
+    declaredFragment (getter: VariableFragment?, experimental)
     equals (getter: Token?)
     initializer (getter: Expression?)
     isConst (getter: bool)
@@ -1510,29 +1510,29 @@
     star (getter: Token?)
     yieldKeyword (getter: Token)
 package:analyzer/dart/ast/doc_comment.dart:
-  BlockDocDirective (class extends Object implements DocDirective):
+  BlockDocDirective (class extends Object implements DocDirective, experimental):
     new (constructor: BlockDocDirective Function(DocDirectiveTag, DocDirectiveTag?))
     closingTag (getter: DocDirectiveTag?)
     openingTag (getter: DocDirectiveTag)
     type (getter: DocDirectiveType)
-  CodeBlockType (enum):
+  CodeBlockType (enum, experimental):
     fenced (static getter: CodeBlockType)
     indented (static getter: CodeBlockType)
     values (static getter: List<CodeBlockType>)
-  DocDirective (class extends Object):
+  DocDirective (class extends Object, experimental):
     type (getter: DocDirectiveType)
-  DocDirectiveArgument (class extends Object):
+  DocDirectiveArgument (class extends Object, experimental):
     end (getter: int)
     offset (getter: int)
     value (getter: String)
-  DocDirectiveNamedArgument (class extends DocDirectiveArgument):
+  DocDirectiveNamedArgument (class extends DocDirectiveArgument, experimental):
     new (constructor: DocDirectiveNamedArgument Function({required int end, required String name, required int offset, required String value}))
     name (getter: String)
-  DocDirectiveParameter (class extends Object):
+  DocDirectiveParameter (class extends Object, experimental):
     new (constructor: DocDirectiveParameter Function(String, DocDirectiveParameterFormat))
     expectedFormat (getter: DocDirectiveParameterFormat)
     name (getter: String)
-  DocDirectiveParameterFormat (enum):
+  DocDirectiveParameterFormat (enum, experimental):
     any (static getter: DocDirectiveParameterFormat)
     integer (static getter: DocDirectiveParameterFormat)
     uri (static getter: DocDirectiveParameterFormat)
@@ -1540,9 +1540,9 @@
     youtubeUrl (static getter: DocDirectiveParameterFormat)
     youtubeUrlPrefix (static getter: String)
     displayString (getter: String)
-  DocDirectivePositionalArgument (class extends DocDirectiveArgument):
+  DocDirectivePositionalArgument (class extends DocDirectiveArgument, experimental):
     new (constructor: DocDirectivePositionalArgument Function({required int end, required int offset, required String value}))
-  DocDirectiveTag (class extends Object):
+  DocDirectiveTag (class extends Object, experimental):
     new (constructor: DocDirectiveTag Function({required int end, required int nameEnd, required int nameOffset, required List<DocDirectiveNamedArgument> namedArguments, required int offset, required List<DocDirectiveArgument> positionalArguments, required DocDirectiveType type}))
     end (getter: int)
     nameEnd (getter: int)
@@ -1551,7 +1551,7 @@
     offset (getter: int)
     positionalArguments (getter: List<DocDirectiveArgument>)
     type (getter: DocDirectiveType)
-  DocDirectiveType (enum):
+  DocDirectiveType (enum, experimental):
     animation (static getter: DocDirectiveType)
     canonicalFor (static getter: DocDirectiveType)
     category (static getter: DocDirectiveType)
@@ -1571,22 +1571,22 @@
     opposingName (getter: String?)
     positionalParameters (getter: List<DocDirectiveParameter>)
     restParametersAllowed (getter: bool)
-  DocImport (class extends Object):
+  DocImport (class extends Object, experimental):
     new (constructor: DocImport Function({required ImportDirective import, required int offset}))
     import (getter: ImportDirective)
     import= (setter: ImportDirective)
     offset (getter: int)
     offset= (setter: int)
-  MdCodeBlock (class extends Object):
+  MdCodeBlock (class extends Object, experimental):
     new (constructor: MdCodeBlock Function({required String? infoString, required List<MdCodeBlockLine> lines, required CodeBlockType type}))
     infoString (getter: String?)
     lines (getter: List<MdCodeBlockLine>)
     type (getter: CodeBlockType)
-  MdCodeBlockLine (class extends Object):
+  MdCodeBlockLine (class extends Object, experimental):
     new (constructor: MdCodeBlockLine Function({required int length, required int offset}))
     length (getter: int)
     offset (getter: int)
-  SimpleDocDirective (class extends Object implements DocDirective):
+  SimpleDocDirective (class extends Object implements DocDirective, experimental):
     new (constructor: SimpleDocDirective Function(DocDirectiveTag))
     tag (getter: DocDirectiveTag)
     type (getter: DocDirectiveType)
@@ -2975,13 +2975,13 @@
     hasKnownValue (getter: bool)
     isNull (getter: bool)
     type (getter: DartType?)
-    variable (getter: VariableElement?)
+    variable (getter: VariableElement?, deprecated)
     variable2 (getter: VariableElement2?)
     getField (method: DartObject? Function(String))
     toBoolValue (method: bool? Function())
     toDoubleValue (method: double? Function())
-    toFunctionValue (method: ExecutableElement? Function())
-    toFunctionValue2 (method: ExecutableElement2? Function())
+    toFunctionValue (method: ExecutableElement? Function(), deprecated)
+    toFunctionValue2 (method: ExecutableElement2? Function(), experimental)
     toIntValue (method: int? Function())
     toListValue (method: List<DartObject>? Function())
     toMapValue (method: Map<DartObject?, DartObject?>? Function())
@@ -3038,9 +3038,9 @@
     new (constructor: BindPatternVariableElement Function())
   ClassElement (class extends Object implements InterfaceElement):
     new (constructor: ClassElement Function())
-    augmentation (getter: ClassElement?)
-    augmentationTarget (getter: ClassElement?)
-    augmented (getter: AugmentedClassElement)
+    augmentation (getter: ClassElement?, experimental)
+    augmentationTarget (getter: ClassElement?, experimental)
+    augmented (getter: AugmentedClassElement, experimental)
     hasNonFinalField (getter: bool)
     isAbstract (getter: bool)
     isBase (getter: bool)
@@ -3068,7 +3068,7 @@
     classes (getter: List<ClassElement>)
     enclosingElement3 (getter: CompilationUnitElement?)
     enums (getter: List<EnumElement>)
-    extensionTypes (getter: List<ExtensionTypeElement>)
+    extensionTypes (getter: List<ExtensionTypeElement>, experimental)
     extensions (getter: List<ExtensionElement>)
     functions (getter: List<FunctionElement>)
     libraryExports (getter: List<LibraryExportElement>)
@@ -3085,8 +3085,8 @@
     getEnum (method: EnumElement? Function(String))
   ConstructorElement (class extends Object implements ClassMemberElement, ExecutableElement, ConstantEvaluationTarget):
     new (constructor: ConstructorElement Function())
-    augmentation (getter: ConstructorElement?)
-    augmentationTarget (getter: ConstructorElement?)
+    augmentation (getter: ConstructorElement?, experimental)
+    augmentationTarget (getter: ConstructorElement?, experimental)
     declaration (getter: ConstructorElement)
     displayName (getter: String)
     enclosingElement3 (getter: InterfaceElement)
@@ -3119,7 +3119,7 @@
     source (getter: Source)
   DirectiveUriWithUnit (class extends DirectiveUriWithSource):
     new (constructor: DirectiveUriWithUnit Function())
-    libraryFragment (getter: LibraryFragment)
+    libraryFragment (getter: LibraryFragment, experimental)
     unit (getter: CompilationUnitElement)
   Element (class extends Object implements AnalysisTarget):
     new (constructor: Element Function())
@@ -3294,13 +3294,13 @@
     visitTypeParameterElement (method: R? Function(TypeParameterElement))
   EnumElement (class extends Object implements InterfaceElement):
     new (constructor: EnumElement Function())
-    augmentation (getter: EnumElement?)
-    augmentationTarget (getter: EnumElement?)
-    augmented (getter: AugmentedEnumElement)
+    augmentation (getter: EnumElement?, experimental)
+    augmentationTarget (getter: EnumElement?, experimental)
+    augmented (getter: AugmentedEnumElement, experimental)
   ExecutableElement (class extends Object implements FunctionTypedElement):
     new (constructor: ExecutableElement Function())
-    augmentation (getter: ExecutableElement?)
-    augmentationTarget (getter: ExecutableElement?)
+    augmentation (getter: ExecutableElement?, experimental)
+    augmentationTarget (getter: ExecutableElement?, experimental)
     declaration (getter: ExecutableElement)
     displayName (getter: String)
     enclosingElement3 (getter: Element)
@@ -3317,26 +3317,26 @@
     name (getter: String)
   ExtensionElement (class extends Object implements InstanceElement):
     new (constructor: ExtensionElement Function())
-    augmentation (getter: ExtensionElement?)
-    augmentationTarget (getter: ExtensionElement?)
-    augmented (getter: AugmentedExtensionElement)
+    augmentation (getter: ExtensionElement?, experimental)
+    augmentationTarget (getter: ExtensionElement?, experimental)
+    augmented (getter: AugmentedExtensionElement, experimental)
     extendedType (getter: DartType)
     getField (method: FieldElement? Function(String))
     getGetter (method: PropertyAccessorElement? Function(String))
     getMethod (method: MethodElement? Function(String))
     getSetter (method: PropertyAccessorElement? Function(String))
-  ExtensionTypeElement (class extends Object implements InterfaceElement):
+  ExtensionTypeElement (class extends Object implements InterfaceElement, experimental):
     new (constructor: ExtensionTypeElement Function())
-    augmentation (getter: ExtensionTypeElement?)
-    augmentationTarget (getter: ExtensionTypeElement?)
-    augmented (getter: AugmentedExtensionTypeElement)
+    augmentation (getter: ExtensionTypeElement?, experimental)
+    augmentationTarget (getter: ExtensionTypeElement?, experimental)
+    augmented (getter: AugmentedExtensionTypeElement, experimental)
     primaryConstructor (getter: ConstructorElement)
     representation (getter: FieldElement)
     typeErasure (getter: DartType)
   FieldElement (class extends Object implements ClassMemberElement, PropertyInducingElement):
     new (constructor: FieldElement Function())
-    augmentation (getter: FieldElement?)
-    augmentationTarget (getter: FieldElement?)
+    augmentation (getter: FieldElement?, experimental)
+    augmentationTarget (getter: FieldElement?, experimental)
     declaration (getter: FieldElement)
     isAbstract (getter: bool)
     isCovariant (getter: bool)
@@ -3353,8 +3353,8 @@
     MAIN_FUNCTION_NAME (static getter: String)
     NO_SUCH_METHOD_METHOD_NAME (static getter: String)
     new (constructor: FunctionElement Function())
-    augmentation (getter: FunctionElement?)
-    augmentationTarget (getter: FunctionElement?)
+    augmentation (getter: FunctionElement?, experimental)
+    augmentationTarget (getter: FunctionElement?, experimental)
     isDartCoreIdentical (getter: bool)
     isEntryPoint (getter: bool)
   FunctionTypedElement (class extends Object implements TypeParameterizedElement):
@@ -3375,9 +3375,9 @@
   InstanceElement (class extends Object implements TypeDefiningElement, TypeParameterizedElement):
     new (constructor: InstanceElement Function())
     accessors (getter: List<PropertyAccessorElement>)
-    augmentation (getter: InstanceElement?)
-    augmentationTarget (getter: InstanceElement?)
-    augmented (getter: AugmentedInstanceElement)
+    augmentation (getter: InstanceElement?, experimental)
+    augmentationTarget (getter: InstanceElement?, experimental)
+    augmented (getter: AugmentedInstanceElement, experimental)
     enclosingElement3 (getter: CompilationUnitElement)
     fields (getter: List<FieldElement>)
     isAugmentation (getter: bool)
@@ -3387,7 +3387,7 @@
     new (constructor: InterfaceElement Function())
     allSupertypes (getter: List<InterfaceType>)
     augmentationTarget (getter: InterfaceElement?)
-    augmented (getter: AugmentedInterfaceElement)
+    augmented (getter: AugmentedInterfaceElement, experimental)
     constructors (getter: List<ConstructorElement>)
     interfaces (getter: List<InterfaceType>)
     mixins (getter: List<InterfaceType>)
@@ -3402,13 +3402,13 @@
     getSetter (method: PropertyAccessorElement? Function(String))
     instantiate (method: InterfaceType Function({required NullabilitySuffix nullabilitySuffix, required List<DartType> typeArguments}))
     lookUpConcreteMethod (method: MethodElement? Function(String, LibraryElement))
-    lookUpGetter (method: PropertyAccessorElement? Function(String, LibraryElement))
+    lookUpGetter (method: PropertyAccessorElement? Function(String, LibraryElement), deprecated)
     lookUpInheritedConcreteGetter (method: PropertyAccessorElement? Function(String, LibraryElement))
     lookUpInheritedConcreteMethod (method: MethodElement? Function(String, LibraryElement))
     lookUpInheritedConcreteSetter (method: PropertyAccessorElement? Function(String, LibraryElement))
     lookUpInheritedMethod (method: MethodElement? Function(String, LibraryElement))
-    lookUpMethod (method: MethodElement? Function(String, LibraryElement))
-    lookUpSetter (method: PropertyAccessorElement? Function(String, LibraryElement))
+    lookUpMethod (method: MethodElement? Function(String, LibraryElement), deprecated)
+    lookUpSetter (method: PropertyAccessorElement? Function(String, LibraryElement), deprecated)
   JoinPatternVariableElement (class extends Object implements PatternVariableElement):
     new (constructor: JoinPatternVariableElement Function())
     isConsistent (getter: bool)
@@ -3470,14 +3470,14 @@
     name (getter: String)
   MethodElement (class extends Object implements ClassMemberElement, ExecutableElement):
     new (constructor: MethodElement Function())
-    augmentation (getter: MethodElement?)
-    augmentationTarget (getter: MethodElement?)
+    augmentation (getter: MethodElement?, experimental)
+    augmentationTarget (getter: MethodElement?, experimental)
     declaration (getter: MethodElement)
   MixinElement (class extends Object implements InterfaceElement):
     new (constructor: MixinElement Function())
-    augmentation (getter: MixinElement?)
-    augmentationTarget (getter: MixinElement?)
-    augmented (getter: AugmentedMixinElement)
+    augmentation (getter: MixinElement?, experimental)
+    augmentationTarget (getter: MixinElement?, experimental)
+    augmented (getter: AugmentedMixinElement, experimental)
     isBase (getter: bool)
     superclassConstraints (getter: List<InterfaceType>)
     isImplementableIn (method: bool Function(LibraryElement))
@@ -3489,7 +3489,7 @@
     new (constructor: ParameterElement Function())
     declaration (getter: ParameterElement)
     defaultValueCode (getter: String?)
-    element (getter: FormalParameterElement)
+    element (getter: FormalParameterElement, experimental)
     hasDefaultValue (getter: bool)
     isCovariant (getter: bool)
     isInitializingFormal (getter: bool)
@@ -3503,7 +3503,7 @@
     isRequiredPositional (getter: bool)
     isSuperFormal (getter: bool)
     name (getter: String)
-    parameterKind (getter: ParameterKind)
+    parameterKind (getter: ParameterKind, deprecated)
     parameters (getter: List<ParameterElement>)
     typeParameters (getter: List<TypeParameterElement>)
     appendToWithoutDelimiters (method: void Function(StringBuffer, {bool withNullability}))
@@ -3524,8 +3524,8 @@
     name (getter: String)
   PropertyAccessorElement (class extends Object implements ExecutableElement):
     new (constructor: PropertyAccessorElement Function())
-    augmentation (getter: PropertyAccessorElement?)
-    augmentationTarget (getter: PropertyAccessorElement?)
+    augmentation (getter: PropertyAccessorElement?, experimental)
+    augmentationTarget (getter: PropertyAccessorElement?, experimental)
     correspondingGetter (getter: PropertyAccessorElement?)
     correspondingSetter (getter: PropertyAccessorElement?)
     declaration (getter: PropertyAccessorElement)
@@ -3535,8 +3535,8 @@
     variable2 (getter: PropertyInducingElement?)
   PropertyInducingElement (class extends Object implements VariableElement):
     new (constructor: PropertyInducingElement Function())
-    augmentation (getter: PropertyInducingElement?)
-    augmentationTarget (getter: PropertyInducingElement?)
+    augmentation (getter: PropertyInducingElement?, experimental)
+    augmentationTarget (getter: PropertyInducingElement?, experimental)
     displayName (getter: String)
     getter (getter: PropertyAccessorElement?)
     hasInitializer (getter: bool)
@@ -3554,8 +3554,8 @@
     superConstructorParameter (getter: ParameterElement?)
   TopLevelVariableElement (class extends Object implements PropertyInducingElement):
     new (constructor: TopLevelVariableElement Function())
-    augmentation (getter: TopLevelVariableElement?)
-    augmentationTarget (getter: TopLevelVariableElement?)
+    augmentation (getter: TopLevelVariableElement?, experimental)
+    augmentationTarget (getter: TopLevelVariableElement?, experimental)
     declaration (getter: TopLevelVariableElement)
     isExternal (getter: bool)
   TypeAliasElement (class extends Object implements TypeParameterizedElement, TypeDefiningElement):
@@ -4347,16 +4347,16 @@
     lookup (method: ScopeLookupResult Function(String))
   ScopeLookupResult (class extends Object):
     new (constructor: ScopeLookupResult Function())
-    getter (getter: Element?)
+    getter (getter: Element?, deprecated)
     getter2 (getter: Element2?)
-    setter (getter: Element?)
+    setter (getter: Element?, deprecated)
     setter2 (getter: Element2?)
 package:analyzer/dart/element/type.dart:
   DartType (class extends Object):
     new (constructor: DartType Function())
     alias (getter: InstantiatedTypeAliasElement?)
-    element (getter: Element?)
-    element3 (getter: Element2?)
+    element (getter: Element?, deprecated)
+    element3 (getter: Element2?, experimental)
     extensionTypeErasure (getter: DartType)
     isBottom (getter: bool)
     isDartAsyncFuture (getter: bool)
@@ -4378,65 +4378,65 @@
     isDartCoreString (getter: bool)
     isDartCoreSymbol (getter: bool)
     isDartCoreType (getter: bool)
-    name (getter: String?)
+    name (getter: String?, deprecated)
     nullabilitySuffix (getter: NullabilitySuffix)
     accept (method: R Function<R>(TypeVisitor<R>))
     acceptWithArgument (method: R Function<R, A>(TypeVisitorWithArgument<R, A>, A))
-    asInstanceOf (method: InterfaceType? Function(InterfaceElement))
-    asInstanceOf2 (method: InterfaceType? Function(InterfaceElement2))
+    asInstanceOf (method: InterfaceType? Function(InterfaceElement), deprecated)
+    asInstanceOf2 (method: InterfaceType? Function(InterfaceElement2), experimental)
     getDisplayString (method: String Function({bool withNullability}))
-    isStructurallyEqualTo (method: bool Function(DartType))
+    isStructurallyEqualTo (method: bool Function(DartType), deprecated)
   DynamicType (class extends Object implements DartType):
     new (constructor: DynamicType Function())
   FunctionType (class extends Object implements DartType):
     new (constructor: FunctionType Function())
     element (getter: Null)
-    formalParameters (getter: List<FormalParameterElement>)
+    formalParameters (getter: List<FormalParameterElement>, experimental)
     namedParameterTypes (getter: Map<String, DartType>)
     normalParameterTypes (getter: List<DartType>)
     optionalParameterTypes (getter: List<DartType>)
-    parameters (getter: List<ParameterElement>)
-    positionalParameterTypes (getter: List<DartType>)
-    requiredPositionalParameterCount (getter: int)
+    parameters (getter: List<ParameterElement>, deprecated)
+    positionalParameterTypes (getter: List<DartType>, deprecated)
+    requiredPositionalParameterCount (getter: int, deprecated)
     returnType (getter: DartType)
-    sortedNamedParameters (getter: List<ParameterElement>)
-    typeFormals (getter: List<TypeParameterElement>)
-    typeParameters (getter: List<TypeParameterElement2>)
+    sortedNamedParameters (getter: List<ParameterElement>, deprecated)
+    typeFormals (getter: List<TypeParameterElement>, deprecated)
+    typeParameters (getter: List<TypeParameterElement2>, experimental)
     instantiate (method: FunctionType Function(List<DartType>))
   InstantiatedTypeAliasElement (class extends Object):
     new (constructor: InstantiatedTypeAliasElement Function())
-    element (getter: TypeAliasElement)
-    element2 (getter: TypeAliasElement2)
+    element (getter: TypeAliasElement, deprecated)
+    element2 (getter: TypeAliasElement2, experimental)
     typeArguments (getter: List<DartType>)
   InterfaceType (class extends Object implements ParameterizedType):
     new (constructor: InterfaceType Function())
-    accessors (getter: List<PropertyAccessorElement>)
+    accessors (getter: List<PropertyAccessorElement>, deprecated)
     allSupertypes (getter: List<InterfaceType>)
-    constructors (getter: List<ConstructorElement>)
-    constructors2 (getter: List<ConstructorElement2>)
-    element (getter: InterfaceElement)
-    element3 (getter: InterfaceElement2)
-    getters (getter: List<GetterElement>)
+    constructors (getter: List<ConstructorElement>, deprecated)
+    constructors2 (getter: List<ConstructorElement2>, experimental)
+    element (getter: InterfaceElement, deprecated)
+    element3 (getter: InterfaceElement2, experimental)
+    getters (getter: List<GetterElement>, experimental)
     interfaces (getter: List<InterfaceType>)
-    methods (getter: List<MethodElement>)
-    methods2 (getter: List<MethodElement2>)
+    methods (getter: List<MethodElement>, deprecated)
+    methods2 (getter: List<MethodElement2>, experimental)
     mixins (getter: List<InterfaceType>)
-    setters (getter: List<SetterElement>)
+    setters (getter: List<SetterElement>, experimental)
     superclass (getter: InterfaceType?)
     superclassConstraints (getter: List<InterfaceType>)
-    getGetter (method: PropertyAccessorElement? Function(String))
+    getGetter (method: PropertyAccessorElement? Function(String), deprecated)
     getGetter2 (method: GetterElement? Function(String))
-    getMethod (method: MethodElement? Function(String))
+    getMethod (method: MethodElement? Function(String), deprecated)
     getMethod2 (method: MethodElement2? Function(String))
-    getSetter (method: PropertyAccessorElement? Function(String))
+    getSetter (method: PropertyAccessorElement? Function(String), deprecated)
     getSetter2 (method: SetterElement? Function(String))
-    lookUpConstructor (method: ConstructorElement? Function(String?, LibraryElement))
+    lookUpConstructor (method: ConstructorElement? Function(String?, LibraryElement), deprecated)
     lookUpConstructor2 (method: ConstructorElement2? Function(String?, LibraryElement2))
-    lookUpGetter2 (method: PropertyAccessorElement? Function(String, LibraryElement, {bool concrete, bool inherited, bool recoveryStatic}))
+    lookUpGetter2 (method: PropertyAccessorElement? Function(String, LibraryElement, {bool concrete, bool inherited, bool recoveryStatic}), deprecated)
     lookUpGetter3 (method: GetterElement? Function(String, LibraryElement2, {bool concrete, bool inherited, bool recoveryStatic}))
-    lookUpMethod2 (method: MethodElement? Function(String, LibraryElement, {bool concrete, bool inherited, bool recoveryStatic}))
+    lookUpMethod2 (method: MethodElement? Function(String, LibraryElement, {bool concrete, bool inherited, bool recoveryStatic}), deprecated)
     lookUpMethod3 (method: MethodElement2? Function(String, LibraryElement2, {bool concrete, bool inherited, bool recoveryStatic}))
-    lookUpSetter2 (method: PropertyAccessorElement? Function(String, LibraryElement, {bool concrete, bool inherited, bool recoveryStatic}))
+    lookUpSetter2 (method: PropertyAccessorElement? Function(String, LibraryElement, {bool concrete, bool inherited, bool recoveryStatic}), deprecated)
     lookUpSetter3 (method: SetterElement? Function(String, LibraryElement2, {bool concrete, bool inherited, bool recoveryStatic}))
   InvalidType (class extends Object implements DartType):
     new (constructor: InvalidType Function())
@@ -4450,8 +4450,8 @@
     element (getter: Null)
     namedFields (getter: List<RecordTypeNamedField>)
     positionalFields (getter: List<RecordTypePositionalField>)
-    positionalTypes (getter: List<DartType>)
-    sortedNamedTypes (getter: List<RecordTypeNamedField>)
+    positionalTypes (getter: List<DartType>, deprecated)
+    sortedNamedTypes (getter: List<RecordTypeNamedField>, deprecated)
   RecordTypeField (class extends Object):
     new (constructor: RecordTypeField Function())
     type (getter: DartType)
@@ -4464,77 +4464,77 @@
     new (constructor: TypeParameterType Function())
     bound (getter: DartType)
     definition (getter: ElementLocation)
-    element (getter: TypeParameterElement)
-    element3 (getter: TypeParameterElement2)
+    element (getter: TypeParameterElement, deprecated)
+    element3 (getter: TypeParameterElement2, experimental)
   VoidType (class extends Object implements DartType):
     new (constructor: VoidType Function())
     element (getter: Null)
 package:analyzer/dart/element/type_provider.dart:
   TypeProvider (class extends Object):
     new (constructor: TypeProvider Function())
-    boolElement (getter: ClassElement)
-    boolElement2 (getter: ClassElement2)
+    boolElement (getter: ClassElement, deprecated)
+    boolElement2 (getter: ClassElement2, experimental)
     boolType (getter: InterfaceType)
     bottomType (getter: DartType)
     deprecatedType (getter: InterfaceType)
-    doubleElement (getter: ClassElement)
-    doubleElement2 (getter: ClassElement2)
+    doubleElement (getter: ClassElement, deprecated)
+    doubleElement2 (getter: ClassElement2, experimental)
     doubleType (getter: InterfaceType)
     dynamicType (getter: DartType)
-    enumElement (getter: ClassElement?)
-    enumElement2 (getter: ClassElement2?)
+    enumElement (getter: ClassElement?, deprecated)
+    enumElement2 (getter: ClassElement2?, experimental)
     enumType (getter: InterfaceType?)
     functionType (getter: InterfaceType)
     futureDynamicType (getter: InterfaceType)
-    futureElement (getter: ClassElement)
-    futureElement2 (getter: ClassElement2)
+    futureElement (getter: ClassElement, deprecated)
+    futureElement2 (getter: ClassElement2, experimental)
     futureNullType (getter: InterfaceType)
-    futureOrElement (getter: ClassElement)
-    futureOrElement2 (getter: ClassElement2)
+    futureOrElement (getter: ClassElement, deprecated)
+    futureOrElement2 (getter: ClassElement2, experimental)
     futureOrNullType (getter: InterfaceType)
-    intElement (getter: ClassElement)
-    intElement2 (getter: ClassElement2)
+    intElement (getter: ClassElement, deprecated)
+    intElement2 (getter: ClassElement2, experimental)
     intType (getter: InterfaceType)
     iterableDynamicType (getter: InterfaceType)
-    iterableElement (getter: ClassElement)
-    iterableElement2 (getter: ClassElement2)
+    iterableElement (getter: ClassElement, deprecated)
+    iterableElement2 (getter: ClassElement2, experimental)
     iterableObjectType (getter: InterfaceType)
-    listElement (getter: ClassElement)
-    listElement2 (getter: ClassElement2)
-    mapElement (getter: ClassElement)
-    mapElement2 (getter: ClassElement2)
+    listElement (getter: ClassElement, deprecated)
+    listElement2 (getter: ClassElement2, experimental)
+    mapElement (getter: ClassElement, deprecated)
+    mapElement2 (getter: ClassElement2, experimental)
     mapObjectObjectType (getter: InterfaceType)
     neverType (getter: NeverType)
-    nullElement (getter: ClassElement)
-    nullElement2 (getter: ClassElement2)
+    nullElement (getter: ClassElement, deprecated)
+    nullElement2 (getter: ClassElement2, experimental)
     nullType (getter: InterfaceType)
-    numElement (getter: ClassElement)
-    numElement2 (getter: ClassElement2)
+    numElement (getter: ClassElement, deprecated)
+    numElement2 (getter: ClassElement2, experimental)
     numType (getter: InterfaceType)
-    objectElement (getter: ClassElement)
-    objectElement2 (getter: ClassElement2)
+    objectElement (getter: ClassElement, deprecated)
+    objectElement2 (getter: ClassElement2, experimental)
     objectQuestionType (getter: InterfaceType)
     objectType (getter: InterfaceType)
-    recordElement (getter: ClassElement)
-    recordElement2 (getter: ClassElement2)
+    recordElement (getter: ClassElement, deprecated)
+    recordElement2 (getter: ClassElement2, experimental)
     recordType (getter: InterfaceType)
-    setElement (getter: ClassElement)
-    setElement2 (getter: ClassElement2)
+    setElement (getter: ClassElement, deprecated)
+    setElement2 (getter: ClassElement2, experimental)
     stackTraceType (getter: InterfaceType)
     streamDynamicType (getter: InterfaceType)
-    streamElement (getter: ClassElement)
-    streamElement2 (getter: ClassElement2)
-    stringElement (getter: ClassElement)
-    stringElement2 (getter: ClassElement2)
+    streamElement (getter: ClassElement, deprecated)
+    streamElement2 (getter: ClassElement2, experimental)
+    stringElement (getter: ClassElement, deprecated)
+    stringElement2 (getter: ClassElement2, experimental)
     stringType (getter: InterfaceType)
-    symbolElement (getter: ClassElement)
-    symbolElement2 (getter: ClassElement2)
+    symbolElement (getter: ClassElement, deprecated)
+    symbolElement2 (getter: ClassElement2, experimental)
     symbolType (getter: InterfaceType)
     typeType (getter: InterfaceType)
     voidType (getter: VoidType)
     futureOrType (method: InterfaceType Function(DartType))
     futureType (method: InterfaceType Function(DartType))
-    isNonSubtypableClass (method: bool Function(InterfaceElement))
+    isNonSubtypableClass (method: bool Function(InterfaceElement), deprecated)
     isNonSubtypableClass2 (method: bool Function(InterfaceElement2))
     isObjectGetter (method: bool Function(String))
     isObjectMember (method: bool Function(String))
@@ -4549,10 +4549,10 @@
     new (constructor: TypeSystem Function())
     flatten (method: DartType Function(DartType))
     greatestLowerBound (method: DartType Function(DartType, DartType))
-    instantiateInterfaceToBounds (method: InterfaceType Function({required InterfaceElement element, required NullabilitySuffix nullabilitySuffix}))
-    instantiateInterfaceToBounds2 (method: InterfaceType Function({required InterfaceElement2 element, required NullabilitySuffix nullabilitySuffix}))
-    instantiateTypeAliasToBounds (method: DartType Function({required TypeAliasElement element, required NullabilitySuffix nullabilitySuffix}))
-    instantiateTypeAliasToBounds2 (method: DartType Function({required TypeAliasElement2 element, required NullabilitySuffix nullabilitySuffix}))
+    instantiateInterfaceToBounds (method: InterfaceType Function({required InterfaceElement element, required NullabilitySuffix nullabilitySuffix}), deprecated)
+    instantiateInterfaceToBounds2 (method: InterfaceType Function({required InterfaceElement2 element, required NullabilitySuffix nullabilitySuffix}), experimental)
+    instantiateTypeAliasToBounds (method: DartType Function({required TypeAliasElement element, required NullabilitySuffix nullabilitySuffix}), deprecated)
+    instantiateTypeAliasToBounds2 (method: DartType Function({required TypeAliasElement2 element, required NullabilitySuffix nullabilitySuffix}), experimental)
     isAssignableTo (method: bool Function(DartType, DartType, {bool strictCasts}))
     isNonNullable (method: bool Function(DartType))
     isNullable (method: bool Function(DartType))
@@ -4943,8 +4943,8 @@
     lockLevel= (setter: int)
     source (getter: Source)
     atConstructorDeclaration (method: void Function(ConstructorDeclaration, ErrorCode, {List<Object>? arguments, List<DiagnosticMessage>? contextMessages, Object? data}))
-    atElement (method: void Function(Element, ErrorCode, {List<Object>? arguments, List<DiagnosticMessage>? contextMessages, Object? data}))
-    atElement2 (method: void Function(Element2, ErrorCode, {List<Object>? arguments, List<DiagnosticMessage>? contextMessages, Object? data}))
+    atElement (method: void Function(Element, ErrorCode, {List<Object>? arguments, List<DiagnosticMessage>? contextMessages, Object? data}), deprecated)
+    atElement2 (method: void Function(Element2, ErrorCode, {List<Object>? arguments, List<DiagnosticMessage>? contextMessages, Object? data}), experimental)
     atEntity (method: void Function(SyntacticEntity, ErrorCode, {List<Object>? arguments, List<DiagnosticMessage>? contextMessages, Object? data}))
     atNode (method: void Function(AstNode, ErrorCode, {List<Object>? arguments, List<DiagnosticMessage>? contextMessages, Object? data}))
     atOffset (method: void Function({List<Object>? arguments, List<DiagnosticMessage>? contextMessages, Object? data, required ErrorCode errorCode, required int length, required int offset}))
@@ -5315,10 +5315,10 @@
 package:analyzer/src/generated/engine.dart:
   AnalysisContext@2 (class extends Object):
     new (constructor: AnalysisContext@2 Function())
-    analysisOptions (getter: AnalysisOptions)
+    analysisOptions (getter: AnalysisOptions, deprecated)
     declaredVariables (getter: DeclaredVariables)
     sourceFactory (getter: SourceFactory)
-    getAnalysisOptionsForFile (method: AnalysisOptions Function(File))
+    getAnalysisOptionsForFile (method: AnalysisOptions Function(File), experimental)
 package:analyzer/src/generated/source.dart:
   SourceFactory (non-public)
 package:analyzer/src/generated/timestamped_data.dart:
diff --git a/pkg/analyzer/tool/api/generate.dart b/pkg/analyzer/tool/api/generate.dart
index cba9391c..44f5ac7 100644
--- a/pkg/analyzer/tool/api/generate.dart
+++ b/pkg/analyzer/tool/api/generate.dart
@@ -15,6 +15,7 @@
 import 'package:analyzer/dart/element/nullability_suffix.dart';
 import 'package:analyzer/dart/element/type.dart';
 import 'package:analyzer/file_system/physical_file_system.dart';
+import 'package:analyzer/src/utilities/extensions/element.dart';
 import 'package:analyzer_utilities/package_root.dart' as pkg_root;
 import 'package:analyzer_utilities/package_root.dart';
 import 'package:analyzer_utilities/tools.dart';
@@ -240,6 +241,7 @@
       }
       return;
     }
+    var parentheticals = <List<Object?>>[];
     switch (element) {
       case InstanceElement2():
         switch (element) {
@@ -248,39 +250,41 @@
               :var supertype,
               :var interfaces
             ):
-            node.text.add(switch (element) {
-              ClassElement2() => ' (class',
-              EnumElement2() => ' (enum',
-              MixinElement2() => ' (mixin',
-              dynamic(:var runtimeType) => ' (TODO: $runtimeType',
-            });
+            List<Object?> instanceDescription = [
+              switch (element) {
+                ClassElement2() => 'class',
+                EnumElement2() => 'enum',
+                MixinElement2() => 'mixin',
+                dynamic(:var runtimeType) => 'TODO: $runtimeType',
+              }
+            ];
             if (typeParameters2.isNotEmpty) {
-              node.text.addAll(typeParameters2
+              instanceDescription.addAll(typeParameters2
                   .map(_describeTypeParameter)
                   .separate(prefix: '<', suffix: '>'));
             }
             if (element is! EnumElement2 && supertype != null) {
-              node.text.addAll([' extends ', ..._describeType(supertype)]);
+              instanceDescription
+                  .addAll([' extends ', ..._describeType(supertype)]);
             }
             if (element is MixinElement2 &&
                 element.superclassConstraints.isNotEmpty) {
-              node.text.addAll(element.superclassConstraints
+              instanceDescription.addAll(element.superclassConstraints
                   .map(_describeType)
                   .separate(prefix: ' on '));
             }
             if (interfaces.isNotEmpty) {
-              node.text.addAll(interfaces
+              instanceDescription.addAll(interfaces
                   .map(_describeType)
                   .separate(prefix: ' implements '));
             }
-            node.text.add(')');
+            parentheticals.add(instanceDescription);
           case ExtensionElement2(:var extendedType):
-            node.text.addAll(
-                [' (extension on ', ..._describeType(extendedType), ')']);
+            parentheticals
+                .add(['extension on ', ..._describeType(extendedType)]);
           case dynamic(:var runtimeType):
             throw UnimplementedError('Unexpected element: $runtimeType');
         }
-        var publicMembersFound = false;
         for (var member in element.children2.sortedBy((m) => m.name3 ?? '')) {
           if (member.name3 case var name? when name.startsWith('_')) {
             // Ignore private members
@@ -303,43 +307,49 @@
             // so they aren't part of the public API.
             continue;
           }
-          if (!publicMembersFound) {
-            publicMembersFound = true;
-            node.text.add(':');
-          }
           var childNode = Node<MemberSortKey>();
           childNode.text.add(member.apiName);
           _dumpElement(member, childNode);
           node.childNodes.add((MemberSortKey(member), childNode));
         }
       case TopLevelFunctionElement(:var type):
-        node.text.addAll([' (function: ', ..._describeType(type), ')']);
+        parentheticals.add(['function: ', ..._describeType(type)]);
       case ExecutableElement2(:var isStatic):
         String maybeStatic = isStatic ? 'static ' : '';
         switch (element) {
           case GetterElement(:var type):
-            node.text.addAll([
-              ' (${maybeStatic}getter: ',
-              ..._describeType(type.returnType),
-              ')'
-            ]);
+            parentheticals.add(
+                ['${maybeStatic}getter: ', ..._describeType(type.returnType)]);
           case SetterElement(:var type):
-            node.text.addAll([
-              ' (${maybeStatic}setter: ',
-              ..._describeType(type.formalParameters.single.type),
-              ')'
+            parentheticals.add([
+              '${maybeStatic}setter: ',
+              ..._describeType(type.formalParameters.single.type)
             ]);
           case MethodElement2(:var type):
-            node.text.addAll(
-                [' (${maybeStatic}method: ', ..._describeType(type), ')']);
+            parentheticals
+                .add(['${maybeStatic}method: ', ..._describeType(type)]);
           case ConstructorElement2(:var type):
-            node.text.addAll([' (constructor: ', ..._describeType(type), ')']);
+            parentheticals.add(['constructor: ', ..._describeType(type)]);
           case dynamic(:var runtimeType):
             throw UnimplementedError('Unexpected element: $runtimeType');
         }
       case dynamic(:var runtimeType):
         throw UnimplementedError('Unexpected element: $runtimeType');
     }
+
+    if (element.metadata.any(_isDeprecated)) {
+      parentheticals.add(['deprecated']);
+    }
+    if (element.metadata.any(_isExperimental)) {
+      parentheticals.add(['experimental']);
+    }
+
+    if (parentheticals.isNotEmpty) {
+      node.text.addAll(parentheticals.separate(prefix: ' (', suffix: ')'));
+    }
+    if (node.childNodes.isNotEmpty) {
+      node.text.add(':');
+    }
   }
 
   /// Appends information to [node] describing [element].
@@ -359,6 +369,25 @@
       node.childNodes.add((MemberSortKey(element), childNode));
     }
   }
+
+  bool _isDeprecated(ElementAnnotation annotation) {
+    if (annotation.computeConstantValue()!.type
+        case InterfaceType(:var element3) when element3.name3 == 'Deprecated') {
+      return true;
+    } else {
+      return false;
+    }
+  }
+
+  bool _isExperimental(ElementAnnotation annotation) {
+    if (annotation.computeConstantValue()!.type
+        case InterfaceType(:var element3)
+        when element3.name3 == '_Experimental') {
+      return true;
+    } else {
+      return false;
+    }
+  }
 }
 
 /// Element categorization used by [MemberSortKey].