@Override
  public void replaceChild(@NotNull ASTNode oldChild, @NotNull ASTNode newChild) {
    LOG.assertTrue(((TreeElement)oldChild).getTreeParent() == this);
    TreeElement oldChild1 = (TreeElement)oldChild;
    TreeElement newChildNext = ((TreeElement)newChild).getTreeNext();
    TreeElement newChild1 = (TreeElement)newChild;

    if(oldChild1 == newChild1) return;

    removeChildrenInner(newChild1, newChildNext);

    ChangeUtil.prepareAndRunChangeAction(destinationTreeChange -> {
      replace((TreeChangeEventImpl)destinationTreeChange, oldChild1, newChild1);
      repairRemovedElement(this, oldChild1);
    }, this);
  }
@Override
  public void replaceChild(@NotNull ASTNode oldChild, @NotNull ASTNode newChild)