I don't know if this is relevant, but I remember long ago when Stephen had some early polyvariance in the compiler, that it turned out that it was VERY important to do a kind of redundant argument analysis. The problem was, as I recall, that flattening was passing the `same' argument many times (in the same call). Could that be happening here?