@Override public boolean execute(@NotNull PsiElement element, @NotNull ResolveState state) { if (myStopExecuting) { return false; } if (element instanceof PsiMethod) { PsiMethod method = (PsiMethod) element; if (method.isConstructor() != myIsConstructor) return true; PsiSubstitutor substitutor = inferSubstitutor(method, state); PsiElement resolveContext = state.get(RESOLVE_CONTEXT); final SpreadState spreadState = state.get(SpreadState.SPREAD_STATE); boolean isAccessible = isAccessible(method); boolean isStaticsOK = isStaticsOK(method, resolveContext, false); boolean isApplicable = PsiUtil.isApplicable(myArgumentTypes, method, substitutor, myPlace, myByShape); boolean isValidResult = isStaticsOK && isAccessible && isApplicable; GroovyResolveResultImpl candidate = new GroovyResolveResultImpl( method, resolveContext, spreadState, substitutor, isAccessible, isStaticsOK, false, isValidResult); if (!myAllVariants && isValidResult) { addCandidate(candidate); } else { addInapplicableCandidate(candidate); } } return true; }