# Overview

This section of the documentation discusses how the analysis server works and
how to enhance the various features provided by the server.

To learn how the server implements support for a specific feature, read one of
the following feature-specific documents:
- Call Hierarchy
- Closing Labels
- Code Completion
- Code Folding
- documentSymbol
- Flutter Outline
- Hovers
- Implemented Markers
- [Navigation](navigation.md)
- Occurrences
- Organize Imports
- Outline
- Overrides Markers
- [Quick Assists](quick_assist.md)
- [Quick Fixes](quick_fix.md)
- Refactorings - legacy
- Refactorings - self describing
- Search - Find References
- Search - Member Declarations
- Search - Member References
- Search - Top-level Declarations
- selectionRange
- Semantic Highlights
- signatureHelp
- Sort Members
- Type Hierarchy
