addKeyIfMissing = function addKeyIfMissing(block) {
	  return _extends({}, block, {
	    key: block.key || generateRandomKey()
	  });
	}
Node stack is responsible to ensure we traverse the tree only once
in depth order, while also providing parent refs to inner nodes to
construct their links.