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

library tree;

import 'dart:collection';

import '../diagnostics/spannable.dart' show
    Spannable,
    SpannableAssertionFailure;
import '../tokens/precedence_constants.dart' as Precedence show
    FUNCTION_INFO;
import '../tokens/token.dart' show
    BeginGroupToken,
    Token;
import '../tokens/token_constants.dart' as Tokens show
    IDENTIFIER_TOKEN,
    KEYWORD_TOKEN,
    PLUS_TOKEN;
import '../util/util.dart';
import '../util/characters.dart';

import '../resolution/secret_tree_element.dart'
    show StoredTreeElementMixin, NullTreeElementMixin;

import '../elements/elements.dart' show MetadataAnnotation;

part 'dartstring.dart';
part 'nodes.dart';
part 'prettyprint.dart';
part 'unparser.dart';
