docs: async def process(self, object_dict):
      '''[for internal use] convert json/dict into python object
  
      |coro|
  
      Parameters
      ----------
      object_dict : dict
        json representation of object from emby
  
      Notes
      -----
      if a string is given, it is assumed to be an id, obj is returned.
      if a list is given, this method is called for each item in list.
  
      Returns
      -------
      EmbyObject
        the object that is represented by the json dict
      list
        if input is a list, list is returned
      '''
      # if ID was given, create dummy object and update it to get full dict
      try:
        if type(object_dict) == str:
          existing = EmbyObject.known_objects.get(object_dict)
          if existing:
            return existing
  
          obj = EmbyObject({"Id":object_dict}, self.connector, save=False)
          object_dict = (await obj.update()).object_dict
      except:
        return None
  
      # if nothing was given, return it back
      # if already created object was given, return it back too
      if not object_dict or isinstance(object_dict, EmbyObject):
        return object_dict
  
      # if a json dict that's really just a list was given,
      #   convert to list
      if type(object_dict)       == dict and \
         set(object_dict.keys()) == {'Items', 'TotalRecordCount'}:
        object_dict = object_dict['Items']
  
      # if a list was given,
      #   process each item in list
      if type(object_dict) == list:
        items = []
        for item in object_dict:
          item = await self.process(item)
          if item:
            items.append(item)
        return items
  
      # otherwise we probably have an object dict
      #   so we should process that
  
      # if dict has no id, it's a fake
      if 'Id' not in object_dict and 'ItemId' not in object_dict:
        return object_dict
  
      # if object is already stored,
      #   update with existing info and return
      itemId   = object_dict.get('Id', object_dict.get('ItemId'))
      existing = EmbyObject.known_objects.get(itemId)
      if existing:
        existing.object_dict.update(object_dict)
        return existing
  
      import embypy.objects.folders
      import embypy.objects.videos
      import embypy.objects.misc
  
      # if objectc is not already stored,
      #   figure out its type (if unknown use this base class)
      #   create an object with subclass of that type
      #   return
      if 'Type' in object_dict:
          if object_dict['Type'] == 'Audio':
            return embypy.objects.misc.Audio(object_dict, self.connector)
          if object_dict['Type'] == 'Person':
            return embypy.objects.misc.Person(object_dict, self.connector)
          if object_dict['Type'] == 'Video':
            return embypy.objects.videos.Video(object_dict, self.connector)
          if object_dict['Type'] == 'Movie':
            return embypy.objects.videos.Movie(object_dict, self.connector)
          if object_dict['Type'] == 'Trailer':
            return embypy.objects.videos.Trailer(object_dict, self.connector)
          if object_dict['Type'] == 'AdultVideo':
            return embypy.objects.videos.AdultVideo(object_dict, self.connector)
          if object_dict['Type'] == 'MusicVideo':
            return embypy.objects.videos.MusicVideo(object_dict, self.connector)
          if object_dict['Type'] == 'Episode':
            return embypy.objects.videos.Episode(object_dict, self.connector)
          if object_dict['Type'] == 'Folder':
            return embypy.objects.folders.Folder(object_dict, self.connector)
          if object_dict['Type'] == 'Playlist':
            return embypy.objects.folders.Playlist(object_dict, self.connector)
          if object_dict['Type'] == 'BoxSet':
            return embypy.objects.folders.BoxSet(object_dict, self.connector)
          if object_dict['Type'] == 'MusicAlbum':
            return embypy.objects.folders.MusicAlbum(object_dict, self.connector)
          if object_dict['Type'] == 'MusicArtist':
            return embypy.objects.folders.MusicArtist(object_dict, self.connector)
          if object_dict['Type'] == 'Season':
            return embypy.objects.folders.Season(object_dict, self.connector)
          if object_dict['Type'] == 'Series':
            return embypy.objects.folders.Series(object_dict, self.connector)
          if object_dict['Type'] == 'Game':
            return embypy.objects.misc.Game(object_dict, self.connector)
          if object_dict['Type'] == 'GameSystem':
            return embypy.objects.folders.GameSystem(object_dict, self.connector)
          if object_dict['Type'] == 'Photo':
            return embypy.objects.misc.Photo(object_dict, self.connector)
          if object_dict['Type'] == 'Book':
            return embypy.objects.misc.Book(object_dict, self.connector)
          if object_dict['Type'] == 'Image':
            return embypy.objects.misc.Image(object_dict, self.connector)
      elif 'AppName' in object_dict:
              return embypy.objects.misc.Device(object_dict, self.connector)
      elif 'HasPassword' in object_dict:
              return embypy.objects.misc.User(object_dict, self.connector)
  
      return EmbyObject(object_dict, self.connector)