boolean (GrStatementOwner run, final PsiScopeProcessor processor, ResolveState state, PsiElement lastParent, PsiElement place) { if (!ResolveUtilKt.shouldProcessMethods(processor)) return true; GrStatement[] statements = run.getStatements(); for (GrStatement statement : statements) { if (statement == lastParent) break; final MixinInfo result = getMixinTypes(statement); if (result != null) { final PsiClassType subjectType = result.subjectType; final GrReferenceExpression qualifier = result.ref; final PsiClass mixin = result.mixin; for (PsiScopeProcessor each : MultiProcessor.allProcessors(processor)) { if (!mixin.processDeclarations(new MixinMemberContributor.MixinProcessor(each, subjectType, qualifier), state, null, place)) { return false; } } } else { Trinity<PsiClassType, GrReferenceExpression, List<GrMethod>> closureResult = getClosureMixins(statement); if (closureResult != null) { final PsiClassType subjectType = closureResult.first; final GrReferenceExpression qualifier = closureResult.second; final List<GrMethod> methods = closureResult.third; final DelegatingScopeProcessor delegate = new MixinMemberContributor.MixinProcessor(processor, subjectType, qualifier); for (GrMethod method : methods) { ResolveUtil.processElement(delegate, method, state); } } } } return true; }