So, given the dependency on calling the #dereference_queued_descriptor_hashes_and_build_registry for this method to work, should this be private. Or, should this have an option you can set and then the #register_single can be a helper method that just configures that option and delegates it here. 

I would pass the option into #add_resource_descriptor_to_dereferencing_queue and have it call the method if forced if you take the latter approach.

Either way, #register does not work correctly right now. Actually, what if we default it to register single, with an option to turn it off that you use in the build_registry method. Given this is all encapsulated, maybe that is the simpler way to go. Seems this is more straightforward and intuitive.