boolean ( @NotNull PsiClassType psiType, @NotNull PsiElement place, @NotNull PairProcessor<? super CustomMembersHolder, ? super GroovyClassDescriptor> processor ) { if (insideAnnotation(place)) { // Basic filter, all DSL contexts are applicable for reference expressions only return true; } final PsiFile placeFile = place.getContainingFile().getOriginalFile(); final PsiClass psiClass = psiType.resolve(); if (psiClass == null) { return true; } for (GroovyDslScript script : getDslScripts(placeFile.getProject())) { GroovyClassDescriptor descriptor = new GroovyClassDescriptor(psiType, psiClass, place, placeFile); CustomMembersHolder holder = script.processExecutor(descriptor); VirtualFile origin = script.getFile(); if (origin != null) { holder = new OriginAwareMembersHolder(origin, holder); } if (!processor.process(holder, descriptor)) { return false; } } return true; }