// 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/ast/ast.dart
 * * package:analyzer/dart/ast/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.ast;

export 'package:analyzer/dart/ast/ast.dart';
export 'package:analyzer/dart/ast/visitor.dart';
export 'package:analyzer/src/dart/ast/utilities.dart';
