I think this give a warning for unchecked types due to erasure in scala 2.9 at least. This might be warning free:
```scala
case Sum(l@Sum(_, _, _), r@Sum(_, _, _), _) => collectAddends(l) ++ collectAddends(r)
```