/**
  * Constructs a new {@code ExpressionStatement} wrapping the specified expression. Sets this
  * node's position to the position of the wrapped node, and sets the wrapped node's position to
  * zero. Sets this node's length to the length of the wrapped node.
  *
  * @param expr the wrapped expression
  * @param hasResult {@code true} if this expression has side effects. If true, sets node type to
  *     EXPR_RESULT, else to EXPR_VOID.
  */
 public ExpressionStatement(AstNode expr, boolean hasResult) {
   this(expr);
   if (hasResult) setHasResult();
 }