void (@NotNull PsiMethod method) { if (!CloneUtils.isClone(method) || !PsiUtil.isLanguageLevel5OrHigher(method)) { return; } final PsiTypeElement typeElement = method.getReturnTypeElement(); if (typeElement == null) { return; } final PsiType returnType = typeElement.getType(); final PsiClass aClass = PsiUtil.resolveClassInClassTypeOnly(returnType); PsiClass containingClass = method.getContainingClass(); if (containingClass instanceof PsiAnonymousClass anonymousClass) { final PsiClassType baseClassType = anonymousClass.getBaseClassType(); containingClass = PsiUtil.resolveClassInClassTypeOnly(baseClassType); } if (containingClass == null || containingClass.equals(aClass)) { return; } if (methodAlwaysReturnsNullOrThrowsException(method)) { return; } if (!CloneUtils.isCloneable(containingClass)) { if (JavaPsiFacade.getElementFactory(method.getProject()).createType(containingClass).isConvertibleFrom(returnType)) { return; } registerError(typeElement, containingClass.getName(), Boolean.FALSE); } else { registerError(typeElement, containingClass.getName(), Boolean.TRUE); } }