title: extract decorating nodes if it exists but still return path if decorating nodes does not exist
body: <p>I have the following graph</p>
  <pre><code>                     (y1:Y) 
                       ^
                       |
  (a1:A) -&gt; (b1:B) -&gt; (c1:C) 
  
  
                      (e1:E)
                       ^
                       |
                      (d1:D)
                       ^
                       |
  (a2:A) -&gt; (b2:B) -&gt; (c2:C) 
  
  
  (a3:A) -&gt; (b3:B) -&gt; (c3:C) 
  </code></pre>
  <p>I would like to find path between node label A and C. I can use the query</p>
  <pre><code>match p=((:A)-[*]-&gt;(:C))
  return p
  </code></pre>
  <p>But I also want to get node label Y and node label D, E if these decorating nodes exists. If I try:</p>
  <pre><code>match p=((:A)-[*]-&gt;(cc:C)), (cc)--&gt;(yy:Y), (cc)-[*]-&gt;(dd:D)-[*]-&gt;(ee:E)
  return p, yy, dd, ee
  </code></pre>
  <p>Then it is only going to return the path if the C node has Y, D, E connects to it.</p>
  <p>The output that I need is:</p>
  <pre><code>a1-&gt;b1-&gt;c1, y1, null
  a2-&gt;b2-&gt;c2, null, [[d1, e1]]
  a3-&gt;b3-&gt;c3, null, null
  </code></pre>
  <p>I.e., if decorating node does not exist, then just return null. For the array, it can be null or empty array. Also D and E nodes will be group into an array of arrays since there could be many pairs of D and E.</p>
  <p>What is the best way to achieve this?</p>