code: def infer_object_subtype(self, api, pid=None, create=False, default_pidspace=None):
          
          obj = DigitalObject(api, pid, create, default_pidspace)
          if create:
              return obj
          if not obj.exists:
              return obj
  
          match_type = self.best_subtype_for_object(obj)
          return match_type(api, pid)
docs: Construct a DigitalObject or appropriate subclass, inferring the
          appropriate subtype using :meth:`best_subtype_for_object`. Note that
          this method signature has been selected to match the
          :class:`~eulfedora.models.DigitalObject` constructor so that this
          method might be passed directly to :meth:`get_object` as a `type`::
  
          >>> obj = repo.get_object(pid, type=repo.infer_object_subtype)
  
          See also: :class:`TypeInferringRepository`