Desenvolvimento do plugin IntelliJ IDEA: como modificar a árvore Psi?
Gostaria de saber qual é a maneira "adequada" de criar novas instâncias de PsiElement e adicioná-las à árvore Psi.
Eu olhei para o tutorial fornecido pelo JetBrains (http://www.jetbrains.org/intellij/sdk/docs/tutorials/custom_language_support/quick_fix.html) O método que eles usam lá parece adequado para a linguagem de propriedades simples que eles introduzem, mas não acho que seja o caminho a seguir com uma sintaxe mais complicada, na qual desejo adicionar um PsiElement filho que não possa aparecer no nível raiz de um PsiFile.
O melhor para mim é poder analisar um trecho de texto como um elemento e adicioná-lo à árvore. Eu tentei fazer algo assim:
myLangTopElement.getNode().addLeaf(MyLangTypes.CHILD_EXPRESSION, "fish = '42'", null);
Na verdade, parece funcionar - o texto é adicionado ao documento e um nó é criado, mas quando edito o texto dentro das aspas no editor - algumas exceções são lançadas ...
O que estou fazendo errado? Qual é a maneira correta de adicionar novos elementos?