code: def set(cls, obj, keys, value, fill_list_value=None):
          
          current = obj
          keys_list = keys.split(".")
  
          for idx, key in enumerate(keys_list, 1):
              if type(current) == list:
                  # Validate this key works with a list.
                  try:
                      key = int(key)
                  except ValueError:
                      raise cls.Missing(key)
  
              try:
                  # This is the last key, so set the value.
                  if idx == len(keys_list):
                      if type(current) == list:
                          safe_list_set(
                              current,
                              key,
                              lambda: copy.copy(fill_list_value),
                              value
                          )
                      else:
                          current[key] = value
  
                      # done.
                      return
  
                  # More keys left, ensure we have a container for this key.
                  if type(key) == int:
                      try:
                          current[key]
                      except IndexError:
                          # Create a list for this key.
                          cnext = container_for_key(keys_list[idx])
                          if type(cnext) == list:
                              def fill_with():
                                  return []
                          else:
                              def fill_with():
                                  return {}
  
                          safe_list_set(
                              current,
                              key,
                              fill_with,
                              [] if type(cnext) == list else {}
                          )
                  else:
                      if key not in current:
                          # Create a list for this key.
                          current[key] = container_for_key(keys_list[idx])
  
                  # Move on to the next key.
                  current = current[key]
              except (IndexError, KeyError, TypeError):
                  raise cls.Missing(key)
docs: sets the value for the given keys on obj. if any of the given
          keys does not exist, create the intermediate containers.