@Override
  public PsiElement add(@NotNull PsiElement psiElement) throws IncorrectOperationException {
    if (psiElement instanceof XPathExpression) {
      if (getNode().getChildren(XPath2ElementTypes.EXPRESSIONS).length > 0) {
        final XPathExpression child = XPathChangeUtil.createExpression(this, "f(a,b)");
        final ASTNode comma = child.getNode().findChildByType(XPathTokenTypes.COMMA);
        assert comma != null;
        final PsiElement psi = comma.getPsi();
        assert psi != null;
        add(psi);
      }
    }
    final ASTNode paren = getNode().findChildByType(XPathTokenTypes.RPAREN);
    if (paren != null) {
      return super.addBefore(psiElement, paren.getPsi());
    }
    return super.add(psiElement);
  }
@Override
  public PsiElement add(@NotNull PsiElement psiElement)