|  | // Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file | 
|  | // for details. All rights reserved. Use of this source code is governed by a | 
|  | // BSD-style license that can be found in the LICENSE file. | 
|  |  | 
|  | enum DeclarationKind { | 
|  | /// A top level declaration. | 
|  | TopLevel, | 
|  |  | 
|  | /// A class declaration. Not including a named mixin declaration. | 
|  | Class, | 
|  |  | 
|  | /// A mixin declaration. Not including a named mixin declaration. | 
|  | Mixin, | 
|  |  | 
|  | /// An extension declaration. | 
|  | Extension, | 
|  |  | 
|  | /// An extension type declaration. | 
|  | ExtensionType, | 
|  |  | 
|  | /// An enum. | 
|  | Enum, | 
|  | } | 
|  |  | 
|  | /// Enum to specify in which declaration a header occurs. | 
|  | enum DeclarationHeaderKind { | 
|  | /// Class declaration header, for instance `extends S with M implements I` in | 
|  | /// | 
|  | ///     class C extends S with M implements I {} | 
|  | /// | 
|  | Class, | 
|  |  | 
|  | /// Extension type declaration header, for instance `implements I` in | 
|  | /// | 
|  | ///     extension type E(T t) implements I {} | 
|  | /// | 
|  | ExtensionType, | 
|  | } |