// Copyright (c) 2014, 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.

/// This library is deprecated. Please convert all references to this library to
/// reference one of the following public libraries:
/// * package:analyzer/dart/element/element.dart
/// * package:analyzer/dart/element/type.dart
/// * package:analyzer/dart/element/visitor.dart
///
/// If your code is using APIs not available in these public libraries, please
/// contact the analyzer team to either find an alternate API or have the API
/// you depend on added to the public API.
@deprecated
library analyzer.src.generated.element;

export 'package:analyzer/dart/element/element.dart';
export 'package:analyzer/dart/element/type.dart';
export 'package:analyzer/dart/element/visitor.dart';
export 'package:analyzer/src/dart/element/element.dart';
export 'package:analyzer/src/dart/element/member.dart';
export 'package:analyzer/src/dart/element/type.dart';
