Sometimes we end up processing stale expat lists – in particular, in this scenario:
1) FastExpatList pushes out the expat lists
2) FastExpatList times out, calls postInvoke()
3) postInvoke() sets up a new hash map to receive results
4) We fall back to pulling expat list
5) The delayed pushed expat list is finally received and stored in the new hash map
6) Much later, we start a new shape change. But the hash map contains old results.
The hashmap should be cleared in the preinvoke instead.