@schuttsmcsnw: This reverse-order rendering will cause the parameter placeholders to be in a surprising order, for instance:

```
SELECT * FROM user WHERE name = $2
UNION
SELECT * FROM user WHERE name = $1
```

It should still work (the array of values should match), but it will be surprising.

It's also a DRY violation (two blocks of rendering code and two different properties for unioned statements) and it's a little surprising that next_union is an array, but prev_union is a single statement.

I would prefer to always do forward-rendering and always use the `next_union` reference (which could be renamed to `_union` for consistency). To solve the problem of walking backwards, we could simply have a `prev_stmt` property and have `.toString()` and `.toParams()` short circuit at the very top, doing a `if (this.prev_stmt) return this.prev_stmt.toString()`. This `prev_stmt` property could be used for other multi-statement combinations, like `INTERSECT`.