use Kotlin call hierarchy provider only for Kotlin elements, to ensure that it does not interfere with standard Java features of IntelliJ IDEA
(cherry picked from commit 7004917)
diff --git a/idea/src/META-INF/plugin.xml b/idea/src/META-INF/plugin.xml
index 82176a2..613eb59 100644
--- a/idea/src/META-INF/plugin.xml
+++ b/idea/src/META-INF/plugin.xml
@@ -524,10 +524,6 @@
     <callHierarchyProvider
         language="kotlin"
         implementationClass="org.jetbrains.kotlin.idea.hierarchy.calls.KotlinCallHierarchyProvider" />
-    <callHierarchyProvider
-        language="JAVA"
-        implementationClass="org.jetbrains.kotlin.idea.hierarchy.calls.KotlinCallHierarchyProvider"
-        order="first" />
     <methodHierarchyProvider
         language="kotlin"
         implementationClass="org.jetbrains.kotlin.idea.hierarchy.overrides.KotlinOverrideHierarchyProvider" />
diff --git a/idea/src/org/jetbrains/kotlin/idea/hierarchy/calls/KotlinCallHierarchyProvider.java b/idea/src/org/jetbrains/kotlin/idea/hierarchy/calls/KotlinCallHierarchyProvider.java
index 06e79fc..0cf8870 100644
--- a/idea/src/org/jetbrains/kotlin/idea/hierarchy/calls/KotlinCallHierarchyProvider.java
+++ b/idea/src/org/jetbrains/kotlin/idea/hierarchy/calls/KotlinCallHierarchyProvider.java
@@ -28,6 +28,7 @@
 import com.intellij.psi.PsiElement;
 import com.intellij.psi.PsiFile;
 import org.jetbrains.annotations.NotNull;
+import org.jetbrains.kotlin.idea.KotlinLanguage;
 import org.jetbrains.kotlin.idea.hierarchy.HierarchyUtils;
 import org.jetbrains.kotlin.idea.util.ProjectRootsUtil;
 import org.jetbrains.kotlin.psi.KtFile;
@@ -42,7 +43,7 @@
         if (element == null) return null;
 
         element = HierarchyUtils.getCallHierarchyElement(element);
-        if (element instanceof KtFile) return null;
+        if (element instanceof KtFile || element.getLanguage() != KotlinLanguage.INSTANCE) return null;
 
         return element;
     }
diff --git a/idea/testData/hierarchy/calls/callees/javaConstructor/JavaConstructor_verification.xml b/idea/testData/hierarchy/calls/callees/javaConstructor/JavaConstructor_verification.xml
deleted file mode 100644
index ace35f1..0000000
--- a/idea/testData/hierarchy/calls/callees/javaConstructor/JavaConstructor_verification.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<node text="KClient.KClient()  ()" base="true">
-  <node text="KA.KA()(2 usages)  ()"/>
-  <node text="KA.foo(String)  ()"/>
-  <node text="JA.JA()(2 usages)  ()"/>
-  <node text="JA.getName()  ()"/>
-  <node text="JA.foo(String)  ()">
-    <node text="PrintStream.println(String)  (java.io)"/>
-  </node>
-</node>
diff --git a/idea/testData/hierarchy/calls/callees/javaConstructor/main0.java b/idea/testData/hierarchy/calls/callees/javaConstructor/main0.java
deleted file mode 100644
index ff6732a..0000000
--- a/idea/testData/hierarchy/calls/callees/javaConstructor/main0.java
+++ /dev/null
@@ -1,31 +0,0 @@
-class KA {
-    KA() {
-    }
-
-    public final String name = "A";
-    public final String foo(String s) {
-        return "A " + s;
-    }
-}
-
-class KClientBase {
-
-}
-
-class KClient extends KClientBase {
-    public <caret>KClient() {
-        super();
-        new KA().foo(new KA().name);
-        new JA().foo(new JA().getName());
-    }
-
-    {
-        new KA().foo(new KA().name);
-        new JA().foo(new JA().getName());
-    }
-
-    public final void bar() {
-        new KA().foo(new KA().name);
-        new JA().foo(new JA().getName());
-    }
-}
\ No newline at end of file
diff --git a/idea/testData/hierarchy/calls/callees/javaConstructor/main1.kt b/idea/testData/hierarchy/calls/callees/javaConstructor/main1.kt
deleted file mode 100644
index 156782a..0000000
--- a/idea/testData/hierarchy/calls/callees/javaConstructor/main1.kt
+++ /dev/null
@@ -1,8 +0,0 @@
-open class JA() {
-    public var name: String = "A"
-
-    public open fun foo(s: String): String {
-        System.out.println(s)
-        return "A " + s
-    }
-}
\ No newline at end of file
diff --git a/idea/testData/hierarchy/calls/callees/javaMethod/JavaMethod_verification.xml b/idea/testData/hierarchy/calls/callees/javaMethod/JavaMethod_verification.xml
deleted file mode 100644
index dccd4d3..0000000
--- a/idea/testData/hierarchy/calls/callees/javaMethod/JavaMethod_verification.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<node text="KClient.bar()  ()" base="true">
-  <node text="KA.KA()(2 usages)  ()"/>
-  <node text="KA.foo(String)(2 usages)  ()"/>
-  <node text="JA.JA()(4 usages)  ()"/>
-  <node text="JA.getName()(2 usages)  ()"/>
-  <node text="JA.foo(String)(2 usages)  ()">
-    <node text="PrintStream.println(String)  (java.io)"/>
-  </node>
-  <node text="Anonymous in bar() in KClient.run()  ()">
-    <node text="KA.KA()  ()"/>
-    <node text="KA.foo(String)  ()"/>
-    <node text="JA.JA()(2 usages)  ()"/>
-    <node text="JA.getName()  ()"/>
-    <node text="JA.foo(String)  ()">
-      <node text="PrintStream.println(String)  (java.io)"/>
-    </node>
-  </node>
-</node>
diff --git a/idea/testData/hierarchy/calls/callees/javaMethod/main0.java b/idea/testData/hierarchy/calls/callees/javaMethod/main0.java
deleted file mode 100644
index c18428c..0000000
--- a/idea/testData/hierarchy/calls/callees/javaMethod/main0.java
+++ /dev/null
@@ -1,25 +0,0 @@
-class KA {
-    public KA() {
-
-    }
-
-    public final String name = "A";
-
-    public final String foo(String s) {
-        return "A " + s;
-    }
-}
-
-class KClient {
-    public final void <caret>bar() {
-        new KA().foo("");
-        new JA().foo(new JA().getName());
-
-        new Runnable() {
-            public void run() {
-                new KA().foo("");
-                new JA().foo(new JA().getName());
-            }
-        }.run();
-    }
-}
\ No newline at end of file
diff --git a/idea/testData/hierarchy/calls/callees/javaMethod/main1.kt b/idea/testData/hierarchy/calls/callees/javaMethod/main1.kt
deleted file mode 100644
index c5621a7..0000000
--- a/idea/testData/hierarchy/calls/callees/javaMethod/main1.kt
+++ /dev/null
@@ -1,8 +0,0 @@
-open class JA() {
-    public var name: String = "A"
-
-    public open fun foo(s: String): String {
-        System.out.println(s)
-        return "A " + s
-    }
-}
diff --git a/idea/testData/hierarchy/calls/callers/javaConstructor/JavaConstructor_verification.xml b/idea/testData/hierarchy/calls/callers/javaConstructor/JavaConstructor_verification.xml
deleted file mode 100644
index cb7b9cd..0000000
--- a/idea/testData/hierarchy/calls/callers/javaConstructor/JavaConstructor_verification.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<node text="KA.KA()  ()" base="true">
-  <node text="KClient.bar()  ()"/>
-  <node text="KClient.getBar()  ()"/>
-  <node text="KClient  ()"/>
-  <node text="JA.JA()  ()"/>
-  <node text="JA.newKA()  ()"/>
-  <node text="JA  ()"/>
-  <node text="JA.JA(Int)  ()"/>
-  <node text="JA2  ()"/>
-</node>
diff --git a/idea/testData/hierarchy/calls/callers/javaConstructor/main0.java b/idea/testData/hierarchy/calls/callers/javaConstructor/main0.java
deleted file mode 100644
index 04707c6..0000000
--- a/idea/testData/hierarchy/calls/callers/javaConstructor/main0.java
+++ /dev/null
@@ -1,27 +0,0 @@
-class KA {
-    public <caret>KA() {
-
-    }
-
-    public final String name = "A";
-
-    public String foo(String s) {
-        return "A " + s;
-    }
-}
-
-class KClient {
-    {
-        new KA();
-    }
-
-    public static final a = new KA();
-
-    public final String getBar() {
-        return new KA().name;
-    }
-
-    public final KA bar() {
-        return new KA();
-    }
-}
\ No newline at end of file
diff --git a/idea/testData/hierarchy/calls/callers/javaConstructor/main1.kt b/idea/testData/hierarchy/calls/callers/javaConstructor/main1.kt
deleted file mode 100644
index bd7efb9..0000000
--- a/idea/testData/hierarchy/calls/callers/javaConstructor/main1.kt
+++ /dev/null
@@ -1,19 +0,0 @@
-open class JA: KA {
-    constructor() {
-
-    }
-
-    constructor(a: Int): super() {
-
-    }
-
-    public var name: String = KA().getName()
-
-    public open fun newKA(): KA? {
-        return KA()
-    }
-}
-
-class JA2: KA() {
-
-}
\ No newline at end of file
diff --git a/idea/testData/hierarchy/calls/callers/javaMethod/JavaMethod_verification.xml b/idea/testData/hierarchy/calls/callers/javaMethod/JavaMethod_verification.xml
deleted file mode 100644
index 52751e5..0000000
--- a/idea/testData/hierarchy/calls/callers/javaMethod/JavaMethod_verification.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<node text="KA.foo(String)  ()" base="true">
-  <node text="JA(2 usages)  ()"/>
-  <node text="JA.foo()(2 usages)  ()"/>
-  <node text="KClient(4 usages)  ()"/>
-  <node text="KClient.bar()(2 usages)  ()"/>
-  <node text="KClient.getBar()(2 usages)  ()"/>
-</node>
diff --git a/idea/testData/hierarchy/calls/callers/javaMethod/main0.java b/idea/testData/hierarchy/calls/callers/javaMethod/main0.java
deleted file mode 100644
index ee37869..0000000
--- a/idea/testData/hierarchy/calls/callers/javaMethod/main0.java
+++ /dev/null
@@ -1,31 +0,0 @@
-class KBase {
-    public String foo(String s) {
-        return s;
-    }
-}
-
-class KA extends KBase {
-    public final String name = "A";
-
-    @Override
-    public final String <caret>foo(String s) {
-        return "A " + s;
-    }
-}
-
-class KClient {
-    {
-        new KBase().foo("");
-        new KA().foo("");
-    }
-
-    public static final String a = new KBase().foo("") + new KA().foo("");
-
-    public final String getBar() {
-        return new KBase().foo("") + new KA().foo("");
-    }
-
-    public final String bar() {
-        return new KBase().foo("") + new KA().foo("");
-    }
-}
\ No newline at end of file
diff --git a/idea/testData/hierarchy/calls/callers/javaMethod/main1.kt b/idea/testData/hierarchy/calls/callers/javaMethod/main1.kt
deleted file mode 100644
index 74c4ae4..0000000
--- a/idea/testData/hierarchy/calls/callers/javaMethod/main1.kt
+++ /dev/null
@@ -1,7 +0,0 @@
-open class JA() {
-    public var name: String = KBase().foo("") + KA().foo("")
-
-    public open fun foo(): String {
-        return KBase().foo("") + KA().foo("")
-    }
-}
\ No newline at end of file
diff --git a/idea/testData/hierarchy/overrides/javaMethodInClass/JavaMethodInClass_verification.xml b/idea/testData/hierarchy/overrides/javaMethodInClass/JavaMethodInClass_verification.xml
deleted file mode 100644
index ffa3812..0000000
--- a/idea/testData/hierarchy/overrides/javaMethodInClass/JavaMethodInClass_verification.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<node text="A  ()" base="true">
-  <node text="B  ()"/>
-  <node text="T  ()">
-    <node text="C  ()"/>
-    <node text="Y  ()"/>
-  </node>
-  <node text="X  ()">
-    <node text="Z  ()">
-      <node text="D  ()"/>
-    </node>
-  </node>
-</node>
diff --git a/idea/testData/hierarchy/overrides/javaMethodInClass/main0.java b/idea/testData/hierarchy/overrides/javaMethodInClass/main0.java
deleted file mode 100644
index 03b5482..0000000
--- a/idea/testData/hierarchy/overrides/javaMethodInClass/main0.java
+++ /dev/null
@@ -1,30 +0,0 @@
-class A {
-    public void <caret>foo() {
-
-    }
-}
-
-class B extends A {
-    @Override
-    public void foo() {
-
-    }
-}
-
-class C implements T {
-    @Override
-    public void foo() {
-
-    }
-}
-
-class D extends Z {
-    @Override
-    public void foo() {
-
-    }
-}
-
-class S {
-
-}
\ No newline at end of file
diff --git a/idea/testData/hierarchy/overrides/javaMethodInClass/main1.kt b/idea/testData/hierarchy/overrides/javaMethodInClass/main1.kt
deleted file mode 100644
index 97e7ca6..0000000
--- a/idea/testData/hierarchy/overrides/javaMethodInClass/main1.kt
+++ /dev/null
@@ -1,27 +0,0 @@
-interface T: A {
-    override fun foo() {
-
-    }
-}
-
-open class X: A() {
-    override fun foo() {
-
-    }
-}
-
-open class Y: T {
-    override fun foo() {
-
-    }
-}
-
-open class Z: X() {
-    override fun foo() {
-
-    }
-}
-
-class SS {
-
-}
\ No newline at end of file
diff --git a/idea/testData/hierarchy/overrides/javaMethodInInterface/JavaMethodInInterface_verification.xml b/idea/testData/hierarchy/overrides/javaMethodInInterface/JavaMethodInInterface_verification.xml
deleted file mode 100644
index ffa3812..0000000
--- a/idea/testData/hierarchy/overrides/javaMethodInInterface/JavaMethodInInterface_verification.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<node text="A  ()" base="true">
-  <node text="B  ()"/>
-  <node text="T  ()">
-    <node text="C  ()"/>
-    <node text="Y  ()"/>
-  </node>
-  <node text="X  ()">
-    <node text="Z  ()">
-      <node text="D  ()"/>
-    </node>
-  </node>
-</node>
diff --git a/idea/testData/hierarchy/overrides/javaMethodInInterface/main0.java b/idea/testData/hierarchy/overrides/javaMethodInInterface/main0.java
deleted file mode 100644
index 836c565..0000000
--- a/idea/testData/hierarchy/overrides/javaMethodInInterface/main0.java
+++ /dev/null
@@ -1,28 +0,0 @@
-interface A {
-    public void <caret>foo();
-}
-
-class B implements A {
-    @Override
-    public void foo() {
-
-    }
-}
-
-class C implements T {
-    @Override
-    public void foo() {
-
-    }
-}
-
-class D extends Z {
-    @Override
-    public void foo() {
-
-    }
-}
-
-class S {
-
-}
\ No newline at end of file
diff --git a/idea/testData/hierarchy/overrides/javaMethodInInterface/main1.kt b/idea/testData/hierarchy/overrides/javaMethodInInterface/main1.kt
deleted file mode 100644
index dd5bdde..0000000
--- a/idea/testData/hierarchy/overrides/javaMethodInInterface/main1.kt
+++ /dev/null
@@ -1,27 +0,0 @@
-interface T: A {
-    override fun foo() {
-
-    }
-}
-
-open class X: A {
-    override fun foo() {
-
-    }
-}
-
-open class Y: T {
-    override fun foo() {
-
-    }
-}
-
-open class Z: X() {
-    override fun foo() {
-
-    }
-}
-
-class SS {
-
-}
\ No newline at end of file
diff --git a/idea/tests/org/jetbrains/kotlin/idea/hierarchy/AbstractHierarchyTest.java b/idea/tests/org/jetbrains/kotlin/idea/hierarchy/AbstractHierarchyTest.java
index 8a076e8..2dacfeb 100644
--- a/idea/tests/org/jetbrains/kotlin/idea/hierarchy/AbstractHierarchyTest.java
+++ b/idea/tests/org/jetbrains/kotlin/idea/hierarchy/AbstractHierarchyTest.java
@@ -202,8 +202,14 @@
             super.doHierarchyTest(treeStructureComputable, fileNames);
         }
         catch (RefactoringErrorHintException e) {
-            String expectedMessage = FileUtil.loadFile(new File(folderName, "messages.txt"), true);
-            assertEquals(expectedMessage, e.getLocalizedMessage());
+            File file = new File(folderName, "messages.txt");
+            if (file.exists()) {
+                String expectedMessage = FileUtil.loadFile(file, true);
+                assertEquals(expectedMessage, e.getLocalizedMessage());
+            }
+            else {
+                fail("Unexpected error: " + e.getLocalizedMessage());
+            }
         }
     }
 
diff --git a/idea/tests/org/jetbrains/kotlin/idea/hierarchy/HierarchyTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/hierarchy/HierarchyTestGenerated.java
index 82ae9672..0ed884c 100644
--- a/idea/tests/org/jetbrains/kotlin/idea/hierarchy/HierarchyTestGenerated.java
+++ b/idea/tests/org/jetbrains/kotlin/idea/hierarchy/HierarchyTestGenerated.java
@@ -286,18 +286,6 @@
             KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/hierarchy/calls/callers"), Pattern.compile("^([^\\.]+)$"), false);
         }
 
-        @TestMetadata("javaConstructor")
-        public void testJavaConstructor() throws Exception {
-            String fileName = KotlinTestUtils.navigationMetadata("idea/testData/hierarchy/calls/callers/javaConstructor/");
-            doCallerHierarchyTest(fileName);
-        }
-
-        @TestMetadata("javaMethod")
-        public void testJavaMethod() throws Exception {
-            String fileName = KotlinTestUtils.navigationMetadata("idea/testData/hierarchy/calls/callers/javaMethod/");
-            doCallerHierarchyTest(fileName);
-        }
-
         @TestMetadata("kotlinClass")
         public void testKotlinClass() throws Exception {
             String fileName = KotlinTestUtils.navigationMetadata("idea/testData/hierarchy/calls/callers/kotlinClass/");
@@ -421,18 +409,6 @@
             KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/hierarchy/calls/callees"), Pattern.compile("^([^\\.]+)$"), false);
         }
 
-        @TestMetadata("javaConstructor")
-        public void testJavaConstructor() throws Exception {
-            String fileName = KotlinTestUtils.navigationMetadata("idea/testData/hierarchy/calls/callees/javaConstructor/");
-            doCalleeHierarchyTest(fileName);
-        }
-
-        @TestMetadata("javaMethod")
-        public void testJavaMethod() throws Exception {
-            String fileName = KotlinTestUtils.navigationMetadata("idea/testData/hierarchy/calls/callees/javaMethod/");
-            doCalleeHierarchyTest(fileName);
-        }
-
         @TestMetadata("kotlinAnonymousObject")
         public void testKotlinAnonymousObject() throws Exception {
             String fileName = KotlinTestUtils.navigationMetadata("idea/testData/hierarchy/calls/callees/kotlinAnonymousObject/");
@@ -520,18 +496,6 @@
             KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/hierarchy/overrides"), Pattern.compile("^([^\\.]+)$"), false);
         }
 
-        @TestMetadata("javaMethodInClass")
-        public void testJavaMethodInClass() throws Exception {
-            String fileName = KotlinTestUtils.navigationMetadata("idea/testData/hierarchy/overrides/javaMethodInClass/");
-            doOverrideHierarchyTest(fileName);
-        }
-
-        @TestMetadata("javaMethodInInterface")
-        public void testJavaMethodInInterface() throws Exception {
-            String fileName = KotlinTestUtils.navigationMetadata("idea/testData/hierarchy/overrides/javaMethodInInterface/");
-            doOverrideHierarchyTest(fileName);
-        }
-
         @TestMetadata("kotlinFunctionInClass")
         public void testKotlinFunctionInClass() throws Exception {
             String fileName = KotlinTestUtils.navigationMetadata("idea/testData/hierarchy/overrides/kotlinFunctionInClass/");