public void subtreeChanged() {
    CompositeElement compositeElement = this;
    while(compositeElement != null) {
      compositeElement.clearCaches();
      if (!(compositeElement instanceof PsiElement)) {
        PsiElement psi = compositeElement.myWrapper;
        if (psi instanceof ASTDelegatePsiElement) {
          ((ASTDelegatePsiElement)psi).subtreeChanged();
        }
        else if (psi instanceof PsiFile) {
          ((PsiFile)psi).subtreeChanged();
          assertThreading((PsiFile)psi);
        }
      }

      compositeElement = compositeElement.getTreeParent();
    }
  }
public void subtreeChanged()