'Deep-clone the managers using deconstruction.'

def construct_managers(self):

    sorted_managers = sorted(self.managers, key=(lambda v: v[1].creation_counter))
    for (mgr_name, manager) in sorted_managers:
        (as_manager, manager_path, qs_path, args, kwargs) = manager.deconstruct()
        if as_manager:
            qs_class = import_string(qs_path)
            (yield (mgr_name, qs_class.as_manager()))
        else:
            manager_class = import_string(manager_path)
            (yield (mgr_name, manager_class(*args, **kwargs)))
