The Go to Declaration or Usages action is performed in several steps.
Direct navigation is the navigation from
PsiElement to another
PsiElement, such as navigation from
break keyword to the end of a loop in Java, without showing any popups.
PsiElement for direct navigation, implement and register
If there is no Direct navigation available under the caret, then the IntelliJ Platform proceeds with
Symbol navigation. In this step the IntelliJ Platform computes the navigation targets based on target symbols, which it obtains by resolving a reference. If there are several target symbols or several navigation targets defined for a symbol, then the IDE shows the navigation popup to ask the user to choose where to go.
To provide navigation targets by a