Ну вот я пробовал паковать, распаковывать исходный Map.

Ну если бы там не было Set, то было бы просто куча Map::insert. То есть она бегает в цикле по контейнеру который ей передается в create и вызывает Map::insert. Кстати контейнеры тут тоже вынужденно используются при запаковке распаковке.