Applicability (PsiType @Nullable [] argumentTypes, @NotNull PsiMethod method, PsiSubstitutor substitutor, PsiElement place, final boolean eraseParameterTypes) { if (argumentTypes == null) return Applicability.canBeApplicable; GrSignature signature = GrClosureSignatureUtil.createSignature(method, substitutor, eraseParameterTypes, place); Applicability result = GroovyApplicabilityProvider.checkProviders(argumentTypes, method); if (result != null) return result; result = GrClosureSignatureUtil.isSignatureApplicableConcrete(singletonList(signature), argumentTypes, place); if (result != Applicability.inapplicable) { if (eraseParameterTypes || isTypeArgumentsApplicable(method.getTypeParameters(), substitutor, place)) { return result; } } return Applicability.inapplicable; }