def METHOD_NAME(self, original: cst.Call, updated: cst.Call) -> cst.CSTNode:
    try:
        key = original.func.attr.value
        kword_params = self.METHOD_TO_PARAMS[key]
    except (AttributeError, KeyError):
        # Either not a method from the API or too convoluted to be sure.
        return updated
    # If the existing code is valid, keyword args come after positional args.
    # Therefore, all positional args must map to the first parameters.
    args, kwargs = partition(lambda a: not bool(a.keyword), updated.args)
    if any(k.keyword.value == "request" for k in kwargs):
        # We've already fixed this file, don't fix it again.
        return updated
    kwargs, ctrl_kwargs = partition(
        lambda a: a.keyword.value not in self.CTRL_PARAMS,
        kwargs
    )
    args, ctrl_args = args[:len(kword_params)], args[len(kword_params):]
    ctrl_kwargs.extend(cst.Arg(value=a.value, keyword=cst.Name(value=ctrl))
                       for a, ctrl in zip(ctrl_args, self.CTRL_PARAMS))
    request_arg = cst.Arg(
        value=cst.Dict([
            cst.DictElement(
                cst.SimpleString("'{}'".format(name)),