def METHOD_NAME(cluster, *args):
    """
    Factorize trascendental functions, symbolic powers, numeric coefficients.
    If the expression has an operation count greater than ``MIN_COST_FACTORIZE``,
    then the algorithm is applied recursively until no more factorization
    opportunities are detected.
    """
    processed = []
    for expr in cluster.exprs:
        handle = collect_nested(expr)
        cost_handle = estimate_cost(handle)
        if cost_handle >= MIN_COST_FACTORIZE:
            handle_prev = handle
            cost_prev = estimate_cost(expr)
            while cost_handle < cost_prev:
                handle_prev, handle = handle, collect_nested(handle)
                cost_prev, cost_handle = cost_handle, estimate_cost(handle)
            cost_handle, handle = cost_prev, handle_prev
        processed.append(handle)
    return cluster.rebuild(processed)