# AnnotatedElementsSearch for kotlin files triggers AST loading

**URL:** <https://platform.jetbrains.com/t/annotatedelementssearch-for-kotlin-files-triggers-ast-loading/3043>\
**Category:** IntelliJ Platform\
**Tags:** plugin-development\
**Created:** [November 3, 2025, 8:43pm UTC](https://platform.jetbrains.com/t/annotatedelementssearch-for-kotlin-files-triggers-ast-loading/3043 "2025-11-03T20:43:37Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![GreenBudgie](https://sea1.discourse-cdn.com/flex001/user_avatar/platform.jetbrains.com/greenbudgie/32/1475_2.png) [@GreenBudgie](https://platform.jetbrains.com/u/GreenBudgie)\
**Post date:** [November 3, 2025, 8:43pm UTC](https://platform.jetbrains.com/t/annotatedelementssearch-for-kotlin-files-triggers-ast-loading/3043/1 "2025-11-03T20:43:37Z")

</div>

Hello! I am trying to find all PsiClasses annotated with spring `@Service` annotation:

```auto
val serviceAnnotation = JavaPsiFacade.getInstance(project).findClass(
    "org.springframework.stereotype.Service",
    scope
) ?: return emptyMap()
val serviceClasses = AnnotatedElementsSearch.searchPsiClasses(serviceAnnotation, scope)

```

I run it in tests. This search works fine for java classes, but as soon as it encounters a kotlin class, I get an error:

> **Stacktrace**
>
> Access to tree elements not allowed for ‘/Users/nbundin/.m2/repository/com/solanteq/solar/solar-commons/3.4.9.1.RELEASE/solar-commons-3.4.9.1.RELEASE.jar!/com/solanteq/solar/commons/l10n/service/impl/L10nPluralizeServiceImpl.class’.  
> Try using stub-based PSI API to avoid expensive AST loading for files that aren’t already opened in the editor.  
> Consult this method’s javadoc for more details.  
> java.lang.Throwable: Access to tree elements not allowed for ‘/Users/nbundin/.m2/repository/com/solanteq/solar/solar-commons/3.4.9.1.RELEASE/solar-commons-3.4.9.1.RELEASE.jar!/com/solanteq/solar/commons/l10n/service/impl/L10nPluralizeServiceImpl.class’.  
> Try using stub-based PSI API to avoid expensive AST loading for files that aren’t already opened in the editor.  
> Consult this method’s javadoc for more details.  
> at com.intellij.openapi.diagnostic.Logger.error(Logger.java:375)  
> at com.intellij.psi.impl.source.PsiFileImpl.reportProhibitedAstAccess(PsiFileImpl.java:265)  
> at com.intellij.psi.impl.source.PsiFileImpl.loadTreeElement(PsiFileImpl.java:213)  
> at com.intellij.psi.impl.source.PsiFileImpl.calcTreeElement(PsiFileImpl.java:844)  
> at com.intellij.extapi.psi.StubBasedPsiElementBase.getNode(StubBasedPsiElementBase.java:133)  
> at com.intellij.extapi.psi.ASTDelegatePsiElement.getText(ASTDelegatePsiElement.java:136)  
> at org.jetbrains.kotlin.resolve.TypeResolver$resolveTypeElement$1.visitUserType(TypeResolver.kt:264)  
> at org.jetbrains.kotlin.psi.KtVisitorVoid.visitUserType(KtVisitorVoid.java:943)  
> at org.jetbrains.kotlin.psi.KtVisitorVoid.visitUserType(KtVisitorVoid.java:21)  
> at org.jetbrains.kotlin.psi.KtUserType.accept(KtUserType.java:42)  
> at org.jetbrains.kotlin.psi.KtElementImplStub.accept(KtElementImplStub.java:49)  
> at org.jetbrains.kotlin.resolve.TypeResolver.resolveTypeElement(TypeResolver.kt:257)  
> at org.jetbrains.kotlin.resolve.TypeResolver.resolvePossiblyBareType(TypeResolver.kt:136)  
> at org.jetbrains.kotlin.resolve.TypeResolver.resolveType(TypeResolver.kt:126)  
> at org.jetbrains.kotlin.resolve.TypeResolver.resolveType(TypeResolver.kt:97)  
> at org.jetbrains.kotlin.resolve.AnnotationResolverImpl.resolveAnnotationType(AnnotationResolverImpl.java:128)  
> at org.jetbrains.kotlin.resolve.lazy.descriptors.LazyAnnotationDescriptor.type\_delegate$lambda$3(LazyAnnotations.kt:83)  
> at org.jetbrains.kotlin.storage.LockBasedStorageManager$LockBasedLazyValue.invoke(LockBasedStorageManager.java:408)  
> at org.jetbrains.kotlin.storage.LockBasedStorageManager$LockBasedNotNullLazyValue.invoke(LockBasedStorageManager.java:527)  
> at org.jetbrains.kotlin.storage.StorageKt.getValue(storage.kt:42)  
> at org.jetbrains.kotlin.resolve.lazy.descriptors.LazyAnnotationDescriptor.getType(LazyAnnotations.kt:81)  
> at org.jetbrains.kotlin.resolve.lazy.descriptors.LazyAnnotationDescriptor.forceResolveAllContents(LazyAnnotations.kt:137)  
> at org.jetbrains.kotlin.resolve.lazy.ForceResolveUtil.doForceResolveAllContents(ForceResolveUtil.java:78)  
> at org.jetbrains.kotlin.resolve.lazy.ForceResolveUtil.forceResolveAllContents(ForceResolveUtil.java:69)  
> at org.jetbrains.kotlin.idea.project.ResolveElementCache.doResolveAnnotations(ResolveElementCache.kt:585)  
> at org.jetbrains.kotlin.idea.project.ResolveElementCache.annotationAdditionalResolve(ResolveElementCache.kt:570)  
> at org.jetbrains.kotlin.idea.project.ResolveElementCache.performElementAdditionalResolve(ResolveElementCache.kt:497)  
> at org.jetbrains.kotlin.idea.project.ResolveElementCache.getElementsAdditionalResolve(ResolveElementCache.kt:188)  
> at org.jetbrains.kotlin.idea.project.ResolveElementCache.getElementsAdditionalResolve(ResolveElementCache.kt:195)  
> at org.jetbrains.kotlin.idea.project.ResolveElementCache.getElementsAdditionalResolve(ResolveElementCache.kt:143)  
> at org.jetbrains.kotlin.idea.project.ResolveElementCache.resolveToElements(ResolveElementCache.kt:311)  
> at org.jetbrains.kotlin.idea.caches.resolve.ModuleResolutionFacadeImpl.analyze$lambda$6(ModuleResolutionFacadeImpl.kt:71)  
> at com.intellij.openapi.progress.impl.CancellationCheck.withCancellationCheck(CancellationCheck.kt:59)  
> at com.intellij.openapi.progress.impl.CancellationCheck$Companion.runWithCancellationCheck(CancellationCheck.kt:105)  
> at org.jetbrains.kotlin.idea.util.application.ApplicationUtilsKt.runWithCancellationCheck(ApplicationUtils.kt:64)  
> at org.jetbrains.kotlin.idea.caches.resolve.ModuleResolutionFacadeImpl.analyze(ModuleResolutionFacadeImpl.kt:70)  
> at org.jetbrains.kotlin.idea.caches.resolve.ResolutionFacadeWithDebugInfo.analyze(ResolutionFacadeWithDebugInfo.kt:49)  
> at org.jetbrains.kotlin.base.fe10.analysis.IdeFe10AnalysisFacade.analyze(IdeFe10AnalysisFacade.kt:94)  
> at org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisFacade.analyze(Fe10AnalysisFacade.kt:41)  
> at org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext.analyze(Fe10AnalysisFacade.kt)  
> at org.jetbrains.kotlin.analysis.api.descriptors.components.KaFe10Resolver.doResolveCall(KaFe10Resolver.kt:127)  
> at org.jetbrains.kotlin.analysis.api.impl.base.components.KaBaseResolver.resolveToCall(KaBaseResolver.kt:32)  
> at org.jetbrains.kotlin.analysis.api.impl.base.KaBaseSession.resolveToCall(KaBaseSession.kt)  
> at org.jetbrains.kotlin.idea.base.searching.KotlinAnnotatedElementsSearcher$Companion.processAnnotatedMembers$lambda$6(KotlinAnnotatedElementsSearcher.kt:140)  
> at com.intellij.openapi.application.ActionsKt.runReadAction$lambda$3(actions.kt:25)  
> at com.intellij.platform.locking.impl.NestedLocksThreadingSupport.runReadAction(NestedLocksThreadingSupport.kt:784)  
> at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:1038)  
> at com.intellij.openapi.application.ActionsKt.runReadAction(actions.kt:25)  
> at org.jetbrains.kotlin.idea.base.searching.KotlinAnnotatedElementsSearcher$Companion.processAnnotatedMembers(KotlinAnnotatedElementsSearcher.kt:123)  
> at org.jetbrains.kotlin.idea.base.searching.KotlinAnnotatedElementsSearcher$Companion.processAnnotatedMembers$default(KotlinAnnotatedElementsSearcher.kt:108)  
> at org.jetbrains.kotlin.idea.base.searching.KotlinAnnotatedElementsSearcher.execute(KotlinAnnotatedElementsSearcher.kt:47)  
> at org.jetbrains.kotlin.idea.base.searching.KotlinAnnotatedElementsSearcher.execute(KotlinAnnotatedElementsSearcher.kt:44)  
> at com.intellij.util.ExecutorsQuery.processResults(ExecutorsQuery.java:31)  
> at com.intellij.util.AbstractQuery.doProcessResults(AbstractQuery.java:84)  
> at com.intellij.util.AbstractQuery.delegateProcessResults(AbstractQuery.java:101)  
> at com.intellij.util.InstanceofQuery.processResults(InstanceofQuery.java:22)  
> at com.intellij.util.AbstractQuery.doProcessResults(AbstractQuery.java:84)  
> at com.intellij.util.AbstractQuery.forEach(AbstractQuery.java:76)  
> at com.intellij.util.AbstractQuery.findAll(AbstractQuery.java:25)  
> at com.intellij.util.Query.asIterable(Query.kt:140)  
> at com.intellij.util.Query.iterator(Query.kt:153)  
> at com.intellij.util.AbstractQuery.iterator(AbstractQuery.java:35)  
> at com.solanteq.solar.plugin.callable.CallableServiceSearch.doFindAllServices(CallableServiceSearch.kt:104)  
> at com.solanteq.solar.plugin.callable.CallableServiceSearch.findAllServices$lambda$0(CallableServiceSearch.kt:32)  
> at com.intellij.psi.impl.AbstractPsiCachedValue.doCompute(PsiCachedValueImpl.kt:21)  
> at com.intellij.util.CachedValueBase.lambda$getValueWithLock$3(CachedValueBase.java:299)  
> at com.intellij.util.CachedValueBase.computeData(CachedValueBase.java:37)  
> at com.intellij.util.CachedValueBase.lambda$getValueWithLock$4(CachedValueBase.java:299)  
> at com.intellij.openapi.util.RecursionManager$1.computePreventingRecursion(RecursionManager.java:113)  
> at com.intellij.openapi.util.RecursionGuard.doPreventingRecursion(RecursionGuard.java:28)  
> at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:68)  
> at com.intellij.util.CachedValueBase.getValueWithLock(CachedValueBase.java:300)  
> at com.intellij.psi.impl.AbstractPsiCachedValue.getValue(PsiCachedValueImpl.kt:15)  
> at com.intellij.util.CachedValuesManagerImpl.getCachedValue(CachedValuesManagerImpl.java:83)  
> at com.solanteq.solar.plugin.callable.CallableServiceSearch.findAllServices(CallableServiceSearch.kt:27)  
> at com.solanteq.solar.plugin.callable.CallableServiceSearch.findService(CallableServiceSearch.kt:65)  
> at com.solanteq.solar.plugin.form.common.element.request.FormRequestData.referencedService\_delegate$lambda$0(FormRequestData.kt:79)  
> at kotlin.SafePublicationLazyImpl.getValue(LazyJVM.kt:125)  
> at com.solanteq.solar.plugin.form.common.element.request.FormRequestData.getReferencedService(FormRequestData.kt:76)  
> at com.solanteq.solar.plugin.form.common.inspection.InvalidRequestInspection.registerProblem(InvalidRequestInspection.kt:38)  
> at com.solanteq.solar.plugin.form.common.inspection.InvalidRequestInspection$JsonVisitor.visitProperty(InvalidRequestInspection.kt:89)  
> at com.intellij.json.psi.impl.JsonPropertyImpl.accept(JsonPropertyImpl.java:21)  
> at com.intellij.json.psi.impl.JsonPropertyImpl.accept(JsonPropertyImpl.java:26)  
> at com.intellij.codeInsight.daemon.impl.InspectionRunner$InspectionProblemHolder.visitElement(InspectionRunner.java:609)  
> at com.intellij.codeInsight.daemon.impl.InspectionRunner.lambda$processContext$19(InspectionRunner.java:414)  
> at com.intellij.codeInsight.daemon.impl.InspectionVisitorOptimizer.acceptElements(InspectionVisitorOptimizer.java:217)  
> at com.intellij.codeInsight.daemon.impl.InspectionRunner.processContext(InspectionRunner.java:412)  
> at com.intellij.codeInsight.daemon.impl.InspectionRunner.lambda$inspect$7(InspectionRunner.java:179)  
> at com.intellij.platform.locking.impl.NestedLocksThreadingSupport.tryRunReadAction(NestedLocksThreadingSupport.kt:826)  
> at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1221)  
> at com.intellij.codeInsight.daemon.impl.InspectionRunner.lambda$executeInImpatientReadAction$15(InspectionRunner.java:387)  
> at com.intellij.openapi.application.impl.ApplicationImpl.executeByImpatientReader(ApplicationImpl.java:258)  
> at com.intellij.codeInsight.daemon.impl.InspectionRunner.lambda$executeInImpatientReadAction$16(InspectionRunner.java:386)  
> at com.intellij.util.AstLoadingFilter.forceAllowTreeLoading(AstLoadingFilter.java:158)  
> at com.intellij.util.AstLoadingFilter.forceAllowTreeLoading(AstLoadingFilter.java:150)  
> at com.intellij.codeInsight.daemon.impl.InspectionRunner.lambda$executeInImpatientReadAction$17(InspectionRunner.java:384)  
> at com.intellij.util.AstLoadingFilter.disallowTreeLoading(AstLoadingFilter.java:129)  
> at com.intellij.util.AstLoadingFilter.disallowTreeLoading(AstLoadingFilter.java:118)  
> at com.intellij.codeInsight.daemon.impl.InspectionRunner.executeInImpatientReadAction(InspectionRunner.java:384)  
> at com.intellij.codeInsight.daemon.impl.InspectionRunner.lambda$inspect$8(InspectionRunner.java:173)  
> at com.intellij.concurrency.JobLauncherImpl.lambda$processImmediatelyIfTooFew$6(JobLauncherImpl.java:221)  
> at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$14(CoreProgressManager.java:681)  
> at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:756)  
> at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:712)  
> at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:680)  
> at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:78)  
> at com.intellij.concurrency.JobLauncherImpl.lambda$processImmediatelyIfTooFew$7(JobLauncherImpl.java:218)  
> at com.intellij.openapi.application.impl.AppImplKt$runnableUnitFunction$1.invoke(appImpl.kt:104)  
> at com.intellij.openapi.application.impl.AppImplKt$runnableUnitFunction$1.invoke(appImpl.kt:104)  
> at com.intellij.platform.locking.impl.NestedLocksThreadingSupport.runReadAction(NestedLocksThreadingSupport.kt:784)  
> at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:1033)  
> at com.intellij.concurrency.JobLauncherImpl.processImmediatelyIfTooFew(JobLauncherImpl.java:228)  
> at com.intellij.concurrency.JobLauncherImpl.invokeConcurrentlyUnderProgressAsync(JobLauncherImpl.java:66)  
> at com.intellij.concurrency.JobLauncherImpl.processConcurrentlyAsync(JobLauncherImpl.java:466)  
> at com.intellij.codeInsight.daemon.impl.InspectionRunner.lambda$inspect$11(InspectionRunner.java:190)  
> at com.intellij.codeInspection.InspectionEngine.withSession(InspectionEngine.java:251)  
> at com.intellij.codeInsight.daemon.impl.InspectionRunner.inspect(InspectionRunner.java:147)  
> at com.intellij.codeInsight.daemon.impl.LocalInspectionsPass.lambda$collectInformationWithProgress$4(LocalInspectionsPass.java:147)  
> at com.intellij.codeInsight.daemon.impl.HighlightInfoUpdaterImpl.lambda$runWithInvalidPsiRecycler$42(HighlightInfoUpdaterImpl.java:889)  
> at com.intellij.codeInsight.daemon.impl.ManagedHighlighterRecycler.runWithRecycler(ManagedHighlighterRecycler.java:87)  
> at com.intellij.codeInsight.daemon.impl.HighlightInfoUpdaterImpl.runWithInvalidPsiRecycler(HighlightInfoUpdaterImpl.java:870)  
> at com.intellij.codeInsight.daemon.impl.LocalInspectionsPass.collectInformationWithProgress(LocalInspectionsPass.java:159)  
> at com.intellij.codeInsight.daemon.impl.ProgressableTextEditorHighlightingPass.doCollectInformation(ProgressableTextEditorHighlightingPass.java:92)  
> at com.intellij.codeHighlighting.TextEditorHighlightingPass.collectInformation(TextEditorHighlightingPass.java:71)  
> at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$doRun$2(PassExecutorService.java:435)  
> at com.intellij.platform.diagnostic.telemetry.helpers.TraceKt.use(trace.kt:29)  
> at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$doRun$3(PassExecutorService.java:431)  
> at com.intellij.platform.locking.impl.NestedLocksThreadingSupport.tryRunReadAction(NestedLocksThreadingSupport.kt:826)  
> at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1221)  
> at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$doRun$4(PassExecutorService.java:421)  
> at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$14(CoreProgressManager.java:681)  
> at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:756)  
> at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:712)  
> at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:680)  
> at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:78)  
> at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.doRun(PassExecutorService.java:420)  
> at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$run$0(PassExecutorService.java:395)  
> at com.intellij.openapi.fileTypes.impl.FileTypeManagerImpl.cacheFileTypesInside(FileTypeManagerImpl.java:852)  
> at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$run$1(PassExecutorService.java:395)  
> at com.intellij.openapi.application.impl.ApplicationImpl.executeByImpatientReader(ApplicationImpl.java:258)  
> at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.run(PassExecutorService.java:393)  
> at com.intellij.concurrency.JobLauncherImpl$VoidForkJoinTask$1.exec(JobLauncherImpl.java:265)  
> at java.base/java.util.concurrent.ForkJoinTask.doExec$$$capture(ForkJoinTask.java:507)  
> at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java)  
> at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1491)  
> at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:2073)  
> at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:2035)  
> at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:187)

I don’t think that this search should parse AST in the first place. I can get a FQ name from `ClsAnnotationImpl` without triggering AST parsing, but this search does it anyway.

Is there a way to find annotated elements without parsing AST for kotlin files? Or maybe this is a bug?

---

<div class="post-metadata">

**Author:** ![yuriy.artamonov](https://sea1.discourse-cdn.com/flex001/user_avatar/platform.jetbrains.com/yuriy.artamonov/32/48_2.png) [@yuriy.artamonov](https://platform.jetbrains.com/u/yuriy.artamonov)\
**Post date:** [November 5, 2025, 10:49am UTC](https://platform.jetbrains.com/t/annotatedelementssearch-for-kotlin-files-triggers-ast-loading/3043/2 "2025-11-05T10:49:54Z")

</div>

> [@GreenBudgie](#):
>
> I don’t think that this search should parse AST in the first place.

There is no such guarantee that it will not parse AST

---

<div class="post-metadata">

**Author:** ![GreenBudgie](https://sea1.discourse-cdn.com/flex001/user_avatar/platform.jetbrains.com/greenbudgie/32/1475_2.png) [@GreenBudgie](https://platform.jetbrains.com/u/GreenBudgie)\
**Post date:** [November 5, 2025, 1:49pm UTC](https://platform.jetbrains.com/t/annotatedelementssearch-for-kotlin-files-triggers-ast-loading/3043/3 "2025-11-05T13:49:39Z")

</div>

I found `isApproximate` parameter in `AnnotatedElementsSearch.Parameters`. But it doesn’t work for kotlin, unfortunately.

I’ve decided to just lean into using annotation short names from stubs and wrote my own searcher. So, this issue is kinda solved.

Thanks!

---

<div class="post-metadata">

**Author:** ![GreenBudgie](https://sea1.discourse-cdn.com/flex001/user_avatar/platform.jetbrains.com/greenbudgie/32/1475_2.png) [@GreenBudgie](https://platform.jetbrains.com/u/GreenBudgie)\
**Post date:** [November 5, 2025, 2:57pm UTC](https://platform.jetbrains.com/t/annotatedelementssearch-for-kotlin-files-triggers-ast-loading/3043/4 "2025-11-05T14:57:21Z")

</div>

Actually, I would still like to know if there any way to find annotated classes by annotation qualified name, without triggering AST parsing. I need it in a lot of places. For example, how can I find a spring “@Service(““)” bean class with the specified ? It always throws “Access to tree elements not allowed for“ if I try to evaluate the parameter value or annotation qualified name for kotlin classes. Or, maybe, in this case parsing the AST is actually fine?

---

<div class="post-metadata">

**Author:** ![yuriy.artamonov](https://sea1.discourse-cdn.com/flex001/user_avatar/platform.jetbrains.com/yuriy.artamonov/32/48_2.png) [@yuriy.artamonov](https://platform.jetbrains.com/u/yuriy.artamonov)\
**Post date:** [February 3, 2026, 10:12am UTC](https://platform.jetbrains.com/t/annotatedelementssearch-for-kotlin-files-triggers-ast-loading/3043/5 "2026-02-03T10:12:35Z")

</div>

> [@GreenBudgie](#):
>
> Access to tree elements not allowed for

Is it only in tests? For such cases you can allow tree access instead of fighting it
