def METHOD_NAME(self, run_state, path, args, reply_fn):
    """
    Return target_info of path in bundle as a message on the reply_fn
    """
    target_info = None
    dep_paths = set([dep.child_path for dep in run_state.bundle.dependencies])
    # if path is a dependency raise an error
    if path and os.path.normpath(path) in dep_paths:
        err = (
            http.client.NOT_FOUND,
            '{} not found in bundle {}'.format(path, run_state.bundle.uuid),
        )
        reply_fn(err, None, None)
        return
    else:
        try:
            target_info = download_util.METHOD_NAME(
                run_state.bundle_path, BundleTarget(run_state.bundle.uuid, path), args['depth']
            )
        except PathException as e:
            err = (http.client.NOT_FOUND, str(e))
            reply_fn(err, None, None)
            return
    if not path and args['depth'] > 0:
        target_info['contents'] = [
            child for child in target_info['contents'] if child['name'] not in dep_paths
        ]
    # Object is not JSON serializable so submit its dict in API response
    # The client is responsible for deserializing it
    target_info['resolved_target'] = target_info['resolved_target'].__dict__
    reply_fn(None, {'target_info': target_info}, None)