def args_builder(prefix, current_target, args_dict, value_found_fn):
    """
    Process arguments a tool cares about.

    Since most tools require configuration, this function helps deal with the
    boilerplate.  Each option will be processed based on all modifications
    supported by dev-pipeline (i.e., profiles and overrides) in the proper
    order.

    Arguments:
    prefix -- The prefix for each argument.  This will be applied to
              everything in args_dict.
    current_target -- Information about the current target being processed.
    args_dict -- Something that acts like a dictionary.  The keys should be
                 options to deal with and the value should be the separtor
                 value the option requires.  The separator can be any type
                 that has a join method, or None if lists are supported for
                 that key.
    value_found_fn -- A function to call when a match is found.
    """
    current_config = current_target.config
    for key, separator in args_dict.items():
        option = "{}.{}".format(prefix, key)
        value = current_config.get_list(option)
        if value:
            if separator is None:
                separator = _NullJoiner(current_config.name, option)
            value_found_fn(separator.join(value), key)