<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def set_argument(bound_args, address, value):
 """ Taking a bound_args object, and an |ArgumentAddress| and a value, sets the value pointed to by the address to `value`."""

    if address.kind == ArgumentKind.regular:
        bound_args.arguments[address.name] = value
        return

    if address.kind == ArgumentKind.variadic:
        if address.name not in bound_args.arguments:
            bound_args.arguments[address.name] = []

        n_args = len(bound_args.arguments[address.name])
        if address.key >= n_args:
            bound_args.arguments[address.name].extend(
                repeat(Empty, address.key - n_args + 1))

    if address.kind == ArgumentKind.keyword:
        if address.name not in bound_args.arguments:
            bound_args.arguments[address.name] = {}

    bound_args.arguments[address.name][address.key] = value