private boolean processDeclarationsForMultipleElements( @NotNull final PsiScopeProcessor processor, @Nullable PsiElement lastParent, @NotNull PsiElement place, @NotNull ResolveState state) { GrCodeReferenceElement ref = getImportReference(); if (ref == null) return true; if (isStatic()) { final PsiElement resolved = ref.resolve(); if (resolved instanceof PsiClass) { state = state.put(ClassHint.RESOLVE_CONTEXT, this); final PsiClass clazz = (PsiClass) resolved; for (final PsiScopeProcessor each : GroovyResolverProcessor.allProcessors(processor)) { if (!clazz.processDeclarations( new DelegatingScopeProcessor(each) { @Override public boolean execute(@NotNull PsiElement element, @NotNull ResolveState state) { if (element instanceof PsiMember && ((PsiMember) element).hasModifierProperty(PsiModifier.STATIC)) { return super.execute(element, state); } return true; } }, state, lastParent, place)) return false; } } } else { if (ResolveUtil.shouldProcessClasses(processor.getHint(ElementClassHint.KEY))) { String qName = PsiUtil.getQualifiedReferenceText(ref); if (qName != null) { PsiPackage aPackage = JavaPsiFacade.getInstance(getProject()).findPackage(qName); if (aPackage != null && !((GroovyFile) getContainingFile()) .getPackageName() .equals(aPackage.getQualifiedName())) { state = state.put(ClassHint.RESOLVE_CONTEXT, this); if (!aPackage.processDeclarations(processor, state, lastParent, place)) return false; } } } } return true; }
private boolean processSingleStaticImport( @NotNull final PsiScopeProcessor processor, @NotNull ResolveState state, @NotNull String importedName, @Nullable PsiElement lastParent, @NotNull PsiElement place) { final GrCodeReferenceElement ref = getImportReference(); if (ref == null) return true; PsiClass clazz = resolveQualifier(); if (clazz == null) return true; state = state.put(ClassHint.RESOLVE_CONTEXT, this); final String refName = ref.getReferenceName(); for (PsiScopeProcessor each : GroovyResolverProcessor.allProcessors(processor)) { if (!doProcessSingleStaticImport( each, state, importedName, lastParent, place, clazz, refName)) return false; } return true; }