title: {{#item.0}} checks appearing on the stack
body: <p>This seems to be by design as per the wording of the <a href="https://mustache.github.io/mustache.5.html#Partials" rel="nofollow noreferrer">mustache documentation</a>, and (at least) the perl and JS implementations, but still a gotcha...</p>
  <p>We make extensive use of <code>{{#items.0}}</code> type checks to see if an array has any items before rendering the container and the items themselves (<code>{{#items}}{{value1}}{{value2}}{{/items}}</code>).
  This gives example code like:</p>
  <pre><code>{{#items.0}}
    &lt;p&gt;found items&lt;/p&gt;
    {{#items}}
      {{#first}}
        &lt;li&gt;&lt;strong&gt;{{name}}&lt;/strong&gt;&lt;/li&gt;
      {{/first}}
      {{#link}}
        &lt;li&gt;&lt;a href=&quot;{{url}}&quot;&gt;{{name}}&lt;/a&gt;&lt;/li&gt;
      {{/link}}
    {{/items}}
  {{/items.0}}
  {{^items.0}}
    &lt;p&gt;no items&lt;/p&gt;
  {{/items.0}}
  </code></pre>
  <p>The issue here is that the 0th item is now part of the context stack, meaning that if items 1+ do not have a specific named value, but the 0th does, that value will be rendered instead.
  If you put the above mustache into the <a href="https://mustache.github.io/#demo" rel="nofollow noreferrer">demo</a>, you get this broken output:</p>
  <pre><code>&lt;p&gt;found items&lt;/p&gt;
  &lt;li&gt;&lt;strong&gt;red&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;green&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#Green&quot;&gt;green&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;blue&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#Blue&quot;&gt;blue&lt;/a&gt;&lt;/li&gt;
  </code></pre>
  <p>It now thinks every item is &quot;first&quot; as it pulls that value from the <code>{{#items.0}}</code> context.</p>
  <p>We can work around it in some cases, by changing <code>{{subitem.value}}</code> (which also exists at <code>.0</code>) to <code>{{#subitem}}{{value}}{{/subitem}}</code>.
  This works, as the <code>.n</code> entries <em>will</em> have a <code>subitem</code> which becomes the new context, and then looks for <code>value</code> which <code>.0</code> (and <code>.n</code>) doesn't.</p>
  <p>Is anyone aware of a way of doing that check without putting it in the context stack?</p>