docs: def create_instance(self, collection_or_class, attributes, lazy=False, call_hook=True, deserialize=True, db_loader=None):
          """
          Creates an instance of a `Document` class corresponding to the given collection name or class.
  
          :param collection_or_class: The name of the collection or a reference to the class for which to create an instance.
          :param attributes: The attributes of the instance to be created
          :param lazy: Whether to create a `lazy` object or not.
  
          :returns: An instance of the requested Document class with the given attributes.
          """
          creation_args = {
              'backend' : self,
              'autoload' : self._autoload_embedded,
              'lazy' : lazy,
              'db_loader' : db_loader
          }
  
          if collection_or_class in self.classes:
              cls = collection_or_class
          elif collection_or_class in self.collections:
              cls = self.collections[collection_or_class]
          else:
              raise AttributeError("Unknown collection or class: %s!" % str(collection_or_class))
  
          #we deserialize the attributes that we receive
          if deserialize:
              deserialized_attributes = self.deserialize(attributes, create_instance=False)
          else:
              deserialized_attributes = attributes
  
          if 'constructor' in self.classes[cls]:
              obj = self.classes[cls]['constructor'](deserialized_attributes, **creation_args)
          else:
              obj = cls(deserialized_attributes, **creation_args)
  
          if call_hook:
              self.call_hook('after_load',obj)
  
          return obj