diff --git a/java/java-psi-api/src/com/intellij/psi/util/TypesDistinctProver.java b/java/java-psi-api/src/com/intellij/psi/util/TypesDistinctProver.java
index 5696b8ba0d63..5d2c6aab7467 100644
--- a/java/java-psi-api/src/com/intellij/psi/util/TypesDistinctProver.java
+++ b/java/java-psi-api/src/com/intellij/psi/util/TypesDistinctProver.java
@@ -58,6 +58,11 @@ public class TypesDistinctProver {
proveArrayTypeDistinct(((PsiWildcardType)type1).getManager().getProject(), (PsiArrayType)extendsBound, type2)) return true;
final PsiClass boundClass1 = PsiUtil.resolveClassInType(extendsBound);
if (boundClass1 == null) return false;
+
+ if (CommonClassNames.JAVA_LANG_OBJECT.equals(psiClass2.getQualifiedName())) {
+ return !CommonClassNames.JAVA_LANG_OBJECT.equals(boundClass1.getQualifiedName());
+ }
+
return proveExtendsBoundsDistinct(type1, type2, boundClass1, psiClass2);
}
diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA105695.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA105695.java
new file mode 100644
index 000000000000..ab282994a8e3
--- /dev/null
+++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA105695.java
@@ -0,0 +1,10 @@
+import java.util.Map;
+
+public class Test {
+ void bar(Prop p) {
+ Map extends String, ? extends String> map = (Map extends String, ? extends String>)p;
+ }
+}
+
+abstract class Hashtble implements Map {}
+abstract class Prop extends Hashtble