# Best base class for references code vision?

**URL:** <https://platform.jetbrains.com/t/best-base-class-for-references-code-vision/5040>\
**Category:** IntelliJ Platform\
**Created:** [September 10, 2026, 10:32am UTC](https://platform.jetbrains.com/t/best-base-class-for-references-code-vision/5040 "2026-09-10T10:32:41Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![jansorg](https://sea1.discourse-cdn.com/flex001/user_avatar/platform.jetbrains.com/jansorg/32/52_2.png) [@jansorg](https://platform.jetbrains.com/u/jansorg)\
**Post date:** [September 10, 2026, 10:32am UTC](https://platform.jetbrains.com/t/best-base-class-for-references-code-vision/5040/1 "2026-09-10T10:32:41Z")

</div>

I was looking at adding “ usages” next to function/method declarations.

In intellij-community, the existing implementations (Java and Kotlin) moved from base class `ReferencesCodeVisionProvider` to `RenameAwareReferencesCodeVisionProvider`.

But in 2026.2, `RenameAwareReferencesCodeVisionProvider` was made `@Internal`.  
The [documentation page](https://plugins.jetbrains.com/docs/intellij/inlay-hints.html?q=code%20vision&s=full#inlay-hints-provider) does not yet cover this.

What is the recommendation to implement “ usages” code vision?

---

<div class="post-metadata">

**Author:** ![vojtech.balik](https://sea1.discourse-cdn.com/flex001/user_avatar/platform.jetbrains.com/vojtech.balik/32/187_2.png) [@vojtech.balik](https://platform.jetbrains.com/u/vojtech.balik)\
**Post date:** [September 10, 2026, 12:39pm UTC](https://platform.jetbrains.com/t/best-base-class-for-references-code-vision/5040/3 "2026-09-10T12:39:30Z")

</div>

Hello, TL;DR is: it is better to use `ReferencesCodeVisionProvider`.

This base class is a `DaemonBoundCodeVisionProvider` which “[should be used in cases when code vision entries are related to PSI, so that calculated values are invalidated and recalculated on PSI changes](https://plugins.jetbrains.com/docs/intellij/inlay-hints.html?_gl=1%2A1lfj8nq%2A_gcl_au%2AMTA3NTg5ODU3Ni4xNzg4OTYyMzg2%2AFPAU%2AMTA3NTg5ODU3Ni4xNzg4OTYyMzg2%2A_ga%2AOTg1Mjk3OTg0LjE3NDEwMTk1OTc.%2A_ga_9J976DJZ68%2AczE3ODkwNDE2NzUkbzQ3NiRnMSR0MTc4OTA0MTgyOSRqNTQkbDAkaDA.#code-vision-provider)”, so unless your case does not fit that, please use `ReferencesCodeVisionProvider`.

`RenameAwareReferencesCodeVisionProvider` is a workaround to solve some UX awkwardness when interacting with the [suggested refactoring feature](https://github.com/JetBrains/intellij-community/blob/master/platform/lang-api/src/com/intellij/refactoring/suggested/SuggestedRefactoringSupport.kt), but this approach has caused us headaches ([`CodeVisionProvider`](https://github.com/JetBrains/intellij-community/tree/idea/262.8665.337/platform/lang-impl/src/com/intellij/codeInsight/codeVision/CodeVisionProvider.kt) is tricky to use correctly) and we might reconsider it.

---

<div class="post-metadata">

**Author:** ![jansorg](https://sea1.discourse-cdn.com/flex001/user_avatar/platform.jetbrains.com/jansorg/32/52_2.png) [@jansorg](https://platform.jetbrains.com/u/jansorg)\
**Post date:** [September 10, 2026, 12:56pm UTC](https://platform.jetbrains.com/t/best-base-class-for-references-code-vision/5040/4 "2026-09-10T12:56:00Z")

</div>

Thank for your reply, I’ll stick with the `ReferencesCodeVisionProvider`. The python implementation in intellij-community seems decent enough to get it right with a proven pattern.
