cherry pick Object assign fix from GridCollection refactor
using object assign instead of the spread makes it so the nodes retrieved via node.childNodes are the same as the ones stored in the collection key map since it preserves the object reference