Are you suggesting to use a copy of existing nodes to preserve the expanded state of the \"untouched\" nodes, and recreate new ones for the ones that I need refreshed?
You can create array of nodes as external source of nodes that provided them in virtual mode. In this case it is not necessary to copy nodes before refreshing.
But more optimal - store expand state of node in the external store and restore state in VirtualMode_InitNewnode.