Ok, my head is spinning trying to figure out what the billion classes are for related to trees. E.g., what the hell is a stub? Is that the same thing is a base class with most of the stuff filled in? These classes are critical and not a single one of them has even three words that says what they are for. Surely one person could write one sentence for these classes and save even internal jetbrains people lots and lots of time. I'm reading through plug-ins like crazy trying to abstract what the hell all of the shit does. I've gone down 1 million different paths trying to figure out how to implement a simple "this node references this other node" mechanism. I think I finally figured out that you can't create a Psi node for a token, which is bogus because then I have to create internal nodes as parents to identifier nodes just to say they are PsiNamedElement.
I understand that this tool has to be incredibly general, hence the lots of class names and levels of indirection, but if you don't tell me what all of these classes are for it's really impossible to build a plug-in. I'm also facing different versions which changes the API as I look through plug-ins.