Most of the grunt work is delegated by the entries back to the linker using the inflate_data method, which handles circular structures, retrying of tied structures, etc.

Inflated objects are registered with KiokuDB::LiveObjects, and get inserted into the current live object scope (KiokuDB::LiveObjects::Scope). The scope's job is to maintain a reference count of at least 1 for any loaded object, until it is destroyed itself. This ensures that weak references are not destroyed prematurely, but allows their use in order to avoid memory leaks.