boolean (@NotNull PsiElement place, @Nullable PsiElement lastParent, @NotNull PsiScopeProcessor processor, @NotNull PsiElement scope, @NotNull ResolveState state) { //state = ResolveState.initial(); if (scope instanceof GrTypeDefinition) { if (!processNonCodeMembers(createPsiType((GrTypeDefinition)scope), processor, place, state)) return false; //@Category(CategoryType) //class Scope {...} PsiClassType categoryType = GdkMethodUtil.getCategoryType((PsiClass)scope); if (categoryType != null) { if (!processNonCodeMembers(categoryType, processor, place, state)) return false; if (!GdkMethodUtil.processCategoryMethods(place, processor, state, (PsiClass)scope)) return false; } } if (scope instanceof GroovyFileBase && ((GroovyFileBase)scope).isScript()) { final PsiClass psiClass = ((GroovyFileBase)scope).getScriptClass(); if (psiClass != null) { if (!processNonCodeMembers(createPsiType(psiClass), processor, place, state)) return false; } } if (scope instanceof GrFunctionalExpression) { ResolveState _state = state.put(ClassHint.RESOLVE_CONTEXT, scope); if (!processNonCodeMembers(TypesUtil.createType(GROOVY_LANG_CLOSURE, scope), processor, place, _state)) return false; } if (scope instanceof GrStatementOwner) { if (!GdkMethodUtil.processMixinToMetaclass((GrStatementOwner)scope, processor, state, lastParent, place)) return false; GroovyInlineASTTransformationPerformer performer = GroovyInlineTransformationUtilKt.getHierarchicalInlineTransformationPerformer(scope); if (performer != null && !performer.processResolve(processor, state, place)) return false; } return true; }