void (PsiClass clazz, GrMethod prototype, final GrMethod refactoredMethod, final MultiMap<PsiElement, String> conflicts, final List<MethodSignature> prototypeSignatures) { final boolean isStatic = prototype.hasModifierProperty(PsiModifier.STATIC); final String name = prototype.getName(); if (!GroovyPropertyUtils.isProperty(clazz, name, isStatic)) return; final PsiMethod getter = GroovyPropertyUtils.findPropertyGetter(clazz, name, isStatic, true); final PsiType returnType; if (getter instanceof GrMethod) { returnType = ((GrMethod)getter).getInferredReturnType(); } else if (getter instanceof GrAccessorMethod) { returnType = ((GrAccessorMethod)getter).getInferredReturnType(); } else { return; } if (!(returnType instanceof GrClosureType)) return; final List<GrSignature> signatures = ((GrClosureType)returnType).getSignatures(); for (GrSignature signature : signatures) { NextSignature: for (MethodSignature prototypeSignature : prototypeSignatures) { final GrClosureParameter[] params = signature.getParameters(); final PsiType[] types = prototypeSignature.getParameterTypes(); if (types.length != params.length) continue; for (int i = 0; i < types.length; i++) { if (!TypesUtil.isAssignableByMethodCallConversion(types[i], params[i].getType(), refactoredMethod.getParameterList())) { continue NextSignature; } } conflicts.putValue(getter, GroovyRefactoringBundle.message("refactored.method.will.cover.closure.property", name, RefactoringUIUtil.getDescription(getter.getContainingClass(), false))); } } }