@Override
  public final void applyInsertOnReparse(@NotNull ASTNode newChild, ASTNode anchor) {
    TreeElement newTreeElement = (TreeElement) newChild;
    newTreeElement.rawRemove();
    if (anchor != null) {
      TreeElement anchorTreeElement = (TreeElement) anchor;
      anchorTreeElement.rawInsertAfterMe(newTreeElement);
    }
    else {
      TreeElement firstChildNode = getFirstChildNode();
      if (firstChildNode != null) {
        firstChildNode.rawInsertBeforeMe(newTreeElement);
      }
      else {
        rawAddChildren(newTreeElement);
      }
    }

    newTreeElement.clearCaches();
    subtreeChanged();
  }
@Override
  public final void applyInsertOnReparse(@NotNull ASTNode newChild, ASTNode anchor)