void (PyExpression arg) { ASTNode node = getNode(); ASTNode[] pars = node.getChildren(TokenSet.create(PyTokenTypes.LPAR)); if (pars.length == 0) { // there's no starting paren try { add(arg); } catch (IncorrectOperationException e1) { throw new IllegalStateException(e1); } } else { ASTNode before = PyPsiUtils.getNextNonWhitespaceSibling(pars[0]); ASTNode anchorBefore; if (before != null && elementPrecedesElementsOfType(before, PythonDialectsTokenSetProvider.getInstance().getExpressionTokens())) { ASTNode comma = createComma(); node.addChild(comma, before); node.addChild(ASTFactory.whitespace(" "), before); anchorBefore = comma; } else { anchorBefore = before; } ASTNode argNode = arg.getNode(); if (anchorBefore == null) { node.addChild(argNode); } else { node.addChild(argNode, anchorBefore); } } }