---
title: 7. Annotator
---
An `Annotator` helps highlight and annotate any code based on specific rules.
This section adds annotation functionality to support the Simple Language in the context of Java code.
**Reference**: [Annotator](/reference_guide/custom_language_support/syntax_highlighting_and_error_highlighting.md#annotator)
* bullet list
{:toc}
## Required Project Configuration Changes
Classes defined in this step of the tutorial depend on `com.intellij.psi.PsiLiteralExpression` at runtime.
Using `PsiLiteralExpression` [introduces a dependency](/basics/getting_started/plugin_compatibility.md#modules-specific-to-functionality) on `com.intellij.modules.java`.
Beginning in version 2019.2 of the IntelliJ Platform these dependencies are declared in `plugin.xml`:
```xml
com.intellij.modules.java
```
The dependency is also declared in the `build.gradle` file:
```groovy
intellij {
plugins = ['java']
}
```
## 7.1. Define an Annotator
The `SimpleAnnotator` subclasses [`Annotator`](upsource:///platform/analysis-api/src/com/intellij/lang/annotation/Annotator.java).
Consider a literal string that starts with "simple:" as a prefix of a Simple Language key.
It isn't part of the Simple Language, but it is a useful convention for detecting Simple Language keys embedded as string literals in other languages, like Java.
Annotate the `simple:key` literal expression, and differentiate between a well-formed vs. an unresolved property:
```java
{% include /code_samples/simple_language_plugin/src/main/java/org/intellij/sdk/language/SimpleAnnotator.java %}
```
> **Tip** If the above code is copied at this stage of the tutorial, then remove the line below the comment "** Tutorial step 18.3 …" The quick fix class in that line is not defined until later in the tutorial.
## 7.2. Register the Annotator
Using the `com.intellij.annotator` extension point in the plugin configuration file, register the Simple Language annotator class with the IntelliJ Platform:
```xml
```
## 7.3. Run the Project
As a test, define the following Java file containing a Simple Language `prefix:value` pair:
```java
public class Test {
public static void main(String[] args) {
System.out.println("simple:website");
}
}
```
Open this Java file in an IDE Development Instance running the `simple_language_plugin` to check if the IDE resolves a property:
{:width="800px"}
If the property is an undefined name, the annotator flags the code with an error.
{:width="800px"}
Try changing the Simple Language [color settings](/tutorials/custom_language_support/syntax_highlighter_and_color_settings_page.md#run-the-project-1) to differentiate the annotation from the default language color settings.