void (@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(); }