Other than the source code of CE, are there any other resources to help me learn more about the concept driving the PsiAugmentProvider extension point?
The reason I ask, I'm trying to augment annotated fields and types with new methods. For example, the annotation @Getter on a PsiField will add a getter method to the class. But in practice it looks like when I'm typing in the editor and I finish adding the annotation the PsiAugmentProvider is only called for ...getAugments(..., PsiField.class). It looks like the logic assumes a change to the modifier list of a field would only ever need to augment new fields into the class.
Also i'm looking for any documentation on how and when the editor reparses the Psi tree. It looks to be doing multiple passes in practice as well.