@zenspider L206 (and L222, L415) is actually about the truthiness of the last item.

`@cond_stack` is an array of booleans. While the last item of it is `true`, the parser is waiting for an optional `do`.

On getting `while`, `until` or `in` (they can take an optional `do`), `true` is pushed into `@cond_stack`.

On getting opening parentheses, `false` is pushed, and on closed parentheses, the last item is removed, for code like this:

```rb
while (array.all? do |i| # <- This `do` is not for the `while`.
         i =~ regexp
       end)
end
```

When the last item is `true` and the parser gets `do`, the token is treated as an optional `do`. When the last item is `true` and the parser gets a new line (`on_eol`) or `;` (`on_semicolon`), it means the condition of `while`, `until` or `for ... in` is ended, so the parser is no longer waiting for an optional `do`, and the last item is removed. But when the last item is `false`, it doesn't affect whether the next `do` is optional or not that the parser gets a new line or `;`, so `@cond_stack` is leaved as it is.