// 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';
