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?

questionAnswers(1)

yourAnswerToTheQuestion