# Analyzing Dart

This is the table of contents for a set of tutorials that explain how to use the
analyzer package to analyze Dart source code.

## Pages

The following is a list of the pages available in this tutorial.

[Introduction][introduction] -
What capabilities does the analyzer package support?

[Performing Analysis][analysis]
How to set up the objects used to analyze code.

[The AST][ast]
What is an AST?

[The Element Model][element]
What is the element model?

[The Type Model][type]
What is the type model?

[analysis]: analysis.md
[ast]: ast.md
[element]: element.md
[introduction]: introduction.md
[type]: type.md
