boolean (PsiTypeElement innerTypeElement, PsiTypeElement completeTypeElement, PsiType rhsType) { final PsiType lhsType = completeTypeElement.getType(); if (lhsType.equals(rhsType) || rhsType == null || !TypeConversionUtil.isAssignable(lhsType, rhsType)) { return true; } final Object marker = new Object(); PsiTreeUtil.mark(innerTypeElement, marker); final PsiTypeElement copy = (PsiTypeElement)completeTypeElement.copy(); final PsiElement markedElement = PsiTreeUtil.releaseMark(copy, marker); assert markedElement != null; markedElement.replace(markedElement.getLastChild()); return !TypeConversionUtil.isAssignable(copy.getType(), rhsType); }