JetBrains/intellij-community — pull request #225 by asedunov (2014-11-17 17:43:19+00:00)
Title: OverriderUsageInfo: Store overriding PsiMethod in a separate field (to prevent replacement by "navigation element")

The goal is to allow interoperability between Change Signature refactorings in Java and Kotlin (or, in general, Java-compatible language which doesn't use Java PSI).
When Java method is overriden by Kotlin function, Change Signature creates OverriderUsageInfo using light method which servers as PsiMethod wrapper for Kotlin function. However upon creation it gets replaced by its navigation element (i. e. Kotlin one) which is not a PsiMethod, and Java refactoring fails with type casting error.
So I suggest to keep overriding PsiMethod (which may be either real Java method, or wrapper of some sort) in a separate field and use it instead of getElement() (in most cases).