def METHOD_NAME(defaults, a_dict) -> List:
    set_values = []
    for arg, val in a_dict.items():
        if val is None:
            continue
        set_values.append(arg)
        parts = arg.split('.')  # set nested objects with names like obj1.attr
        toset = defaults
        # CONSIDER: use _dict_get (getattr or dict lookup)
        for part in parts[:-1]:
            toset = toset.__dict__[part]
        name = parts[-1]
        d = toset.__dict__[name]
        # CONSIDER: use _dict_set (setattr or dict assign)
        if isinstance(d, Enum):
            toset.__dict__[name] = type(d)[val]
        else:
            toset.__dict__[name] = val
    return set_values