Great! I mistakenly thought spreads only ever worked with unary operators.

I agree about the code duplication, but the `Chain` node had some special casing I did not have the energy to deal with at the time. Does `implements ListIndex` sound good?