docs: def iobject_import(self,
                         id_and_rev_info,
                         elt_name,
                         obj_dict,
                         markings=None,
                         cybox_id=None):
          """
          Derives InfoObjectType and import InfoObjectType
  
          """
  
          iobject_type_ns = None
  
          # Derive the namespace information
          if ('@xsi:type' in obj_dict or
                      '@@embedded_type_info' in obj_dict or
                      '@xsi:type' in obj_dict.get('Properties', {}) or
                      '@xsi:type' in obj_dict.get('Defined_Object', {}) ):
              if '@xsi:type' in obj_dict:
                  iobject_type_ns = obj_dict['@xsi:type'].split(':')[0]
              elif '@xsi:type' in obj_dict.get('Properties', {}):
                  iobject_type_ns = obj_dict['Properties']['@xsi:type'].split(':')[0]
              elif '@xsi:type' in obj_dict.get('Defined_Object', {}):
                  iobject_type_ns = obj_dict['Defined_Object']['@xsi:type'].split(':')[0]
              else:
                  iobject_type_ns = obj_dict['@@embedded_type_info']
  
          # Find out what the type of the Information Object to be created should be
          type_info = self.derive_iobject_type(obj_dict['@@ns'], iobject_type_ns, elt_name)
  
          if (not 'id' in id_and_rev_info or not id_and_rev_info['id']) and (not 'id_ns' in id_and_rev_info):
              logger.info("Object of type %s without id information encountered, skipping" % elt_name)
              return
          if 'id_ns' in id_and_rev_info:
              namespace_uri = id_and_rev_info['id_ns']
              uid = id_and_rev_info['id_uid']
          else:
              (namespace, namespace_uri, uid) = self.split_qname(id_and_rev_info['id'])
  
          object_timestamp = id_and_rev_info.get('timestamp',None)
          if not object_timestamp:
              object_timestamp = self.default_timestamp
  
          (info_obj, existed) = MantisImporter.create_iobject(iobject_family_name=type_info['iobject_family_name'],
                                                              iobject_family_revision_name=type_info[
                                                                  'iobject_family_revision_name'],
                                                              iobject_type_name=type_info['iobject_type_name'],
                                                              iobject_type_namespace_uri=type_info[
                                                                  'iobject_type_namespace_uri'],
                                                              iobject_type_revision_name=type_info[
                                                                  'iobject_type_revision_name'],
                                                              iobject_data=obj_dict,
                                                              uid=uid,
                                                              identifier_ns_uri=namespace_uri,
                                                              timestamp= object_timestamp,
                                                              create_timestamp=self.create_timestamp,
                                                              markings=markings,
                                                              config_hooks={
                                                              'special_ft_handler': self.fact_handler_list(),
                                                              'datatype_extractor': self.cybox_datatype_extractor,
                                                              'attr_ignore_predicate': self.attr_ignore_predicate,
                                                              'force_nonleaf_fact_predicate': self.force_nonleaf_fact_predicate},
                                                              namespace_dict=self.namespace_dict,
          )
  
          return (info_obj, existed)