ApplicableType (@NotNull PsiType fieldType) { ExpectedTypeInfo[] expectedTypes = getExpectedTypes(); for (ExpectedTypeInfo info : expectedTypes) { if (TypeConversionUtil.isAssignable(info.getType(), fieldType)) return ApplicableType.APPLICABLE; if (info.getType() instanceof PsiClassType classType && classType.getParameters().length != 0 && TypeConversionUtil.isAssignable(TypeConversionUtil.erasure(info.getType()), fieldType)) { return ApplicableType.PARTLY; } } return expectedTypes.length == 0 ? ApplicableType.APPLICABLE : ApplicableType.NONE; }