modificar una class Kotlin

Me gustaría escribir un complemento para Intellij IDEA que debería modificar un código de Java y Kotlin.

Yo uso el método

PsiClass.getMethods() 

para get todos los methods de las classs de Java y Kotlin. Hasta aquí todo bien, entonces uso methods como

 PsiClass.add(), PsiClass.addAfter(), PsiClass.addBefore() 

que todo funciona bien una vez que son llamados en los files Java, pero comienzan a lanzar una exception

 IncorrectOperationException 

una vez que los llamé a una class de Kotlin.

Agradecería cualquier sugerencia sobre cómo puedo modificar las classs de Kotlin y Java (preferiblemente utilizando el mismo enfoque).

Cuando busca una class de Kotlin a través de JavaPsiFacade , devuelve la class de luz que es una representación superficial que solo se basa en la información del file de class. Para agregar elementos PSI, debe llamar a navigationElement en él. Entonces, IJ analizará la fuente y buildá un tree de PSI completo que se puede modificar.

Sin embargo, si la class es una class Kotlin, navigationElement devolverá una KtClass que no se deriva de PsiClass . Tendrá que usar las instalaciones en la jerarquía de Kotlin para modificarlo. Las instancias de método en Kotlin tampoco son instancias de PsiMethod , sino instancias de KtMethod .

Para analizar las fonts de Java y Kotlin de forma común, hay un tree de syntax diferente llamado "UAST", pero para las modificaciones necesita un enfoque específico del idioma.

  • ¿Cómo desactivar el keyboard cuando hago clic en EditText?
  • ¿Cómo especificar los generics parametrizados para la propiedad de Kotlin?
  • Kotlin anula el set de miembros y obtén
  • La identidad de KotlinEquals no funciona como se esperaba
  • Imposible download el plugin para eclipse
  • Android Unit Test of Kotlin class falla con "no se puede encontrar la class de símbolo ..."
  • ¿Referencia sin resolver con respecto a una dependencia de Gradle?
  • Retrollamada TableView en Kotlin
  • Revertir códigos de Kotlin a Java en Android Studio Canary 5
  • Reglas de ProGuard para la reflexión de Kotlin
  • IntelliJ: ¿Autocompletar para Kotlin?