I don't particularly like the raw Cascading co-group -- we've strayed from the Cascading API quite a bit for clarity already (the aggregation DSL), and I'm inclined to say writing `joinWithSmaller/Larger` etc all in terms of a `MixedJoin` is the way to go.

Really, it looks like we need to join records like:

```clojure
(defrecord JoinFlow [flow join-fields join-type])
```

This looks cleaner to me than taking multiple lists that are related by index.