* The `collect` function recursively `concat`s on a tree, making the time complexity quadratic. This can be avoided using difference lists. * The `do_label` step builds some unnecessary intermediate trees, similar to the `dfs` we had (#882). I'm not aware of common use cases for `bcc`, so I'm not sure if this affects anyone. But as long we have it, we should make it efficient. I can send a PR.