code: def _separate_hdxobjects(self, hdxobjects, hdxobjects_name, id_field, hdxobjectclass):
          # type: (List[HDXObjectUpperBound], str, str, type) -> None
          
          new_hdxobjects = self.data.get(hdxobjects_name, list())
          """:type : List[HDXObjectUpperBound]"""
          if new_hdxobjects:
              hdxobject_names = set()
              for hdxobject in hdxobjects:
                  hdxobject_name = hdxobject[id_field]
                  hdxobject_names.add(hdxobject_name)
                  for new_hdxobject in new_hdxobjects:
                      if hdxobject_name == new_hdxobject[id_field]:
                          merge_two_dictionaries(hdxobject, new_hdxobject)
                          break
              for new_hdxobject in new_hdxobjects:
                  if not new_hdxobject[id_field] in hdxobject_names:
                      hdxobjects.append(hdxobjectclass(new_hdxobject, configuration=self.configuration))
              del self.data[hdxobjects_name]
docs: Helper function to take a list of HDX objects contained in the internal dictionary and add them to a
          supplied list of HDX objects or update existing metadata if any objects already exist in the list. The list in
          the internal dictionary is then deleted.
  
          Args:
              hdxobjects (List[T <= HDXObject]): list of HDX objects to which to add new objects or update existing ones
              hdxobjects_name (str): Name of key in internal dictionary from which to obtain list of HDX objects
              id_field (str): Field on which to match to determine if object already exists in list
              hdxobjectclass (type): Type of the HDX Object to be added/updated
  
          Returns:
              None