def get_unbound_arg_names(arg_names, arg_binding_keys):
    """Determines which args have no arg binding keys.

    Args:
      arg_names: a sequence of the names of possibly bound args
      arg_binding_keys: a sequence of ArgBindingKey each of whose arg names is
          in arg_names
    Returns:
      a sequence of arg names that is a (possibly empty, possibly non-proper)
          subset of arg_names

    """
    bound_arg_names = [abk._arg_name for abk in arg_binding_keys]
    return [arg_name for arg_name in arg_names
            if arg_name not in bound_arg_names]
Determines which args have no arg binding keys.

    Args:
      arg_names: a sequence of the names of possibly bound args
      arg_binding_keys: a sequence of ArgBindingKey each of whose arg names is
          in arg_names
    Returns:
      a sequence of arg names that is a (possibly empty, possibly non-proper)
          subset of arg_names