Why do you need to fold/unfold using coalesce for a conditional insert? : <p>I'm trying to understand how this pattern for a conditional insert works:</p>

<pre><code>g.V()
  .hasLabel('person').has('name', 'John')
  .fold()
  .coalesce(
    __.unfold(),
    g.addV('person').property('name', 'John')
  ).next();
</code></pre>

<p>What is the purpose of the fold/unfold? Why are these necessary, and why does this not work:</p>

<pre><code>g.V()
  .coalesce(
    __.hasLabel('person').has('name', 'John'),
    g.addV('person').property('name', 'John')
  ).next();
</code></pre>

<p>The fold-then-unfold pattern seems redundant to me and yet the above does not yield the same result.</p>
