LLVMFuzzerTestOneInput:
   28|  8.58k|{
   29|  8.58k|    auto guard = fuzzer_gc_guard{};
   30|       |
   31|  8.58k|    constexpr auto var_count = 4;
   32|  8.58k|    constexpr auto bits      = 2;
   33|       |
   34|  8.58k|    using vector_t    = immer::flex_vector<int, gc_memory, bits, bits>;
   35|  8.58k|    using transient_t = typename vector_t::transient_type;
   36|  8.58k|    using size_t      = std::uint8_t;
   37|       |
   38|  8.58k|    auto vs = std::array<vector_t, var_count>{};
   39|  8.58k|    auto ts = std::array<transient_t, var_count>{};
   40|       |
   41|  8.58k|    auto is_valid_var = [&](auto idx) { return idx >= 0 && idx < var_count; };
   42|  8.58k|    auto is_valid_var_neq = [](auto other) {
   43|  8.58k|        return [=](auto idx) {
   44|  8.58k|            return idx >= 0 && idx < var_count && idx != other;
   45|  8.58k|        };
   46|  8.58k|    };
   47|  8.58k|    auto is_valid_index = [](auto& v) {
   48|  8.58k|        return [&](auto idx) { return idx >= 0 && idx < v.size(); };
   49|  8.58k|    };
   50|  8.58k|    auto is_valid_size = [](auto& v) {
   51|  8.58k|        return [&](auto idx) { return idx >= 0 && idx <= v.size(); };
   52|  8.58k|    };
   53|  8.58k|    auto can_concat = [](auto&& v1, auto&& v2) {
   54|  8.58k|        return v1.size() + v2.size() < vector_t::max_size();
   55|  8.58k|    };
   56|       |
   57|  8.58k|    return fuzzer_input{data, size}.run([&](auto& in) {
   58|  8.58k|        enum ops
   59|  8.58k|        {
   60|  8.58k|            op_transient,
   61|  8.58k|            op_persistent,
   62|  8.58k|            op_push_back,
   63|  8.58k|            op_update,
   64|  8.58k|            op_take,
   65|  8.58k|            op_drop,
   66|  8.58k|            op_concat,
   67|  8.58k|            op_push_back_mut,
   68|  8.58k|            op_update_mut,
   69|  8.58k|            op_take_mut,
   70|  8.58k|            op_drop_mut,
   71|  8.58k|            op_prepend_mut,
   72|  8.58k|            op_prepend_mut_move,
   73|  8.58k|            op_append_mut,
   74|  8.58k|            op_append_mut_move,
   75|  8.58k|        };
   76|  8.58k|        auto dst = read<char>(in, is_valid_var);
   77|  8.58k|        switch (read<char>(in)) {
   78|  8.58k|        case op_transient: {
   79|  8.58k|            auto src = read<char>(in, is_valid_var);
   80|  8.58k|            ts[dst]  = vs[src].transient();
   81|  8.58k|            break;
   82|  8.58k|        }
   83|  8.58k|        case op_persistent: {
   84|  8.58k|            auto src = read<char>(in, is_valid_var);
   85|  8.58k|            vs[dst]  = ts[src].persistent();
   86|  8.58k|            break;
   87|  8.58k|        }
   88|  8.58k|        case op_push_back: {
   89|  8.58k|            auto src = read<char>(in, is_valid_var);
   90|  8.58k|            vs[dst]  = vs[src].push_back(42);
   91|  8.58k|            break;
   92|  8.58k|        }
   93|  8.58k|        case op_update: {
   94|  8.58k|            auto src = read<char>(in, is_valid_var);
   95|  8.58k|            auto idx = read<size_t>(in, is_valid_index(vs[src]));
   96|  8.58k|            vs[dst]  = vs[src].update(idx, [](auto x) { return x + 1; });
   97|  8.58k|            break;
   98|  8.58k|        }
   99|  8.58k|        case op_take: {
  100|  8.58k|            auto src = read<char>(in, is_valid_var);
  101|  8.58k|            auto idx = read<size_t>(in, is_valid_size(vs[src]));
  102|  8.58k|            vs[dst]  = vs[src].take(idx);
  103|  8.58k|            break;
  104|  8.58k|        }
  105|  8.58k|        case op_drop: {
  106|  8.58k|            auto src = read<char>(in, is_valid_var);
  107|  8.58k|            auto idx = read<size_t>(in, is_valid_size(vs[src]));
  108|  8.58k|            vs[dst]  = vs[src].drop(idx);
  109|  8.58k|            break;
  110|  8.58k|        }
  111|  8.58k|        case op_concat: {
  112|  8.58k|            auto src  = read<char>(in, is_valid_var);
  113|  8.58k|            auto src2 = read<char>(in, is_valid_var);
  114|  8.58k|            if (can_concat(vs[src], vs[src2]))
  115|  8.58k|                vs[dst] = vs[src] + vs[src2];
  116|  8.58k|            break;
  117|  8.58k|        }
  118|  8.58k|        case op_push_back_mut: {
  119|  8.58k|            ts[dst].push_back(13);
  120|  8.58k|            break;
  121|  8.58k|        }
  122|  8.58k|        case op_update_mut: {
  123|  8.58k|            auto idx = read<size_t>(in, is_valid_index(ts[dst]));
  124|  8.58k|            ts[dst].update(idx, [](auto x) { return x + 1; });
  125|  8.58k|            break;
  126|  8.58k|        }
  127|  8.58k|        case op_take_mut: {
  128|  8.58k|            auto idx = read<size_t>(in, is_valid_size(ts[dst]));
  129|  8.58k|            ts[dst].take(idx);
  130|  8.58k|            break;
  131|  8.58k|        }
  132|  8.58k|        case op_prepend_mut: {
  133|  8.58k|            auto src = read<char>(in, is_valid_var_neq(dst));
  134|  8.58k|            if (can_concat(ts[dst], ts[src]))
  135|  8.58k|                ts[dst].prepend(ts[src]);
  136|  8.58k|            break;
  137|  8.58k|        }
  138|  8.58k|        case op_prepend_mut_move: {
  139|  8.58k|            auto src = read<char>(in, is_valid_var_neq(dst));
  140|  8.58k|            if (can_concat(ts[dst], ts[src])) {
  141|  8.58k|                ts[dst].prepend(std::move(ts[src]));
  142|  8.58k|                ts[src] = {};
  143|  8.58k|            }
  144|  8.58k|            break;
  145|  8.58k|        }
  146|  8.58k|        case op_append_mut: {
  147|  8.58k|            auto src = read<char>(in, is_valid_var_neq(dst));
  148|  8.58k|            if (can_concat(ts[dst], ts[src]))
  149|  8.58k|                ts[dst].append(ts[src]);
  150|  8.58k|            break;
  151|  8.58k|        }
  152|  8.58k|        case op_append_mut_move: {
  153|  8.58k|            auto src = read<char>(in, is_valid_var_neq(dst));
  154|  8.58k|            if (can_concat(ts[dst], ts[src])) {
  155|  8.58k|                ts[dst].append(std::move(ts[src]));
  156|  8.58k|                ts[src] = {};
  157|  8.58k|            }
  158|  8.58k|            break;
  159|  8.58k|        }
  160|  8.58k|        default:
  161|  8.58k|            break;
  162|  8.58k|        };
  163|  8.58k|        return true;
  164|  8.58k|    });
  165|  8.58k|}
flex-vector-gc.cpp:_ZZ22LLVMFuzzerTestOneInputENK3$_5clI12fuzzer_inputEEDaRT_:
   57|  2.76M|    return fuzzer_input{data, size}.run([&](auto& in) {
   58|  2.76M|        enum ops
   59|  2.76M|        {
   60|  2.76M|            op_transient,
   61|  2.76M|            op_persistent,
   62|  2.76M|            op_push_back,
   63|  2.76M|            op_update,
   64|  2.76M|            op_take,
   65|  2.76M|            op_drop,
   66|  2.76M|            op_concat,
   67|  2.76M|            op_push_back_mut,
   68|  2.76M|            op_update_mut,
   69|  2.76M|            op_take_mut,
   70|  2.76M|            op_drop_mut,
   71|  2.76M|            op_prepend_mut,
   72|  2.76M|            op_prepend_mut_move,
   73|  2.76M|            op_append_mut,
   74|  2.76M|            op_append_mut_move,
   75|  2.76M|        };
   76|  2.76M|        auto dst = read<char>(in, is_valid_var);
   77|  2.76M|        switch (read<char>(in)) {
   78|  91.9k|        case op_transient: {
  ------------------
  |  Branch (78:9): [True: 91.9k, False: 2.67M]
  ------------------
   79|  91.9k|            auto src = read<char>(in, is_valid_var);
   80|  91.9k|            ts[dst]  = vs[src].transient();
   81|  91.9k|            break;
   82|      0|        }
   83|  27.3k|        case op_persistent: {
  ------------------
  |  Branch (83:9): [True: 27.3k, False: 2.74M]
  ------------------
   84|  27.3k|            auto src = read<char>(in, is_valid_var);
   85|  27.3k|            vs[dst]  = ts[src].persistent();
   86|  27.3k|            break;
   87|      0|        }
   88|  74.8k|        case op_push_back: {
  ------------------
  |  Branch (88:9): [True: 74.8k, False: 2.69M]
  ------------------
   89|  74.8k|            auto src = read<char>(in, is_valid_var);
   90|  74.8k|            vs[dst]  = vs[src].push_back(42);
   91|  74.8k|            break;
   92|      0|        }
   93|  8.09k|        case op_update: {
  ------------------
  |  Branch (93:9): [True: 8.09k, False: 2.76M]
  ------------------
   94|  8.09k|            auto src = read<char>(in, is_valid_var);
   95|  8.09k|            auto idx = read<size_t>(in, is_valid_index(vs[src]));
   96|  8.09k|            vs[dst]  = vs[src].update(idx, [](auto x) { return x + 1; });
   97|  8.09k|            break;
   98|      0|        }
   99|  11.9k|        case op_take: {
  ------------------
  |  Branch (99:9): [True: 11.9k, False: 2.75M]
  ------------------
  100|  11.9k|            auto src = read<char>(in, is_valid_var);
  101|  11.9k|            auto idx = read<size_t>(in, is_valid_size(vs[src]));
  102|  11.9k|            vs[dst]  = vs[src].take(idx);
  103|  11.9k|            break;
  104|      0|        }
  105|  26.9k|        case op_drop: {
  ------------------
  |  Branch (105:9): [True: 26.9k, False: 2.74M]
  ------------------
  106|  26.9k|            auto src = read<char>(in, is_valid_var);
  107|  26.9k|            auto idx = read<size_t>(in, is_valid_size(vs[src]));
  108|  26.9k|            vs[dst]  = vs[src].drop(idx);
  109|  26.9k|            break;
  110|      0|        }
  111|  59.8k|        case op_concat: {
  ------------------
  |  Branch (111:9): [True: 59.8k, False: 2.70M]
  ------------------
  112|  59.8k|            auto src  = read<char>(in, is_valid_var);
  113|  59.8k|            auto src2 = read<char>(in, is_valid_var);
  114|  59.8k|            if (can_concat(vs[src], vs[src2]))
  ------------------
  |  Branch (114:17): [True: 58.7k, False: 1.07k]
  ------------------
  115|  58.7k|                vs[dst] = vs[src] + vs[src2];
  116|  59.8k|            break;
  117|      0|        }
  118|  47.4k|        case op_push_back_mut: {
  ------------------
  |  Branch (118:9): [True: 47.4k, False: 2.72M]
  ------------------
  119|  47.4k|            ts[dst].push_back(13);
  120|  47.4k|            break;
  121|      0|        }
  122|  10.1k|        case op_update_mut: {
  ------------------
  |  Branch (122:9): [True: 10.1k, False: 2.75M]
  ------------------
  123|  10.1k|            auto idx = read<size_t>(in, is_valid_index(ts[dst]));
  124|  10.1k|            ts[dst].update(idx, [](auto x) { return x + 1; });
  125|  10.1k|            break;
  126|      0|        }
  127|  39.3k|        case op_take_mut: {
  ------------------
  |  Branch (127:9): [True: 39.3k, False: 2.72M]
  ------------------
  128|  39.3k|            auto idx = read<size_t>(in, is_valid_size(ts[dst]));
  129|  39.3k|            ts[dst].take(idx);
  130|  39.3k|            break;
  131|      0|        }
  132|  36.9k|        case op_prepend_mut: {
  ------------------
  |  Branch (132:9): [True: 36.9k, False: 2.73M]
  ------------------
  133|  36.9k|            auto src = read<char>(in, is_valid_var_neq(dst));
  134|  36.9k|            if (can_concat(ts[dst], ts[src]))
  ------------------
  |  Branch (134:17): [True: 34.8k, False: 2.13k]
  ------------------
  135|  34.8k|                ts[dst].prepend(ts[src]);
  136|  36.9k|            break;
  137|      0|        }
  138|  3.77k|        case op_prepend_mut_move: {
  ------------------
  |  Branch (138:9): [True: 3.77k, False: 2.76M]
  ------------------
  139|  3.77k|            auto src = read<char>(in, is_valid_var_neq(dst));
  140|  3.77k|            if (can_concat(ts[dst], ts[src])) {
  ------------------
  |  Branch (140:17): [True: 3.49k, False: 276]
  ------------------
  141|  3.49k|                ts[dst].prepend(std::move(ts[src]));
  142|  3.49k|                ts[src] = {};
  143|  3.49k|            }
  144|  3.77k|            break;
  145|      0|        }
  146|  2.27M|        case op_append_mut: {
  ------------------
  |  Branch (146:9): [True: 2.27M, False: 490k]
  ------------------
  147|  2.27M|            auto src = read<char>(in, is_valid_var_neq(dst));
  148|  2.27M|            if (can_concat(ts[dst], ts[src]))
  ------------------
  |  Branch (148:17): [True: 2.27M, False: 4.48k]
  ------------------
  149|  2.27M|                ts[dst].append(ts[src]);
  150|  2.27M|            break;
  151|      0|        }
  152|  5.79k|        case op_append_mut_move: {
  ------------------
  |  Branch (152:9): [True: 5.79k, False: 2.76M]
  ------------------
  153|  5.79k|            auto src = read<char>(in, is_valid_var_neq(dst));
  154|  5.79k|            if (can_concat(ts[dst], ts[src])) {
  ------------------
  |  Branch (154:17): [True: 5.49k, False: 296]
  ------------------
  155|  5.49k|                ts[dst].append(std::move(ts[src]));
  156|  5.49k|                ts[src] = {};
  157|  5.49k|            }
  158|  5.79k|            break;
  159|      0|        }
  160|  37.9k|        default:
  ------------------
  |  Branch (160:9): [True: 37.9k, False: 2.73M]
  ------------------
  161|  37.9k|            break;
  162|  2.76M|        };
  163|  2.76M|        return true;
  164|  2.76M|    });
flex-vector-gc.cpp:_ZZ22LLVMFuzzerTestOneInputENK3$_0clIcEEDaT_:
   41|  3.38M|    auto is_valid_var = [&](auto idx) { return idx >= 0 && idx < var_count; };
  ------------------
  |  Branch (41:48): [True: 3.29M, False: 94.0k]
  |  Branch (41:60): [True: 3.12M, False: 169k]
  ------------------
flex-vector-gc.cpp:_ZZZ22LLVMFuzzerTestOneInputENK3$_2clIN5immer11flex_vectorIiNS1_13memory_policyINS1_11heap_policyINS1_7gc_heapEEENS1_18no_refcount_policyENS1_15spinlock_policyENS1_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEDaRT_ENKUlSC_E_clIhEEDaSC_:
   48|  9.07k|        return [&](auto idx) { return idx >= 0 && idx < v.size(); };
  ------------------
  |  Branch (48:39): [True: 9.07k, False: 0]
  |  Branch (48:51): [True: 8.03k, False: 1.04k]
  ------------------
flex-vector-gc.cpp:_ZZ22LLVMFuzzerTestOneInputENK3$_2clIN5immer11flex_vectorIiNS1_13memory_policyINS1_11heap_policyINS1_7gc_heapEEENS1_18no_refcount_policyENS1_15spinlock_policyENS1_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEDaRT_:
   47|  8.05k|    auto is_valid_index = [](auto& v) {
   48|  8.05k|        return [&](auto idx) { return idx >= 0 && idx < v.size(); };
   49|  8.05k|    };
flex-vector-gc.cpp:_ZZZ22LLVMFuzzerTestOneInputENK3$_5clI12fuzzer_inputEEDaRT_ENKUlS2_E_clIiEEDaS2_:
   96|  8.03k|            vs[dst]  = vs[src].update(idx, [](auto x) { return x + 1; });
flex-vector-gc.cpp:_ZZZ22LLVMFuzzerTestOneInputENK3$_3clIN5immer11flex_vectorIiNS1_13memory_policyINS1_11heap_policyINS1_7gc_heapEEENS1_18no_refcount_policyENS1_15spinlock_policyENS1_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEDaRT_ENKUlSC_E_clIhEEDaSC_:
   51|  42.0k|        return [&](auto idx) { return idx >= 0 && idx <= v.size(); };
  ------------------
  |  Branch (51:39): [True: 42.0k, False: 0]
  |  Branch (51:51): [True: 38.6k, False: 3.39k]
  ------------------
flex-vector-gc.cpp:_ZZ22LLVMFuzzerTestOneInputENK3$_3clIN5immer11flex_vectorIiNS1_13memory_policyINS1_11heap_policyINS1_7gc_heapEEENS1_18no_refcount_policyENS1_15spinlock_policyENS1_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEDaRT_:
   50|  38.7k|    auto is_valid_size = [](auto& v) {
   51|  38.7k|        return [&](auto idx) { return idx >= 0 && idx <= v.size(); };
   52|  38.7k|    };
flex-vector-gc.cpp:_ZZ22LLVMFuzzerTestOneInputENK3$_4clIRN5immer11flex_vectorIiNS1_13memory_policyINS1_11heap_policyINS1_7gc_heapEEENS1_18no_refcount_policyENS1_15spinlock_policyENS1_20gc_transience_policyELb0ELb0EEELj2ELj2EEESC_EEDaOT_OT0_:
   53|  59.7k|    auto can_concat = [](auto&& v1, auto&& v2) {
   54|  59.7k|        return v1.size() + v2.size() < vector_t::max_size();
   55|  59.7k|    };
flex-vector-gc.cpp:_ZZZ22LLVMFuzzerTestOneInputENK3$_2clIN5immer21flex_vector_transientIiNS1_13memory_policyINS1_11heap_policyINS1_7gc_heapEEENS1_18no_refcount_policyENS1_15spinlock_policyENS1_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEDaRT_ENKUlSC_E_clIhEEDaSC_:
   48|  45.7k|        return [&](auto idx) { return idx >= 0 && idx < v.size(); };
  ------------------
  |  Branch (48:39): [True: 45.7k, False: 0]
  |  Branch (48:51): [True: 10.1k, False: 35.5k]
  ------------------
flex-vector-gc.cpp:_ZZ22LLVMFuzzerTestOneInputENK3$_2clIN5immer21flex_vector_transientIiNS1_13memory_policyINS1_11heap_policyINS1_7gc_heapEEENS1_18no_refcount_policyENS1_15spinlock_policyENS1_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEDaRT_:
   47|  10.1k|    auto is_valid_index = [](auto& v) {
   48|  10.1k|        return [&](auto idx) { return idx >= 0 && idx < v.size(); };
   49|  10.1k|    };
flex-vector-gc.cpp:_ZZZ22LLVMFuzzerTestOneInputENK3$_5clI12fuzzer_inputEEDaRT_ENKUlS2_E0_clIiEEDaS2_:
  124|  10.1k|            ts[dst].update(idx, [](auto x) { return x + 1; });
flex-vector-gc.cpp:_ZZZ22LLVMFuzzerTestOneInputENK3$_3clIN5immer21flex_vector_transientIiNS1_13memory_policyINS1_11heap_policyINS1_7gc_heapEEENS1_18no_refcount_policyENS1_15spinlock_policyENS1_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEDaRT_ENKUlSC_E_clIhEEDaSC_:
   51|  42.4k|        return [&](auto idx) { return idx >= 0 && idx <= v.size(); };
  ------------------
  |  Branch (51:39): [True: 42.4k, False: 0]
  |  Branch (51:51): [True: 39.3k, False: 3.13k]
  ------------------
flex-vector-gc.cpp:_ZZ22LLVMFuzzerTestOneInputENK3$_3clIN5immer21flex_vector_transientIiNS1_13memory_policyINS1_11heap_policyINS1_7gc_heapEEENS1_18no_refcount_policyENS1_15spinlock_policyENS1_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEDaRT_:
   50|  39.3k|    auto is_valid_size = [](auto& v) {
   51|  39.3k|        return [&](auto idx) { return idx >= 0 && idx <= v.size(); };
   52|  39.3k|    };
flex-vector-gc.cpp:_ZZZ22LLVMFuzzerTestOneInputENK3$_1clIcEEDaT_ENKUlS1_E_clIcEEDaS1_:
   43|  2.37M|        return [=](auto idx) {
   44|  2.37M|            return idx >= 0 && idx < var_count && idx != other;
  ------------------
  |  Branch (44:20): [True: 2.36M, False: 18.1k]
  |  Branch (44:32): [True: 2.33M, False: 25.7k]
  |  Branch (44:51): [True: 2.32M, False: 11.3k]
  ------------------
   45|  2.37M|        };
flex-vector-gc.cpp:_ZZ22LLVMFuzzerTestOneInputENK3$_1clIcEEDaT_:
   42|  2.32M|    auto is_valid_var_neq = [](auto other) {
   43|  2.32M|        return [=](auto idx) {
   44|  2.32M|            return idx >= 0 && idx < var_count && idx != other;
   45|  2.32M|        };
   46|  2.32M|    };
flex-vector-gc.cpp:_ZZ22LLVMFuzzerTestOneInputENK3$_4clIRN5immer21flex_vector_transientIiNS1_13memory_policyINS1_11heap_policyINS1_7gc_heapEEENS1_18no_refcount_policyENS1_15spinlock_policyENS1_20gc_transience_policyELb0ELb0EEELj2ELj2EEESC_EEDaOT_OT0_:
   53|  2.32M|    auto can_concat = [](auto&& v1, auto&& v2) {
   54|  2.32M|        return v1.size() + v2.size() < vector_t::max_size();
   55|  2.32M|    };

_ZN15fuzzer_gc_guardC2Ev:
   15|  8.58k|    fuzzer_gc_guard() { GC_disable(); }
_ZN15fuzzer_gc_guardD2Ev:
   18|  8.58k|    {
   19|  8.58k|        GC_enable();
   20|  8.58k|        GC_gcollect();
   21|  8.58k|    }

flex-vector-gc.cpp:_ZN12fuzzer_input3runIZ22LLVMFuzzerTestOneInputE3$_5EEiT_:
   50|  8.58k|    {
   51|  8.58k|        if (size_ > fuzzer_input_max_size)
  ------------------
  |  Branch (51:13): [True: 8, False: 8.57k]
  ------------------
   52|      8|            return 0;
   53|  8.57k|        try {
   54|  2.76M|            while (step(*this))
  ------------------
  |  Branch (54:20): [True: 2.76M, False: 8.57k]
  ------------------
   55|  2.76M|                continue;
   56|  8.57k|        } catch (const no_more_input&) {};
   57|  8.57k|        return 0;
   58|  8.57k|    }
flex-vector-gc.cpp:_Z4readIcZ22LLVMFuzzerTestOneInputE3$_0ET_R12fuzzer_inputT0_:
   69|  3.12M|{
   70|  3.12M|    auto x = read<T>(fz);
   71|  3.39M|    while (!cond(x))
  ------------------
  |  Branch (71:12): [True: 263k, False: 3.12M]
  ------------------
   72|   263k|        x = read<T>(fz);
   73|  3.12M|    return x;
   74|  3.12M|}
_Z4readIcERKT_R12fuzzer_input:
   63|  8.53M|{
   64|  8.53M|    return *reinterpret_cast<const T*>(fz.next(sizeof(T), alignof(T)));
   65|  8.53M|}
_ZN12fuzzer_input4nextEmm:
   40|  8.67M|    {
   41|  8.67M|        auto& p = const_cast<void*&>(reinterpret_cast<const void*&>(data_));
   42|  8.67M|        auto r  = std::align(align, size, p, size_);
   43|  8.67M|        if (r == nullptr)
  ------------------
  |  Branch (43:13): [True: 8.57k, False: 8.66M]
  ------------------
   44|  8.57k|            throw no_more_input{};
   45|  8.66M|        return next(size);
   46|  8.67M|    }
_ZN12fuzzer_input4nextEm:
   30|  8.66M|    {
   31|  8.66M|        if (size_ < size)
  ------------------
  |  Branch (31:13): [True: 0, False: 8.66M]
  ------------------
   32|      0|            throw no_more_input{};
   33|  8.66M|        auto r = data_;
   34|  8.66M|        data_ += size;
   35|  8.66M|        size_ -= size;
   36|  8.66M|        return r;
   37|  8.66M|    }
flex-vector-gc.cpp:_Z4readIhZZ22LLVMFuzzerTestOneInputENK3$_2clIN5immer11flex_vectorIiNS2_13memory_policyINS2_11heap_policyINS2_7gc_heapEEENS2_18no_refcount_policyENS2_15spinlock_policyENS2_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEDaRT_EUlSD_E_ESD_R12fuzzer_inputT0_:
   69|  8.05k|{
   70|  8.05k|    auto x = read<T>(fz);
   71|  9.09k|    while (!cond(x))
  ------------------
  |  Branch (71:12): [True: 1.04k, False: 8.05k]
  ------------------
   72|  1.04k|        x = read<T>(fz);
   73|  8.05k|    return x;
   74|  8.05k|}
_Z4readIhERKT_R12fuzzer_input:
   63|   139k|{
   64|   139k|    return *reinterpret_cast<const T*>(fz.next(sizeof(T), alignof(T)));
   65|   139k|}
flex-vector-gc.cpp:_Z4readIhZZ22LLVMFuzzerTestOneInputENK3$_3clIN5immer11flex_vectorIiNS2_13memory_policyINS2_11heap_policyINS2_7gc_heapEEENS2_18no_refcount_policyENS2_15spinlock_policyENS2_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEDaRT_EUlSD_E_ESD_R12fuzzer_inputT0_:
   69|  38.7k|{
   70|  38.7k|    auto x = read<T>(fz);
   71|  42.1k|    while (!cond(x))
  ------------------
  |  Branch (71:12): [True: 3.39k, False: 38.7k]
  ------------------
   72|  3.39k|        x = read<T>(fz);
   73|  38.7k|    return x;
   74|  38.7k|}
flex-vector-gc.cpp:_Z4readIhZZ22LLVMFuzzerTestOneInputENK3$_2clIN5immer21flex_vector_transientIiNS2_13memory_policyINS2_11heap_policyINS2_7gc_heapEEENS2_18no_refcount_policyENS2_15spinlock_policyENS2_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEDaRT_EUlSD_E_ESD_R12fuzzer_inputT0_:
   69|  10.1k|{
   70|  10.1k|    auto x = read<T>(fz);
   71|  45.7k|    while (!cond(x))
  ------------------
  |  Branch (71:12): [True: 35.5k, False: 10.1k]
  ------------------
   72|  35.5k|        x = read<T>(fz);
   73|  10.1k|    return x;
   74|  10.1k|}
flex-vector-gc.cpp:_Z4readIhZZ22LLVMFuzzerTestOneInputENK3$_3clIN5immer21flex_vector_transientIiNS2_13memory_policyINS2_11heap_policyINS2_7gc_heapEEENS2_18no_refcount_policyENS2_15spinlock_policyENS2_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEDaRT_EUlSD_E_ESD_R12fuzzer_inputT0_:
   69|  39.3k|{
   70|  39.3k|    auto x = read<T>(fz);
   71|  42.5k|    while (!cond(x))
  ------------------
  |  Branch (71:12): [True: 3.13k, False: 39.3k]
  ------------------
   72|  3.13k|        x = read<T>(fz);
   73|  39.3k|    return x;
   74|  39.3k|}
flex-vector-gc.cpp:_Z4readIcZZ22LLVMFuzzerTestOneInputENK3$_1clIcEEDaT_EUlS2_E_ES2_R12fuzzer_inputT0_:
   69|  2.32M|{
   70|  2.32M|    auto x = read<T>(fz);
   71|  2.38M|    while (!cond(x))
  ------------------
  |  Branch (71:12): [True: 55.2k, False: 2.32M]
  ------------------
   72|  55.2k|        x = read<T>(fz);
   73|  2.32M|    return x;
   74|  2.32M|}

_ZN5immer6detail3csl3getINS_18no_refcount_policyEEEDcRKNS1_10member_twoINS0_4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEES3_NS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE11impl_data_tENS1_7inheritIS3_NS1_6memberINSC_5applyISA_E4type5owneeEvE4typeEE4typeEE4typeE:
  170|  24.2M|        {
  171|  24.2M|            return x.get_(type_t<U>{});
  172|  24.2M|        }
_ZNK5immer6detail3csl10member_twoINS0_4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE11impl_data_tENS1_7inheritIS9_NS1_6memberINSB_5applyIS8_E4type5owneeEvE4typeEE4typeEE4type4get_IS9_EEDcNS1_6type_tIT_EE:
  184|  24.2M|        {
  185|  24.2M|            return n.get_(t);
  186|  24.2M|        }
_ZNK5immer6detail3csl7inheritINS_18no_refcount_policyENS1_6memberINS_20gc_transience_policy5applyINS_11heap_policyINS_7gc_heapEEEE4type5owneeEvE4typeEE4type4get_ENS1_6type_tIS3_EE:
   82|  25.5M|        const T& get_(type_t<T>) const { return *this; }
_ZN5immer6detail3csl3getINS_18no_refcount_policyEEEDcRKNS1_10member_twoINS0_4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEES3_NS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE14relaxed_data_tENS1_7inheritIS3_NS1_6memberINSC_5applyISA_E4type5owneeEvE4typeEE4typeEE4typeE:
  170|  1.28M|        {
  171|  1.28M|            return x.get_(type_t<U>{});
  172|  1.28M|        }
_ZNK5immer6detail3csl10member_twoINS0_4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE14relaxed_data_tENS1_7inheritIS9_NS1_6memberINSB_5applyIS8_E4type5owneeEvE4typeEE4typeEE4type4get_IS9_EEDcNS1_6type_tIT_EE:
  184|  1.28M|        {
  185|  1.28M|            return n.get_(t);
  186|  1.28M|        }
_ZN5immer6detail3csl3getINS_20gc_transience_policy5applyINS_11heap_policyINS_7gc_heapEEEE4type5owneeEEEDcRNS1_10member_twoINS0_4rbts4nodeIiNS_13memory_policyIS7_NS_18no_refcount_policyENS_15spinlock_policyES3_Lb0ELb0EEELj2ELj2EE14relaxed_data_tENS1_7inheritISF_NS1_6memberISA_vE4typeEE4typeEE4typeE:
  165|  2.21M|        {
  166|  2.21M|            return x.get_(type_t<U>{});
  167|  2.21M|        }
_ZN5immer6detail3csl10member_twoINS0_4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE14relaxed_data_tENS1_7inheritIS9_NS1_6memberINSB_5applyIS8_E4type5owneeEvE4typeEE4typeEE4type4get_ISK_EEDcNS1_6type_tIT_EE:
  179|  2.21M|        {
  180|  2.21M|            return n.get_(t);
  181|  2.21M|        }
_ZN5immer6detail3csl6memberINS_20gc_transience_policy5applyINS_11heap_policyINS_7gc_heapEEEE4type5owneeEvE4type4get_ENS1_6type_tISA_EE:
  150|  5.26M|        T& get_(type_t<T>) { return d; }
_ZN5immer6detail3csl3getINS_20gc_transience_policy5applyINS_11heap_policyINS_7gc_heapEEEE4type5owneeEEEDcRNS1_10member_twoINS0_4rbts4nodeIiNS_13memory_policyIS7_NS_18no_refcount_policyENS_15spinlock_policyES3_Lb0ELb0EEELj2ELj2EE11impl_data_tENS1_7inheritISF_NS1_6memberISA_vE4typeEE4typeEE4typeE:
  165|  3.05M|        {
  166|  3.05M|            return x.get_(type_t<U>{});
  167|  3.05M|        }
_ZN5immer6detail3csl10member_twoINS0_4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE11impl_data_tENS1_7inheritIS9_NS1_6memberINSB_5applyIS8_E4type5owneeEvE4typeEE4typeEE4type4get_ISK_EEDcNS1_6type_tIT_EE:
  179|  3.05M|        {
  180|  3.05M|            return n.get_(t);
  181|  3.05M|        }
_ZN5immer6detail3csl3getINS_20gc_transience_policy5applyINS_11heap_policyINS_7gc_heapEEEE4type5owneeEEEDcRKNS1_10member_twoINS0_4rbts4nodeIiNS_13memory_policyIS7_NS_18no_refcount_policyENS_15spinlock_policyES3_Lb0ELb0EEELj2ELj2EE11impl_data_tENS1_7inheritISF_NS1_6memberISA_vE4typeEE4typeEE4typeE:
  170|  17.3M|        {
  171|  17.3M|            return x.get_(type_t<U>{});
  172|  17.3M|        }
_ZNK5immer6detail3csl10member_twoINS0_4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE11impl_data_tENS1_7inheritIS9_NS1_6memberINSB_5applyIS8_E4type5owneeEvE4typeEE4typeEE4type4get_ISK_EEDcNS1_6type_tIT_EE:
  184|  17.3M|        {
  185|  17.3M|            return n.get_(t);
  186|  17.3M|        }
_ZNK5immer6detail3csl6memberINS_20gc_transience_policy5applyINS_11heap_policyINS_7gc_heapEEEE4type5owneeEvE4type4get_ENS1_6type_tISA_EE:
  151|  17.3M|        const T& get_(type_t<T>) const { return d; }

_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE17make_inner_n_intoEPvmj:
  203|  94.0k|    {
  204|  94.0k|        assert(n <= branches<B>);
  205|      0|        assert(size >= sizeof_inner_n(n));
  206|      0|        auto p                       = new (buffer) node_t;
  207|  94.0k|        p->impl.d.data.inner.relaxed = nullptr;
  208|  94.0k|#if IMMER_TAGGED_NODE
  209|  94.0k|        p->impl.d.kind = node_t::kind_t::inner;
  210|  94.0k|#endif
  211|  94.0k|        return p;
  212|  94.0k|    }
_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE14sizeof_inner_nEj:
  135|   282k|    {
  136|   282k|        return keep_headroom ? max_sizeof_inner : sizeof_packed_inner_n(n);
  ------------------
  |  Branch (136:16): [Folded - Ignored]
  ------------------
  137|   282k|    }
_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE21sizeof_packed_inner_nEj:
  105|  1.07M|    {
  106|  1.07M|        return immer_offsetof(impl_t, d.data.inner.buffer) +
  ------------------
  |  |   19|  1.07M|#define immer_offsetof offsetof
  ------------------
  107|  1.07M|               sizeof(inner_t::buffer) * count;
  108|  1.07M|    }
_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE3incEv:
  946|  4.07M|    {
  947|  4.07M|        refs(this).inc();
  948|  4.07M|        return this;
  949|  4.07M|    }
_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE4refsEPKSB_:
  193|  24.2M|    {
  194|  24.2M|        return auto_const_cast(get<refs_t>(x->impl));
  195|  24.2M|    }
_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE16make_leaf_n_intoEPvmj:
  320|   141k|    {
  321|   141k|        assert(n <= branches<BL>);
  322|      0|        assert(size >= sizeof_leaf_n(n));
  323|      0|        auto p = new (buffer) node_t;
  324|   141k|#if IMMER_TAGGED_NODE
  325|   141k|        p->impl.d.kind = node_t::kind_t::leaf;
  326|   141k|#endif
  327|   141k|        return p;
  328|   141k|    }
_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE13sizeof_leaf_nEj:
  150|   424k|    {
  151|   424k|        return keep_headroom ? max_sizeof_leaf : sizeof_packed_leaf_n(n);
  ------------------
  |  Branch (151:16): [Folded - Ignored]
  ------------------
  152|   424k|    }
_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE20sizeof_packed_leaf_nEj:
   99|   424k|    {
  100|   424k|        return immer_offsetof(impl_t, d.data.leaf.buffer) +
  ------------------
  |  |   19|   424k|#define immer_offsetof offsetof
  ------------------
  101|   424k|               sizeof(leaf_t::buffer) * count;
  102|   424k|    }
_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE7relaxedEv:
  162|  27.9M|    {
  163|  27.9M|        IMMER_ASSERT_TAGGED(kind() == kind_t::inner);
  ------------------
  |  |   60|  27.9M|#define IMMER_ASSERT_TAGGED(assertion) assert(assertion)
  ------------------
  164|      0|        return impl.d.data.inner.relaxed;
  165|  27.9M|    }
_ZNK5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE4kindEv:
  158|  83.0M|    kind_t kind() const { return impl.d.kind; }
_ZNK5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE3decEv:
  957|  2.13M|    bool dec() const { return refs(this).dec(); }
_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE5innerEv:
  174|  40.3M|    {
  175|  40.3M|        IMMER_ASSERT_TAGGED(kind() == kind_t::inner);
  ------------------
  |  |   60|  40.3M|#define IMMER_ASSERT_TAGGED(assertion) assert(assertion)
  ------------------
  176|      0|        return reinterpret_cast<node_t**>(&impl.d.data.inner.buffer);
  177|  40.3M|    }
_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE4refsEPKNS0_3csl10member_twoINSB_14relaxed_data_tENSC_7inheritIS7_NSC_6memberINS9_5applyIS6_E4type5owneeEvE4typeEE4typeEE4typeE:
  186|  1.28M|    {
  187|  1.28M|        return auto_const_cast(get<refs_t>(*x));
  188|  1.28M|    }
_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE5owneeEPNS0_3csl10member_twoINSB_14relaxed_data_tENSC_7inheritIS7_NSC_6memberINS9_5applyIS6_E4type5owneeEvE4typeEE4typeEE4typeE:
  190|  2.21M|    static ownee_t& ownee(relaxed_t* x) { return get<ownee_t>(*x); }
_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE16sizeof_relaxed_nEj:
  145|   750k|    {
  146|   750k|        return keep_headroom ? max_sizeof_relaxed : sizeof_packed_relaxed_n(n);
  ------------------
  |  Branch (146:16): [Folded - Ignored]
  ------------------
  147|   750k|    }
_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE23sizeof_packed_relaxed_nEj:
  111|   750k|    {
  112|   750k|        return immer_offsetof(relaxed_t, d.sizes) + sizeof(size_t) * count;
  ------------------
  |  |   19|   750k|#define immer_offsetof offsetof
  ------------------
  113|   750k|    }
_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE5owneeEPSB_:
  200|  3.05M|    static ownee_t& ownee(node_t* x) { return get<ownee_t>(x->impl); }
_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE16sizeof_inner_r_nEj:
  140|   791k|    {
  141|   791k|        return keep_headroom ? max_sizeof_inner_r : sizeof_packed_inner_r_n(n);
  ------------------
  |  Branch (141:16): [Folded - Ignored]
  ------------------
  142|   791k|    }
_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE23sizeof_packed_inner_r_nEj:
  116|   791k|    {
  117|   791k|        return embed_relaxed ? sizeof_packed_inner_n(count) +
  ------------------
  |  Branch (117:16): [Folded - Ignored]
  ------------------
  118|      0|                                   sizeof_packed_relaxed_n(count)
  119|   791k|                             : sizeof_packed_inner_n(count);
  120|   791k|    }
_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE4leafEv:
  180|  8.67M|    {
  181|  8.67M|        IMMER_ASSERT_TAGGED(kind() == kind_t::leaf);
  ------------------
  |  |   60|  8.67M|#define IMMER_ASSERT_TAGGED(assertion) assert(assertion)
  ------------------
  182|      0|        return reinterpret_cast<T*>(&impl.d.data.leaf.buffer);
  183|  8.67M|    }
_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE17copy_leaf_emplaceIiEEPSB_SD_jOT_:
  784|  55.5k|    {
  785|  55.5k|        auto dst = copy_leaf_n(n + 1, src, n);
  786|  55.5k|        IMMER_TRY {
  ------------------
  |  |   41|  55.5k|#define IMMER_TRY try
  ------------------
  787|  55.5k|            new (dst->leaf() + n) T{std::forward<U>(x)};
  788|  55.5k|        }
  789|  55.5k|        IMMER_CATCH (...) {
  790|      0|            detail::destroy_n(dst->leaf(), n);
  791|      0|            heap::deallocate(node_t::sizeof_leaf_n(n + 1), dst);
  792|      0|            IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
  793|      0|        }
  794|      0|        return dst;
  795|  55.5k|    }
_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE11copy_leaf_nEjPSB_j:
  686|  55.5k|    {
  687|  55.5k|        assert(allocn >= n);
  688|  55.5k|        IMMER_ASSERT_TAGGED(src->kind() == kind_t::leaf);
  ------------------
  |  |   60|  55.5k|#define IMMER_ASSERT_TAGGED(assertion) assert(assertion)
  ------------------
  689|      0|        auto dst = make_leaf_n(allocn);
  690|  55.5k|        IMMER_TRY {
  ------------------
  |  |   41|  55.5k|#define IMMER_TRY try
  ------------------
  691|  55.5k|            detail::uninitialized_copy(
  692|  55.5k|                src->leaf(), src->leaf() + n, dst->leaf());
  693|  55.5k|        }
  694|  55.5k|        IMMER_CATCH (...) {
  695|      0|            heap::deallocate(node_t::sizeof_leaf_n(allocn), dst);
  696|      0|            IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
  697|      0|        }
  698|      0|        return dst;
  699|  55.5k|    }
_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE11make_leaf_nEj:
  331|   141k|    {
  332|   141k|        assert(n <= branches<BL>);
  333|      0|        auto m = heap::allocate(sizeof_leaf_n(n));
  334|   141k|        return make_leaf_n_into(m, sizeof_leaf_n(n), n);
  335|   141k|    }
_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE11make_leaf_nIiEEPSB_jOT_:
  460|  19.2k|    {
  461|  19.2k|        assert(n >= 1);
  462|      0|        auto p = make_leaf_n(n);
  463|  19.2k|        IMMER_TRY {
  ------------------
  |  |   41|  19.2k|#define IMMER_TRY try
  ------------------
  464|  19.2k|            new (p->leaf()) T{std::forward<U>(x)};
  465|  19.2k|        }
  466|  19.2k|        IMMER_CATCH (...) {
  467|      0|            heap::deallocate(node_t::sizeof_leaf_n(n), p);
  468|      0|            IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
  469|      0|        }
  470|      0|        return p;
  471|  19.2k|    }
_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE13do_copy_innerEPSB_SC_j:
  548|   117k|    {
  549|   117k|        IMMER_ASSERT_TAGGED(dst->kind() == kind_t::inner);
  ------------------
  |  |   60|   117k|#define IMMER_ASSERT_TAGGED(assertion) assert(assertion)
  ------------------
  550|   117k|        IMMER_ASSERT_TAGGED(src->kind() == kind_t::inner);
  ------------------
  |  |   60|   117k|#define IMMER_ASSERT_TAGGED(assertion) assert(assertion)
  ------------------
  551|      0|        auto p = src->inner();
  552|   117k|        inc_nodes(p, n);
  553|   117k|        std::copy(p, p + n, dst->inner());
  554|   117k|        return dst;
  555|   117k|    }
_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE9inc_nodesEPPSB_j:
  960|   500k|    {
  961|  1.21M|        for (auto i = p, e = i + n; i != e; ++i)
  ------------------
  |  Branch (961:37): [True: 711k, False: 500k]
  ------------------
  962|   711k|            refs(*i).inc();
  963|   500k|    }
_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE14copy_inner_r_nEjPSB_j:
  578|  55.1k|    {
  579|  55.1k|        assert(allocn >= n);
  580|  55.1k|        IMMER_ASSERT_TAGGED(src->kind() == kind_t::inner);
  ------------------
  |  |   60|  55.1k|#define IMMER_ASSERT_TAGGED(assertion) assert(assertion)
  ------------------
  581|      0|        auto dst = make_inner_r_n(allocn);
  582|  55.1k|        return do_copy_inner_r(dst, src, n);
  583|  55.1k|    }
_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE15do_copy_inner_rEPSB_SC_j:
  600|  93.3k|    {
  601|  93.3k|        IMMER_ASSERT_TAGGED(dst->kind() == kind_t::inner);
  ------------------
  |  |   60|  93.3k|#define IMMER_ASSERT_TAGGED(assertion) assert(assertion)
  ------------------
  602|  93.3k|        IMMER_ASSERT_TAGGED(src->kind() == kind_t::inner);
  ------------------
  |  |   60|  93.3k|#define IMMER_ASSERT_TAGGED(assertion) assert(assertion)
  ------------------
  603|      0|        auto src_r = src->relaxed();
  604|  93.3k|        auto dst_r = dst->relaxed();
  605|  93.3k|        inc_nodes(src->inner(), n);
  606|  93.3k|        std::copy(src->inner(), src->inner() + n, dst->inner());
  607|  93.3k|        std::copy(src_r->d.sizes, src_r->d.sizes + n, dst_r->d.sizes);
  608|  93.3k|        dst_r->d.count = n;
  609|  93.3k|        return dst;
  610|  93.3k|    }
_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE14make_inner_r_nEj:
  233|   750k|    {
  234|   750k|        assert(n <= branches<B>);
  235|      0|        auto mp = heap::allocate(sizeof_inner_r_n(n));
  236|   750k|        auto mr = static_cast<void*>(nullptr);
  237|   750k|        if (embed_relaxed) {
  ------------------
  |  Branch (237:13): [Folded - Ignored]
  ------------------
  238|      0|            mr = reinterpret_cast<unsigned char*>(mp) + sizeof_inner_n(n);
  239|   750k|        } else {
  240|   750k|            IMMER_TRY {
  ------------------
  |  |   41|   750k|#define IMMER_TRY try
  ------------------
  241|   750k|                mr = heap::allocate(sizeof_relaxed_n(n), norefs_tag{});
  242|   750k|            }
  243|   750k|            IMMER_CATCH (...) {
  244|      0|                heap::deallocate(sizeof_inner_r_n(n), mp);
  245|      0|                IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
  246|      0|            }
  247|   750k|        }
  248|   750k|        auto p                       = new (mp) node_t;
  249|   750k|        auto r                       = new (mr) relaxed_t;
  250|   750k|        r->d.count                   = 0;
  251|   750k|        p->impl.d.data.inner.relaxed = r;
  252|   750k|#if IMMER_TAGGED_NODE
  253|   750k|        p->impl.d.kind = node_t::kind_t::inner;
  254|   750k|#endif
  255|   750k|        return p;
  256|   750k|    }
_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE9make_pathEjPSB_:
  488|  42.4k|    {
  489|  42.4k|        IMMER_ASSERT_TAGGED(node->kind() == kind_t::leaf);
  ------------------
  |  |   60|  42.4k|#define IMMER_ASSERT_TAGGED(assertion) assert(assertion)
  ------------------
  490|  42.4k|        if (shift == endshift<B, BL>)
  ------------------
  |  Branch (490:13): [True: 26.8k, False: 15.6k]
  ------------------
  491|  26.8k|            return node;
  492|  15.6k|        else {
  493|  15.6k|            auto n = node_t::make_inner_n(1);
  494|  15.6k|            IMMER_TRY {
  ------------------
  |  |   41|  15.6k|#define IMMER_TRY try
  ------------------
  495|  15.6k|                n->inner()[0] = make_path(shift - B, node);
  496|  15.6k|            }
  497|  15.6k|            IMMER_CATCH (...) {
  498|      0|                heap::deallocate(node_t::sizeof_inner_n(1), n);
  499|      0|                IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
  500|      0|            }
  501|  15.6k|            return n;
  502|  15.6k|        }
  503|  42.4k|    }
_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE12make_inner_nEj:
  214|  94.0k|    {
  215|  94.0k|        assert(n <= branches<B>);
  216|      0|        auto m = heap::allocate(sizeof_inner_n(n));
  217|  94.0k|        return make_inner_n_into(m, sizeof_inner_n(n), n);
  218|  94.0k|    }
_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE9copy_leafEPSB_j:
  656|  14.4k|    {
  657|  14.4k|        IMMER_ASSERT_TAGGED(src->kind() == kind_t::leaf);
  ------------------
  |  |   60|  14.4k|#define IMMER_ASSERT_TAGGED(assertion) assert(assertion)
  ------------------
  658|      0|        auto dst = make_leaf_n(n);
  659|  14.4k|        IMMER_TRY {
  ------------------
  |  |   41|  14.4k|#define IMMER_TRY try
  ------------------
  660|  14.4k|            detail::uninitialized_copy(
  661|  14.4k|                src->leaf(), src->leaf() + n, dst->leaf());
  662|  14.4k|        }
  663|  14.4k|        IMMER_CATCH (...) {
  664|      0|            heap::deallocate(node_t::sizeof_leaf_n(n), dst);
  665|      0|            IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
  666|      0|        }
  667|      0|        return dst;
  668|  14.4k|    }
_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE15make_inner_sr_nEjPNS0_3csl10member_twoINSB_14relaxed_data_tENSC_7inheritIS7_NSC_6memberINS9_5applyIS6_E4type5owneeEvE4typeEE4typeEE4typeE:
  259|  41.4k|    {
  260|  41.4k|        return static_if<embed_relaxed, node_t*>(
  261|  41.4k|            [&](auto) { return node_t::make_inner_r_n(n); },
  262|  41.4k|            [&](auto) {
  263|  41.4k|                auto p =
  264|  41.4k|                    new (heap::allocate(node_t::sizeof_inner_r_n(n))) node_t;
  265|  41.4k|                assert(r->d.count >= n);
  266|  41.4k|                node_t::refs(r).inc();
  267|  41.4k|                p->impl.d.data.inner.relaxed = r;
  268|  41.4k|#if IMMER_TAGGED_NODE
  269|  41.4k|                p->impl.d.kind = node_t::kind_t::inner;
  270|  41.4k|#endif
  271|  41.4k|                return p;
  272|  41.4k|            });
  273|  41.4k|    }
_ZZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE15make_inner_sr_nEjPNS0_3csl10member_twoINSB_14relaxed_data_tENSC_7inheritIS7_NSC_6memberINS9_5applyIS6_E4type5owneeEvE4typeEE4typeEE4typeEENKUlT_E0_clINS0_7empty_tEEEDaSS_:
  262|  41.4k|            [&](auto) {
  263|  41.4k|                auto p =
  264|  41.4k|                    new (heap::allocate(node_t::sizeof_inner_r_n(n))) node_t;
  265|  41.4k|                assert(r->d.count >= n);
  266|      0|                node_t::refs(r).inc();
  267|  41.4k|                p->impl.d.data.inner.relaxed = r;
  268|  41.4k|#if IMMER_TAGGED_NODE
  269|  41.4k|                p->impl.d.kind = node_t::kind_t::inner;
  270|  41.4k|#endif
  271|  41.4k|                return p;
  272|  41.4k|            });
_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE24do_copy_inner_replace_srEPSB_SC_jjSC_:
  642|  41.4k|    {
  643|  41.4k|        if (embed_relaxed)
  ------------------
  |  Branch (643:13): [Folded - Ignored]
  ------------------
  644|      0|            return do_copy_inner_replace_r(dst, src, n, offset, child);
  645|  41.4k|        else {
  646|  41.4k|            auto p = src->inner();
  647|  41.4k|            inc_nodes(p, offset);
  648|  41.4k|            inc_nodes(p + offset + 1, n - offset - 1);
  649|  41.4k|            std::copy(p, p + n, dst->inner());
  650|  41.4k|            dst->inner()[offset] = child;
  651|  41.4k|            return dst;
  652|  41.4k|        }
  653|  41.4k|    }
_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE21do_copy_inner_replaceEPSB_SC_jjSC_:
  559|  4.62k|    {
  560|  4.62k|        IMMER_ASSERT_TAGGED(dst->kind() == kind_t::inner);
  ------------------
  |  |   60|  4.62k|#define IMMER_ASSERT_TAGGED(assertion) assert(assertion)
  ------------------
  561|  4.62k|        IMMER_ASSERT_TAGGED(src->kind() == kind_t::inner);
  ------------------
  |  |   60|  4.62k|#define IMMER_ASSERT_TAGGED(assertion) assert(assertion)
  ------------------
  562|      0|        auto p = src->inner();
  563|  4.62k|        inc_nodes(p, offset);
  564|  4.62k|        inc_nodes(p + offset + 1, n - offset - 1);
  565|  4.62k|        std::copy(p, p + n, dst->inner());
  566|  4.62k|        dst->inner()[offset] = child;
  567|  4.62k|        return dst;
  568|  4.62k|    }
_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE12copy_inner_nEjPSB_j:
  533|  5.25k|    {
  534|  5.25k|        assert(allocn >= n);
  535|  5.25k|        IMMER_ASSERT_TAGGED(src->kind() == kind_t::inner);
  ------------------
  |  |   60|  5.25k|#define IMMER_ASSERT_TAGGED(assertion) assert(assertion)
  ------------------
  536|      0|        auto dst = make_inner_n(allocn);
  537|  5.25k|        return do_copy_inner(dst, src, n);
  538|  5.25k|    }
_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE12copy_inner_rEPSB_j:
  571|  2.21k|    {
  572|  2.21k|        IMMER_ASSERT_TAGGED(src->kind() == kind_t::inner);
  ------------------
  |  |   60|  2.21k|#define IMMER_ASSERT_TAGGED(assertion) assert(assertion)
  ------------------
  573|      0|        auto dst = make_inner_r_n(n);
  574|  2.21k|        return do_copy_inner_r(dst, src, n);
  575|  2.21k|    }
_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE13compute_shiftEv:
  967|  1.01M|    {
  968|  1.01M|        if (kind() == kind_t::leaf)
  ------------------
  |  Branch (968:13): [True: 139k, False: 873k]
  ------------------
  969|   139k|            return endshift<B, BL>;
  970|   873k|        else
  971|   873k|            return B + inner()[0]->compute_shift();
  972|  1.01M|    }
_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE5checkEjm:
  976|  60.5k|    {
  977|       |#if IMMER_DEBUG_DEEP_CHECK
  978|       |        assert(size > 0);
  979|       |        if (shift == endshift<B, BL>) {
  980|       |            IMMER_ASSERT_TAGGED(kind() == kind_t::leaf);
  981|       |            assert(size <= branches<BL>);
  982|       |        } else if (auto r = relaxed()) {
  983|       |            auto count = r->d.count;
  984|       |            assert(count > 0);
  985|       |            assert(count <= branches<B>);
  986|       |            if (r->d.sizes[count - 1] != size) {
  987|       |                IMMER_TRACE_F("check");
  988|       |                IMMER_TRACE_E(r->d.sizes[count - 1]);
  989|       |                IMMER_TRACE_E(size);
  990|       |            }
  991|       |            assert(r->d.sizes[count - 1] == size);
  992|       |            for (auto i = 1u; i < count; ++i)
  993|       |                assert(r->d.sizes[i - 1] < r->d.sizes[i]);
  994|       |            auto last_size = size_t{};
  995|       |            for (auto i = 0u; i < count; ++i) {
  996|       |                assert(inner()[i]->check(shift - B, r->d.sizes[i] - last_size));
  997|       |                last_size = r->d.sizes[i];
  998|       |            }
  999|       |        } else {
 1000|       |            assert(size <= branches<B> << shift);
 1001|       |            auto count =
 1002|       |                (size >> shift) + (size - ((size >> shift) << shift) > 0);
 1003|       |            assert(count <= branches<B>);
 1004|       |            if (count) {
 1005|       |                for (auto i = 1u; i < count - 1; ++i)
 1006|       |                    assert(inner()[i]->check(shift - B, 1 << shift));
 1007|       |                assert(inner()[count - 1]->check(
 1008|       |                    shift - B, size - ((count - 1) << shift)));
 1009|       |            }
 1010|       |        }
 1011|       |#endif // IMMER_DEBUG_DEEP_CHECK
 1012|  60.5k|        return true;
 1013|  60.5k|    }
_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE9copy_leafEPSB_jj:
  768|  26.0k|    {
  769|  26.0k|        IMMER_ASSERT_TAGGED(src->kind() == kind_t::leaf);
  ------------------
  |  |   60|  26.0k|#define IMMER_ASSERT_TAGGED(assertion) assert(assertion)
  ------------------
  770|      0|        auto dst = make_leaf_n(last - idx);
  771|  26.0k|        IMMER_TRY {
  ------------------
  |  |   41|  26.0k|#define IMMER_TRY try
  ------------------
  772|  26.0k|            detail::uninitialized_copy(
  773|  26.0k|                src->leaf() + idx, src->leaf() + last, dst->leaf());
  774|  26.0k|        }
  775|  26.0k|        IMMER_CATCH (...) {
  776|      0|            heap::deallocate(node_t::sizeof_leaf_n(last - idx), dst);
  777|      0|            IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
  778|      0|        }
  779|      0|        return dst;
  780|  26.0k|    }
_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE9copy_leafEPSB_jSC_j:
  702|  8.06k|    {
  703|  8.06k|        IMMER_ASSERT_TAGGED(src1->kind() == kind_t::leaf);
  ------------------
  |  |   60|  8.06k|#define IMMER_ASSERT_TAGGED(assertion) assert(assertion)
  ------------------
  704|  8.06k|        IMMER_ASSERT_TAGGED(src2->kind() == kind_t::leaf);
  ------------------
  |  |   60|  8.06k|#define IMMER_ASSERT_TAGGED(assertion) assert(assertion)
  ------------------
  705|      0|        auto dst = make_leaf_n(n1 + n2);
  706|  8.06k|        IMMER_TRY {
  ------------------
  |  |   41|  8.06k|#define IMMER_TRY try
  ------------------
  707|  8.06k|            detail::uninitialized_copy(
  708|  8.06k|                src1->leaf(), src1->leaf() + n1, dst->leaf());
  709|  8.06k|        }
  710|  8.06k|        IMMER_CATCH (...) {
  711|      0|            heap::deallocate(node_t::sizeof_leaf_n(n1 + n2), dst);
  712|      0|            IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
  713|      0|        }
  714|      0|        IMMER_TRY {
  ------------------
  |  |   41|      0|#define IMMER_TRY try
  ------------------
  715|      0|            detail::uninitialized_copy(
  716|      0|                src2->leaf(), src2->leaf() + n2, dst->leaf() + n1);
  717|      0|        }
  718|      0|        IMMER_CATCH (...) {
  719|      0|            detail::destroy_n(dst->leaf(), n1);
  720|      0|            heap::deallocate(node_t::sizeof_leaf_n(n1 + n2), dst);
  721|      0|            IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
  722|      0|        }
  723|      0|        return dst;
  724|      0|    }
_ZNK5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE10can_mutateENS9_5applyIS6_E4type4editE:
  860|  17.3M|    {
  861|  17.3M|        return refs(this).unique() || ownee(this).can_mutate(e);
  ------------------
  |  Branch (861:16): [True: 0, False: 17.3M]
  |  Branch (861:39): [True: 16.3M, False: 963k]
  ------------------
  862|  17.3M|    }
_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE5owneeEPKSB_:
  197|  17.3M|    {
  198|  17.3M|        return get<ownee_t>(x->impl);
  199|  17.3M|    }
_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE11copy_leaf_eENS9_5applyIS6_E4type4editEPSB_j:
  671|  42.9k|    {
  672|  42.9k|        IMMER_ASSERT_TAGGED(src->kind() == kind_t::leaf);
  ------------------
  |  |   60|  42.9k|#define IMMER_ASSERT_TAGGED(assertion) assert(assertion)
  ------------------
  673|      0|        auto dst = make_leaf_e(e);
  674|  42.9k|        IMMER_TRY {
  ------------------
  |  |   41|  42.9k|#define IMMER_TRY try
  ------------------
  675|  42.9k|            detail::uninitialized_copy(
  676|  42.9k|                src->leaf(), src->leaf() + n, dst->leaf());
  677|  42.9k|        }
  678|  42.9k|        IMMER_CATCH (...) {
  679|      0|            heap::deallocate(node_t::max_sizeof_leaf, dst);
  680|      0|            IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
  681|      0|        }
  682|      0|        return dst;
  683|  42.9k|    }
_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE11make_leaf_eENS9_5applyIS6_E4type4editE:
  338|  1.40M|    {
  339|  1.40M|        auto p   = new (heap::allocate(max_sizeof_leaf)) node_t;
  340|  1.40M|        ownee(p) = e;
  341|  1.40M|#if IMMER_TAGGED_NODE
  342|  1.40M|        p->impl.d.kind = node_t::kind_t::leaf;
  343|  1.40M|#endif
  344|  1.40M|        return p;
  345|  1.40M|    }
_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE11make_leaf_eIiEEPSB_NS9_5applyIS6_E4type4editEOT_:
  475|  16.8k|    {
  476|  16.8k|        auto p = make_leaf_e(e);
  477|  16.8k|        IMMER_TRY {
  ------------------
  |  |   41|  16.8k|#define IMMER_TRY try
  ------------------
  478|  16.8k|            new (p->leaf()) T{std::forward<U>(x)};
  479|  16.8k|        }
  480|  16.8k|        IMMER_CATCH (...) {
  481|      0|            heap::deallocate(node_t::max_sizeof_leaf, p);
  482|      0|            IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
  483|      0|        }
  484|      0|        return p;
  485|  16.8k|    }
_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE24ensure_mutable_relaxed_nENS9_5applyIS6_E4type4editEj:
  920|  1.05M|    {
  921|  1.05M|        auto src_r = relaxed();
  922|  1.05M|        return static_if<embed_relaxed, relaxed_t*>(
  923|  1.05M|            [&](auto) { return src_r; },
  924|  1.05M|            [&](auto) {
  925|  1.05M|                if (node_t::refs(src_r).unique() ||
  926|  1.05M|                    node_t::ownee(src_r).can_mutate(e))
  927|  1.05M|                    return src_r;
  928|  1.05M|                else {
  929|  1.05M|                    auto dst_r =
  930|  1.05M|                        new (heap::allocate(max_sizeof_relaxed)) relaxed_t;
  931|  1.05M|                    if (src_r) {
  932|  1.05M|                        std::copy(
  933|  1.05M|                            src_r->d.sizes, src_r->d.sizes + n, dst_r->d.sizes);
  934|  1.05M|                        if (node_t::refs(src_r).dec())
  935|  1.05M|                            heap::deallocate(node_t::sizeof_inner_r_n(n),
  936|  1.05M|                                             src_r);
  937|  1.05M|                    }
  938|  1.05M|                    dst_r->d.count                   = n;
  939|  1.05M|                    node_t::ownee(dst_r)             = e;
  940|  1.05M|                    return impl.d.data.inner.relaxed = dst_r;
  941|  1.05M|                }
  942|  1.05M|            });
  943|  1.05M|    }
_ZZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE24ensure_mutable_relaxed_nENS9_5applyIS6_E4type4editEjENKUlT_E0_clINS0_7empty_tEEEDaSG_:
  924|  1.05M|            [&](auto) {
  925|  1.05M|                if (node_t::refs(src_r).unique() ||
  ------------------
  |  Branch (925:21): [True: 0, False: 1.05M]
  ------------------
  926|  1.05M|                    node_t::ownee(src_r).can_mutate(e))
  ------------------
  |  Branch (926:21): [True: 1.05M, False: 1.17k]
  ------------------
  927|  1.05M|                    return src_r;
  928|  1.17k|                else {
  929|  1.17k|                    auto dst_r =
  930|  1.17k|                        new (heap::allocate(max_sizeof_relaxed)) relaxed_t;
  931|  1.17k|                    if (src_r) {
  ------------------
  |  Branch (931:25): [True: 1.17k, False: 0]
  ------------------
  932|  1.17k|                        std::copy(
  933|  1.17k|                            src_r->d.sizes, src_r->d.sizes + n, dst_r->d.sizes);
  934|  1.17k|                        if (node_t::refs(src_r).dec())
  ------------------
  |  Branch (934:29): [True: 0, False: 1.17k]
  ------------------
  935|      0|                            heap::deallocate(node_t::sizeof_inner_r_n(n),
  936|      0|                                             src_r);
  937|  1.17k|                    }
  938|  1.17k|                    dst_r->d.count                   = n;
  939|  1.17k|                    node_t::ownee(dst_r)             = e;
  940|  1.17k|                    return impl.d.data.inner.relaxed = dst_r;
  941|  1.17k|                }
  942|  1.05M|            });
_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE14copy_inner_r_eENS9_5applyIS6_E4type4editEPSB_j:
  586|  36.0k|    {
  587|  36.0k|        IMMER_ASSERT_TAGGED(src->kind() == kind_t::inner);
  ------------------
  |  |   60|  36.0k|#define IMMER_ASSERT_TAGGED(assertion) assert(assertion)
  ------------------
  588|      0|        auto dst = make_inner_r_e(e);
  589|  36.0k|        return do_copy_inner_r(dst, src, n);
  590|  36.0k|    }
_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE14make_inner_r_eENS9_5applyIS6_E4type4editE:
  276|   794k|    {
  277|   794k|        auto mp = heap::allocate(max_sizeof_inner_r);
  278|   794k|        auto mr = static_cast<void*>(nullptr);
  279|   794k|        if (embed_relaxed) {
  ------------------
  |  Branch (279:13): [Folded - Ignored]
  ------------------
  280|      0|            mr = reinterpret_cast<unsigned char*>(mp) + max_sizeof_inner;
  281|   794k|        } else {
  282|   794k|            IMMER_TRY {
  ------------------
  |  |   41|   794k|#define IMMER_TRY try
  ------------------
  283|   794k|                mr = heap::allocate(max_sizeof_relaxed, norefs_tag{});
  284|   794k|            }
  285|   794k|            IMMER_CATCH (...) {
  286|      0|                heap::deallocate(max_sizeof_inner_r, mp);
  287|      0|                IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
  288|      0|            }
  289|   794k|        }
  290|   794k|        auto p   = new (mp) node_t;
  291|   794k|        auto r   = new (mr) relaxed_t;
  292|   794k|        ownee(p) = e;
  293|   794k|        static_if<!embed_relaxed>([&](auto) { node_t::ownee(r) = e; });
  294|   794k|        r->d.count                   = 0;
  295|   794k|        p->impl.d.data.inner.relaxed = r;
  296|   794k|#if IMMER_TAGGED_NODE
  297|   794k|        p->impl.d.kind = node_t::kind_t::inner;
  298|   794k|#endif
  299|   794k|        return p;
  300|   794k|    }
_ZZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE14make_inner_r_eENS9_5applyIS6_E4type4editEENKUlT_E_clINS0_7empty_tEEEDaSG_:
  293|   794k|        static_if<!embed_relaxed>([&](auto) { node_t::ownee(r) = e; });
_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE11make_path_eENS9_5applyIS6_E4type4editEjPSB_:
  506|  2.98M|    {
  507|  2.98M|        IMMER_ASSERT_TAGGED(node->kind() == kind_t::leaf);
  ------------------
  |  |   60|  2.98M|#define IMMER_ASSERT_TAGGED(assertion) assert(assertion)
  ------------------
  508|  2.98M|        if (shift == endshift<B, BL>)
  ------------------
  |  Branch (508:13): [True: 2.23M, False: 750k]
  ------------------
  509|  2.23M|            return node;
  510|   750k|        else {
  511|   750k|            auto n = node_t::make_inner_e(e);
  512|   750k|            IMMER_TRY {
  ------------------
  |  |   41|   750k|#define IMMER_TRY try
  ------------------
  513|   750k|                n->inner()[0] = make_path_e(e, shift - B, node);
  514|   750k|            }
  515|   750k|            IMMER_CATCH (...) {
  516|      0|                heap::deallocate(node_t::max_sizeof_inner, n);
  517|      0|                IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
  518|      0|            }
  519|   750k|            return n;
  520|   750k|        }
  521|  2.98M|    }
_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE12make_inner_eENS9_5applyIS6_E4type4editE:
  221|   800k|    {
  222|   800k|        auto m                       = heap::allocate(max_sizeof_inner);
  223|   800k|        auto p                       = new (m) node_t;
  224|   800k|        ownee(p)                     = e;
  225|   800k|        p->impl.d.data.inner.relaxed = nullptr;
  226|   800k|#if IMMER_TAGGED_NODE
  227|   800k|        p->impl.d.kind = node_t::kind_t::inner;
  228|   800k|#endif
  229|   800k|        return p;
  230|   800k|    }
_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE12copy_inner_eENS9_5applyIS6_E4type4editEPSB_j:
  541|  21.5k|    {
  542|  21.5k|        IMMER_ASSERT_TAGGED(src->kind() == kind_t::inner);
  ------------------
  |  |   60|  21.5k|#define IMMER_ASSERT_TAGGED(assertion) assert(assertion)
  ------------------
  543|      0|        auto dst = make_inner_e(e);
  544|  21.5k|        return do_copy_inner(dst, src, n);
  545|  21.5k|    }
_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE15copy_inner_sr_eENS9_5applyIS6_E4type4editEPSB_j:
  593|  10.2k|    {
  594|  10.2k|        IMMER_ASSERT_TAGGED(src->kind() == kind_t::inner);
  ------------------
  |  |   60|  10.2k|#define IMMER_ASSERT_TAGGED(assertion) assert(assertion)
  ------------------
  595|      0|        auto dst = make_inner_sr_e(e, src->relaxed());
  596|  10.2k|        return do_copy_inner_sr(dst, src, n);
  597|  10.2k|    }
_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE15make_inner_sr_eENS9_5applyIS6_E4type4editEPNS0_3csl10member_twoINSB_14relaxed_data_tENSG_7inheritIS7_NSG_6memberINSE_5owneeEvE4typeEE4typeEE4typeE:
  303|  10.2k|    {
  304|  10.2k|        return static_if<embed_relaxed, node_t*>(
  305|  10.2k|            [&](auto) { return node_t::make_inner_r_e(e); },
  306|  10.2k|            [&](auto) {
  307|  10.2k|                auto p =
  308|  10.2k|                    new (heap::allocate(node_t::max_sizeof_inner_r)) node_t;
  309|  10.2k|                node_t::refs(r).inc();
  310|  10.2k|                p->impl.d.data.inner.relaxed = r;
  311|  10.2k|                node_t::ownee(p)             = e;
  312|  10.2k|#if IMMER_TAGGED_NODE
  313|  10.2k|                p->impl.d.kind = node_t::kind_t::inner;
  314|  10.2k|#endif
  315|  10.2k|                return p;
  316|  10.2k|            });
  317|  10.2k|    }
_ZZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE15make_inner_sr_eENS9_5applyIS6_E4type4editEPNS0_3csl10member_twoINSB_14relaxed_data_tENSG_7inheritIS7_NSG_6memberINSE_5owneeEvE4typeEE4typeEE4typeEENKUlT_E0_clINS0_7empty_tEEEDaST_:
  306|  10.2k|            [&](auto) {
  307|  10.2k|                auto p =
  308|  10.2k|                    new (heap::allocate(node_t::max_sizeof_inner_r)) node_t;
  309|  10.2k|                node_t::refs(r).inc();
  310|  10.2k|                p->impl.d.data.inner.relaxed = r;
  311|  10.2k|                node_t::ownee(p)             = e;
  312|  10.2k|#if IMMER_TAGGED_NODE
  313|  10.2k|                p->impl.d.kind = node_t::kind_t::inner;
  314|  10.2k|#endif
  315|  10.2k|                return p;
  316|  10.2k|            });
_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE16do_copy_inner_srEPSB_SC_j:
  630|  10.2k|    {
  631|  10.2k|        if (embed_relaxed)
  ------------------
  |  Branch (631:13): [Folded - Ignored]
  ------------------
  632|      0|            return do_copy_inner_r(dst, src, n);
  633|  10.2k|        else {
  634|  10.2k|            inc_nodes(src->inner(), n);
  635|  10.2k|            std::copy(src->inner(), src->inner() + n, dst->inner());
  636|  10.2k|            return dst;
  637|  10.2k|        }
  638|  10.2k|    }
_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE11copy_leaf_eENS9_5applyIS6_E4type4editEPSB_jSG_j:
  728|  2.21k|    {
  729|  2.21k|        IMMER_ASSERT_TAGGED(src1->kind() == kind_t::leaf);
  ------------------
  |  |   60|  2.21k|#define IMMER_ASSERT_TAGGED(assertion) assert(assertion)
  ------------------
  730|  2.21k|        IMMER_ASSERT_TAGGED(src2->kind() == kind_t::leaf);
  ------------------
  |  |   60|  2.21k|#define IMMER_ASSERT_TAGGED(assertion) assert(assertion)
  ------------------
  731|      0|        auto dst = make_leaf_e(e);
  732|  2.21k|        IMMER_TRY {
  ------------------
  |  |   41|  2.21k|#define IMMER_TRY try
  ------------------
  733|  2.21k|            detail::uninitialized_copy(
  734|  2.21k|                src1->leaf(), src1->leaf() + n1, dst->leaf());
  735|  2.21k|        }
  736|  2.21k|        IMMER_CATCH (...) {
  737|      0|            heap::deallocate(max_sizeof_leaf, dst);
  738|      0|            IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
  739|      0|        }
  740|      0|        IMMER_TRY {
  ------------------
  |  |   41|      0|#define IMMER_TRY try
  ------------------
  741|      0|            detail::uninitialized_copy(
  742|      0|                src2->leaf(), src2->leaf() + n2, dst->leaf() + n1);
  743|      0|        }
  744|      0|        IMMER_CATCH (...) {
  745|      0|            detail::destroy_n(dst->leaf(), n1);
  746|      0|            heap::deallocate(max_sizeof_leaf, dst);
  747|      0|            IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
  748|      0|        }
  749|      0|        return dst;
  750|      0|    }
_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE11copy_leaf_eENS9_5applyIS6_E4type4editEPSB_jj:
  753|  1.31M|    {
  754|  1.31M|        IMMER_ASSERT_TAGGED(src->kind() == kind_t::leaf);
  ------------------
  |  |   60|  1.31M|#define IMMER_ASSERT_TAGGED(assertion) assert(assertion)
  ------------------
  755|      0|        auto dst = make_leaf_e(e);
  756|  1.31M|        IMMER_TRY {
  ------------------
  |  |   41|  1.31M|#define IMMER_TRY try
  ------------------
  757|  1.31M|            detail::uninitialized_copy(
  758|  1.31M|                src->leaf() + idx, src->leaf() + last, dst->leaf());
  759|  1.31M|        }
  760|  1.31M|        IMMER_CATCH (...) {
  761|      0|            heap::deallocate(max_sizeof_leaf, dst);
  762|      0|            IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
  763|      0|        }
  764|      0|        return dst;
  765|  1.31M|    }
_ZNK5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE9can_relaxEv:
  864|  1.06M|    bool can_relax() const { return !embed_relaxed || relaxed(); }
  ------------------
  |  Branch (864:37): [Folded - Ignored]
  |  Branch (864:55): [True: 0, False: 0]
  ------------------
_ZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE24ensure_mutable_relaxed_eENS9_5applyIS6_E4type4editESF_:
  893|   186k|    {
  894|   186k|        auto src_r = relaxed();
  895|   186k|        return static_if<embed_relaxed, relaxed_t*>(
  896|   186k|            [&](auto) { return src_r; },
  897|   186k|            [&](auto) {
  898|   186k|                if (src_r && (node_t::refs(src_r).unique() ||
  899|   186k|                              node_t::ownee(src_r).can_mutate(e))) {
  900|   186k|                    node_t::ownee(src_r) = ec;
  901|   186k|                    return src_r;
  902|   186k|                } else {
  903|   186k|                    auto dst_r = impl.d.data.inner.relaxed =
  904|   186k|                        new (heap::allocate(max_sizeof_relaxed)) relaxed_t;
  905|   186k|                    if (src_r) {
  906|   186k|                        auto n = dst_r->d.count = src_r->d.count;
  907|   186k|                        std::copy(
  908|   186k|                            src_r->d.sizes, src_r->d.sizes + n, dst_r->d.sizes);
  909|   186k|                        if (node_t::refs(src_r).dec())
  910|   186k|                            heap::deallocate(node_t::sizeof_inner_r_n(n),
  911|   186k|                                             src_r);
  912|   186k|                    }
  913|   186k|                    node_t::ownee(dst_r) = ec;
  914|   186k|                    return dst_r;
  915|   186k|                }
  916|   186k|            });
  917|   186k|    }
_ZZN5immer6detail4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE24ensure_mutable_relaxed_eENS9_5applyIS6_E4type4editESF_ENKUlT_E0_clINS0_7empty_tEEEDaSG_:
  897|   186k|            [&](auto) {
  898|   186k|                if (src_r && (node_t::refs(src_r).unique() ||
  ------------------
  |  Branch (898:21): [True: 179k, False: 7.22k]
  |  Branch (898:31): [True: 0, False: 179k]
  ------------------
  899|   179k|                              node_t::ownee(src_r).can_mutate(e))) {
  ------------------
  |  Branch (899:31): [True: 178k, False: 536]
  ------------------
  900|   178k|                    node_t::ownee(src_r) = ec;
  901|   178k|                    return src_r;
  902|   178k|                } else {
  903|  7.75k|                    auto dst_r = impl.d.data.inner.relaxed =
  904|  7.75k|                        new (heap::allocate(max_sizeof_relaxed)) relaxed_t;
  905|  7.75k|                    if (src_r) {
  ------------------
  |  Branch (905:25): [True: 536, False: 7.22k]
  ------------------
  906|    536|                        auto n = dst_r->d.count = src_r->d.count;
  907|    536|                        std::copy(
  908|    536|                            src_r->d.sizes, src_r->d.sizes + n, dst_r->d.sizes);
  909|    536|                        if (node_t::refs(src_r).dec())
  ------------------
  |  Branch (909:29): [True: 0, False: 536]
  ------------------
  910|      0|                            heap::deallocate(node_t::sizeof_inner_r_n(n),
  911|      0|                                             src_r);
  912|    536|                    }
  913|  7.75k|                    node_t::ownee(dst_r) = ec;
  914|  7.75k|                    return dst_r;
  915|  7.75k|                }
  916|   186k|            });

_ZN5immer6detail4rbts11dec_visitor13visit_relaxedIRNS1_11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEEEvOT_:
  522|   662k|    {
  523|   662k|        using node_t = node_type<Pos>;
  524|   662k|        auto node    = p.node();
  525|   662k|        if (node->dec()) {
  ------------------
  |  Branch (525:13): [True: 0, False: 662k]
  ------------------
  526|      0|            p.each(this_t{});
  527|      0|            node_t::delete_inner_r(node, p.count());
  528|      0|        }
  529|   662k|    }
_ZN5immer6detail4rbts11dec_visitor13visit_regularIRNS1_15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEEEvOT_:
  533|  51.6k|    {
  534|  51.6k|        using node_t = node_type<Pos>;
  535|  51.6k|        auto node    = p.node();
  536|  51.6k|        if (node->dec()) {
  ------------------
  |  Branch (536:13): [True: 0, False: 51.6k]
  ------------------
  537|      0|            p.each(this_t{});
  538|      0|            node_t::delete_inner(node, p.count());
  539|      0|        }
  540|  51.6k|    }
_ZN5immer6detail4rbts11dec_visitor10visit_leafIRNS1_13full_leaf_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEEEvOT_:
  544|  6.08k|    {
  545|  6.08k|        using node_t = node_type<Pos>;
  546|  6.08k|        auto node    = p.node();
  547|  6.08k|        if (node->dec()) {
  ------------------
  |  Branch (547:13): [True: 0, False: 6.08k]
  ------------------
  548|      0|            node_t::delete_leaf(node, p.count());
  549|      0|        }
  550|  6.08k|    }
_ZN5immer6detail4rbts11dec_visitor10visit_leafIRNS1_8leaf_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEEEvOT_:
  544|  2.60k|    {
  545|  2.60k|        using node_t = node_type<Pos>;
  546|  2.60k|        auto node    = p.node();
  547|  2.60k|        if (node->dec()) {
  ------------------
  |  Branch (547:13): [True: 0, False: 2.60k]
  ------------------
  548|      0|            node_t::delete_leaf(node, p.count());
  549|      0|        }
  550|  2.60k|    }
_ZN5immer6detail4rbts11dec_visitor13visit_regularIRNS1_8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEEEvOT_:
  533|  8.87k|    {
  534|  8.87k|        using node_t = node_type<Pos>;
  535|  8.87k|        auto node    = p.node();
  536|  8.87k|        if (node->dec()) {
  ------------------
  |  Branch (536:13): [True: 0, False: 8.87k]
  ------------------
  537|      0|            p.each(this_t{});
  538|      0|            node_t::delete_inner(node, p.count());
  539|      0|        }
  540|  8.87k|    }
_ZN5immer6detail4rbts11dec_visitor13visit_regularIRNS1_11regular_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEEEvOT_:
  533|  3.12k|    {
  534|  3.12k|        using node_t = node_type<Pos>;
  535|  3.12k|        auto node    = p.node();
  536|  3.12k|        if (node->dec()) {
  ------------------
  |  Branch (536:13): [True: 0, False: 3.12k]
  ------------------
  537|      0|            p.each(this_t{});
  538|      0|            node_t::delete_inner(node, p.count());
  539|      0|        }
  540|  3.12k|    }
_ZN5immer6detail4rbts11dec_visitor13visit_regularIRNS1_17empty_regular_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEEEvOT_:
  533|   445k|    {
  534|   445k|        using node_t = node_type<Pos>;
  535|   445k|        auto node    = p.node();
  536|   445k|        if (node->dec()) {
  ------------------
  |  Branch (536:13): [True: 0, False: 445k]
  ------------------
  537|      0|            p.each(this_t{});
  538|      0|            node_t::delete_inner(node, p.count());
  539|      0|        }
  540|   445k|    }
_ZN5immer6detail4rbts11dec_visitor10visit_leafIRNS1_12leaf_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEEEvOT_:
  544|   517k|    {
  545|   517k|        using node_t = node_type<Pos>;
  546|   517k|        auto node    = p.node();
  547|   517k|        if (node->dec()) {
  ------------------
  |  Branch (547:13): [True: 0, False: 517k]
  ------------------
  548|      0|            node_t::delete_leaf(node, p.count());
  549|      0|        }
  550|   517k|    }
_ZN5immer6detail4rbts11dec_visitor10visit_leafIRNS1_14empty_leaf_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEEEvOT_:
  544|   388k|    {
  545|   388k|        using node_t = node_type<Pos>;
  546|   388k|        auto node    = p.node();
  547|   388k|        if (node->dec()) {
  ------------------
  |  Branch (547:13): [True: 0, False: 388k]
  ------------------
  548|      0|            node_t::delete_leaf(node, p.count());
  549|      0|        }
  550|   388k|    }
_ZN5immer6detail4rbts17push_tail_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE13visit_relaxedIRNS1_11relaxed_posISC_EEEEPSC_OT_SI_j:
  790|  50.8k|    {
  791|  50.8k|        auto level    = pos.shift();
  792|  50.8k|        auto idx      = pos.count() - 1;
  793|  50.8k|        auto children = pos.size(idx);
  794|  50.8k|        auto new_idx =
  795|  50.8k|            children == size_t{1} << level || level == BL ? idx + 1 : idx;
  ------------------
  |  Branch (795:13): [True: 3.79k, False: 47.0k]
  |  Branch (795:47): [True: 551, False: 46.5k]
  ------------------
  796|  50.8k|        auto new_child = static_cast<node_t*>(nullptr);
  797|  50.8k|        if (new_idx >= branches<B>)
  ------------------
  |  Branch (797:13): [True: 1.05k, False: 49.8k]
  ------------------
  798|  1.05k|            return nullptr;
  799|  49.8k|        else if (idx == new_idx) {
  ------------------
  |  Branch (799:18): [True: 46.5k, False: 3.29k]
  ------------------
  800|  46.5k|            new_child = pos.last_oh_csh(this_t{}, idx, children, tail, ts);
  801|  46.5k|            if (!new_child) {
  ------------------
  |  Branch (801:17): [True: 1.75k, False: 44.7k]
  ------------------
  802|  1.75k|                if (++new_idx < branches<B>)
  ------------------
  |  Branch (802:21): [True: 388, False: 1.36k]
  ------------------
  803|    388|                    new_child = node_t::make_path(level - B, tail);
  804|  1.36k|                else
  805|  1.36k|                    return nullptr;
  806|  1.75k|            }
  807|  46.5k|        } else
  808|  3.29k|            new_child = node_t::make_path(level - B, tail);
  809|  48.4k|        IMMER_TRY {
  ------------------
  |  |   41|  48.4k|#define IMMER_TRY try
  ------------------
  810|  48.4k|            auto count = new_idx + 1;
  811|  48.4k|            auto new_parent =
  812|  48.4k|                node_t::copy_inner_r_n(count, pos.node(), new_idx);
  813|  48.4k|            auto new_relaxed              = new_parent->relaxed();
  814|  48.4k|            new_parent->inner()[new_idx]  = new_child;
  815|  48.4k|            new_relaxed->d.sizes[new_idx] = pos.size() + ts;
  816|  48.4k|            new_relaxed->d.count          = count;
  817|  48.4k|            assert(new_relaxed->d.sizes[new_idx]);
  818|      0|            return new_parent;
  819|  48.4k|        }
  820|  48.4k|        IMMER_CATCH (...) {
  821|      0|            auto shift = pos.shift();
  822|      0|            auto size  = new_idx == idx ? children + ts : ts;
  ------------------
  |  Branch (822:26): [True: 0, False: 0]
  ------------------
  823|      0|            if (shift > BL) {
  ------------------
  |  Branch (823:17): [True: 0, False: 0]
  ------------------
  824|      0|                tail->inc();
  825|      0|                dec_inner(new_child, shift - B, size);
  826|      0|            }
  827|      0|            IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
  828|      0|        }
  829|  48.4k|    }
_ZN5immer6detail4rbts17push_tail_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE13visit_regularIRNS1_15regular_sub_posISC_EEJRjEEEPSC_OT_SJ_DpOT0_:
  833|  11.1k|    {
  834|  11.1k|        assert((pos.size() & mask<BL>) == 0);
  835|      0|        auto idx        = pos.index(pos.size() - 1);
  836|  11.1k|        auto new_idx    = pos.index(pos.size() + branches<BL> - 1);
  837|  11.1k|        auto count      = new_idx + 1;
  838|  11.1k|        auto new_parent = node_t::make_inner_n(count);
  839|  11.1k|        IMMER_TRY {
  ------------------
  |  |   41|  11.1k|#define IMMER_TRY try
  ------------------
  840|  11.1k|            new_parent->inner()[new_idx] =
  841|  11.1k|                idx == new_idx ? pos.last_oh(this_t{}, idx, tail)
  ------------------
  |  Branch (841:17): [True: 9.99k, False: 1.15k]
  ------------------
  842|       |                               /* otherwise */
  843|  11.1k|                               : node_t::make_path(pos.shift() - B, tail);
  844|  11.1k|        }
  845|  11.1k|        IMMER_CATCH (...) {
  846|      0|            node_t::delete_inner(new_parent, count);
  847|      0|            IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
  848|      0|        }
  849|  11.1k|        return node_t::do_copy_inner(new_parent, pos.node(), new_idx);
  850|  11.1k|    }
_ZN5immer6detail4rbts17push_tail_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE13visit_regularIRNS1_11regular_posISC_EEJEEEPSC_OT_SI_DpOT0_:
  833|  52.6k|    {
  834|  52.6k|        assert((pos.size() & mask<BL>) == 0);
  835|      0|        auto idx        = pos.index(pos.size() - 1);
  836|  52.6k|        auto new_idx    = pos.index(pos.size() + branches<BL> - 1);
  837|  52.6k|        auto count      = new_idx + 1;
  838|  52.6k|        auto new_parent = node_t::make_inner_n(count);
  839|  52.6k|        IMMER_TRY {
  ------------------
  |  |   41|  52.6k|#define IMMER_TRY try
  ------------------
  840|  52.6k|            new_parent->inner()[new_idx] =
  841|  52.6k|                idx == new_idx ? pos.last_oh(this_t{}, idx, tail)
  ------------------
  |  Branch (841:17): [True: 40.8k, False: 11.7k]
  ------------------
  842|       |                               /* otherwise */
  843|  52.6k|                               : node_t::make_path(pos.shift() - B, tail);
  844|  52.6k|        }
  845|  52.6k|        IMMER_CATCH (...) {
  846|      0|            node_t::delete_inner(new_parent, count);
  847|      0|            IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
  848|      0|        }
  849|  52.6k|        return node_t::do_copy_inner(new_parent, pos.node(), new_idx);
  850|  52.6k|    }
_ZN5immer6detail4rbts17push_tail_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE13visit_regularIRNS1_15regular_sub_posISC_EEJEEEPSC_OT_SI_DpOT0_:
  833|  3.84k|    {
  834|  3.84k|        assert((pos.size() & mask<BL>) == 0);
  835|      0|        auto idx        = pos.index(pos.size() - 1);
  836|  3.84k|        auto new_idx    = pos.index(pos.size() + branches<BL> - 1);
  837|  3.84k|        auto count      = new_idx + 1;
  838|  3.84k|        auto new_parent = node_t::make_inner_n(count);
  839|  3.84k|        IMMER_TRY {
  ------------------
  |  |   41|  3.84k|#define IMMER_TRY try
  ------------------
  840|  3.84k|            new_parent->inner()[new_idx] =
  841|  3.84k|                idx == new_idx ? pos.last_oh(this_t{}, idx, tail)
  ------------------
  |  Branch (841:17): [True: 1.77k, False: 2.07k]
  ------------------
  842|       |                               /* otherwise */
  843|  3.84k|                               : node_t::make_path(pos.shift() - B, tail);
  844|  3.84k|        }
  845|  3.84k|        IMMER_CATCH (...) {
  846|      0|            node_t::delete_inner(new_parent, count);
  847|      0|            IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
  848|      0|        }
  849|  3.84k|        return node_t::do_copy_inner(new_parent, pos.node(), new_idx);
  850|  3.84k|    }
flex-vector-gc.cpp:_ZN5immer6detail4rbts14update_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10visit_leafIRNS1_12leaf_sub_posISC_EERZZ22LLVMFuzzerTestOneInputENK3$_5clI12fuzzer_inputEEDaRT_EUlSL_E_EEPSC_OSL_mOT0_:
  501|  6.04k|    {
  502|  6.04k|        auto offset = pos.index(idx);
  503|  6.04k|        auto node   = node_t::copy_leaf(pos.node(), pos.count());
  504|  6.04k|        IMMER_TRY {
  ------------------
  |  |   41|  6.04k|#define IMMER_TRY try
  ------------------
  505|  6.04k|            node->leaf()[offset] =
  506|  6.04k|                std::forward<Fn>(fn)(std::move(node->leaf()[offset]));
  507|  6.04k|            return node;
  508|  6.04k|        }
  509|  6.04k|        IMMER_CATCH (...) {
  510|      0|            node_t::delete_leaf(node, pos.count());
  511|      0|            IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
  512|      0|        }
  513|  6.04k|    }
flex-vector-gc.cpp:_ZN5immer6detail4rbts14update_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE13visit_relaxedIRNS1_11relaxed_posISC_EERZZ22LLVMFuzzerTestOneInputENK3$_5clI12fuzzer_inputEEDaRT_EUlSL_E_EEPSC_OSL_mOT0_:
  465|  41.4k|    {
  466|  41.4k|        auto offset = pos.index(idx);
  467|  41.4k|        auto count  = pos.count();
  468|  41.4k|        auto node   = node_t::make_inner_sr_n(count, pos.relaxed());
  469|  41.4k|        IMMER_TRY {
  ------------------
  |  |   41|  41.4k|#define IMMER_TRY try
  ------------------
  470|  41.4k|            auto child = pos.towards_oh(this_t{}, idx, offset, fn);
  471|  41.4k|            node_t::do_copy_inner_replace_sr(
  472|  41.4k|                node, pos.node(), count, offset, child);
  473|  41.4k|            return node;
  474|  41.4k|        }
  475|  41.4k|        IMMER_CATCH (...) {
  476|      0|            node_t::delete_inner_r(node, count);
  477|      0|            IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
  478|      0|        }
  479|  41.4k|    }
flex-vector-gc.cpp:_ZN5immer6detail4rbts14update_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE13visit_regularIRNS1_15regular_sub_posISC_EERZZ22LLVMFuzzerTestOneInputENK3$_5clI12fuzzer_inputEEDaRT_EUlSL_E_EEPSC_OSL_mOT0_:
  483|  1.99k|    {
  484|  1.99k|        auto offset = pos.index(idx);
  485|  1.99k|        auto count  = pos.count();
  486|  1.99k|        auto node   = node_t::make_inner_n(count);
  487|  1.99k|        IMMER_TRY {
  ------------------
  |  |   41|  1.99k|#define IMMER_TRY try
  ------------------
  488|  1.99k|            auto child = pos.towards_oh_ch(this_t{}, idx, offset, count, fn);
  489|  1.99k|            node_t::do_copy_inner_replace(
  490|  1.99k|                node, pos.node(), count, offset, child);
  491|  1.99k|            return node;
  492|  1.99k|        }
  493|  1.99k|        IMMER_CATCH (...) {
  494|      0|            node_t::delete_inner(node, count);
  495|      0|            IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
  496|      0|        }
  497|  1.99k|    }
flex-vector-gc.cpp:_ZN5immer6detail4rbts14update_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10visit_leafIRNS1_13full_leaf_posISC_EERZZ22LLVMFuzzerTestOneInputENK3$_5clI12fuzzer_inputEEDaRT_EUlSL_E_EEPSC_OSL_mOT0_:
  501|  1.29k|    {
  502|  1.29k|        auto offset = pos.index(idx);
  503|  1.29k|        auto node   = node_t::copy_leaf(pos.node(), pos.count());
  504|  1.29k|        IMMER_TRY {
  ------------------
  |  |   41|  1.29k|#define IMMER_TRY try
  ------------------
  505|  1.29k|            node->leaf()[offset] =
  506|  1.29k|                std::forward<Fn>(fn)(std::move(node->leaf()[offset]));
  507|  1.29k|            return node;
  508|  1.29k|        }
  509|  1.29k|        IMMER_CATCH (...) {
  510|      0|            node_t::delete_leaf(node, pos.count());
  511|      0|            IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
  512|      0|        }
  513|  1.29k|    }
flex-vector-gc.cpp:_ZN5immer6detail4rbts14update_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE13visit_regularIRNS1_8full_posISC_EERZZ22LLVMFuzzerTestOneInputENK3$_5clI12fuzzer_inputEEDaRT_EUlSL_E_EEPSC_OSL_mOT0_:
  483|  1.50k|    {
  484|  1.50k|        auto offset = pos.index(idx);
  485|  1.50k|        auto count  = pos.count();
  486|  1.50k|        auto node   = node_t::make_inner_n(count);
  487|  1.50k|        IMMER_TRY {
  ------------------
  |  |   41|  1.50k|#define IMMER_TRY try
  ------------------
  488|  1.50k|            auto child = pos.towards_oh_ch(this_t{}, idx, offset, count, fn);
  489|  1.50k|            node_t::do_copy_inner_replace(
  490|  1.50k|                node, pos.node(), count, offset, child);
  491|  1.50k|            return node;
  492|  1.50k|        }
  493|  1.50k|        IMMER_CATCH (...) {
  494|      0|            node_t::delete_inner(node, count);
  495|      0|            IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
  496|      0|        }
  497|  1.50k|    }
flex-vector-gc.cpp:_ZN5immer6detail4rbts14update_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10visit_leafIRNS1_8leaf_posISC_EERZZ22LLVMFuzzerTestOneInputENK3$_5clI12fuzzer_inputEEDaRT_EUlSL_E_EEPSC_OSL_mOT0_:
  501|    699|    {
  502|    699|        auto offset = pos.index(idx);
  503|    699|        auto node   = node_t::copy_leaf(pos.node(), pos.count());
  504|    699|        IMMER_TRY {
  ------------------
  |  |   41|    699|#define IMMER_TRY try
  ------------------
  505|    699|            node->leaf()[offset] =
  506|    699|                std::forward<Fn>(fn)(std::move(node->leaf()[offset]));
  507|    699|            return node;
  508|    699|        }
  509|    699|        IMMER_CATCH (...) {
  510|      0|            node_t::delete_leaf(node, pos.count());
  511|      0|            IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
  512|      0|        }
  513|    699|    }
flex-vector-gc.cpp:_ZN5immer6detail4rbts14update_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE13visit_regularIRNS1_11regular_posISC_EERZZ22LLVMFuzzerTestOneInputENK3$_5clI12fuzzer_inputEEDaRT_EUlSL_E_EEPSC_OSL_mOT0_:
  483|  1.13k|    {
  484|  1.13k|        auto offset = pos.index(idx);
  485|  1.13k|        auto count  = pos.count();
  486|  1.13k|        auto node   = node_t::make_inner_n(count);
  487|  1.13k|        IMMER_TRY {
  ------------------
  |  |   41|  1.13k|#define IMMER_TRY try
  ------------------
  488|  1.13k|            auto child = pos.towards_oh_ch(this_t{}, idx, offset, count, fn);
  489|  1.13k|            node_t::do_copy_inner_replace(
  490|  1.13k|                node, pos.node(), count, offset, child);
  491|  1.13k|            return node;
  492|  1.13k|        }
  493|  1.13k|        IMMER_CATCH (...) {
  494|      0|            node_t::delete_inner(node, count);
  495|      0|            IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
  496|      0|        }
  497|  1.13k|    }
_ZN5immer6detail4rbts19slice_right_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb1EE13visit_relaxedIRNS1_11relaxed_posISC_EEEENSt3__15tupleIJjPSC_jSK_EEEOT_m:
 1095|  12.0k|    {
 1096|  12.0k|        auto idx = pos.index(last);
 1097|  12.0k|        if (Collapse && idx == 0) {
  ------------------
  |  Branch (1097:13): [Folded - Ignored]
  |  Branch (1097:25): [True: 7.76k, False: 4.30k]
  ------------------
 1098|  7.76k|            return pos.towards_oh(this_t{}, last, idx);
 1099|  7.76k|        } else {
 1100|  4.30k|            using std::get;
 1101|  4.30k|            auto subs = pos.towards_oh(no_collapse_t{}, last, idx);
 1102|  4.30k|            auto next = get<1>(subs);
 1103|  4.30k|            auto ts   = get<2>(subs);
 1104|  4.30k|            auto tail = get<3>(subs);
 1105|  4.30k|            IMMER_TRY {
  ------------------
  |  |   41|  4.30k|#define IMMER_TRY try
  ------------------
 1106|  4.30k|                if (next) {
  ------------------
  |  Branch (1106:21): [True: 2.27k, False: 2.02k]
  ------------------
 1107|  2.27k|                    auto count = idx + 1;
 1108|  2.27k|                    auto newn  = node_t::copy_inner_r_n(count, pos.node(), idx);
 1109|  2.27k|                    auto newr  = newn->relaxed();
 1110|  2.27k|                    newn->inner()[idx] = next;
 1111|  2.27k|                    newr->d.sizes[idx] = last + 1 - ts;
 1112|  2.27k|                    newr->d.count      = count;
 1113|  2.27k|                    assert(newr->d.sizes[idx]);
 1114|      0|                    return std::make_tuple(pos.shift(), newn, ts, tail);
 1115|  2.27k|                } else if (idx == 0) {
  ------------------
  |  Branch (1115:28): [True: 0, False: 2.02k]
  ------------------
 1116|      0|                    return std::make_tuple(pos.shift(), nullptr, ts, tail);
 1117|  2.02k|                } else if (Collapse && idx == 1 && pos.shift() > BL) {
  ------------------
  |  Branch (1117:28): [Folded - Ignored]
  |  Branch (1117:40): [True: 1.60k, False: 423]
  |  Branch (1117:52): [True: 1.32k, False: 280]
  ------------------
 1118|  1.32k|                    auto newn = pos.node()->inner()[0];
 1119|  1.32k|                    return std::make_tuple(
 1120|  1.32k|                        pos.shift() - B, newn->inc(), ts, tail);
 1121|  1.32k|                } else {
 1122|    703|                    auto newn = node_t::copy_inner_r(pos.node(), idx);
 1123|    703|                    return std::make_tuple(pos.shift(), newn, ts, tail);
 1124|    703|                }
 1125|  4.30k|            }
 1126|  4.30k|            IMMER_CATCH (...) {
 1127|      0|                assert(!next || pos.shift() > BL);
 1128|      0|                if (next)
  ------------------
  |  Branch (1128:21): [True: 0, False: 0]
  ------------------
 1129|      0|                    dec_inner(next,
 1130|      0|                              pos.shift() - B,
 1131|      0|                              last + 1 - ts - pos.size_before(idx));
 1132|      0|                if (tail)
  ------------------
  |  Branch (1132:21): [True: 0, False: 0]
  ------------------
 1133|      0|                    dec_leaf(tail, ts);
 1134|      0|                IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1135|      0|            }
 1136|  4.30k|        }
 1137|  12.0k|    }
_ZN5immer6detail4rbts19slice_right_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb1EE10visit_leafIRNS1_12leaf_sub_posISC_EEEENSt3__15tupleIJjPSC_jSK_EEEOT_m:
 1180|    682|    {
 1181|    682|        auto old_tail_size = pos.count();
 1182|    682|        auto new_tail_size = pos.index(last) + 1;
 1183|    682|        auto new_tail      = new_tail_size == old_tail_size
  ------------------
  |  Branch (1183:30): [True: 249, False: 433]
  ------------------
 1184|    682|                                 ? pos.node()->inc()
 1185|    682|                                 : node_t::copy_leaf(pos.node(), new_tail_size);
 1186|    682|        return std::make_tuple(0, nullptr, new_tail_size, new_tail);
 1187|    682|    }
_ZN5immer6detail4rbts19slice_right_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb0EE10visit_leafIRNS1_12leaf_sub_posISC_EEEENSt3__15tupleIJjPSC_jSK_EEEOT_m:
 1180|  2.91k|    {
 1181|  2.91k|        auto old_tail_size = pos.count();
 1182|  2.91k|        auto new_tail_size = pos.index(last) + 1;
 1183|  2.91k|        auto new_tail      = new_tail_size == old_tail_size
  ------------------
  |  Branch (1183:30): [True: 896, False: 2.01k]
  ------------------
 1184|  2.91k|                                 ? pos.node()->inc()
 1185|  2.91k|                                 : node_t::copy_leaf(pos.node(), new_tail_size);
 1186|  2.91k|        return std::make_tuple(0, nullptr, new_tail_size, new_tail);
 1187|  2.91k|    }
_ZN5immer6detail4rbts19slice_right_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb0EE13visit_relaxedIRNS1_11relaxed_posISC_EEEENSt3__15tupleIJjPSC_jSK_EEEOT_m:
 1095|  7.37k|    {
 1096|  7.37k|        auto idx = pos.index(last);
 1097|  7.37k|        if (Collapse && idx == 0) {
  ------------------
  |  Branch (1097:13): [Folded - Ignored]
  |  Branch (1097:25): [True: 0, False: 0]
  ------------------
 1098|      0|            return pos.towards_oh(this_t{}, last, idx);
 1099|  7.37k|        } else {
 1100|  7.37k|            using std::get;
 1101|  7.37k|            auto subs = pos.towards_oh(no_collapse_t{}, last, idx);
 1102|  7.37k|            auto next = get<1>(subs);
 1103|  7.37k|            auto ts   = get<2>(subs);
 1104|  7.37k|            auto tail = get<3>(subs);
 1105|  7.37k|            IMMER_TRY {
  ------------------
  |  |   41|  7.37k|#define IMMER_TRY try
  ------------------
 1106|  7.37k|                if (next) {
  ------------------
  |  Branch (1106:21): [True: 4.41k, False: 2.96k]
  ------------------
 1107|  4.41k|                    auto count = idx + 1;
 1108|  4.41k|                    auto newn  = node_t::copy_inner_r_n(count, pos.node(), idx);
 1109|  4.41k|                    auto newr  = newn->relaxed();
 1110|  4.41k|                    newn->inner()[idx] = next;
 1111|  4.41k|                    newr->d.sizes[idx] = last + 1 - ts;
 1112|  4.41k|                    newr->d.count      = count;
 1113|  4.41k|                    assert(newr->d.sizes[idx]);
 1114|      0|                    return std::make_tuple(pos.shift(), newn, ts, tail);
 1115|  4.41k|                } else if (idx == 0) {
  ------------------
  |  Branch (1115:28): [True: 1.45k, False: 1.50k]
  ------------------
 1116|  1.45k|                    return std::make_tuple(pos.shift(), nullptr, ts, tail);
 1117|  1.50k|                } else if (Collapse && idx == 1 && pos.shift() > BL) {
  ------------------
  |  Branch (1117:28): [Folded - Ignored]
  |  Branch (1117:40): [True: 0, False: 0]
  |  Branch (1117:52): [True: 0, False: 0]
  ------------------
 1118|      0|                    auto newn = pos.node()->inner()[0];
 1119|      0|                    return std::make_tuple(
 1120|      0|                        pos.shift() - B, newn->inc(), ts, tail);
 1121|  1.50k|                } else {
 1122|  1.50k|                    auto newn = node_t::copy_inner_r(pos.node(), idx);
 1123|  1.50k|                    return std::make_tuple(pos.shift(), newn, ts, tail);
 1124|  1.50k|                }
 1125|  7.37k|            }
 1126|  7.37k|            IMMER_CATCH (...) {
 1127|      0|                assert(!next || pos.shift() > BL);
 1128|      0|                if (next)
  ------------------
  |  Branch (1128:21): [True: 0, False: 0]
  ------------------
 1129|      0|                    dec_inner(next,
 1130|      0|                              pos.shift() - B,
 1131|      0|                              last + 1 - ts - pos.size_before(idx));
 1132|      0|                if (tail)
  ------------------
  |  Branch (1132:21): [True: 0, False: 0]
  ------------------
 1133|      0|                    dec_leaf(tail, ts);
 1134|      0|                IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1135|      0|            }
 1136|  7.37k|        }
 1137|  7.37k|    }
_ZN5immer6detail4rbts19slice_right_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb0EE13visit_regularIRNS1_15regular_sub_posISC_EEEENSt3__15tupleIJjPSC_jSK_EEEOT_m:
 1141|  1.39k|    {
 1142|  1.39k|        auto idx = pos.index(last);
 1143|  1.39k|        if (Collapse && idx == 0) {
  ------------------
  |  Branch (1143:13): [Folded - Ignored]
  |  Branch (1143:25): [True: 0, False: 0]
  ------------------
 1144|      0|            return pos.towards_oh(this_t{}, last, idx);
 1145|  1.39k|        } else {
 1146|  1.39k|            using std::get;
 1147|  1.39k|            auto subs = pos.towards_oh(no_collapse_t{}, last, idx);
 1148|  1.39k|            auto next = get<1>(subs);
 1149|  1.39k|            auto ts   = get<2>(subs);
 1150|  1.39k|            auto tail = get<3>(subs);
 1151|  1.39k|            IMMER_TRY {
  ------------------
  |  |   41|  1.39k|#define IMMER_TRY try
  ------------------
 1152|  1.39k|                if (next) {
  ------------------
  |  Branch (1152:21): [True: 408, False: 983]
  ------------------
 1153|    408|                    auto newn = node_t::copy_inner_n(idx + 1, pos.node(), idx);
 1154|    408|                    newn->inner()[idx] = next;
 1155|    408|                    return std::make_tuple(pos.shift(), newn, ts, tail);
 1156|    983|                } else if (idx == 0) {
  ------------------
  |  Branch (1156:28): [True: 621, False: 362]
  ------------------
 1157|    621|                    return std::make_tuple(pos.shift(), nullptr, ts, tail);
 1158|    621|                } else if (Collapse && idx == 1 && pos.shift() > BL) {
  ------------------
  |  Branch (1158:28): [Folded - Ignored]
  |  Branch (1158:40): [True: 0, False: 0]
  |  Branch (1158:52): [True: 0, False: 0]
  ------------------
 1159|      0|                    auto newn = pos.node()->inner()[0];
 1160|      0|                    return std::make_tuple(
 1161|      0|                        pos.shift() - B, newn->inc(), ts, tail);
 1162|    362|                } else {
 1163|    362|                    auto newn = node_t::copy_inner_n(idx, pos.node(), idx);
 1164|    362|                    return std::make_tuple(pos.shift(), newn, ts, tail);
 1165|    362|                }
 1166|  1.39k|            }
 1167|  1.39k|            IMMER_CATCH (...) {
 1168|      0|                assert(!next || pos.shift() > BL);
 1169|      0|                assert(tail);
 1170|      0|                if (next)
  ------------------
  |  Branch (1170:21): [True: 0, False: 0]
  ------------------
 1171|      0|                    dec_regular(next, pos.shift() - B, last + 1 - ts);
 1172|      0|                dec_leaf(tail, ts);
 1173|      0|                IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1174|      0|            }
 1175|  1.39k|        }
 1176|  1.39k|    }
_ZN5immer6detail4rbts19slice_right_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb0EE10visit_leafIRNS1_13full_leaf_posISC_EEEENSt3__15tupleIJjPSC_jSK_EEEOT_m:
 1180|  2.89k|    {
 1181|  2.89k|        auto old_tail_size = pos.count();
 1182|  2.89k|        auto new_tail_size = pos.index(last) + 1;
 1183|  2.89k|        auto new_tail      = new_tail_size == old_tail_size
  ------------------
  |  Branch (1183:30): [True: 1.22k, False: 1.67k]
  ------------------
 1184|  2.89k|                                 ? pos.node()->inc()
 1185|  2.89k|                                 : node_t::copy_leaf(pos.node(), new_tail_size);
 1186|  2.89k|        return std::make_tuple(0, nullptr, new_tail_size, new_tail);
 1187|  2.89k|    }
_ZN5immer6detail4rbts19slice_right_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb0EE13visit_regularIRNS1_8full_posISC_EEEENSt3__15tupleIJjPSC_jSK_EEEOT_m:
 1141|  2.04k|    {
 1142|  2.04k|        auto idx = pos.index(last);
 1143|  2.04k|        if (Collapse && idx == 0) {
  ------------------
  |  Branch (1143:13): [Folded - Ignored]
  |  Branch (1143:25): [True: 0, False: 0]
  ------------------
 1144|      0|            return pos.towards_oh(this_t{}, last, idx);
 1145|  2.04k|        } else {
 1146|  2.04k|            using std::get;
 1147|  2.04k|            auto subs = pos.towards_oh(no_collapse_t{}, last, idx);
 1148|  2.04k|            auto next = get<1>(subs);
 1149|  2.04k|            auto ts   = get<2>(subs);
 1150|  2.04k|            auto tail = get<3>(subs);
 1151|  2.04k|            IMMER_TRY {
  ------------------
  |  |   41|  2.04k|#define IMMER_TRY try
  ------------------
 1152|  2.04k|                if (next) {
  ------------------
  |  Branch (1152:21): [True: 400, False: 1.64k]
  ------------------
 1153|    400|                    auto newn = node_t::copy_inner_n(idx + 1, pos.node(), idx);
 1154|    400|                    newn->inner()[idx] = next;
 1155|    400|                    return std::make_tuple(pos.shift(), newn, ts, tail);
 1156|  1.64k|                } else if (idx == 0) {
  ------------------
  |  Branch (1156:28): [True: 880, False: 762]
  ------------------
 1157|    880|                    return std::make_tuple(pos.shift(), nullptr, ts, tail);
 1158|    880|                } else if (Collapse && idx == 1 && pos.shift() > BL) {
  ------------------
  |  Branch (1158:28): [Folded - Ignored]
  |  Branch (1158:40): [True: 0, False: 0]
  |  Branch (1158:52): [True: 0, False: 0]
  ------------------
 1159|      0|                    auto newn = pos.node()->inner()[0];
 1160|      0|                    return std::make_tuple(
 1161|      0|                        pos.shift() - B, newn->inc(), ts, tail);
 1162|    762|                } else {
 1163|    762|                    auto newn = node_t::copy_inner_n(idx, pos.node(), idx);
 1164|    762|                    return std::make_tuple(pos.shift(), newn, ts, tail);
 1165|    762|                }
 1166|  2.04k|            }
 1167|  2.04k|            IMMER_CATCH (...) {
 1168|      0|                assert(!next || pos.shift() > BL);
 1169|      0|                assert(tail);
 1170|      0|                if (next)
  ------------------
  |  Branch (1170:21): [True: 0, False: 0]
  ------------------
 1171|      0|                    dec_regular(next, pos.shift() - B, last + 1 - ts);
 1172|      0|                dec_leaf(tail, ts);
 1173|      0|                IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1174|      0|            }
 1175|  2.04k|        }
 1176|  2.04k|    }
_ZN5immer6detail4rbts19slice_right_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb0EE10visit_leafIRNS1_8leaf_posISC_EEEENSt3__15tupleIJjPSC_jSK_EEEOT_m:
 1180|  1.93k|    {
 1181|  1.93k|        auto old_tail_size = pos.count();
 1182|  1.93k|        auto new_tail_size = pos.index(last) + 1;
 1183|  1.93k|        auto new_tail      = new_tail_size == old_tail_size
  ------------------
  |  Branch (1183:30): [True: 776, False: 1.15k]
  ------------------
 1184|  1.93k|                                 ? pos.node()->inc()
 1185|  1.93k|                                 : node_t::copy_leaf(pos.node(), new_tail_size);
 1186|  1.93k|        return std::make_tuple(0, nullptr, new_tail_size, new_tail);
 1187|  1.93k|    }
_ZN5immer6detail4rbts19slice_right_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb0EE13visit_regularIRNS1_11regular_posISC_EEEENSt3__15tupleIJjPSC_jSK_EEEOT_m:
 1141|  2.57k|    {
 1142|  2.57k|        auto idx = pos.index(last);
 1143|  2.57k|        if (Collapse && idx == 0) {
  ------------------
  |  Branch (1143:13): [Folded - Ignored]
  |  Branch (1143:25): [True: 0, False: 0]
  ------------------
 1144|      0|            return pos.towards_oh(this_t{}, last, idx);
 1145|  2.57k|        } else {
 1146|  2.57k|            using std::get;
 1147|  2.57k|            auto subs = pos.towards_oh(no_collapse_t{}, last, idx);
 1148|  2.57k|            auto next = get<1>(subs);
 1149|  2.57k|            auto ts   = get<2>(subs);
 1150|  2.57k|            auto tail = get<3>(subs);
 1151|  2.57k|            IMMER_TRY {
  ------------------
  |  |   41|  2.57k|#define IMMER_TRY try
  ------------------
 1152|  2.57k|                if (next) {
  ------------------
  |  Branch (1152:21): [True: 406, False: 2.17k]
  ------------------
 1153|    406|                    auto newn = node_t::copy_inner_n(idx + 1, pos.node(), idx);
 1154|    406|                    newn->inner()[idx] = next;
 1155|    406|                    return std::make_tuple(pos.shift(), newn, ts, tail);
 1156|  2.17k|                } else if (idx == 0) {
  ------------------
  |  Branch (1156:28): [True: 1.53k, False: 640]
  ------------------
 1157|  1.53k|                    return std::make_tuple(pos.shift(), nullptr, ts, tail);
 1158|  1.53k|                } else if (Collapse && idx == 1 && pos.shift() > BL) {
  ------------------
  |  Branch (1158:28): [Folded - Ignored]
  |  Branch (1158:40): [True: 0, False: 0]
  |  Branch (1158:52): [True: 0, False: 0]
  ------------------
 1159|      0|                    auto newn = pos.node()->inner()[0];
 1160|      0|                    return std::make_tuple(
 1161|      0|                        pos.shift() - B, newn->inc(), ts, tail);
 1162|    640|                } else {
 1163|    640|                    auto newn = node_t::copy_inner_n(idx, pos.node(), idx);
 1164|    640|                    return std::make_tuple(pos.shift(), newn, ts, tail);
 1165|    640|                }
 1166|  2.57k|            }
 1167|  2.57k|            IMMER_CATCH (...) {
 1168|      0|                assert(!next || pos.shift() > BL);
 1169|      0|                assert(tail);
 1170|      0|                if (next)
  ------------------
  |  Branch (1170:21): [True: 0, False: 0]
  ------------------
 1171|      0|                    dec_regular(next, pos.shift() - B, last + 1 - ts);
 1172|      0|                dec_leaf(tail, ts);
 1173|      0|                IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1174|      0|            }
 1175|  2.57k|        }
 1176|  2.57k|    }
_ZN5immer6detail4rbts8dec_leafINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEvPT_j:
  555|  55.6k|{
  556|  55.6k|    make_leaf_sub_pos(node, n).visit(dec_visitor{});
  557|  55.6k|}
_ZN5immer6detail4rbts19slice_right_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb1EE13visit_regularIRNS1_15regular_sub_posISC_EEEENSt3__15tupleIJjPSC_jSK_EEEOT_m:
 1141|  5.02k|    {
 1142|  5.02k|        auto idx = pos.index(last);
 1143|  5.02k|        if (Collapse && idx == 0) {
  ------------------
  |  Branch (1143:13): [Folded - Ignored]
  |  Branch (1143:25): [True: 2.71k, False: 2.31k]
  ------------------
 1144|  2.71k|            return pos.towards_oh(this_t{}, last, idx);
 1145|  2.71k|        } else {
 1146|  2.31k|            using std::get;
 1147|  2.31k|            auto subs = pos.towards_oh(no_collapse_t{}, last, idx);
 1148|  2.31k|            auto next = get<1>(subs);
 1149|  2.31k|            auto ts   = get<2>(subs);
 1150|  2.31k|            auto tail = get<3>(subs);
 1151|  2.31k|            IMMER_TRY {
  ------------------
  |  |   41|  2.31k|#define IMMER_TRY try
  ------------------
 1152|  2.31k|                if (next) {
  ------------------
  |  Branch (1152:21): [True: 774, False: 1.54k]
  ------------------
 1153|    774|                    auto newn = node_t::copy_inner_n(idx + 1, pos.node(), idx);
 1154|    774|                    newn->inner()[idx] = next;
 1155|    774|                    return std::make_tuple(pos.shift(), newn, ts, tail);
 1156|  1.54k|                } else if (idx == 0) {
  ------------------
  |  Branch (1156:28): [True: 0, False: 1.54k]
  ------------------
 1157|      0|                    return std::make_tuple(pos.shift(), nullptr, ts, tail);
 1158|  1.54k|                } else if (Collapse && idx == 1 && pos.shift() > BL) {
  ------------------
  |  Branch (1158:28): [Folded - Ignored]
  |  Branch (1158:40): [True: 1.34k, False: 195]
  |  Branch (1158:52): [True: 825, False: 521]
  ------------------
 1159|    825|                    auto newn = pos.node()->inner()[0];
 1160|    825|                    return std::make_tuple(
 1161|    825|                        pos.shift() - B, newn->inc(), ts, tail);
 1162|    825|                } else {
 1163|    716|                    auto newn = node_t::copy_inner_n(idx, pos.node(), idx);
 1164|    716|                    return std::make_tuple(pos.shift(), newn, ts, tail);
 1165|    716|                }
 1166|  2.31k|            }
 1167|  2.31k|            IMMER_CATCH (...) {
 1168|      0|                assert(!next || pos.shift() > BL);
 1169|      0|                assert(tail);
 1170|      0|                if (next)
  ------------------
  |  Branch (1170:21): [True: 0, False: 0]
  ------------------
 1171|      0|                    dec_regular(next, pos.shift() - B, last + 1 - ts);
 1172|      0|                dec_leaf(tail, ts);
 1173|      0|                IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1174|      0|            }
 1175|  2.31k|        }
 1176|  5.02k|    }
_ZN5immer6detail4rbts19slice_right_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb1EE10visit_leafIRNS1_13full_leaf_posISC_EEEENSt3__15tupleIJjPSC_jSK_EEEOT_m:
 1180|  1.19k|    {
 1181|  1.19k|        auto old_tail_size = pos.count();
 1182|  1.19k|        auto new_tail_size = pos.index(last) + 1;
 1183|  1.19k|        auto new_tail      = new_tail_size == old_tail_size
  ------------------
  |  Branch (1183:30): [True: 608, False: 591]
  ------------------
 1184|  1.19k|                                 ? pos.node()->inc()
 1185|  1.19k|                                 : node_t::copy_leaf(pos.node(), new_tail_size);
 1186|  1.19k|        return std::make_tuple(0, nullptr, new_tail_size, new_tail);
 1187|  1.19k|    }
_ZN5immer6detail4rbts19slice_right_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb1EE13visit_regularIRNS1_8full_posISC_EEEENSt3__15tupleIJjPSC_jSK_EEEOT_m:
 1141|  2.24k|    {
 1142|  2.24k|        auto idx = pos.index(last);
 1143|  2.24k|        if (Collapse && idx == 0) {
  ------------------
  |  Branch (1143:13): [Folded - Ignored]
  |  Branch (1143:25): [True: 1.12k, False: 1.11k]
  ------------------
 1144|  1.12k|            return pos.towards_oh(this_t{}, last, idx);
 1145|  1.12k|        } else {
 1146|  1.11k|            using std::get;
 1147|  1.11k|            auto subs = pos.towards_oh(no_collapse_t{}, last, idx);
 1148|  1.11k|            auto next = get<1>(subs);
 1149|  1.11k|            auto ts   = get<2>(subs);
 1150|  1.11k|            auto tail = get<3>(subs);
 1151|  1.11k|            IMMER_TRY {
  ------------------
  |  |   41|  1.11k|#define IMMER_TRY try
  ------------------
 1152|  1.11k|                if (next) {
  ------------------
  |  Branch (1152:21): [True: 220, False: 897]
  ------------------
 1153|    220|                    auto newn = node_t::copy_inner_n(idx + 1, pos.node(), idx);
 1154|    220|                    newn->inner()[idx] = next;
 1155|    220|                    return std::make_tuple(pos.shift(), newn, ts, tail);
 1156|    897|                } else if (idx == 0) {
  ------------------
  |  Branch (1156:28): [True: 0, False: 897]
  ------------------
 1157|      0|                    return std::make_tuple(pos.shift(), nullptr, ts, tail);
 1158|    897|                } else if (Collapse && idx == 1 && pos.shift() > BL) {
  ------------------
  |  Branch (1158:28): [Folded - Ignored]
  |  Branch (1158:40): [True: 698, False: 199]
  |  Branch (1158:52): [True: 326, False: 372]
  ------------------
 1159|    326|                    auto newn = pos.node()->inner()[0];
 1160|    326|                    return std::make_tuple(
 1161|    326|                        pos.shift() - B, newn->inc(), ts, tail);
 1162|    571|                } else {
 1163|    571|                    auto newn = node_t::copy_inner_n(idx, pos.node(), idx);
 1164|    571|                    return std::make_tuple(pos.shift(), newn, ts, tail);
 1165|    571|                }
 1166|  1.11k|            }
 1167|  1.11k|            IMMER_CATCH (...) {
 1168|      0|                assert(!next || pos.shift() > BL);
 1169|      0|                assert(tail);
 1170|      0|                if (next)
  ------------------
  |  Branch (1170:21): [True: 0, False: 0]
  ------------------
 1171|      0|                    dec_regular(next, pos.shift() - B, last + 1 - ts);
 1172|      0|                dec_leaf(tail, ts);
 1173|      0|                IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1174|      0|            }
 1175|  1.11k|        }
 1176|  2.24k|    }
_ZN5immer6detail4rbts19slice_right_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb1EE10visit_leafIRNS1_8leaf_posISC_EEEENSt3__15tupleIJjPSC_jSK_EEEOT_m:
 1180|    396|    {
 1181|    396|        auto old_tail_size = pos.count();
 1182|    396|        auto new_tail_size = pos.index(last) + 1;
 1183|    396|        auto new_tail      = new_tail_size == old_tail_size
  ------------------
  |  Branch (1183:30): [True: 194, False: 202]
  ------------------
 1184|    396|                                 ? pos.node()->inc()
 1185|    396|                                 : node_t::copy_leaf(pos.node(), new_tail_size);
 1186|    396|        return std::make_tuple(0, nullptr, new_tail_size, new_tail);
 1187|    396|    }
_ZN5immer6detail4rbts18slice_left_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb1EE11visit_innerIRNS1_11relaxed_posISC_EEEENSt3__15tupleIJjPSC_EEEOT_m:
 1413|  22.3k|    {
 1414|  22.3k|        auto idx                = pos.subindex(first);
 1415|  22.3k|        auto count              = pos.count();
 1416|  22.3k|        auto left_size          = pos.size_before(idx);
 1417|  22.3k|        auto child_size         = pos.size_sbh(idx, left_size);
 1418|  22.3k|        auto dropped_size       = first;
 1419|  22.3k|        auto child_dropped_size = dropped_size - left_size;
 1420|  22.3k|        if (Collapse && pos.shift() > BL && idx == pos.count() - 1) {
  ------------------
  |  Branch (1420:13): [Folded - Ignored]
  |  Branch (1420:25): [True: 21.1k, False: 1.21k]
  |  Branch (1420:45): [True: 1.63k, False: 19.5k]
  ------------------
 1421|  1.63k|            return pos.towards_sub_oh(this_t{}, first, idx);
 1422|  20.7k|        } else {
 1423|  20.7k|            using std::get;
 1424|  20.7k|            auto n    = pos.node();
 1425|  20.7k|            auto newc = count - idx;
 1426|  20.7k|            auto newn = node_t::make_inner_r_n(newc);
 1427|  20.7k|            IMMER_TRY {
  ------------------
  |  |   41|  20.7k|#define IMMER_TRY try
  ------------------
 1428|  20.7k|                auto subs     = pos.towards_sub_oh(no_collapse_t{}, first, idx);
 1429|  20.7k|                auto newr     = newn->relaxed();
 1430|  20.7k|                newr->d.count = count - idx;
 1431|  20.7k|                newr->d.sizes[0] = child_size - child_dropped_size;
 1432|  20.7k|                assert(newr->d.sizes[0]);
 1433|      0|                pos.copy_sizes(idx + 1,
 1434|  20.7k|                               newr->d.count - 1,
 1435|  20.7k|                               newr->d.sizes[0],
 1436|  20.7k|                               newr->d.sizes + 1);
 1437|  20.7k|                assert(newr->d.sizes[newr->d.count - 1] ==
 1438|  20.7k|                       pos.size() - dropped_size);
 1439|      0|                newn->inner()[0] = get<1>(subs);
 1440|  20.7k|                std::copy(n->inner() + idx + 1,
 1441|  20.7k|                          n->inner() + count,
 1442|  20.7k|                          newn->inner() + 1);
 1443|  20.7k|                node_t::inc_nodes(newn->inner() + 1, newr->d.count - 1);
 1444|  20.7k|                return std::make_tuple(pos.shift(), newn);
 1445|  20.7k|            }
 1446|  20.7k|            IMMER_CATCH (...) {
 1447|      0|                node_t::delete_inner_r(newn, newc);
 1448|      0|                IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1449|      0|            }
 1450|  20.7k|        }
 1451|  22.3k|    }
_ZN5immer6detail4rbts18slice_left_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb0EE10visit_leafIRNS1_12leaf_sub_posISC_EEEENSt3__15tupleIJjPSC_EEEOT_m:
 1455|  19.1k|    {
 1456|  19.1k|        auto n = node_t::copy_leaf(pos.node(), pos.index(first), pos.count());
 1457|  19.1k|        return std::make_tuple(0, n);
 1458|  19.1k|    }
_ZN5immer6detail4rbts18slice_left_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb0EE11visit_innerIRNS1_11relaxed_posISC_EEEENSt3__15tupleIJjPSC_EEEOT_m:
 1413|   142k|    {
 1414|   142k|        auto idx                = pos.subindex(first);
 1415|   142k|        auto count              = pos.count();
 1416|   142k|        auto left_size          = pos.size_before(idx);
 1417|   142k|        auto child_size         = pos.size_sbh(idx, left_size);
 1418|   142k|        auto dropped_size       = first;
 1419|   142k|        auto child_dropped_size = dropped_size - left_size;
 1420|   142k|        if (Collapse && pos.shift() > BL && idx == pos.count() - 1) {
  ------------------
  |  Branch (1420:13): [Folded - Ignored]
  |  Branch (1420:25): [True: 0, False: 0]
  |  Branch (1420:45): [True: 0, False: 0]
  ------------------
 1421|      0|            return pos.towards_sub_oh(this_t{}, first, idx);
 1422|   142k|        } else {
 1423|   142k|            using std::get;
 1424|   142k|            auto n    = pos.node();
 1425|   142k|            auto newc = count - idx;
 1426|   142k|            auto newn = node_t::make_inner_r_n(newc);
 1427|   142k|            IMMER_TRY {
  ------------------
  |  |   41|   142k|#define IMMER_TRY try
  ------------------
 1428|   142k|                auto subs     = pos.towards_sub_oh(no_collapse_t{}, first, idx);
 1429|   142k|                auto newr     = newn->relaxed();
 1430|   142k|                newr->d.count = count - idx;
 1431|   142k|                newr->d.sizes[0] = child_size - child_dropped_size;
 1432|   142k|                assert(newr->d.sizes[0]);
 1433|      0|                pos.copy_sizes(idx + 1,
 1434|   142k|                               newr->d.count - 1,
 1435|   142k|                               newr->d.sizes[0],
 1436|   142k|                               newr->d.sizes + 1);
 1437|   142k|                assert(newr->d.sizes[newr->d.count - 1] ==
 1438|   142k|                       pos.size() - dropped_size);
 1439|      0|                newn->inner()[0] = get<1>(subs);
 1440|   142k|                std::copy(n->inner() + idx + 1,
 1441|   142k|                          n->inner() + count,
 1442|   142k|                          newn->inner() + 1);
 1443|   142k|                node_t::inc_nodes(newn->inner() + 1, newr->d.count - 1);
 1444|   142k|                return std::make_tuple(pos.shift(), newn);
 1445|   142k|            }
 1446|   142k|            IMMER_CATCH (...) {
 1447|      0|                node_t::delete_inner_r(newn, newc);
 1448|      0|                IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1449|      0|            }
 1450|   142k|        }
 1451|   142k|    }
_ZN5immer6detail4rbts18slice_left_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb0EE11visit_innerIRNS1_15regular_sub_posISC_EEEENSt3__15tupleIJjPSC_EEEOT_m:
 1413|  1.63k|    {
 1414|  1.63k|        auto idx                = pos.subindex(first);
 1415|  1.63k|        auto count              = pos.count();
 1416|  1.63k|        auto left_size          = pos.size_before(idx);
 1417|  1.63k|        auto child_size         = pos.size_sbh(idx, left_size);
 1418|  1.63k|        auto dropped_size       = first;
 1419|  1.63k|        auto child_dropped_size = dropped_size - left_size;
 1420|  1.63k|        if (Collapse && pos.shift() > BL && idx == pos.count() - 1) {
  ------------------
  |  Branch (1420:13): [Folded - Ignored]
  |  Branch (1420:25): [True: 0, False: 0]
  |  Branch (1420:45): [True: 0, False: 0]
  ------------------
 1421|      0|            return pos.towards_sub_oh(this_t{}, first, idx);
 1422|  1.63k|        } else {
 1423|  1.63k|            using std::get;
 1424|  1.63k|            auto n    = pos.node();
 1425|  1.63k|            auto newc = count - idx;
 1426|  1.63k|            auto newn = node_t::make_inner_r_n(newc);
 1427|  1.63k|            IMMER_TRY {
  ------------------
  |  |   41|  1.63k|#define IMMER_TRY try
  ------------------
 1428|  1.63k|                auto subs     = pos.towards_sub_oh(no_collapse_t{}, first, idx);
 1429|  1.63k|                auto newr     = newn->relaxed();
 1430|  1.63k|                newr->d.count = count - idx;
 1431|  1.63k|                newr->d.sizes[0] = child_size - child_dropped_size;
 1432|  1.63k|                assert(newr->d.sizes[0]);
 1433|      0|                pos.copy_sizes(idx + 1,
 1434|  1.63k|                               newr->d.count - 1,
 1435|  1.63k|                               newr->d.sizes[0],
 1436|  1.63k|                               newr->d.sizes + 1);
 1437|  1.63k|                assert(newr->d.sizes[newr->d.count - 1] ==
 1438|  1.63k|                       pos.size() - dropped_size);
 1439|      0|                newn->inner()[0] = get<1>(subs);
 1440|  1.63k|                std::copy(n->inner() + idx + 1,
 1441|  1.63k|                          n->inner() + count,
 1442|  1.63k|                          newn->inner() + 1);
 1443|  1.63k|                node_t::inc_nodes(newn->inner() + 1, newr->d.count - 1);
 1444|  1.63k|                return std::make_tuple(pos.shift(), newn);
 1445|  1.63k|            }
 1446|  1.63k|            IMMER_CATCH (...) {
 1447|      0|                node_t::delete_inner_r(newn, newc);
 1448|      0|                IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1449|      0|            }
 1450|  1.63k|        }
 1451|  1.63k|    }
_ZN5immer6detail4rbts18slice_left_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb0EE10visit_leafIRNS1_13full_leaf_posISC_EEEENSt3__15tupleIJjPSC_EEEOT_m:
 1455|  4.54k|    {
 1456|  4.54k|        auto n = node_t::copy_leaf(pos.node(), pos.index(first), pos.count());
 1457|  4.54k|        return std::make_tuple(0, n);
 1458|  4.54k|    }
_ZN5immer6detail4rbts18slice_left_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb0EE11visit_innerIRNS1_8full_posISC_EEEENSt3__15tupleIJjPSC_EEEOT_m:
 1413|  4.19k|    {
 1414|  4.19k|        auto idx                = pos.subindex(first);
 1415|  4.19k|        auto count              = pos.count();
 1416|  4.19k|        auto left_size          = pos.size_before(idx);
 1417|  4.19k|        auto child_size         = pos.size_sbh(idx, left_size);
 1418|  4.19k|        auto dropped_size       = first;
 1419|  4.19k|        auto child_dropped_size = dropped_size - left_size;
 1420|  4.19k|        if (Collapse && pos.shift() > BL && idx == pos.count() - 1) {
  ------------------
  |  Branch (1420:13): [Folded - Ignored]
  |  Branch (1420:25): [True: 0, False: 0]
  |  Branch (1420:45): [True: 0, False: 0]
  ------------------
 1421|      0|            return pos.towards_sub_oh(this_t{}, first, idx);
 1422|  4.19k|        } else {
 1423|  4.19k|            using std::get;
 1424|  4.19k|            auto n    = pos.node();
 1425|  4.19k|            auto newc = count - idx;
 1426|  4.19k|            auto newn = node_t::make_inner_r_n(newc);
 1427|  4.19k|            IMMER_TRY {
  ------------------
  |  |   41|  4.19k|#define IMMER_TRY try
  ------------------
 1428|  4.19k|                auto subs     = pos.towards_sub_oh(no_collapse_t{}, first, idx);
 1429|  4.19k|                auto newr     = newn->relaxed();
 1430|  4.19k|                newr->d.count = count - idx;
 1431|  4.19k|                newr->d.sizes[0] = child_size - child_dropped_size;
 1432|  4.19k|                assert(newr->d.sizes[0]);
 1433|      0|                pos.copy_sizes(idx + 1,
 1434|  4.19k|                               newr->d.count - 1,
 1435|  4.19k|                               newr->d.sizes[0],
 1436|  4.19k|                               newr->d.sizes + 1);
 1437|  4.19k|                assert(newr->d.sizes[newr->d.count - 1] ==
 1438|  4.19k|                       pos.size() - dropped_size);
 1439|      0|                newn->inner()[0] = get<1>(subs);
 1440|  4.19k|                std::copy(n->inner() + idx + 1,
 1441|  4.19k|                          n->inner() + count,
 1442|  4.19k|                          newn->inner() + 1);
 1443|  4.19k|                node_t::inc_nodes(newn->inner() + 1, newr->d.count - 1);
 1444|  4.19k|                return std::make_tuple(pos.shift(), newn);
 1445|  4.19k|            }
 1446|  4.19k|            IMMER_CATCH (...) {
 1447|      0|                node_t::delete_inner_r(newn, newc);
 1448|      0|                IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1449|      0|            }
 1450|  4.19k|        }
 1451|  4.19k|    }
_ZN5immer6detail4rbts18slice_left_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb1EE11visit_innerIRNS1_15regular_sub_posISC_EEEENSt3__15tupleIJjPSC_EEEOT_m:
 1413|  3.33k|    {
 1414|  3.33k|        auto idx                = pos.subindex(first);
 1415|  3.33k|        auto count              = pos.count();
 1416|  3.33k|        auto left_size          = pos.size_before(idx);
 1417|  3.33k|        auto child_size         = pos.size_sbh(idx, left_size);
 1418|  3.33k|        auto dropped_size       = first;
 1419|  3.33k|        auto child_dropped_size = dropped_size - left_size;
 1420|  3.33k|        if (Collapse && pos.shift() > BL && idx == pos.count() - 1) {
  ------------------
  |  Branch (1420:13): [Folded - Ignored]
  |  Branch (1420:25): [True: 2.25k, False: 1.07k]
  |  Branch (1420:45): [True: 1.36k, False: 892]
  ------------------
 1421|  1.36k|            return pos.towards_sub_oh(this_t{}, first, idx);
 1422|  1.96k|        } else {
 1423|  1.96k|            using std::get;
 1424|  1.96k|            auto n    = pos.node();
 1425|  1.96k|            auto newc = count - idx;
 1426|  1.96k|            auto newn = node_t::make_inner_r_n(newc);
 1427|  1.96k|            IMMER_TRY {
  ------------------
  |  |   41|  1.96k|#define IMMER_TRY try
  ------------------
 1428|  1.96k|                auto subs     = pos.towards_sub_oh(no_collapse_t{}, first, idx);
 1429|  1.96k|                auto newr     = newn->relaxed();
 1430|  1.96k|                newr->d.count = count - idx;
 1431|  1.96k|                newr->d.sizes[0] = child_size - child_dropped_size;
 1432|  1.96k|                assert(newr->d.sizes[0]);
 1433|      0|                pos.copy_sizes(idx + 1,
 1434|  1.96k|                               newr->d.count - 1,
 1435|  1.96k|                               newr->d.sizes[0],
 1436|  1.96k|                               newr->d.sizes + 1);
 1437|  1.96k|                assert(newr->d.sizes[newr->d.count - 1] ==
 1438|  1.96k|                       pos.size() - dropped_size);
 1439|      0|                newn->inner()[0] = get<1>(subs);
 1440|  1.96k|                std::copy(n->inner() + idx + 1,
 1441|  1.96k|                          n->inner() + count,
 1442|  1.96k|                          newn->inner() + 1);
 1443|  1.96k|                node_t::inc_nodes(newn->inner() + 1, newr->d.count - 1);
 1444|  1.96k|                return std::make_tuple(pos.shift(), newn);
 1445|  1.96k|            }
 1446|  1.96k|            IMMER_CATCH (...) {
 1447|      0|                node_t::delete_inner_r(newn, newc);
 1448|      0|                IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1449|      0|            }
 1450|  1.96k|        }
 1451|  3.33k|    }
_ZN5immer6detail4rbts18slice_left_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb1EE11visit_innerIRNS1_8full_posISC_EEEENSt3__15tupleIJjPSC_EEEOT_m:
 1413|  1.20k|    {
 1414|  1.20k|        auto idx                = pos.subindex(first);
 1415|  1.20k|        auto count              = pos.count();
 1416|  1.20k|        auto left_size          = pos.size_before(idx);
 1417|  1.20k|        auto child_size         = pos.size_sbh(idx, left_size);
 1418|  1.20k|        auto dropped_size       = first;
 1419|  1.20k|        auto child_dropped_size = dropped_size - left_size;
 1420|  1.20k|        if (Collapse && pos.shift() > BL && idx == pos.count() - 1) {
  ------------------
  |  Branch (1420:13): [Folded - Ignored]
  |  Branch (1420:25): [True: 482, False: 718]
  |  Branch (1420:45): [True: 260, False: 222]
  ------------------
 1421|    260|            return pos.towards_sub_oh(this_t{}, first, idx);
 1422|    940|        } else {
 1423|    940|            using std::get;
 1424|    940|            auto n    = pos.node();
 1425|    940|            auto newc = count - idx;
 1426|    940|            auto newn = node_t::make_inner_r_n(newc);
 1427|    940|            IMMER_TRY {
  ------------------
  |  |   41|    940|#define IMMER_TRY try
  ------------------
 1428|    940|                auto subs     = pos.towards_sub_oh(no_collapse_t{}, first, idx);
 1429|    940|                auto newr     = newn->relaxed();
 1430|    940|                newr->d.count = count - idx;
 1431|    940|                newr->d.sizes[0] = child_size - child_dropped_size;
 1432|    940|                assert(newr->d.sizes[0]);
 1433|      0|                pos.copy_sizes(idx + 1,
 1434|    940|                               newr->d.count - 1,
 1435|    940|                               newr->d.sizes[0],
 1436|    940|                               newr->d.sizes + 1);
 1437|    940|                assert(newr->d.sizes[newr->d.count - 1] ==
 1438|    940|                       pos.size() - dropped_size);
 1439|      0|                newn->inner()[0] = get<1>(subs);
 1440|    940|                std::copy(n->inner() + idx + 1,
 1441|    940|                          n->inner() + count,
 1442|    940|                          newn->inner() + 1);
 1443|    940|                node_t::inc_nodes(newn->inner() + 1, newr->d.count - 1);
 1444|    940|                return std::make_tuple(pos.shift(), newn);
 1445|    940|            }
 1446|    940|            IMMER_CATCH (...) {
 1447|      0|                node_t::delete_inner_r(newn, newc);
 1448|      0|                IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1449|      0|            }
 1450|    940|        }
 1451|  1.20k|    }
_ZN5immer6detail4rbts12concat_treesINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEENS1_11relaxed_posIT_EEPSE_jSG_jm:
 1996|  2.75k|{
 1997|  2.75k|    return make_singleton_regular_sub_pos(ltail, ltcount)
 1998|  2.75k|        .visit(concat_trees_left_visitor<Node>{},
 1999|  2.75k|               empty_leaf_pos<Node>{},
 2000|  2.75k|               rroot,
 2001|  2.75k|               rshift,
 2002|  2.75k|               rsize)
 2003|  2.75k|        .realize();
 2004|  2.75k|}
_ZN5immer6detail4rbts25concat_trees_left_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10visit_nodeIRNS1_25singleton_regular_sub_posISC_EENS1_14empty_leaf_posISC_EEJRPSC_RjRmEEENS1_17concat_center_posISC_EEOT_OT0_DpOT1_:
 1966|  2.75k|    {
 1967|  2.75k|        return visit_maybe_relaxed_sub(
 1968|  2.75k|            args..., concat_trees_right_visitor<Node>{}, lpos, tpos);
 1969|  2.75k|    }
_ZN5immer6detail4rbts26concat_trees_right_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10visit_nodeIRNS1_11relaxed_posISC_EERNS1_25singleton_regular_sub_posISC_EERNS1_14empty_leaf_posISC_EEEENS1_17concat_center_posISC_EEOT_OT0_OT1_:
 1953|  1.16k|    {
 1954|  1.16k|        return concat_inners<Node>(lpos, tpos, rpos);
 1955|  1.16k|    }
_ZN5immer6detail4rbts13concat_innersINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEERNS1_25singleton_regular_sub_posISC_EERNS1_14empty_leaf_posISC_EERNS1_11relaxed_posISC_EEEENS1_17concat_center_posIT_EEOT0_OT1_OT2_:
 1867|  3.68k|{
 1868|  3.68k|    auto lshift = lpos.shift();
 1869|  3.68k|    auto rshift = rpos.shift();
 1870|  3.68k|    if (lshift > rshift) {
  ------------------
  |  Branch (1870:9): [True: 0, False: 3.68k]
  ------------------
 1871|      0|        auto cpos = lpos.last_sub(concat_left_visitor<Node>{}, tpos, rpos);
 1872|      0|        return concat_rebalance<Node>(lpos, cpos, null_sub_pos{});
 1873|  3.68k|    } else if (lshift < rshift) {
  ------------------
  |  Branch (1873:16): [True: 2.71k, False: 970]
  ------------------
 1874|  2.71k|        auto cpos = rpos.first_sub(concat_right_visitor<Node>{}, lpos, tpos);
 1875|  2.71k|        return concat_rebalance<Node>(null_sub_pos{}, cpos, rpos);
 1876|  2.71k|    } else {
 1877|    970|        assert(lshift == rshift);
 1878|      0|        assert(Node::bits_leaf == 0u || lshift > 0);
 1879|      0|        auto cpos = lpos.last_sub(concat_both_visitor<Node>{}, tpos, rpos);
 1880|    970|        return concat_rebalance<Node>(lpos, cpos, rpos);
 1881|    970|    }
 1882|  3.68k|}
_ZN5immer6detail4rbts17concat_center_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE8each_subINS1_34concat_rebalance_plan_fill_visitorEJRNS1_21concat_rebalance_planILj2ELj2EEEEEEvT_DpOT0_:
 1508|   818k|    {
 1509|   818k|        if (shift_ == BL) {
  ------------------
  |  Branch (1509:13): [True: 131k, False: 687k]
  ------------------
 1510|   131k|            auto s = size_t{};
 1511|   514k|            for (auto i = count_t{0}; i < count_; ++i) {
  ------------------
  |  Branch (1511:39): [True: 383k, False: 131k]
  ------------------
 1512|   383k|                make_leaf_sub_pos(nodes_[i], sizes_[i] - s).visit(v, args...);
 1513|   383k|                s = sizes_[i];
 1514|   383k|            }
 1515|   687k|        } else {
 1516|  1.87M|            for (auto i = count_t{0}; i < count_; ++i)
  ------------------
  |  Branch (1516:39): [True: 1.18M, False: 687k]
  ------------------
 1517|  1.18M|                make_relaxed_pos(nodes_[i], shift_ - B, nodes_[i]->relaxed())
 1518|  1.18M|                    .visit(v, args...);
 1519|   687k|        }
 1520|   818k|    }
_ZN5immer6detail4rbts34concat_rebalance_plan_fill_visitor10visit_nodeIRNS1_12leaf_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEENS1_21concat_rebalance_planILj2ELj2EEEEEvOT_RT0_:
 1728|   778k|    {
 1729|   778k|        auto count = p.count();
 1730|   778k|        assert(plan.n < Plan::max_children);
 1731|      0|        plan.counts[plan.n++] = count;
 1732|   778k|        plan.total += count;
 1733|   778k|    }
_ZN5immer6detail4rbts34concat_rebalance_plan_fill_visitor10visit_nodeIRNS1_11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEENS1_21concat_rebalance_planILj2ELj2EEEEEvOT_RT0_:
 1728|  3.26M|    {
 1729|  3.26M|        auto count = p.count();
 1730|  3.26M|        assert(plan.n < Plan::max_children);
 1731|      0|        plan.counts[plan.n++] = count;
 1732|  3.26M|        plan.total += count;
 1733|  3.26M|    }
_ZN5immer6detail4rbts21concat_rebalance_planILj2ELj2EE7shuffleEj:
 1757|   818k|    {
 1758|       |        // gcc seems to not really understand this code... :(
 1759|   818k|#if !defined(_MSC_VER)
 1760|   818k|#pragma GCC diagnostic push
 1761|   818k|#pragma GCC diagnostic ignored "-Warray-bounds"
 1762|   818k|#endif
 1763|   818k|        constexpr count_t rrb_extras    = 2;
 1764|   818k|        constexpr count_t rrb_invariant = 1;
 1765|   818k|        const auto bits                 = shift == BL ? BL : B;
  ------------------
  |  Branch (1765:43): [True: 131k, False: 687k]
  ------------------
 1766|   818k|        const auto branches             = count_t{1} << bits;
 1767|   818k|        const auto optimal              = ((total - 1) >> bits) + 1;
 1768|   818k|        count_t i                       = 0;
 1769|   894k|        while (n >= optimal + rrb_extras) {
  ------------------
  |  Branch (1769:16): [True: 76.1k, False: 818k]
  ------------------
 1770|       |            // skip ok nodes
 1771|   142k|            while (counts[i] > branches - rrb_invariant)
  ------------------
  |  Branch (1771:20): [True: 66.8k, False: 76.1k]
  ------------------
 1772|  66.8k|                i++;
 1773|  76.1k|            assert(i < n);
 1774|       |            // short node, redistribute
 1775|      0|            auto remaining = counts[i];
 1776|   127k|            do {
 1777|   127k|                auto next  = counts[i + 1];
 1778|   127k|                auto count = std::min(remaining + next, branches);
 1779|   127k|                counts[i]  = count;
 1780|   127k|                assert(counts[i]);
 1781|      0|                remaining += next - count;
 1782|   127k|                ++i;
 1783|   127k|            } while (remaining > 0);
  ------------------
  |  Branch (1783:22): [True: 51.0k, False: 76.1k]
  ------------------
 1784|       |            // remove node
 1785|      0|            std::move(counts + i + 1, counts + n, counts + i);
 1786|  76.1k|            --n;
 1787|  76.1k|            --i;
 1788|  76.1k|        }
 1789|   818k|#if !defined(_MSC_VER)
 1790|   818k|#pragma GCC diagnostic pop
 1791|   818k|#endif
 1792|   818k|    }
_ZNK5immer6detail4rbts17concat_center_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5shiftEv:
 1477|  1.63M|    auto shift() const { return shift_; }
_ZN5immer6detail4rbts13concat_mergerINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEC2EjPjj:
 1577|   261k|    {}
_ZN5immer6detail4rbts17concat_center_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEC2EjPSC_m:
 1484|   818k|    {}
_ZN5immer6detail4rbts17concat_center_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE8each_subINS1_21concat_merger_visitorEJRNS1_13concat_mergerISC_EEEEEvT_DpOT0_:
 1508|   261k|    {
 1509|   261k|        if (shift_ == BL) {
  ------------------
  |  Branch (1509:13): [True: 50.9k, False: 210k]
  ------------------
 1510|  50.9k|            auto s = size_t{};
 1511|   201k|            for (auto i = count_t{0}; i < count_; ++i) {
  ------------------
  |  Branch (1511:39): [True: 150k, False: 50.9k]
  ------------------
 1512|   150k|                make_leaf_sub_pos(nodes_[i], sizes_[i] - s).visit(v, args...);
 1513|   150k|                s = sizes_[i];
 1514|   150k|            }
 1515|   210k|        } else {
 1516|   628k|            for (auto i = count_t{0}; i < count_; ++i)
  ------------------
  |  Branch (1516:39): [True: 417k, False: 210k]
  ------------------
 1517|   417k|                make_relaxed_pos(nodes_[i], shift_ - B, nodes_[i]->relaxed())
 1518|   417k|                    .visit(v, args...);
 1519|   210k|        }
 1520|   261k|    }
_ZN5immer6detail4rbts21concat_merger_visitor10visit_leafIRNS1_12leaf_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEENS1_13concat_mergerISE_EEEEvOT_RT0_:
 1716|   342k|    {
 1717|   342k|        merger.merge_leaf(p);
 1718|   342k|    }
_ZN5immer6detail4rbts13concat_mergerINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10merge_leafIRNS1_12leaf_sub_posISC_EEEEvOT_:
 1609|   342k|    {
 1610|   342k|        auto from       = p.node();
 1611|   342k|        auto from_size  = p.size();
 1612|   342k|        auto from_count = p.count();
 1613|   342k|        assert(from_size);
 1614|   342k|        if (!to_ && *curr_ == from_count) {
  ------------------
  |  Branch (1614:13): [True: 324k, False: 18.3k]
  |  Branch (1614:21): [True: 315k, False: 8.77k]
  ------------------
 1615|   315k|            add_child(from, from_size);
 1616|   315k|            from->inc();
 1617|   315k|        } else {
 1618|  27.1k|            auto from_offset = count_t{};
 1619|  27.1k|            auto from_data   = from->leaf();
 1620|  36.6k|            do {
 1621|  36.6k|                if (!to_) {
  ------------------
  |  Branch (1621:21): [True: 18.2k, False: 18.3k]
  ------------------
 1622|  18.2k|                    to_        = node_t::make_leaf_n(*curr_);
 1623|  18.2k|                    to_offset_ = 0;
 1624|  18.2k|                }
 1625|  36.6k|                auto data = to_->leaf();
 1626|  36.6k|                auto to_copy =
 1627|  36.6k|                    std::min(from_count - from_offset, *curr_ - to_offset_);
 1628|  36.6k|                detail::uninitialized_copy(from_data + from_offset,
 1629|  36.6k|                                           from_data + from_offset + to_copy,
 1630|  36.6k|                                           data + to_offset_);
 1631|  36.6k|                to_offset_ += to_copy;
 1632|  36.6k|                from_offset += to_copy;
 1633|  36.6k|                if (*curr_ == to_offset_) {
  ------------------
  |  Branch (1633:21): [True: 18.2k, False: 18.3k]
  ------------------
 1634|  18.2k|                    add_child(to_, to_offset_);
 1635|  18.2k|                    to_ = nullptr;
 1636|  18.2k|                }
 1637|  36.6k|            } while (from_offset != from_count);
  ------------------
  |  Branch (1637:22): [True: 9.47k, False: 27.1k]
  ------------------
 1638|  27.1k|        }
 1639|   342k|    }
_ZN5immer6detail4rbts13concat_mergerINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE9add_childEPSC_m:
 1584|  1.81M|    {
 1585|  1.81M|        assert(size);
 1586|      0|        ++curr_;
 1587|  1.81M|        auto parent  = result_.nodes_[result_.count_ - 1];
 1588|  1.81M|        auto relaxed = parent->relaxed();
 1589|  1.81M|        if (relaxed->d.count == branches<B>) {
  ------------------
  |  Branch (1589:13): [True: 229k, False: 1.58M]
  ------------------
 1590|   229k|            assert(result_.count_ < result_t::max_children);
 1591|      0|            n_ -= branches<B>;
 1592|   229k|            parent  = node_t::make_inner_r_n(std::min(n_, branches<B>));
 1593|   229k|            relaxed = parent->relaxed();
 1594|   229k|            result_.nodes_[result_.count_] = parent;
 1595|   229k|            result_.sizes_[result_.count_] = result_.sizes_[result_.count_ - 1];
 1596|   229k|            assert(result_.sizes_[result_.count_]);
 1597|      0|            ++result_.count_;
 1598|   229k|        }
 1599|      0|        auto idx = relaxed->d.count++;
 1600|  1.81M|        result_.sizes_[result_.count_ - 1] += size;
 1601|  1.81M|        assert(result_.sizes_[result_.count_ - 1]);
 1602|  1.81M|        relaxed->d.sizes[idx] = size + (idx ? relaxed->d.sizes[idx - 1] : 0);
  ------------------
  |  Branch (1602:41): [True: 1.31M, False: 491k]
  ------------------
 1603|  1.81M|        assert(relaxed->d.sizes[idx]);
 1604|      0|        parent->inner()[idx] = p;
 1605|  1.81M|    };
_ZN5immer6detail4rbts21concat_merger_visitor11visit_innerIRNS1_11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEENS1_13concat_mergerISE_EEEEvOT_RT0_:
 1710|  1.43M|    {
 1711|  1.43M|        merger.merge_inner(p);
 1712|  1.43M|    }
_ZN5immer6detail4rbts13concat_mergerINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE11merge_innerIRNS1_11relaxed_posISC_EEEEvOT_:
 1643|  1.43M|    {
 1644|  1.43M|        auto from       = p.node();
 1645|  1.43M|        auto from_size  = p.size();
 1646|  1.43M|        auto from_count = p.count();
 1647|  1.43M|        assert(from_size);
 1648|  1.43M|        if (!to_ && *curr_ == from_count) {
  ------------------
  |  Branch (1648:13): [True: 1.42M, False: 7.75k]
  |  Branch (1648:21): [True: 1.42M, False: 4.55k]
  ------------------
 1649|  1.42M|            add_child(from, from_size);
 1650|  1.42M|            from->inc();
 1651|  1.42M|        } else {
 1652|  12.3k|            auto from_offset = count_t{};
 1653|  12.3k|            auto from_data   = from->inner();
 1654|  15.2k|            do {
 1655|  15.2k|                if (!to_) {
  ------------------
  |  Branch (1655:21): [True: 7.52k, False: 7.75k]
  ------------------
 1656|  7.52k|                    to_        = node_t::make_inner_r_n(*curr_);
 1657|  7.52k|                    to_offset_ = 0;
 1658|  7.52k|                    to_size_   = 0;
 1659|  7.52k|                }
 1660|  15.2k|                auto data = to_->inner();
 1661|  15.2k|                auto to_copy =
 1662|  15.2k|                    std::min(from_count - from_offset, *curr_ - to_offset_);
 1663|  15.2k|                std::copy(from_data + from_offset,
 1664|  15.2k|                          from_data + from_offset + to_copy,
 1665|  15.2k|                          data + to_offset_);
 1666|  15.2k|                node_t::inc_nodes(from_data + from_offset, to_copy);
 1667|  15.2k|                auto sizes = to_->relaxed()->d.sizes;
 1668|  15.2k|                p.copy_sizes(
 1669|  15.2k|                    from_offset, to_copy, to_size_, sizes + to_offset_);
 1670|  15.2k|                to_offset_ += to_copy;
 1671|  15.2k|                from_offset += to_copy;
 1672|  15.2k|                to_size_ = sizes[to_offset_ - 1];
 1673|  15.2k|                assert(to_size_);
 1674|  15.2k|                if (*curr_ == to_offset_) {
  ------------------
  |  Branch (1674:21): [True: 7.52k, False: 7.75k]
  ------------------
 1675|  7.52k|                    to_->relaxed()->d.count = to_offset_;
 1676|  7.52k|                    add_child(to_, to_size_);
 1677|  7.52k|                    to_ = nullptr;
 1678|  7.52k|                }
 1679|  15.2k|            } while (from_offset != from_count);
  ------------------
  |  Branch (1679:22): [True: 2.96k, False: 12.3k]
  ------------------
 1680|  12.3k|        }
 1681|  1.43M|    }
_ZNK5immer6detail4rbts13concat_mergerINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE6finishEv:
 1684|   261k|    {
 1685|   261k|        assert(!to_);
 1686|      0|        return result_;
 1687|   261k|    }
_ZN5immer6detail4rbts17concat_center_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE8each_subINS1_11dec_visitorEJEEEvT_DpOT0_:
 1508|   261k|    {
 1509|   261k|        if (shift_ == BL) {
  ------------------
  |  Branch (1509:13): [True: 50.9k, False: 210k]
  ------------------
 1510|  50.9k|            auto s = size_t{};
 1511|   201k|            for (auto i = count_t{0}; i < count_; ++i) {
  ------------------
  |  Branch (1511:39): [True: 150k, False: 50.9k]
  ------------------
 1512|   150k|                make_leaf_sub_pos(nodes_[i], sizes_[i] - s).visit(v, args...);
 1513|   150k|                s = sizes_[i];
 1514|   150k|            }
 1515|   210k|        } else {
 1516|   628k|            for (auto i = count_t{0}; i < count_; ++i)
  ------------------
  |  Branch (1516:39): [True: 417k, False: 210k]
  ------------------
 1517|   417k|                make_relaxed_pos(nodes_[i], shift_ - B, nodes_[i]->relaxed())
 1518|   417k|                    .visit(v, args...);
 1519|   210k|        }
 1520|   261k|    }
_ZN5immer6detail4rbts17concat_center_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEC2EjPSC_mSE_mSE_m:
 1504|   120k|    {}
_ZN5immer6detail4rbts17concat_center_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEC2EjPSC_mSE_m:
 1491|  10.6k|    {}
_ZN5immer6detail4rbts20concat_right_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE11visit_innerIRNS1_11relaxed_posISC_EERNS1_25singleton_regular_sub_posISC_EERNS1_14empty_leaf_posISC_EEEENS1_17concat_center_posISC_EEOT_OT0_OT1_:
 1912|  2.51k|    {
 1913|  2.51k|        return concat_inners<Node>(lpos, tpos, rpos);
 1914|  2.51k|    }
_ZN5immer6detail4rbts20concat_right_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE11visit_innerIRNS1_15regular_sub_posISC_EERNS1_25singleton_regular_sub_posISC_EERNS1_14empty_leaf_posISC_EEEENS1_17concat_center_posISC_EEOT_OT0_OT1_:
 1912|    198|    {
 1913|    198|        return concat_inners<Node>(lpos, tpos, rpos);
 1914|    198|    }
_ZN5immer6detail4rbts13concat_innersINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEERNS1_25singleton_regular_sub_posISC_EERNS1_14empty_leaf_posISC_EERNS1_15regular_sub_posISC_EEEENS1_17concat_center_posIT_EEOT0_OT1_OT2_:
 1867|  1.78k|{
 1868|  1.78k|    auto lshift = lpos.shift();
 1869|  1.78k|    auto rshift = rpos.shift();
 1870|  1.78k|    if (lshift > rshift) {
  ------------------
  |  Branch (1870:9): [True: 0, False: 1.78k]
  ------------------
 1871|      0|        auto cpos = lpos.last_sub(concat_left_visitor<Node>{}, tpos, rpos);
 1872|      0|        return concat_rebalance<Node>(lpos, cpos, null_sub_pos{});
 1873|  1.78k|    } else if (lshift < rshift) {
  ------------------
  |  Branch (1873:16): [True: 795, False: 986]
  ------------------
 1874|    795|        auto cpos = rpos.first_sub(concat_right_visitor<Node>{}, lpos, tpos);
 1875|    795|        return concat_rebalance<Node>(null_sub_pos{}, cpos, rpos);
 1876|    986|    } else {
 1877|    986|        assert(lshift == rshift);
 1878|      0|        assert(Node::bits_leaf == 0u || lshift > 0);
 1879|      0|        auto cpos = lpos.last_sub(concat_both_visitor<Node>{}, tpos, rpos);
 1880|    986|        return concat_rebalance<Node>(lpos, cpos, rpos);
 1881|    986|    }
 1882|  1.78k|}
_ZN5immer6detail4rbts20concat_right_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE11visit_innerIRNS1_8full_posISC_EERNS1_25singleton_regular_sub_posISC_EERNS1_14empty_leaf_posISC_EEEENS1_17concat_center_posISC_EEOT_OT0_OT1_:
 1912|  1.28k|    {
 1913|  1.28k|        return concat_inners<Node>(lpos, tpos, rpos);
 1914|  1.28k|    }
_ZN5immer6detail4rbts13concat_innersINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEERNS1_25singleton_regular_sub_posISC_EERNS1_14empty_leaf_posISC_EERNS1_8full_posISC_EEEENS1_17concat_center_posIT_EEOT0_OT1_OT2_:
 1867|  1.28k|{
 1868|  1.28k|    auto lshift = lpos.shift();
 1869|  1.28k|    auto rshift = rpos.shift();
 1870|  1.28k|    if (lshift > rshift) {
  ------------------
  |  Branch (1870:9): [True: 0, False: 1.28k]
  ------------------
 1871|      0|        auto cpos = lpos.last_sub(concat_left_visitor<Node>{}, tpos, rpos);
 1872|      0|        return concat_rebalance<Node>(lpos, cpos, null_sub_pos{});
 1873|  1.28k|    } else if (lshift < rshift) {
  ------------------
  |  Branch (1873:16): [True: 491, False: 795]
  ------------------
 1874|    491|        auto cpos = rpos.first_sub(concat_right_visitor<Node>{}, lpos, tpos);
 1875|    491|        return concat_rebalance<Node>(null_sub_pos{}, cpos, rpos);
 1876|    795|    } else {
 1877|    795|        assert(lshift == rshift);
 1878|      0|        assert(Node::bits_leaf == 0u || lshift > 0);
 1879|      0|        auto cpos = lpos.last_sub(concat_both_visitor<Node>{}, tpos, rpos);
 1880|    795|        return concat_rebalance<Node>(lpos, cpos, rpos);
 1881|    795|    }
 1882|  1.28k|}
_ZN5immer6detail4rbts16concat_rebalanceINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEENS1_12null_sub_posERNS1_17concat_center_posISC_EERNS1_8full_posISC_EEEENSE_IT_EEOT0_OT1_OT2_:
 1818|  1.05k|{
 1819|  1.05k|    auto plan = concat_rebalance_plan<Node::bits, Node::bits_leaf>{};
 1820|  1.05k|    plan.fill(lpos, cpos, rpos);
 1821|  1.05k|    plan.shuffle(cpos.shift());
 1822|  1.05k|    IMMER_TRY {
  ------------------
  |  |   41|  1.05k|#define IMMER_TRY try
  ------------------
 1823|  1.05k|        return plan.merge(lpos, cpos, rpos);
 1824|  1.05k|    }
 1825|  1.05k|    IMMER_CATCH (...) {
 1826|      0|        cpos.each_sub(dec_visitor{});
 1827|      0|        IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1828|      0|    }
 1829|  1.05k|}
_ZN5immer6detail4rbts21concat_rebalance_planILj2ELj2EE4fillIRNS1_12null_sub_posERNS1_17concat_center_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_8full_posISH_EEEEvOT_OT0_OT1_:
 1747|  2.23k|    {
 1748|  2.23k|        assert(n == 0u);
 1749|      0|        assert(total == 0u);
 1750|      0|        using visitor_t = concat_rebalance_plan_fill_visitor;
 1751|  2.23k|        lpos.each_left_sub(visitor_t{}, *this);
 1752|  2.23k|        cpos.each_sub(visitor_t{}, *this);
 1753|  2.23k|        rpos.each_right_sub(visitor_t{}, *this);
 1754|  2.23k|    }
_ZN5immer6detail4rbts34concat_rebalance_plan_fill_visitor10visit_nodeIRNS1_13full_leaf_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEENS1_21concat_rebalance_planILj2ELj2EEEEEvOT_RT0_:
 1728|  80.9k|    {
 1729|  80.9k|        auto count = p.count();
 1730|  80.9k|        assert(plan.n < Plan::max_children);
 1731|      0|        plan.counts[plan.n++] = count;
 1732|  80.9k|        plan.total += count;
 1733|  80.9k|    }
_ZN5immer6detail4rbts34concat_rebalance_plan_fill_visitor10visit_nodeIRNS1_8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEENS1_21concat_rebalance_planILj2ELj2EEEEEvOT_RT0_:
 1728|   260k|    {
 1729|   260k|        auto count = p.count();
 1730|   260k|        assert(plan.n < Plan::max_children);
 1731|      0|        plan.counts[plan.n++] = count;
 1732|   260k|        plan.total += count;
 1733|   260k|    }
_ZN5immer6detail4rbts21concat_rebalance_planILj2ELj2EE5mergeIRNS1_12null_sub_posERNS1_17concat_center_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_8full_posISH_EEEENS7_INSt3__15decayIT0_E4type6node_tEEEOT_OSP_OT1_:
 1797|  1.05k|    {
 1798|  1.05k|        using node_t    = node_type<CPos>;
 1799|  1.05k|        using merger_t  = concat_merger<node_t>;
 1800|  1.05k|        using visitor_t = concat_merger_visitor;
 1801|  1.05k|        auto merger     = merger_t{cpos.shift(), counts, n};
 1802|  1.05k|        IMMER_TRY {
  ------------------
  |  |   41|  1.05k|#define IMMER_TRY try
  ------------------
 1803|  1.05k|            lpos.each_left_sub(visitor_t{}, merger);
 1804|  1.05k|            cpos.each_sub(visitor_t{}, merger);
 1805|  1.05k|            rpos.each_right_sub(visitor_t{}, merger);
 1806|  1.05k|            cpos.each_sub(dec_visitor{});
 1807|  1.05k|            return merger.finish();
 1808|  1.05k|        }
 1809|  1.05k|        IMMER_CATCH (...) {
 1810|      0|            merger.abort();
 1811|      0|            IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1812|      0|        }
 1813|  1.05k|    }
_ZN5immer6detail4rbts21concat_merger_visitor10visit_leafIRNS1_13full_leaf_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEENS1_13concat_mergerISE_EEEEvOT_RT0_:
 1716|  18.9k|    {
 1717|  18.9k|        merger.merge_leaf(p);
 1718|  18.9k|    }
_ZN5immer6detail4rbts13concat_mergerINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10merge_leafIRNS1_13full_leaf_posISC_EEEEvOT_:
 1609|  18.9k|    {
 1610|  18.9k|        auto from       = p.node();
 1611|  18.9k|        auto from_size  = p.size();
 1612|  18.9k|        auto from_count = p.count();
 1613|  18.9k|        assert(from_size);
 1614|  18.9k|        if (!to_ && *curr_ == from_count) {
  ------------------
  |  Branch (1614:13): [True: 18.9k, False: 0]
  |  Branch (1614:21): [True: 18.9k, False: 0]
  ------------------
 1615|  18.9k|            add_child(from, from_size);
 1616|  18.9k|            from->inc();
 1617|  18.9k|        } else {
 1618|      0|            auto from_offset = count_t{};
 1619|      0|            auto from_data   = from->leaf();
 1620|      0|            do {
 1621|      0|                if (!to_) {
  ------------------
  |  Branch (1621:21): [True: 0, False: 0]
  ------------------
 1622|      0|                    to_        = node_t::make_leaf_n(*curr_);
 1623|      0|                    to_offset_ = 0;
 1624|      0|                }
 1625|      0|                auto data = to_->leaf();
 1626|      0|                auto to_copy =
 1627|      0|                    std::min(from_count - from_offset, *curr_ - to_offset_);
 1628|      0|                detail::uninitialized_copy(from_data + from_offset,
 1629|      0|                                           from_data + from_offset + to_copy,
 1630|      0|                                           data + to_offset_);
 1631|      0|                to_offset_ += to_copy;
 1632|      0|                from_offset += to_copy;
 1633|      0|                if (*curr_ == to_offset_) {
  ------------------
  |  Branch (1633:21): [True: 0, False: 0]
  ------------------
 1634|      0|                    add_child(to_, to_offset_);
 1635|      0|                    to_ = nullptr;
 1636|      0|                }
 1637|      0|            } while (from_offset != from_count);
  ------------------
  |  Branch (1637:22): [True: 0, False: 0]
  ------------------
 1638|      0|        }
 1639|  18.9k|    }
_ZN5immer6detail4rbts21concat_merger_visitor11visit_innerIRNS1_8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEENS1_13concat_mergerISE_EEEEvOT_RT0_:
 1710|  18.2k|    {
 1711|  18.2k|        merger.merge_inner(p);
 1712|  18.2k|    }
_ZN5immer6detail4rbts13concat_mergerINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE11merge_innerIRNS1_8full_posISC_EEEEvOT_:
 1643|  18.2k|    {
 1644|  18.2k|        auto from       = p.node();
 1645|  18.2k|        auto from_size  = p.size();
 1646|  18.2k|        auto from_count = p.count();
 1647|  18.2k|        assert(from_size);
 1648|  18.2k|        if (!to_ && *curr_ == from_count) {
  ------------------
  |  Branch (1648:13): [True: 18.2k, False: 0]
  |  Branch (1648:21): [True: 18.2k, False: 0]
  ------------------
 1649|  18.2k|            add_child(from, from_size);
 1650|  18.2k|            from->inc();
 1651|  18.2k|        } else {
 1652|      0|            auto from_offset = count_t{};
 1653|      0|            auto from_data   = from->inner();
 1654|      0|            do {
 1655|      0|                if (!to_) {
  ------------------
  |  Branch (1655:21): [True: 0, False: 0]
  ------------------
 1656|      0|                    to_        = node_t::make_inner_r_n(*curr_);
 1657|      0|                    to_offset_ = 0;
 1658|      0|                    to_size_   = 0;
 1659|      0|                }
 1660|      0|                auto data = to_->inner();
 1661|      0|                auto to_copy =
 1662|      0|                    std::min(from_count - from_offset, *curr_ - to_offset_);
 1663|      0|                std::copy(from_data + from_offset,
 1664|      0|                          from_data + from_offset + to_copy,
 1665|      0|                          data + to_offset_);
 1666|      0|                node_t::inc_nodes(from_data + from_offset, to_copy);
 1667|      0|                auto sizes = to_->relaxed()->d.sizes;
 1668|      0|                p.copy_sizes(
 1669|      0|                    from_offset, to_copy, to_size_, sizes + to_offset_);
 1670|      0|                to_offset_ += to_copy;
 1671|      0|                from_offset += to_copy;
 1672|      0|                to_size_ = sizes[to_offset_ - 1];
 1673|      0|                assert(to_size_);
 1674|      0|                if (*curr_ == to_offset_) {
  ------------------
  |  Branch (1674:21): [True: 0, False: 0]
  ------------------
 1675|      0|                    to_->relaxed()->d.count = to_offset_;
 1676|      0|                    add_child(to_, to_size_);
 1677|      0|                    to_ = nullptr;
 1678|      0|                }
 1679|      0|            } while (from_offset != from_count);
  ------------------
  |  Branch (1679:22): [True: 0, False: 0]
  ------------------
 1680|      0|        }
 1681|  18.2k|    }
_ZN5immer6detail4rbts19concat_both_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10visit_leafIRNS1_12leaf_sub_posISC_EERNS1_14empty_leaf_posISC_EERNS1_8full_posISC_EEEENS1_17concat_center_posISC_EEOT_OT0_OT1_:
 1939|    795|    {
 1940|    795|        return rpos.first_sub_leaf(concat_right_visitor<Node>{}, lpos, tpos);
 1941|    795|    }
_ZN5immer6detail4rbts20concat_right_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10visit_leafIRNS1_13full_leaf_posISC_EERNS1_12leaf_sub_posISC_EERNS1_14empty_leaf_posISC_EEEENS1_17concat_center_posISC_EEOT_OT0_OT1_:
 1919|  1.78k|    {
 1920|  1.78k|        return concat_leafs<Node>(lpos, tpos, rpos);
 1921|  1.78k|    }
_ZN5immer6detail4rbts12concat_leafsINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEERNS1_12leaf_sub_posISC_EERNS1_14empty_leaf_posISC_EERNS1_13full_leaf_posISC_EEEENS1_17concat_center_posIT_EEOT0_OT1_OT2_:
 1833|  1.78k|{
 1834|  1.78k|    static_assert(Node::bits >= 2, "");
 1835|  1.78k|    assert(lpos.shift() == tpos.shift());
 1836|      0|    assert(lpos.shift() == rpos.shift());
 1837|      0|    assert(lpos.shift() == 0);
 1838|  1.78k|    if (tpos.count() > 0)
  ------------------
  |  Branch (1838:9): [True: 0, False: 1.78k]
  ------------------
 1839|      0|        return {
 1840|      0|            Node::bits_leaf,
 1841|      0|            lpos.node()->inc(),
 1842|      0|            lpos.count(),
 1843|      0|            tpos.node()->inc(),
 1844|      0|            tpos.count(),
 1845|      0|            rpos.node()->inc(),
 1846|      0|            rpos.count(),
 1847|      0|        };
 1848|  1.78k|    else
 1849|  1.78k|        return {
 1850|  1.78k|            Node::bits_leaf,
 1851|  1.78k|            lpos.node()->inc(),
 1852|  1.78k|            lpos.count(),
 1853|  1.78k|            rpos.node()->inc(),
 1854|  1.78k|            rpos.count(),
 1855|  1.78k|        };
 1856|  1.78k|}
_ZN5immer6detail4rbts16concat_rebalanceINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEERNS1_25singleton_regular_sub_posISC_EERNS1_17concat_center_posISC_EERNS1_8full_posISC_EEEENSG_IT_EEOT0_OT1_OT2_:
 1818|    795|{
 1819|    795|    auto plan = concat_rebalance_plan<Node::bits, Node::bits_leaf>{};
 1820|    795|    plan.fill(lpos, cpos, rpos);
 1821|    795|    plan.shuffle(cpos.shift());
 1822|    795|    IMMER_TRY {
  ------------------
  |  |   41|    795|#define IMMER_TRY try
  ------------------
 1823|    795|        return plan.merge(lpos, cpos, rpos);
 1824|    795|    }
 1825|    795|    IMMER_CATCH (...) {
 1826|      0|        cpos.each_sub(dec_visitor{});
 1827|      0|        IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1828|      0|    }
 1829|    795|}
_ZN5immer6detail4rbts21concat_rebalance_planILj2ELj2EE4fillIRNS1_25singleton_regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_17concat_center_posISF_EERNS1_8full_posISF_EEEEvOT_OT0_OT1_:
 1747|  1.78k|    {
 1748|  1.78k|        assert(n == 0u);
 1749|      0|        assert(total == 0u);
 1750|      0|        using visitor_t = concat_rebalance_plan_fill_visitor;
 1751|  1.78k|        lpos.each_left_sub(visitor_t{}, *this);
 1752|  1.78k|        cpos.each_sub(visitor_t{}, *this);
 1753|  1.78k|        rpos.each_right_sub(visitor_t{}, *this);
 1754|  1.78k|    }
_ZN5immer6detail4rbts21concat_rebalance_planILj2ELj2EE5mergeIRNS1_25singleton_regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_17concat_center_posISF_EERNS1_8full_posISF_EEEENSI_INSt3__15decayIT0_E4type6node_tEEEOT_OSQ_OT1_:
 1797|    795|    {
 1798|    795|        using node_t    = node_type<CPos>;
 1799|    795|        using merger_t  = concat_merger<node_t>;
 1800|    795|        using visitor_t = concat_merger_visitor;
 1801|    795|        auto merger     = merger_t{cpos.shift(), counts, n};
 1802|    795|        IMMER_TRY {
  ------------------
  |  |   41|    795|#define IMMER_TRY try
  ------------------
 1803|    795|            lpos.each_left_sub(visitor_t{}, merger);
 1804|    795|            cpos.each_sub(visitor_t{}, merger);
 1805|    795|            rpos.each_right_sub(visitor_t{}, merger);
 1806|    795|            cpos.each_sub(dec_visitor{});
 1807|    795|            return merger.finish();
 1808|    795|        }
 1809|    795|        IMMER_CATCH (...) {
 1810|      0|            merger.abort();
 1811|      0|            IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1812|      0|        }
 1813|    795|    }
_ZN5immer6detail4rbts16concat_rebalanceINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEENS1_12null_sub_posERNS1_17concat_center_posISC_EERNS1_15regular_sub_posISC_EEEENSE_IT_EEOT0_OT1_OT2_:
 1818|  1.86k|{
 1819|  1.86k|    auto plan = concat_rebalance_plan<Node::bits, Node::bits_leaf>{};
 1820|  1.86k|    plan.fill(lpos, cpos, rpos);
 1821|  1.86k|    plan.shuffle(cpos.shift());
 1822|  1.86k|    IMMER_TRY {
  ------------------
  |  |   41|  1.86k|#define IMMER_TRY try
  ------------------
 1823|  1.86k|        return plan.merge(lpos, cpos, rpos);
 1824|  1.86k|    }
 1825|  1.86k|    IMMER_CATCH (...) {
 1826|      0|        cpos.each_sub(dec_visitor{});
 1827|      0|        IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1828|      0|    }
 1829|  1.86k|}
_ZN5immer6detail4rbts21concat_rebalance_planILj2ELj2EE4fillIRNS1_12null_sub_posERNS1_17concat_center_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_15regular_sub_posISH_EEEEvOT_OT0_OT1_:
 1747|  3.82k|    {
 1748|  3.82k|        assert(n == 0u);
 1749|      0|        assert(total == 0u);
 1750|      0|        using visitor_t = concat_rebalance_plan_fill_visitor;
 1751|  3.82k|        lpos.each_left_sub(visitor_t{}, *this);
 1752|  3.82k|        cpos.each_sub(visitor_t{}, *this);
 1753|  3.82k|        rpos.each_right_sub(visitor_t{}, *this);
 1754|  3.82k|    }
_ZN5immer6detail4rbts34concat_rebalance_plan_fill_visitor10visit_nodeIRNS1_15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEENS1_21concat_rebalance_planILj2ELj2EEEEEvOT_RT0_:
 1728|  63.6k|    {
 1729|  63.6k|        auto count = p.count();
 1730|  63.6k|        assert(plan.n < Plan::max_children);
 1731|      0|        plan.counts[plan.n++] = count;
 1732|  63.6k|        plan.total += count;
 1733|  63.6k|    }
_ZN5immer6detail4rbts21concat_rebalance_planILj2ELj2EE5mergeIRNS1_12null_sub_posERNS1_17concat_center_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_15regular_sub_posISH_EEEENS7_INSt3__15decayIT0_E4type6node_tEEEOT_OSP_OT1_:
 1797|  1.86k|    {
 1798|  1.86k|        using node_t    = node_type<CPos>;
 1799|  1.86k|        using merger_t  = concat_merger<node_t>;
 1800|  1.86k|        using visitor_t = concat_merger_visitor;
 1801|  1.86k|        auto merger     = merger_t{cpos.shift(), counts, n};
 1802|  1.86k|        IMMER_TRY {
  ------------------
  |  |   41|  1.86k|#define IMMER_TRY try
  ------------------
 1803|  1.86k|            lpos.each_left_sub(visitor_t{}, merger);
 1804|  1.86k|            cpos.each_sub(visitor_t{}, merger);
 1805|  1.86k|            rpos.each_right_sub(visitor_t{}, merger);
 1806|  1.86k|            cpos.each_sub(dec_visitor{});
 1807|  1.86k|            return merger.finish();
 1808|  1.86k|        }
 1809|  1.86k|        IMMER_CATCH (...) {
 1810|      0|            merger.abort();
 1811|      0|            IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1812|      0|        }
 1813|  1.86k|    }
_ZN5immer6detail4rbts21concat_merger_visitor11visit_innerIRNS1_15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEENS1_13concat_mergerISE_EEEEvOT_RT0_:
 1710|  7.22k|    {
 1711|  7.22k|        merger.merge_inner(p);
 1712|  7.22k|    }
_ZN5immer6detail4rbts13concat_mergerINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE11merge_innerIRNS1_15regular_sub_posISC_EEEEvOT_:
 1643|  7.22k|    {
 1644|  7.22k|        auto from       = p.node();
 1645|  7.22k|        auto from_size  = p.size();
 1646|  7.22k|        auto from_count = p.count();
 1647|  7.22k|        assert(from_size);
 1648|  7.22k|        if (!to_ && *curr_ == from_count) {
  ------------------
  |  Branch (1648:13): [True: 6.85k, False: 370]
  |  Branch (1648:21): [True: 6.85k, False: 0]
  ------------------
 1649|  6.85k|            add_child(from, from_size);
 1650|  6.85k|            from->inc();
 1651|  6.85k|        } else {
 1652|    370|            auto from_offset = count_t{};
 1653|    370|            auto from_data   = from->inner();
 1654|    740|            do {
 1655|    740|                if (!to_) {
  ------------------
  |  Branch (1655:21): [True: 370, False: 370]
  ------------------
 1656|    370|                    to_        = node_t::make_inner_r_n(*curr_);
 1657|    370|                    to_offset_ = 0;
 1658|    370|                    to_size_   = 0;
 1659|    370|                }
 1660|    740|                auto data = to_->inner();
 1661|    740|                auto to_copy =
 1662|    740|                    std::min(from_count - from_offset, *curr_ - to_offset_);
 1663|    740|                std::copy(from_data + from_offset,
 1664|    740|                          from_data + from_offset + to_copy,
 1665|    740|                          data + to_offset_);
 1666|    740|                node_t::inc_nodes(from_data + from_offset, to_copy);
 1667|    740|                auto sizes = to_->relaxed()->d.sizes;
 1668|    740|                p.copy_sizes(
 1669|    740|                    from_offset, to_copy, to_size_, sizes + to_offset_);
 1670|    740|                to_offset_ += to_copy;
 1671|    740|                from_offset += to_copy;
 1672|    740|                to_size_ = sizes[to_offset_ - 1];
 1673|    740|                assert(to_size_);
 1674|    740|                if (*curr_ == to_offset_) {
  ------------------
  |  Branch (1674:21): [True: 370, False: 370]
  ------------------
 1675|    370|                    to_->relaxed()->d.count = to_offset_;
 1676|    370|                    add_child(to_, to_size_);
 1677|    370|                    to_ = nullptr;
 1678|    370|                }
 1679|    740|            } while (from_offset != from_count);
  ------------------
  |  Branch (1679:22): [True: 370, False: 370]
  ------------------
 1680|    370|        }
 1681|  7.22k|    }
_ZN5immer6detail4rbts19concat_both_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10visit_leafIRNS1_12leaf_sub_posISC_EERNS1_14empty_leaf_posISC_EERNS1_15regular_sub_posISC_EEEENS1_17concat_center_posISC_EEOT_OT0_OT1_:
 1939|    986|    {
 1940|    986|        return rpos.first_sub_leaf(concat_right_visitor<Node>{}, lpos, tpos);
 1941|    986|    }
_ZN5immer6detail4rbts20concat_right_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10visit_leafIRNS1_12leaf_sub_posISC_EESH_RNS1_14empty_leaf_posISC_EEEENS1_17concat_center_posISC_EEOT_OT0_OT1_:
 1919|    970|    {
 1920|    970|        return concat_leafs<Node>(lpos, tpos, rpos);
 1921|    970|    }
_ZN5immer6detail4rbts12concat_leafsINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEERNS1_12leaf_sub_posISC_EERNS1_14empty_leaf_posISC_EESF_EENS1_17concat_center_posIT_EEOT0_OT1_OT2_:
 1833|    970|{
 1834|    970|    static_assert(Node::bits >= 2, "");
 1835|    970|    assert(lpos.shift() == tpos.shift());
 1836|      0|    assert(lpos.shift() == rpos.shift());
 1837|      0|    assert(lpos.shift() == 0);
 1838|    970|    if (tpos.count() > 0)
  ------------------
  |  Branch (1838:9): [True: 0, False: 970]
  ------------------
 1839|      0|        return {
 1840|      0|            Node::bits_leaf,
 1841|      0|            lpos.node()->inc(),
 1842|      0|            lpos.count(),
 1843|      0|            tpos.node()->inc(),
 1844|      0|            tpos.count(),
 1845|      0|            rpos.node()->inc(),
 1846|      0|            rpos.count(),
 1847|      0|        };
 1848|    970|    else
 1849|    970|        return {
 1850|    970|            Node::bits_leaf,
 1851|    970|            lpos.node()->inc(),
 1852|    970|            lpos.count(),
 1853|    970|            rpos.node()->inc(),
 1854|    970|            rpos.count(),
 1855|    970|        };
 1856|    970|}
_ZN5immer6detail4rbts16concat_rebalanceINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEERNS1_25singleton_regular_sub_posISC_EERNS1_17concat_center_posISC_EERNS1_15regular_sub_posISC_EEEENSG_IT_EEOT0_OT1_OT2_:
 1818|    986|{
 1819|    986|    auto plan = concat_rebalance_plan<Node::bits, Node::bits_leaf>{};
 1820|    986|    plan.fill(lpos, cpos, rpos);
 1821|    986|    plan.shuffle(cpos.shift());
 1822|    986|    IMMER_TRY {
  ------------------
  |  |   41|    986|#define IMMER_TRY try
  ------------------
 1823|    986|        return plan.merge(lpos, cpos, rpos);
 1824|    986|    }
 1825|    986|    IMMER_CATCH (...) {
 1826|      0|        cpos.each_sub(dec_visitor{});
 1827|      0|        IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1828|      0|    }
 1829|    986|}
_ZN5immer6detail4rbts21concat_rebalance_planILj2ELj2EE4fillIRNS1_25singleton_regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_17concat_center_posISF_EERNS1_15regular_sub_posISF_EEEEvOT_OT0_OT1_:
 1747|  4.00k|    {
 1748|  4.00k|        assert(n == 0u);
 1749|      0|        assert(total == 0u);
 1750|      0|        using visitor_t = concat_rebalance_plan_fill_visitor;
 1751|  4.00k|        lpos.each_left_sub(visitor_t{}, *this);
 1752|  4.00k|        cpos.each_sub(visitor_t{}, *this);
 1753|  4.00k|        rpos.each_right_sub(visitor_t{}, *this);
 1754|  4.00k|    }
_ZN5immer6detail4rbts21concat_rebalance_planILj2ELj2EE5mergeIRNS1_25singleton_regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_17concat_center_posISF_EERNS1_15regular_sub_posISF_EEEENSI_INSt3__15decayIT0_E4type6node_tEEEOT_OSQ_OT1_:
 1797|    986|    {
 1798|    986|        using node_t    = node_type<CPos>;
 1799|    986|        using merger_t  = concat_merger<node_t>;
 1800|    986|        using visitor_t = concat_merger_visitor;
 1801|    986|        auto merger     = merger_t{cpos.shift(), counts, n};
 1802|    986|        IMMER_TRY {
  ------------------
  |  |   41|    986|#define IMMER_TRY try
  ------------------
 1803|    986|            lpos.each_left_sub(visitor_t{}, merger);
 1804|    986|            cpos.each_sub(visitor_t{}, merger);
 1805|    986|            rpos.each_right_sub(visitor_t{}, merger);
 1806|    986|            cpos.each_sub(dec_visitor{});
 1807|    986|            return merger.finish();
 1808|    986|        }
 1809|    986|        IMMER_CATCH (...) {
 1810|      0|            merger.abort();
 1811|      0|            IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1812|      0|        }
 1813|    986|    }
_ZN5immer6detail4rbts16concat_rebalanceINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEENS1_12null_sub_posERNS1_17concat_center_posISC_EERNS1_11relaxed_posISC_EEEENSE_IT_EEOT0_OT1_OT2_:
 1818|  5.78k|{
 1819|  5.78k|    auto plan = concat_rebalance_plan<Node::bits, Node::bits_leaf>{};
 1820|  5.78k|    plan.fill(lpos, cpos, rpos);
 1821|  5.78k|    plan.shuffle(cpos.shift());
 1822|  5.78k|    IMMER_TRY {
  ------------------
  |  |   41|  5.78k|#define IMMER_TRY try
  ------------------
 1823|  5.78k|        return plan.merge(lpos, cpos, rpos);
 1824|  5.78k|    }
 1825|  5.78k|    IMMER_CATCH (...) {
 1826|      0|        cpos.each_sub(dec_visitor{});
 1827|      0|        IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1828|      0|    }
 1829|  5.78k|}
_ZN5immer6detail4rbts21concat_rebalance_planILj2ELj2EE4fillIRNS1_12null_sub_posERNS1_17concat_center_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_11relaxed_posISH_EEEEvOT_OT0_OT1_:
 1747|  63.0k|    {
 1748|  63.0k|        assert(n == 0u);
 1749|      0|        assert(total == 0u);
 1750|      0|        using visitor_t = concat_rebalance_plan_fill_visitor;
 1751|  63.0k|        lpos.each_left_sub(visitor_t{}, *this);
 1752|  63.0k|        cpos.each_sub(visitor_t{}, *this);
 1753|  63.0k|        rpos.each_right_sub(visitor_t{}, *this);
 1754|  63.0k|    }
_ZN5immer6detail4rbts21concat_rebalance_planILj2ELj2EE5mergeIRNS1_12null_sub_posERNS1_17concat_center_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_11relaxed_posISH_EEEENS7_INSt3__15decayIT0_E4type6node_tEEEOT_OSP_OT1_:
 1797|  5.78k|    {
 1798|  5.78k|        using node_t    = node_type<CPos>;
 1799|  5.78k|        using merger_t  = concat_merger<node_t>;
 1800|  5.78k|        using visitor_t = concat_merger_visitor;
 1801|  5.78k|        auto merger     = merger_t{cpos.shift(), counts, n};
 1802|  5.78k|        IMMER_TRY {
  ------------------
  |  |   41|  5.78k|#define IMMER_TRY try
  ------------------
 1803|  5.78k|            lpos.each_left_sub(visitor_t{}, merger);
 1804|  5.78k|            cpos.each_sub(visitor_t{}, merger);
 1805|  5.78k|            rpos.each_right_sub(visitor_t{}, merger);
 1806|  5.78k|            cpos.each_sub(dec_visitor{});
 1807|  5.78k|            return merger.finish();
 1808|  5.78k|        }
 1809|  5.78k|        IMMER_CATCH (...) {
 1810|      0|            merger.abort();
 1811|      0|            IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1812|      0|        }
 1813|  5.78k|    }
_ZN5immer6detail4rbts19concat_both_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10visit_leafIRNS1_12leaf_sub_posISC_EERNS1_14empty_leaf_posISC_EERNS1_11relaxed_posISC_EEEENS1_17concat_center_posISC_EEOT_OT0_OT1_:
 1939|    970|    {
 1940|    970|        return rpos.first_sub_leaf(concat_right_visitor<Node>{}, lpos, tpos);
 1941|    970|    }
_ZN5immer6detail4rbts16concat_rebalanceINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEERNS1_25singleton_regular_sub_posISC_EERNS1_17concat_center_posISC_EERNS1_11relaxed_posISC_EEEENSG_IT_EEOT0_OT1_OT2_:
 1818|    970|{
 1819|    970|    auto plan = concat_rebalance_plan<Node::bits, Node::bits_leaf>{};
 1820|    970|    plan.fill(lpos, cpos, rpos);
 1821|    970|    plan.shuffle(cpos.shift());
 1822|    970|    IMMER_TRY {
  ------------------
  |  |   41|    970|#define IMMER_TRY try
  ------------------
 1823|    970|        return plan.merge(lpos, cpos, rpos);
 1824|    970|    }
 1825|    970|    IMMER_CATCH (...) {
 1826|      0|        cpos.each_sub(dec_visitor{});
 1827|      0|        IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1828|      0|    }
 1829|    970|}
_ZN5immer6detail4rbts21concat_rebalance_planILj2ELj2EE4fillIRNS1_25singleton_regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_17concat_center_posISF_EERNS1_11relaxed_posISF_EEEEvOT_OT0_OT1_:
 1747|  4.89k|    {
 1748|  4.89k|        assert(n == 0u);
 1749|      0|        assert(total == 0u);
 1750|      0|        using visitor_t = concat_rebalance_plan_fill_visitor;
 1751|  4.89k|        lpos.each_left_sub(visitor_t{}, *this);
 1752|  4.89k|        cpos.each_sub(visitor_t{}, *this);
 1753|  4.89k|        rpos.each_right_sub(visitor_t{}, *this);
 1754|  4.89k|    }
_ZN5immer6detail4rbts21concat_rebalance_planILj2ELj2EE5mergeIRNS1_25singleton_regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_17concat_center_posISF_EERNS1_11relaxed_posISF_EEEENSI_INSt3__15decayIT0_E4type6node_tEEEOT_OSQ_OT1_:
 1797|    970|    {
 1798|    970|        using node_t    = node_type<CPos>;
 1799|    970|        using merger_t  = concat_merger<node_t>;
 1800|    970|        using visitor_t = concat_merger_visitor;
 1801|    970|        auto merger     = merger_t{cpos.shift(), counts, n};
 1802|    970|        IMMER_TRY {
  ------------------
  |  |   41|    970|#define IMMER_TRY try
  ------------------
 1803|    970|            lpos.each_left_sub(visitor_t{}, merger);
 1804|    970|            cpos.each_sub(visitor_t{}, merger);
 1805|    970|            rpos.each_right_sub(visitor_t{}, merger);
 1806|    970|            cpos.each_sub(dec_visitor{});
 1807|    970|            return merger.finish();
 1808|    970|        }
 1809|    970|        IMMER_CATCH (...) {
 1810|      0|            merger.abort();
 1811|      0|            IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1812|      0|        }
 1813|    970|    }
_ZN5immer6detail4rbts26concat_trees_right_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10visit_nodeIRNS1_15regular_sub_posISC_EERNS1_25singleton_regular_sub_posISC_EERNS1_14empty_leaf_posISC_EEEENS1_17concat_center_posISC_EEOT_OT0_OT1_:
 1953|  1.58k|    {
 1954|  1.58k|        return concat_inners<Node>(lpos, tpos, rpos);
 1955|  1.58k|    }
_ZNO5immer6detail4rbts17concat_center_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE7realizeEv:
 1523|  50.9k|    {
 1524|  50.9k|        if (count_ > 1) {
  ------------------
  |  Branch (1524:13): [True: 21.9k, False: 29.0k]
  ------------------
 1525|  21.9k|            IMMER_TRY {
  ------------------
  |  |   41|  21.9k|#define IMMER_TRY try
  ------------------
 1526|  21.9k|                auto result = node_t::make_inner_r_n(count_);
 1527|  21.9k|                auto r      = result->relaxed();
 1528|  21.9k|                r->d.count  = count_;
 1529|  21.9k|                std::copy(nodes_, nodes_ + count_, result->inner());
 1530|  21.9k|                std::copy(sizes_, sizes_ + count_, r->d.sizes);
 1531|  21.9k|                return {result, shift_, r};
 1532|  21.9k|            }
 1533|  21.9k|            IMMER_CATCH (...) {
 1534|      0|                each_sub(dec_visitor{});
 1535|      0|                IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1536|      0|            }
 1537|  29.0k|        } else {
 1538|  29.0k|            assert(shift_ >= B + BL);
 1539|      0|            return {nodes_[0], shift_ - B, nodes_[0]->relaxed()};
 1540|  29.0k|        }
 1541|  50.9k|    }
_ZN5immer6detail4rbts12concat_treesINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEENS1_11relaxed_posIT_EEPSE_jmSG_jSG_jm:
 1981|  48.1k|{
 1982|  48.1k|    return visit_maybe_relaxed_sub(lroot,
 1983|  48.1k|                                   lshift,
 1984|  48.1k|                                   lsize,
 1985|  48.1k|                                   concat_trees_left_visitor<Node>{},
 1986|  48.1k|                                   make_leaf_pos(ltail, ltcount),
 1987|  48.1k|                                   rroot,
 1988|  48.1k|                                   rshift,
 1989|  48.1k|                                   rsize)
 1990|  48.1k|        .realize();
 1991|  48.1k|}
_ZN5immer6detail4rbts25concat_trees_left_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10visit_nodeIRNS1_11relaxed_posISC_EENS1_8leaf_posISC_EEJRPSC_RjRmEEENS1_17concat_center_posISC_EEOT_OT0_DpOT1_:
 1966|  42.8k|    {
 1967|  42.8k|        return visit_maybe_relaxed_sub(
 1968|  42.8k|            args..., concat_trees_right_visitor<Node>{}, lpos, tpos);
 1969|  42.8k|    }
_ZN5immer6detail4rbts26concat_trees_right_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10visit_nodeIRNS1_11relaxed_posISC_EESH_RNS1_8leaf_posISC_EEEENS1_17concat_center_posISC_EEOT_OT0_OT1_:
 1953|  39.7k|    {
 1954|  39.7k|        return concat_inners<Node>(lpos, tpos, rpos);
 1955|  39.7k|    }
_ZN5immer6detail4rbts13concat_innersINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEERNS1_11relaxed_posISC_EERNS1_8leaf_posISC_EESF_EENS1_17concat_center_posIT_EEOT0_OT1_OT2_:
 1867|   227k|{
 1868|   227k|    auto lshift = lpos.shift();
 1869|   227k|    auto rshift = rpos.shift();
 1870|   227k|    if (lshift > rshift) {
  ------------------
  |  Branch (1870:9): [True: 3.18k, False: 224k]
  ------------------
 1871|  3.18k|        auto cpos = lpos.last_sub(concat_left_visitor<Node>{}, tpos, rpos);
 1872|  3.18k|        return concat_rebalance<Node>(lpos, cpos, null_sub_pos{});
 1873|   224k|    } else if (lshift < rshift) {
  ------------------
  |  Branch (1873:16): [True: 2.17k, False: 222k]
  ------------------
 1874|  2.17k|        auto cpos = rpos.first_sub(concat_right_visitor<Node>{}, lpos, tpos);
 1875|  2.17k|        return concat_rebalance<Node>(null_sub_pos{}, cpos, rpos);
 1876|   222k|    } else {
 1877|   222k|        assert(lshift == rshift);
 1878|      0|        assert(Node::bits_leaf == 0u || lshift > 0);
 1879|      0|        auto cpos = lpos.last_sub(concat_both_visitor<Node>{}, tpos, rpos);
 1880|   222k|        return concat_rebalance<Node>(lpos, cpos, rpos);
 1881|   222k|    }
 1882|   227k|}
_ZN5immer6detail4rbts19concat_left_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE11visit_innerIRNS1_11relaxed_posISC_EERNS1_8leaf_posISC_EESH_EENS1_17concat_center_posISC_EEOT_OT0_OT1_:
 1892|  2.88k|    {
 1893|  2.88k|        return concat_inners<Node>(lpos, tpos, rpos);
 1894|  2.88k|    }
_ZN5immer6detail4rbts19concat_left_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE11visit_innerIRNS1_15regular_sub_posISC_EERNS1_8leaf_posISC_EERNS1_11relaxed_posISC_EEEENS1_17concat_center_posISC_EEOT_OT0_OT1_:
 1892|    832|    {
 1893|    832|        return concat_inners<Node>(lpos, tpos, rpos);
 1894|    832|    }
_ZN5immer6detail4rbts13concat_innersINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEERNS1_15regular_sub_posISC_EERNS1_8leaf_posISC_EERNS1_11relaxed_posISC_EEEENS1_17concat_center_posIT_EEOT0_OT1_OT2_:
 1867|  10.3k|{
 1868|  10.3k|    auto lshift = lpos.shift();
 1869|  10.3k|    auto rshift = rpos.shift();
 1870|  10.3k|    if (lshift > rshift) {
  ------------------
  |  Branch (1870:9): [True: 532, False: 9.82k]
  ------------------
 1871|    532|        auto cpos = lpos.last_sub(concat_left_visitor<Node>{}, tpos, rpos);
 1872|    532|        return concat_rebalance<Node>(lpos, cpos, null_sub_pos{});
 1873|  9.82k|    } else if (lshift < rshift) {
  ------------------
  |  Branch (1873:16): [True: 894, False: 8.93k]
  ------------------
 1874|    894|        auto cpos = rpos.first_sub(concat_right_visitor<Node>{}, lpos, tpos);
 1875|    894|        return concat_rebalance<Node>(null_sub_pos{}, cpos, rpos);
 1876|  8.93k|    } else {
 1877|  8.93k|        assert(lshift == rshift);
 1878|      0|        assert(Node::bits_leaf == 0u || lshift > 0);
 1879|      0|        auto cpos = lpos.last_sub(concat_both_visitor<Node>{}, tpos, rpos);
 1880|  8.93k|        return concat_rebalance<Node>(lpos, cpos, rpos);
 1881|  8.93k|    }
 1882|  10.3k|}
_ZN5immer6detail4rbts16concat_rebalanceINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEERNS1_15regular_sub_posISC_EERNS1_17concat_center_posISC_EENS1_12null_sub_posEEENSG_IT_EEOT0_OT1_OT2_:
 1818|  1.74k|{
 1819|  1.74k|    auto plan = concat_rebalance_plan<Node::bits, Node::bits_leaf>{};
 1820|  1.74k|    plan.fill(lpos, cpos, rpos);
 1821|  1.74k|    plan.shuffle(cpos.shift());
 1822|  1.74k|    IMMER_TRY {
  ------------------
  |  |   41|  1.74k|#define IMMER_TRY try
  ------------------
 1823|  1.74k|        return plan.merge(lpos, cpos, rpos);
 1824|  1.74k|    }
 1825|  1.74k|    IMMER_CATCH (...) {
 1826|      0|        cpos.each_sub(dec_visitor{});
 1827|      0|        IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1828|      0|    }
 1829|  1.74k|}
_ZN5immer6detail4rbts21concat_rebalance_planILj2ELj2EE4fillIRNS1_15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_17concat_center_posISF_EERNS1_12null_sub_posEEEvOT_OT0_OT1_:
 1747|  6.70k|    {
 1748|  6.70k|        assert(n == 0u);
 1749|      0|        assert(total == 0u);
 1750|      0|        using visitor_t = concat_rebalance_plan_fill_visitor;
 1751|  6.70k|        lpos.each_left_sub(visitor_t{}, *this);
 1752|  6.70k|        cpos.each_sub(visitor_t{}, *this);
 1753|  6.70k|        rpos.each_right_sub(visitor_t{}, *this);
 1754|  6.70k|    }
_ZN5immer6detail4rbts21concat_rebalance_planILj2ELj2EE5mergeIRNS1_15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_17concat_center_posISF_EERNS1_12null_sub_posEEENSI_INSt3__15decayIT0_E4type6node_tEEEOT_OSP_OT1_:
 1797|  1.74k|    {
 1798|  1.74k|        using node_t    = node_type<CPos>;
 1799|  1.74k|        using merger_t  = concat_merger<node_t>;
 1800|  1.74k|        using visitor_t = concat_merger_visitor;
 1801|  1.74k|        auto merger     = merger_t{cpos.shift(), counts, n};
 1802|  1.74k|        IMMER_TRY {
  ------------------
  |  |   41|  1.74k|#define IMMER_TRY try
  ------------------
 1803|  1.74k|            lpos.each_left_sub(visitor_t{}, merger);
 1804|  1.74k|            cpos.each_sub(visitor_t{}, merger);
 1805|  1.74k|            rpos.each_right_sub(visitor_t{}, merger);
 1806|  1.74k|            cpos.each_sub(dec_visitor{});
 1807|  1.74k|            return merger.finish();
 1808|  1.74k|        }
 1809|  1.74k|        IMMER_CATCH (...) {
 1810|      0|            merger.abort();
 1811|      0|            IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1812|      0|        }
 1813|  1.74k|    }
_ZN5immer6detail4rbts20concat_right_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE11visit_innerIRNS1_11relaxed_posISC_EERNS1_15regular_sub_posISC_EERNS1_8leaf_posISC_EEEENS1_17concat_center_posISC_EEOT_OT0_OT1_:
 1912|  8.88k|    {
 1913|  8.88k|        return concat_inners<Node>(lpos, tpos, rpos);
 1914|  8.88k|    }
_ZN5immer6detail4rbts20concat_right_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE11visit_innerIRNS1_15regular_sub_posISC_EESH_RNS1_8leaf_posISC_EEEENS1_17concat_center_posISC_EEOT_OT0_OT1_:
 1912|    389|    {
 1913|    389|        return concat_inners<Node>(lpos, tpos, rpos);
 1914|    389|    }
_ZN5immer6detail4rbts13concat_innersINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEERNS1_15regular_sub_posISC_EERNS1_8leaf_posISC_EESF_EENS1_17concat_center_posIT_EEOT0_OT1_OT2_:
 1867|  6.60k|{
 1868|  6.60k|    auto lshift = lpos.shift();
 1869|  6.60k|    auto rshift = rpos.shift();
 1870|  6.60k|    if (lshift > rshift) {
  ------------------
  |  Branch (1870:9): [True: 1.21k, False: 5.38k]
  ------------------
 1871|  1.21k|        auto cpos = lpos.last_sub(concat_left_visitor<Node>{}, tpos, rpos);
 1872|  1.21k|        return concat_rebalance<Node>(lpos, cpos, null_sub_pos{});
 1873|  5.38k|    } else if (lshift < rshift) {
  ------------------
  |  Branch (1873:16): [True: 494, False: 4.89k]
  ------------------
 1874|    494|        auto cpos = rpos.first_sub(concat_right_visitor<Node>{}, lpos, tpos);
 1875|    494|        return concat_rebalance<Node>(null_sub_pos{}, cpos, rpos);
 1876|  4.89k|    } else {
 1877|  4.89k|        assert(lshift == rshift);
 1878|      0|        assert(Node::bits_leaf == 0u || lshift > 0);
 1879|      0|        auto cpos = lpos.last_sub(concat_both_visitor<Node>{}, tpos, rpos);
 1880|  4.89k|        return concat_rebalance<Node>(lpos, cpos, rpos);
 1881|  4.89k|    }
 1882|  6.60k|}
_ZN5immer6detail4rbts19concat_left_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE11visit_innerIRNS1_15regular_sub_posISC_EERNS1_8leaf_posISC_EESH_EENS1_17concat_center_posISC_EEOT_OT0_OT1_:
 1892|  1.54k|    {
 1893|  1.54k|        return concat_inners<Node>(lpos, tpos, rpos);
 1894|  1.54k|    }
_ZN5immer6detail4rbts20concat_right_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE11visit_innerIRNS1_8full_posISC_EERNS1_15regular_sub_posISC_EERNS1_8leaf_posISC_EEEENS1_17concat_center_posISC_EEOT_OT0_OT1_:
 1912|  2.98k|    {
 1913|  2.98k|        return concat_inners<Node>(lpos, tpos, rpos);
 1914|  2.98k|    }
_ZN5immer6detail4rbts13concat_innersINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEERNS1_15regular_sub_posISC_EERNS1_8leaf_posISC_EERNS1_8full_posISC_EEEENS1_17concat_center_posIT_EEOT0_OT1_OT2_:
 1867|  2.98k|{
 1868|  2.98k|    auto lshift = lpos.shift();
 1869|  2.98k|    auto rshift = rpos.shift();
 1870|  2.98k|    if (lshift > rshift) {
  ------------------
  |  Branch (1870:9): [True: 0, False: 2.98k]
  ------------------
 1871|      0|        auto cpos = lpos.last_sub(concat_left_visitor<Node>{}, tpos, rpos);
 1872|      0|        return concat_rebalance<Node>(lpos, cpos, null_sub_pos{});
 1873|  2.98k|    } else if (lshift < rshift) {
  ------------------
  |  Branch (1873:16): [True: 251, False: 2.73k]
  ------------------
 1874|    251|        auto cpos = rpos.first_sub(concat_right_visitor<Node>{}, lpos, tpos);
 1875|    251|        return concat_rebalance<Node>(null_sub_pos{}, cpos, rpos);
 1876|  2.73k|    } else {
 1877|  2.73k|        assert(lshift == rshift);
 1878|      0|        assert(Node::bits_leaf == 0u || lshift > 0);
 1879|      0|        auto cpos = lpos.last_sub(concat_both_visitor<Node>{}, tpos, rpos);
 1880|  2.73k|        return concat_rebalance<Node>(lpos, cpos, rpos);
 1881|  2.73k|    }
 1882|  2.98k|}
_ZN5immer6detail4rbts19concat_both_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10visit_leafIRNS1_12leaf_sub_posISC_EERNS1_8leaf_posISC_EERNS1_8full_posISC_EEEENS1_17concat_center_posISC_EEOT_OT0_OT1_:
 1939|  2.61k|    {
 1940|  2.61k|        return rpos.first_sub_leaf(concat_right_visitor<Node>{}, lpos, tpos);
 1941|  2.61k|    }
_ZN5immer6detail4rbts20concat_right_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10visit_leafIRNS1_13full_leaf_posISC_EERNS1_12leaf_sub_posISC_EERNS1_8leaf_posISC_EEEENS1_17concat_center_posISC_EEOT_OT0_OT1_:
 1919|  8.39k|    {
 1920|  8.39k|        return concat_leafs<Node>(lpos, tpos, rpos);
 1921|  8.39k|    }
_ZN5immer6detail4rbts12concat_leafsINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEERNS1_12leaf_sub_posISC_EERNS1_8leaf_posISC_EERNS1_13full_leaf_posISC_EEEENS1_17concat_center_posIT_EEOT0_OT1_OT2_:
 1833|  8.39k|{
 1834|  8.39k|    static_assert(Node::bits >= 2, "");
 1835|  8.39k|    assert(lpos.shift() == tpos.shift());
 1836|      0|    assert(lpos.shift() == rpos.shift());
 1837|      0|    assert(lpos.shift() == 0);
 1838|  8.39k|    if (tpos.count() > 0)
  ------------------
  |  Branch (1838:9): [True: 8.39k, False: 0]
  ------------------
 1839|  8.39k|        return {
 1840|  8.39k|            Node::bits_leaf,
 1841|  8.39k|            lpos.node()->inc(),
 1842|  8.39k|            lpos.count(),
 1843|  8.39k|            tpos.node()->inc(),
 1844|  8.39k|            tpos.count(),
 1845|  8.39k|            rpos.node()->inc(),
 1846|  8.39k|            rpos.count(),
 1847|  8.39k|        };
 1848|      0|    else
 1849|      0|        return {
 1850|      0|            Node::bits_leaf,
 1851|      0|            lpos.node()->inc(),
 1852|      0|            lpos.count(),
 1853|      0|            rpos.node()->inc(),
 1854|      0|            rpos.count(),
 1855|      0|        };
 1856|  8.39k|}
_ZN5immer6detail4rbts19concat_both_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE11visit_innerIRNS1_15regular_sub_posISC_EERNS1_8leaf_posISC_EERNS1_8full_posISC_EEEENS1_17concat_center_posISC_EEOT_OT0_OT1_:
 1932|  1.27k|    {
 1933|  1.27k|        return rpos.first_sub(concat_right_visitor<Node>{}, lpos, tpos);
 1934|  1.27k|    }
_ZN5immer6detail4rbts16concat_rebalanceINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEERNS1_15regular_sub_posISC_EERNS1_17concat_center_posISC_EERNS1_8full_posISC_EEEENSG_IT_EEOT0_OT1_OT2_:
 1818|  2.73k|{
 1819|  2.73k|    auto plan = concat_rebalance_plan<Node::bits, Node::bits_leaf>{};
 1820|  2.73k|    plan.fill(lpos, cpos, rpos);
 1821|  2.73k|    plan.shuffle(cpos.shift());
 1822|  2.73k|    IMMER_TRY {
  ------------------
  |  |   41|  2.73k|#define IMMER_TRY try
  ------------------
 1823|  2.73k|        return plan.merge(lpos, cpos, rpos);
 1824|  2.73k|    }
 1825|  2.73k|    IMMER_CATCH (...) {
 1826|      0|        cpos.each_sub(dec_visitor{});
 1827|      0|        IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1828|      0|    }
 1829|  2.73k|}
_ZN5immer6detail4rbts21concat_rebalance_planILj2ELj2EE4fillIRNS1_15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_17concat_center_posISF_EERNS1_8full_posISF_EEEEvOT_OT0_OT1_:
 1747|  7.84k|    {
 1748|  7.84k|        assert(n == 0u);
 1749|      0|        assert(total == 0u);
 1750|      0|        using visitor_t = concat_rebalance_plan_fill_visitor;
 1751|  7.84k|        lpos.each_left_sub(visitor_t{}, *this);
 1752|  7.84k|        cpos.each_sub(visitor_t{}, *this);
 1753|  7.84k|        rpos.each_right_sub(visitor_t{}, *this);
 1754|  7.84k|    }
_ZN5immer6detail4rbts21concat_rebalance_planILj2ELj2EE5mergeIRNS1_15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_17concat_center_posISF_EERNS1_8full_posISF_EEEENSI_INSt3__15decayIT0_E4type6node_tEEEOT_OSQ_OT1_:
 1797|  2.73k|    {
 1798|  2.73k|        using node_t    = node_type<CPos>;
 1799|  2.73k|        using merger_t  = concat_merger<node_t>;
 1800|  2.73k|        using visitor_t = concat_merger_visitor;
 1801|  2.73k|        auto merger     = merger_t{cpos.shift(), counts, n};
 1802|  2.73k|        IMMER_TRY {
  ------------------
  |  |   41|  2.73k|#define IMMER_TRY try
  ------------------
 1803|  2.73k|            lpos.each_left_sub(visitor_t{}, merger);
 1804|  2.73k|            cpos.each_sub(visitor_t{}, merger);
 1805|  2.73k|            rpos.each_right_sub(visitor_t{}, merger);
 1806|  2.73k|            cpos.each_sub(dec_visitor{});
 1807|  2.73k|            return merger.finish();
 1808|  2.73k|        }
 1809|  2.73k|        IMMER_CATCH (...) {
 1810|      0|            merger.abort();
 1811|      0|            IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1812|      0|        }
 1813|  2.73k|    }
_ZN5immer6detail4rbts19concat_both_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10visit_leafIRNS1_12leaf_sub_posISC_EERNS1_8leaf_posISC_EERNS1_15regular_sub_posISC_EEEENS1_17concat_center_posISC_EEOT_OT0_OT1_:
 1939|  5.77k|    {
 1940|  5.77k|        return rpos.first_sub_leaf(concat_right_visitor<Node>{}, lpos, tpos);
 1941|  5.77k|    }
_ZN5immer6detail4rbts20concat_right_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10visit_leafIRNS1_12leaf_sub_posISC_EESH_RNS1_8leaf_posISC_EEEENS1_17concat_center_posISC_EEOT_OT0_OT1_:
 1919|  39.8k|    {
 1920|  39.8k|        return concat_leafs<Node>(lpos, tpos, rpos);
 1921|  39.8k|    }
_ZN5immer6detail4rbts12concat_leafsINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEERNS1_12leaf_sub_posISC_EERNS1_8leaf_posISC_EESF_EENS1_17concat_center_posIT_EEOT0_OT1_OT2_:
 1833|  39.8k|{
 1834|  39.8k|    static_assert(Node::bits >= 2, "");
 1835|  39.8k|    assert(lpos.shift() == tpos.shift());
 1836|      0|    assert(lpos.shift() == rpos.shift());
 1837|      0|    assert(lpos.shift() == 0);
 1838|  39.8k|    if (tpos.count() > 0)
  ------------------
  |  Branch (1838:9): [True: 39.8k, False: 0]
  ------------------
 1839|  39.8k|        return {
 1840|  39.8k|            Node::bits_leaf,
 1841|  39.8k|            lpos.node()->inc(),
 1842|  39.8k|            lpos.count(),
 1843|  39.8k|            tpos.node()->inc(),
 1844|  39.8k|            tpos.count(),
 1845|  39.8k|            rpos.node()->inc(),
 1846|  39.8k|            rpos.count(),
 1847|  39.8k|        };
 1848|      0|    else
 1849|      0|        return {
 1850|      0|            Node::bits_leaf,
 1851|      0|            lpos.node()->inc(),
 1852|      0|            lpos.count(),
 1853|      0|            rpos.node()->inc(),
 1854|      0|            rpos.count(),
 1855|      0|        };
 1856|  39.8k|}
_ZN5immer6detail4rbts19concat_both_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE11visit_innerIRNS1_15regular_sub_posISC_EERNS1_8leaf_posISC_EESH_EENS1_17concat_center_posISC_EEOT_OT0_OT1_:
 1932|    963|    {
 1933|    963|        return rpos.first_sub(concat_right_visitor<Node>{}, lpos, tpos);
 1934|    963|    }
_ZN5immer6detail4rbts16concat_rebalanceINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEERNS1_15regular_sub_posISC_EERNS1_17concat_center_posISC_EESF_EENSG_IT_EEOT0_OT1_OT2_:
 1818|  4.89k|{
 1819|  4.89k|    auto plan = concat_rebalance_plan<Node::bits, Node::bits_leaf>{};
 1820|  4.89k|    plan.fill(lpos, cpos, rpos);
 1821|  4.89k|    plan.shuffle(cpos.shift());
 1822|  4.89k|    IMMER_TRY {
  ------------------
  |  |   41|  4.89k|#define IMMER_TRY try
  ------------------
 1823|  4.89k|        return plan.merge(lpos, cpos, rpos);
 1824|  4.89k|    }
 1825|  4.89k|    IMMER_CATCH (...) {
 1826|      0|        cpos.each_sub(dec_visitor{});
 1827|      0|        IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1828|      0|    }
 1829|  4.89k|}
_ZN5immer6detail4rbts21concat_rebalance_planILj2ELj2EE4fillIRNS1_15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_17concat_center_posISF_EESH_EEvOT_OT0_OT1_:
 1747|  9.51k|    {
 1748|  9.51k|        assert(n == 0u);
 1749|      0|        assert(total == 0u);
 1750|      0|        using visitor_t = concat_rebalance_plan_fill_visitor;
 1751|  9.51k|        lpos.each_left_sub(visitor_t{}, *this);
 1752|  9.51k|        cpos.each_sub(visitor_t{}, *this);
 1753|  9.51k|        rpos.each_right_sub(visitor_t{}, *this);
 1754|  9.51k|    }
_ZN5immer6detail4rbts21concat_rebalance_planILj2ELj2EE5mergeIRNS1_15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_17concat_center_posISF_EESH_EENSI_INSt3__15decayIT0_E4type6node_tEEEOT_OSN_OT1_:
 1797|  4.89k|    {
 1798|  4.89k|        using node_t    = node_type<CPos>;
 1799|  4.89k|        using merger_t  = concat_merger<node_t>;
 1800|  4.89k|        using visitor_t = concat_merger_visitor;
 1801|  4.89k|        auto merger     = merger_t{cpos.shift(), counts, n};
 1802|  4.89k|        IMMER_TRY {
  ------------------
  |  |   41|  4.89k|#define IMMER_TRY try
  ------------------
 1803|  4.89k|            lpos.each_left_sub(visitor_t{}, merger);
 1804|  4.89k|            cpos.each_sub(visitor_t{}, merger);
 1805|  4.89k|            rpos.each_right_sub(visitor_t{}, merger);
 1806|  4.89k|            cpos.each_sub(dec_visitor{});
 1807|  4.89k|            return merger.finish();
 1808|  4.89k|        }
 1809|  4.89k|        IMMER_CATCH (...) {
 1810|      0|            merger.abort();
 1811|      0|            IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1812|      0|        }
 1813|  4.89k|    }
_ZN5immer6detail4rbts19concat_both_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10visit_leafIRNS1_12leaf_sub_posISC_EERNS1_8leaf_posISC_EERNS1_11relaxed_posISC_EEEENS1_17concat_center_posISC_EEOT_OT0_OT1_:
 1939|  39.8k|    {
 1940|  39.8k|        return rpos.first_sub_leaf(concat_right_visitor<Node>{}, lpos, tpos);
 1941|  39.8k|    }
_ZN5immer6detail4rbts19concat_both_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE11visit_innerIRNS1_15regular_sub_posISC_EERNS1_8leaf_posISC_EERNS1_11relaxed_posISC_EEEENS1_17concat_center_posISC_EEOT_OT0_OT1_:
 1932|  8.37k|    {
 1933|  8.37k|        return rpos.first_sub(concat_right_visitor<Node>{}, lpos, tpos);
 1934|  8.37k|    }
_ZN5immer6detail4rbts16concat_rebalanceINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEERNS1_15regular_sub_posISC_EERNS1_17concat_center_posISC_EERNS1_11relaxed_posISC_EEEENSG_IT_EEOT0_OT1_OT2_:
 1818|  8.93k|{
 1819|  8.93k|    auto plan = concat_rebalance_plan<Node::bits, Node::bits_leaf>{};
 1820|  8.93k|    plan.fill(lpos, cpos, rpos);
 1821|  8.93k|    plan.shuffle(cpos.shift());
 1822|  8.93k|    IMMER_TRY {
  ------------------
  |  |   41|  8.93k|#define IMMER_TRY try
  ------------------
 1823|  8.93k|        return plan.merge(lpos, cpos, rpos);
 1824|  8.93k|    }
 1825|  8.93k|    IMMER_CATCH (...) {
 1826|      0|        cpos.each_sub(dec_visitor{});
 1827|      0|        IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1828|      0|    }
 1829|  8.93k|}
_ZN5immer6detail4rbts21concat_rebalance_planILj2ELj2EE4fillIRNS1_15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_17concat_center_posISF_EERNS1_11relaxed_posISF_EEEEvOT_OT0_OT1_:
 1747|   150k|    {
 1748|   150k|        assert(n == 0u);
 1749|      0|        assert(total == 0u);
 1750|      0|        using visitor_t = concat_rebalance_plan_fill_visitor;
 1751|   150k|        lpos.each_left_sub(visitor_t{}, *this);
 1752|   150k|        cpos.each_sub(visitor_t{}, *this);
 1753|   150k|        rpos.each_right_sub(visitor_t{}, *this);
 1754|   150k|    }
_ZN5immer6detail4rbts21concat_rebalance_planILj2ELj2EE5mergeIRNS1_15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_17concat_center_posISF_EERNS1_11relaxed_posISF_EEEENSI_INSt3__15decayIT0_E4type6node_tEEEOT_OSQ_OT1_:
 1797|  8.93k|    {
 1798|  8.93k|        using node_t    = node_type<CPos>;
 1799|  8.93k|        using merger_t  = concat_merger<node_t>;
 1800|  8.93k|        using visitor_t = concat_merger_visitor;
 1801|  8.93k|        auto merger     = merger_t{cpos.shift(), counts, n};
 1802|  8.93k|        IMMER_TRY {
  ------------------
  |  |   41|  8.93k|#define IMMER_TRY try
  ------------------
 1803|  8.93k|            lpos.each_left_sub(visitor_t{}, merger);
 1804|  8.93k|            cpos.each_sub(visitor_t{}, merger);
 1805|  8.93k|            rpos.each_right_sub(visitor_t{}, merger);
 1806|  8.93k|            cpos.each_sub(dec_visitor{});
 1807|  8.93k|            return merger.finish();
 1808|  8.93k|        }
 1809|  8.93k|        IMMER_CATCH (...) {
 1810|      0|            merger.abort();
 1811|      0|            IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1812|      0|        }
 1813|  8.93k|    }
_ZN5immer6detail4rbts16concat_rebalanceINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEERNS1_11relaxed_posISC_EERNS1_17concat_center_posISC_EENS1_12null_sub_posEEENSG_IT_EEOT0_OT1_OT2_:
 1818|  5.52k|{
 1819|  5.52k|    auto plan = concat_rebalance_plan<Node::bits, Node::bits_leaf>{};
 1820|  5.52k|    plan.fill(lpos, cpos, rpos);
 1821|  5.52k|    plan.shuffle(cpos.shift());
 1822|  5.52k|    IMMER_TRY {
  ------------------
  |  |   41|  5.52k|#define IMMER_TRY try
  ------------------
 1823|  5.52k|        return plan.merge(lpos, cpos, rpos);
 1824|  5.52k|    }
 1825|  5.52k|    IMMER_CATCH (...) {
 1826|      0|        cpos.each_sub(dec_visitor{});
 1827|      0|        IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1828|      0|    }
 1829|  5.52k|}
_ZN5immer6detail4rbts21concat_rebalance_planILj2ELj2EE4fillIRNS1_11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_17concat_center_posISF_EERNS1_12null_sub_posEEEvOT_OT0_OT1_:
 1747|  97.0k|    {
 1748|  97.0k|        assert(n == 0u);
 1749|      0|        assert(total == 0u);
 1750|      0|        using visitor_t = concat_rebalance_plan_fill_visitor;
 1751|  97.0k|        lpos.each_left_sub(visitor_t{}, *this);
 1752|  97.0k|        cpos.each_sub(visitor_t{}, *this);
 1753|  97.0k|        rpos.each_right_sub(visitor_t{}, *this);
 1754|  97.0k|    }
_ZN5immer6detail4rbts21concat_rebalance_planILj2ELj2EE5mergeIRNS1_11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_17concat_center_posISF_EERNS1_12null_sub_posEEENSI_INSt3__15decayIT0_E4type6node_tEEEOT_OSP_OT1_:
 1797|  5.52k|    {
 1798|  5.52k|        using node_t    = node_type<CPos>;
 1799|  5.52k|        using merger_t  = concat_merger<node_t>;
 1800|  5.52k|        using visitor_t = concat_merger_visitor;
 1801|  5.52k|        auto merger     = merger_t{cpos.shift(), counts, n};
 1802|  5.52k|        IMMER_TRY {
  ------------------
  |  |   41|  5.52k|#define IMMER_TRY try
  ------------------
 1803|  5.52k|            lpos.each_left_sub(visitor_t{}, merger);
 1804|  5.52k|            cpos.each_sub(visitor_t{}, merger);
 1805|  5.52k|            rpos.each_right_sub(visitor_t{}, merger);
 1806|  5.52k|            cpos.each_sub(dec_visitor{});
 1807|  5.52k|            return merger.finish();
 1808|  5.52k|        }
 1809|  5.52k|        IMMER_CATCH (...) {
 1810|      0|            merger.abort();
 1811|      0|            IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1812|      0|        }
 1813|  5.52k|    }
_ZN5immer6detail4rbts20concat_right_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE11visit_innerIRNS1_11relaxed_posISC_EESH_RNS1_8leaf_posISC_EEEENS1_17concat_center_posISC_EEOT_OT0_OT1_:
 1912|   184k|    {
 1913|   184k|        return concat_inners<Node>(lpos, tpos, rpos);
 1914|   184k|    }
_ZN5immer6detail4rbts20concat_right_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE11visit_innerIRNS1_15regular_sub_posISC_EERNS1_11relaxed_posISC_EERNS1_8leaf_posISC_EEEENS1_17concat_center_posISC_EEOT_OT0_OT1_:
 1912|    212|    {
 1913|    212|        return concat_inners<Node>(lpos, tpos, rpos);
 1914|    212|    }
_ZN5immer6detail4rbts13concat_innersINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEERNS1_11relaxed_posISC_EERNS1_8leaf_posISC_EERNS1_15regular_sub_posISC_EEEENS1_17concat_center_posIT_EEOT0_OT1_OT2_:
 1867|  5.34k|{
 1868|  5.34k|    auto lshift = lpos.shift();
 1869|  5.34k|    auto rshift = rpos.shift();
 1870|  5.34k|    if (lshift > rshift) {
  ------------------
  |  Branch (1870:9): [True: 2.33k, False: 3.00k]
  ------------------
 1871|  2.33k|        auto cpos = lpos.last_sub(concat_left_visitor<Node>{}, tpos, rpos);
 1872|  2.33k|        return concat_rebalance<Node>(lpos, cpos, null_sub_pos{});
 1873|  3.00k|    } else if (lshift < rshift) {
  ------------------
  |  Branch (1873:16): [True: 573, False: 2.43k]
  ------------------
 1874|    573|        auto cpos = rpos.first_sub(concat_right_visitor<Node>{}, lpos, tpos);
 1875|    573|        return concat_rebalance<Node>(null_sub_pos{}, cpos, rpos);
 1876|  2.43k|    } else {
 1877|  2.43k|        assert(lshift == rshift);
 1878|      0|        assert(Node::bits_leaf == 0u || lshift > 0);
 1879|      0|        auto cpos = lpos.last_sub(concat_both_visitor<Node>{}, tpos, rpos);
 1880|  2.43k|        return concat_rebalance<Node>(lpos, cpos, rpos);
 1881|  2.43k|    }
 1882|  5.34k|}
_ZN5immer6detail4rbts19concat_left_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE11visit_innerIRNS1_11relaxed_posISC_EERNS1_8leaf_posISC_EERNS1_15regular_sub_posISC_EEEENS1_17concat_center_posISC_EEOT_OT0_OT1_:
 1892|  2.01k|    {
 1893|  2.01k|        return concat_inners<Node>(lpos, tpos, rpos);
 1894|  2.01k|    }
_ZN5immer6detail4rbts20concat_right_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE11visit_innerIRNS1_8full_posISC_EERNS1_11relaxed_posISC_EERNS1_8leaf_posISC_EEEENS1_17concat_center_posISC_EEOT_OT0_OT1_:
 1912|  1.80k|    {
 1913|  1.80k|        return concat_inners<Node>(lpos, tpos, rpos);
 1914|  1.80k|    }
_ZN5immer6detail4rbts13concat_innersINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEERNS1_11relaxed_posISC_EERNS1_8leaf_posISC_EERNS1_8full_posISC_EEEENS1_17concat_center_posIT_EEOT0_OT1_OT2_:
 1867|  1.80k|{
 1868|  1.80k|    auto lshift = lpos.shift();
 1869|  1.80k|    auto rshift = rpos.shift();
 1870|  1.80k|    if (lshift > rshift) {
  ------------------
  |  Branch (1870:9): [True: 0, False: 1.80k]
  ------------------
 1871|      0|        auto cpos = lpos.last_sub(concat_left_visitor<Node>{}, tpos, rpos);
 1872|      0|        return concat_rebalance<Node>(lpos, cpos, null_sub_pos{});
 1873|  1.80k|    } else if (lshift < rshift) {
  ------------------
  |  Branch (1873:16): [True: 311, False: 1.49k]
  ------------------
 1874|    311|        auto cpos = rpos.first_sub(concat_right_visitor<Node>{}, lpos, tpos);
 1875|    311|        return concat_rebalance<Node>(null_sub_pos{}, cpos, rpos);
 1876|  1.49k|    } else {
 1877|  1.49k|        assert(lshift == rshift);
 1878|      0|        assert(Node::bits_leaf == 0u || lshift > 0);
 1879|      0|        auto cpos = lpos.last_sub(concat_both_visitor<Node>{}, tpos, rpos);
 1880|  1.49k|        return concat_rebalance<Node>(lpos, cpos, rpos);
 1881|  1.49k|    }
 1882|  1.80k|}
_ZN5immer6detail4rbts19concat_both_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE11visit_innerIRNS1_11relaxed_posISC_EERNS1_8leaf_posISC_EERNS1_8full_posISC_EEEENS1_17concat_center_posISC_EEOT_OT0_OT1_:
 1932|    329|    {
 1933|    329|        return rpos.first_sub(concat_right_visitor<Node>{}, lpos, tpos);
 1934|    329|    }
_ZN5immer6detail4rbts16concat_rebalanceINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEERNS1_11relaxed_posISC_EERNS1_17concat_center_posISC_EERNS1_8full_posISC_EEEENSG_IT_EEOT0_OT1_OT2_:
 1818|  1.49k|{
 1819|  1.49k|    auto plan = concat_rebalance_plan<Node::bits, Node::bits_leaf>{};
 1820|  1.49k|    plan.fill(lpos, cpos, rpos);
 1821|  1.49k|    plan.shuffle(cpos.shift());
 1822|  1.49k|    IMMER_TRY {
  ------------------
  |  |   41|  1.49k|#define IMMER_TRY try
  ------------------
 1823|  1.49k|        return plan.merge(lpos, cpos, rpos);
 1824|  1.49k|    }
 1825|  1.49k|    IMMER_CATCH (...) {
 1826|      0|        cpos.each_sub(dec_visitor{});
 1827|      0|        IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1828|      0|    }
 1829|  1.49k|}
_ZN5immer6detail4rbts21concat_rebalance_planILj2ELj2EE4fillIRNS1_11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_17concat_center_posISF_EERNS1_8full_posISF_EEEEvOT_OT0_OT1_:
 1747|  3.66k|    {
 1748|  3.66k|        assert(n == 0u);
 1749|      0|        assert(total == 0u);
 1750|      0|        using visitor_t = concat_rebalance_plan_fill_visitor;
 1751|  3.66k|        lpos.each_left_sub(visitor_t{}, *this);
 1752|  3.66k|        cpos.each_sub(visitor_t{}, *this);
 1753|  3.66k|        rpos.each_right_sub(visitor_t{}, *this);
 1754|  3.66k|    }
_ZN5immer6detail4rbts21concat_rebalance_planILj2ELj2EE5mergeIRNS1_11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_17concat_center_posISF_EERNS1_8full_posISF_EEEENSI_INSt3__15decayIT0_E4type6node_tEEEOT_OSQ_OT1_:
 1797|  1.49k|    {
 1798|  1.49k|        using node_t    = node_type<CPos>;
 1799|  1.49k|        using merger_t  = concat_merger<node_t>;
 1800|  1.49k|        using visitor_t = concat_merger_visitor;
 1801|  1.49k|        auto merger     = merger_t{cpos.shift(), counts, n};
 1802|  1.49k|        IMMER_TRY {
  ------------------
  |  |   41|  1.49k|#define IMMER_TRY try
  ------------------
 1803|  1.49k|            lpos.each_left_sub(visitor_t{}, merger);
 1804|  1.49k|            cpos.each_sub(visitor_t{}, merger);
 1805|  1.49k|            rpos.each_right_sub(visitor_t{}, merger);
 1806|  1.49k|            cpos.each_sub(dec_visitor{});
 1807|  1.49k|            return merger.finish();
 1808|  1.49k|        }
 1809|  1.49k|        IMMER_CATCH (...) {
 1810|      0|            merger.abort();
 1811|      0|            IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1812|      0|        }
 1813|  1.49k|    }
_ZN5immer6detail4rbts19concat_both_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE11visit_innerIRNS1_11relaxed_posISC_EERNS1_8leaf_posISC_EERNS1_15regular_sub_posISC_EEEENS1_17concat_center_posISC_EEOT_OT0_OT1_:
 1932|    589|    {
 1933|    589|        return rpos.first_sub(concat_right_visitor<Node>{}, lpos, tpos);
 1934|    589|    }
_ZN5immer6detail4rbts16concat_rebalanceINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEERNS1_11relaxed_posISC_EERNS1_17concat_center_posISC_EERNS1_15regular_sub_posISC_EEEENSG_IT_EEOT0_OT1_OT2_:
 1818|  2.43k|{
 1819|  2.43k|    auto plan = concat_rebalance_plan<Node::bits, Node::bits_leaf>{};
 1820|  2.43k|    plan.fill(lpos, cpos, rpos);
 1821|  2.43k|    plan.shuffle(cpos.shift());
 1822|  2.43k|    IMMER_TRY {
  ------------------
  |  |   41|  2.43k|#define IMMER_TRY try
  ------------------
 1823|  2.43k|        return plan.merge(lpos, cpos, rpos);
 1824|  2.43k|    }
 1825|  2.43k|    IMMER_CATCH (...) {
 1826|      0|        cpos.each_sub(dec_visitor{});
 1827|      0|        IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1828|      0|    }
 1829|  2.43k|}
_ZN5immer6detail4rbts21concat_rebalance_planILj2ELj2EE4fillIRNS1_11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_17concat_center_posISF_EERNS1_15regular_sub_posISF_EEEEvOT_OT0_OT1_:
 1747|  9.05k|    {
 1748|  9.05k|        assert(n == 0u);
 1749|      0|        assert(total == 0u);
 1750|      0|        using visitor_t = concat_rebalance_plan_fill_visitor;
 1751|  9.05k|        lpos.each_left_sub(visitor_t{}, *this);
 1752|  9.05k|        cpos.each_sub(visitor_t{}, *this);
 1753|  9.05k|        rpos.each_right_sub(visitor_t{}, *this);
 1754|  9.05k|    }
_ZN5immer6detail4rbts21concat_rebalance_planILj2ELj2EE5mergeIRNS1_11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_17concat_center_posISF_EERNS1_15regular_sub_posISF_EEEENSI_INSt3__15decayIT0_E4type6node_tEEEOT_OSQ_OT1_:
 1797|  2.43k|    {
 1798|  2.43k|        using node_t    = node_type<CPos>;
 1799|  2.43k|        using merger_t  = concat_merger<node_t>;
 1800|  2.43k|        using visitor_t = concat_merger_visitor;
 1801|  2.43k|        auto merger     = merger_t{cpos.shift(), counts, n};
 1802|  2.43k|        IMMER_TRY {
  ------------------
  |  |   41|  2.43k|#define IMMER_TRY try
  ------------------
 1803|  2.43k|            lpos.each_left_sub(visitor_t{}, merger);
 1804|  2.43k|            cpos.each_sub(visitor_t{}, merger);
 1805|  2.43k|            rpos.each_right_sub(visitor_t{}, merger);
 1806|  2.43k|            cpos.each_sub(dec_visitor{});
 1807|  2.43k|            return merger.finish();
 1808|  2.43k|        }
 1809|  2.43k|        IMMER_CATCH (...) {
 1810|      0|            merger.abort();
 1811|      0|            IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1812|      0|        }
 1813|  2.43k|    }
_ZN5immer6detail4rbts19concat_both_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE11visit_innerIRNS1_11relaxed_posISC_EERNS1_8leaf_posISC_EESH_EENS1_17concat_center_posISC_EEOT_OT0_OT1_:
 1932|   182k|    {
 1933|   182k|        return rpos.first_sub(concat_right_visitor<Node>{}, lpos, tpos);
 1934|   182k|    }
_ZN5immer6detail4rbts16concat_rebalanceINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEERNS1_11relaxed_posISC_EERNS1_17concat_center_posISC_EESF_EENSG_IT_EEOT0_OT1_OT2_:
 1818|   222k|{
 1819|   222k|    auto plan = concat_rebalance_plan<Node::bits, Node::bits_leaf>{};
 1820|   222k|    plan.fill(lpos, cpos, rpos);
 1821|   222k|    plan.shuffle(cpos.shift());
 1822|   222k|    IMMER_TRY {
  ------------------
  |  |   41|   222k|#define IMMER_TRY try
  ------------------
 1823|   222k|        return plan.merge(lpos, cpos, rpos);
 1824|   222k|    }
 1825|   222k|    IMMER_CATCH (...) {
 1826|      0|        cpos.each_sub(dec_visitor{});
 1827|      0|        IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1828|      0|    }
 1829|   222k|}
_ZN5immer6detail4rbts21concat_rebalance_planILj2ELj2EE4fillIRNS1_11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_17concat_center_posISF_EESH_EEvOT_OT0_OT1_:
 1747|   454k|    {
 1748|   454k|        assert(n == 0u);
 1749|      0|        assert(total == 0u);
 1750|      0|        using visitor_t = concat_rebalance_plan_fill_visitor;
 1751|   454k|        lpos.each_left_sub(visitor_t{}, *this);
 1752|   454k|        cpos.each_sub(visitor_t{}, *this);
 1753|   454k|        rpos.each_right_sub(visitor_t{}, *this);
 1754|   454k|    }
_ZN5immer6detail4rbts21concat_rebalance_planILj2ELj2EE5mergeIRNS1_11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_17concat_center_posISF_EESH_EENSI_INSt3__15decayIT0_E4type6node_tEEEOT_OSN_OT1_:
 1797|   222k|    {
 1798|   222k|        using node_t    = node_type<CPos>;
 1799|   222k|        using merger_t  = concat_merger<node_t>;
 1800|   222k|        using visitor_t = concat_merger_visitor;
 1801|   222k|        auto merger     = merger_t{cpos.shift(), counts, n};
 1802|   222k|        IMMER_TRY {
  ------------------
  |  |   41|   222k|#define IMMER_TRY try
  ------------------
 1803|   222k|            lpos.each_left_sub(visitor_t{}, merger);
 1804|   222k|            cpos.each_sub(visitor_t{}, merger);
 1805|   222k|            rpos.each_right_sub(visitor_t{}, merger);
 1806|   222k|            cpos.each_sub(dec_visitor{});
 1807|   222k|            return merger.finish();
 1808|   222k|        }
 1809|   222k|        IMMER_CATCH (...) {
 1810|      0|            merger.abort();
 1811|      0|            IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1812|      0|        }
 1813|   222k|    }
_ZN5immer6detail4rbts26concat_trees_right_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10visit_nodeIRNS1_15regular_sub_posISC_EERNS1_11relaxed_posISC_EERNS1_8leaf_posISC_EEEENS1_17concat_center_posISC_EEOT_OT0_OT1_:
 1953|  3.11k|    {
 1954|  3.11k|        return concat_inners<Node>(lpos, tpos, rpos);
 1955|  3.11k|    }
_ZN5immer6detail4rbts25concat_trees_left_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10visit_nodeIRNS1_15regular_sub_posISC_EENS1_8leaf_posISC_EEJRPSC_RjRmEEENS1_17concat_center_posISC_EEOT_OT0_DpOT1_:
 1966|  5.32k|    {
 1967|  5.32k|        return visit_maybe_relaxed_sub(
 1968|  5.32k|            args..., concat_trees_right_visitor<Node>{}, lpos, tpos);
 1969|  5.32k|    }
_ZN5immer6detail4rbts26concat_trees_right_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10visit_nodeIRNS1_11relaxed_posISC_EERNS1_15regular_sub_posISC_EERNS1_8leaf_posISC_EEEENS1_17concat_center_posISC_EEOT_OT0_OT1_:
 1953|    647|    {
 1954|    647|        return concat_inners<Node>(lpos, tpos, rpos);
 1955|    647|    }
_ZN5immer6detail4rbts26concat_trees_right_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10visit_nodeIRNS1_15regular_sub_posISC_EESH_RNS1_8leaf_posISC_EEEENS1_17concat_center_posISC_EEOT_OT0_OT1_:
 1953|  4.67k|    {
 1954|  4.67k|        return concat_inners<Node>(lpos, tpos, rpos);
 1955|  4.67k|    }
_ZN5immer6detail4rbts21push_tail_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb1EE13visit_relaxedIRNS1_11relaxed_posISC_EEEEPSC_OT_NSA_5applyIS7_E4type4editESI_j:
  679|  1.04M|    {
  680|  1.04M|        auto node     = pos.node();
  681|  1.04M|        auto level    = pos.shift();
  682|  1.04M|        auto idx      = pos.count() - 1;
  683|  1.04M|        auto children = pos.size(idx);
  684|  1.04M|        auto new_idx =
  685|  1.04M|            children == size_t{1} << level || level == BL ? idx + 1 : idx;
  ------------------
  |  Branch (685:13): [True: 4.55k, False: 1.03M]
  |  Branch (685:47): [True: 707, False: 1.03M]
  ------------------
  686|  1.04M|        auto new_child = static_cast<node_t*>(nullptr);
  687|  1.04M|        auto mutate    = Mutating && node->can_mutate(e);
  ------------------
  |  Branch (687:26): [Folded - Ignored]
  |  Branch (687:38): [True: 1.03M, False: 6.46k]
  ------------------
  688|       |
  689|  1.04M|        if (new_idx >= branches<B>)
  ------------------
  |  Branch (689:13): [True: 2.36k, False: 1.04M]
  ------------------
  690|  2.36k|            return nullptr;
  691|  1.04M|        else if (idx == new_idx) {
  ------------------
  |  Branch (691:18): [True: 1.03M, False: 2.89k]
  ------------------
  692|  1.03M|            new_child =
  693|  1.03M|                mutate ? pos.last_oh_csh(this_t{}, idx, children, e, tail, ts)
  ------------------
  |  Branch (693:17): [True: 1.03M, False: 5.57k]
  ------------------
  694|  1.03M|                       : pos.last_oh_csh(
  695|  5.57k|                             this_no_mut_t{}, idx, children, e, tail, ts);
  696|  1.03M|            if (!new_child) {
  ------------------
  |  Branch (696:17): [True: 3.38k, False: 1.03M]
  ------------------
  697|  3.38k|                if (++new_idx < branches<B>)
  ------------------
  |  Branch (697:21): [True: 1.37k, False: 2.00k]
  ------------------
  698|  1.37k|                    new_child = node_t::make_path_e(e, level - B, tail);
  699|  2.00k|                else
  700|  2.00k|                    return nullptr;
  701|  3.38k|            }
  702|  1.03M|        } else
  703|  2.89k|            new_child = node_t::make_path_e(e, level - B, tail);
  704|       |
  705|  1.04M|        if (mutate) {
  ------------------
  |  Branch (705:13): [True: 1.03M, False: 5.69k]
  ------------------
  706|  1.03M|            auto count             = new_idx + 1;
  707|  1.03M|            auto relaxed           = node->ensure_mutable_relaxed_n(e, new_idx);
  708|  1.03M|            node->inner()[new_idx] = new_child;
  709|  1.03M|            relaxed->d.sizes[new_idx] = pos.size() + ts;
  710|  1.03M|            relaxed->d.count          = count;
  711|  1.03M|            assert(relaxed->d.sizes[new_idx]);
  712|      0|            return node;
  713|  1.03M|        } else {
  714|  5.69k|            IMMER_TRY {
  ------------------
  |  |   41|  5.69k|#define IMMER_TRY try
  ------------------
  715|  5.69k|                auto count    = new_idx + 1;
  716|  5.69k|                auto new_node = node_t::copy_inner_r_e(e, pos.node(), new_idx);
  717|  5.69k|                auto relaxed  = new_node->relaxed();
  718|  5.69k|                new_node->inner()[new_idx] = new_child;
  719|  5.69k|                relaxed->d.sizes[new_idx]  = pos.size() + ts;
  720|  5.69k|                relaxed->d.count           = count;
  721|  5.69k|                assert(relaxed->d.sizes[new_idx]);
  722|  5.69k|                if (Mutating)
  ------------------
  |  Branch (722:21): [Folded - Ignored]
  ------------------
  723|  5.69k|                    pos.visit(dec_visitor{});
  724|  5.69k|                return new_node;
  725|  5.69k|            }
  726|  5.69k|            IMMER_CATCH (...) {
  727|      0|                auto shift = pos.shift();
  728|      0|                auto size  = new_idx == idx ? children + ts : ts;
  ------------------
  |  Branch (728:30): [True: 0, False: 0]
  ------------------
  729|      0|                if (shift > BL) {
  ------------------
  |  Branch (729:21): [True: 0, False: 0]
  ------------------
  730|      0|                    tail->inc();
  731|      0|                    dec_inner(new_child, shift - B, size);
  732|      0|                }
  733|      0|                IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
  734|      0|            }
  735|  5.69k|        }
  736|  1.04M|    }
_ZN5immer6detail4rbts21push_tail_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb1EE13visit_regularIRNS1_15regular_sub_posISC_EEJRjEEEPSC_OT_NSA_5applyIS7_E4type4editESJ_DpOT0_:
  740|   756k|    {
  741|   756k|        assert((pos.size() & mask<BL>) == 0);
  742|      0|        auto node    = pos.node();
  743|   756k|        auto idx     = pos.index(pos.size() - 1);
  744|   756k|        auto new_idx = pos.index(pos.size() + branches<BL> - 1);
  745|   756k|        auto mutate  = Mutating && node->can_mutate(e);
  ------------------
  |  Branch (745:24): [Folded - Ignored]
  |  Branch (745:36): [True: 755k, False: 1.06k]
  ------------------
  746|   756k|        if (mutate) {
  ------------------
  |  Branch (746:13): [True: 755k, False: 1.06k]
  ------------------
  747|   755k|            node->inner()[new_idx] =
  748|   755k|                idx == new_idx ? pos.last_oh(this_t{}, idx, e, tail)
  ------------------
  |  Branch (748:17): [True: 751k, False: 4.00k]
  ------------------
  749|       |                               /* otherwise */
  750|   755k|                               : node_t::make_path_e(e, pos.shift() - B, tail);
  751|   755k|            return node;
  752|   755k|        } else {
  753|  1.06k|            auto new_parent = node_t::make_inner_e(e);
  754|  1.06k|            IMMER_TRY {
  ------------------
  |  |   41|  1.06k|#define IMMER_TRY try
  ------------------
  755|  1.06k|                new_parent->inner()[new_idx] =
  756|  1.06k|                    idx == new_idx
  ------------------
  |  Branch (756:21): [True: 694, False: 374]
  ------------------
  757|  1.06k|                        ? pos.last_oh(this_no_mut_t{}, idx, e, tail)
  758|       |                        /* otherwise */
  759|  1.06k|                        : node_t::make_path_e(e, pos.shift() - B, tail);
  760|  1.06k|                node_t::do_copy_inner(new_parent, node, new_idx);
  761|  1.06k|                if (Mutating)
  ------------------
  |  Branch (761:21): [Folded - Ignored]
  ------------------
  762|  1.06k|                    pos.visit(dec_visitor{});
  763|  1.06k|                return new_parent;
  764|  1.06k|            }
  765|  1.06k|            IMMER_CATCH (...) {
  766|      0|                node_t::delete_inner_e(new_parent);
  767|      0|                IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
  768|      0|            }
  769|  1.06k|        }
  770|   756k|    }
_ZN5immer6detail4rbts21push_tail_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb1EE13visit_regularIRNS1_11regular_posISC_EEJEEEPSC_OT_NSA_5applyIS7_E4type4editESI_DpOT0_:
  740|  11.4M|    {
  741|  11.4M|        assert((pos.size() & mask<BL>) == 0);
  742|      0|        auto node    = pos.node();
  743|  11.4M|        auto idx     = pos.index(pos.size() - 1);
  744|  11.4M|        auto new_idx = pos.index(pos.size() + branches<BL> - 1);
  745|  11.4M|        auto mutate  = Mutating && node->can_mutate(e);
  ------------------
  |  Branch (745:24): [Folded - Ignored]
  |  Branch (745:36): [True: 11.4M, False: 389]
  ------------------
  746|  11.4M|        if (mutate) {
  ------------------
  |  Branch (746:13): [True: 11.4M, False: 389]
  ------------------
  747|  11.4M|            node->inner()[new_idx] =
  748|  11.4M|                idx == new_idx ? pos.last_oh(this_t{}, idx, e, tail)
  ------------------
  |  Branch (748:17): [True: 9.27M, False: 2.18M]
  ------------------
  749|       |                               /* otherwise */
  750|  11.4M|                               : node_t::make_path_e(e, pos.shift() - B, tail);
  751|  11.4M|            return node;
  752|  11.4M|        } else {
  753|    389|            auto new_parent = node_t::make_inner_e(e);
  754|    389|            IMMER_TRY {
  ------------------
  |  |   41|    389|#define IMMER_TRY try
  ------------------
  755|    389|                new_parent->inner()[new_idx] =
  756|    389|                    idx == new_idx
  ------------------
  |  Branch (756:21): [True: 195, False: 194]
  ------------------
  757|    389|                        ? pos.last_oh(this_no_mut_t{}, idx, e, tail)
  758|       |                        /* otherwise */
  759|    389|                        : node_t::make_path_e(e, pos.shift() - B, tail);
  760|    389|                node_t::do_copy_inner(new_parent, node, new_idx);
  761|    389|                if (Mutating)
  ------------------
  |  Branch (761:21): [Folded - Ignored]
  ------------------
  762|    389|                    pos.visit(dec_visitor{});
  763|    389|                return new_parent;
  764|    389|            }
  765|    389|            IMMER_CATCH (...) {
  766|      0|                node_t::delete_inner_e(new_parent);
  767|      0|                IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
  768|      0|            }
  769|    389|        }
  770|  11.4M|    }
_ZN5immer6detail4rbts21push_tail_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb0EE13visit_regularIRNS1_11regular_posISC_EEJEEEPSC_OT_NSA_5applyIS7_E4type4editESI_DpOT0_:
  740|  14.1k|    {
  741|  14.1k|        assert((pos.size() & mask<BL>) == 0);
  742|      0|        auto node    = pos.node();
  743|  14.1k|        auto idx     = pos.index(pos.size() - 1);
  744|  14.1k|        auto new_idx = pos.index(pos.size() + branches<BL> - 1);
  745|  14.1k|        auto mutate  = Mutating && node->can_mutate(e);
  ------------------
  |  Branch (745:24): [Folded - Ignored]
  |  Branch (745:36): [True: 0, False: 0]
  ------------------
  746|  14.1k|        if (mutate) {
  ------------------
  |  Branch (746:13): [True: 0, False: 14.1k]
  ------------------
  747|      0|            node->inner()[new_idx] =
  748|      0|                idx == new_idx ? pos.last_oh(this_t{}, idx, e, tail)
  ------------------
  |  Branch (748:17): [True: 0, False: 0]
  ------------------
  749|       |                               /* otherwise */
  750|      0|                               : node_t::make_path_e(e, pos.shift() - B, tail);
  751|      0|            return node;
  752|  14.1k|        } else {
  753|  14.1k|            auto new_parent = node_t::make_inner_e(e);
  754|  14.1k|            IMMER_TRY {
  ------------------
  |  |   41|  14.1k|#define IMMER_TRY try
  ------------------
  755|  14.1k|                new_parent->inner()[new_idx] =
  756|  14.1k|                    idx == new_idx
  ------------------
  |  Branch (756:21): [True: 9.39k, False: 4.72k]
  ------------------
  757|  14.1k|                        ? pos.last_oh(this_no_mut_t{}, idx, e, tail)
  758|       |                        /* otherwise */
  759|  14.1k|                        : node_t::make_path_e(e, pos.shift() - B, tail);
  760|  14.1k|                node_t::do_copy_inner(new_parent, node, new_idx);
  761|  14.1k|                if (Mutating)
  ------------------
  |  Branch (761:21): [Folded - Ignored]
  ------------------
  762|      0|                    pos.visit(dec_visitor{});
  763|  14.1k|                return new_parent;
  764|  14.1k|            }
  765|  14.1k|            IMMER_CATCH (...) {
  766|      0|                node_t::delete_inner_e(new_parent);
  767|      0|                IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
  768|      0|            }
  769|  14.1k|        }
  770|  14.1k|    }
_ZN5immer6detail4rbts21push_tail_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb0EE13visit_relaxedIRNS1_11relaxed_posISC_EEEEPSC_OT_NSA_5applyIS7_E4type4editESI_j:
  679|  17.9k|    {
  680|  17.9k|        auto node     = pos.node();
  681|  17.9k|        auto level    = pos.shift();
  682|  17.9k|        auto idx      = pos.count() - 1;
  683|  17.9k|        auto children = pos.size(idx);
  684|  17.9k|        auto new_idx =
  685|  17.9k|            children == size_t{1} << level || level == BL ? idx + 1 : idx;
  ------------------
  |  Branch (685:13): [True: 2.48k, False: 15.5k]
  |  Branch (685:47): [True: 213, False: 15.2k]
  ------------------
  686|  17.9k|        auto new_child = static_cast<node_t*>(nullptr);
  687|  17.9k|        auto mutate    = Mutating && node->can_mutate(e);
  ------------------
  |  Branch (687:26): [Folded - Ignored]
  |  Branch (687:38): [True: 0, False: 0]
  ------------------
  688|       |
  689|  17.9k|        if (new_idx >= branches<B>)
  ------------------
  |  Branch (689:13): [True: 905, False: 17.0k]
  ------------------
  690|    905|            return nullptr;
  691|  17.0k|        else if (idx == new_idx) {
  ------------------
  |  Branch (691:18): [True: 15.2k, False: 1.79k]
  ------------------
  692|  15.2k|            new_child =
  693|  15.2k|                mutate ? pos.last_oh_csh(this_t{}, idx, children, e, tail, ts)
  ------------------
  |  Branch (693:17): [True: 0, False: 15.2k]
  ------------------
  694|  15.2k|                       : pos.last_oh_csh(
  695|  15.2k|                             this_no_mut_t{}, idx, children, e, tail, ts);
  696|  15.2k|            if (!new_child) {
  ------------------
  |  Branch (696:17): [True: 1.71k, False: 13.5k]
  ------------------
  697|  1.71k|                if (++new_idx < branches<B>)
  ------------------
  |  Branch (697:21): [True: 296, False: 1.42k]
  ------------------
  698|    296|                    new_child = node_t::make_path_e(e, level - B, tail);
  699|  1.42k|                else
  700|  1.42k|                    return nullptr;
  701|  1.71k|            }
  702|  15.2k|        } else
  703|  1.79k|            new_child = node_t::make_path_e(e, level - B, tail);
  704|       |
  705|  15.6k|        if (mutate) {
  ------------------
  |  Branch (705:13): [True: 0, False: 15.6k]
  ------------------
  706|      0|            auto count             = new_idx + 1;
  707|      0|            auto relaxed           = node->ensure_mutable_relaxed_n(e, new_idx);
  708|      0|            node->inner()[new_idx] = new_child;
  709|      0|            relaxed->d.sizes[new_idx] = pos.size() + ts;
  710|      0|            relaxed->d.count          = count;
  711|      0|            assert(relaxed->d.sizes[new_idx]);
  712|      0|            return node;
  713|  15.6k|        } else {
  714|  15.6k|            IMMER_TRY {
  ------------------
  |  |   41|  15.6k|#define IMMER_TRY try
  ------------------
  715|  15.6k|                auto count    = new_idx + 1;
  716|  15.6k|                auto new_node = node_t::copy_inner_r_e(e, pos.node(), new_idx);
  717|  15.6k|                auto relaxed  = new_node->relaxed();
  718|  15.6k|                new_node->inner()[new_idx] = new_child;
  719|  15.6k|                relaxed->d.sizes[new_idx]  = pos.size() + ts;
  720|  15.6k|                relaxed->d.count           = count;
  721|  15.6k|                assert(relaxed->d.sizes[new_idx]);
  722|  15.6k|                if (Mutating)
  ------------------
  |  Branch (722:21): [Folded - Ignored]
  ------------------
  723|      0|                    pos.visit(dec_visitor{});
  724|  15.6k|                return new_node;
  725|  15.6k|            }
  726|  15.6k|            IMMER_CATCH (...) {
  727|      0|                auto shift = pos.shift();
  728|      0|                auto size  = new_idx == idx ? children + ts : ts;
  ------------------
  |  Branch (728:30): [True: 0, False: 0]
  ------------------
  729|      0|                if (shift > BL) {
  ------------------
  |  Branch (729:21): [True: 0, False: 0]
  ------------------
  730|      0|                    tail->inc();
  731|      0|                    dec_inner(new_child, shift - B, size);
  732|      0|                }
  733|      0|                IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
  734|      0|            }
  735|  15.6k|        }
  736|  15.6k|    }
_ZN5immer6detail4rbts21push_tail_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb0EE13visit_regularIRNS1_15regular_sub_posISC_EEJRjEEEPSC_OT_NSA_5applyIS7_E4type4editESJ_DpOT0_:
  740|  2.88k|    {
  741|  2.88k|        assert((pos.size() & mask<BL>) == 0);
  742|      0|        auto node    = pos.node();
  743|  2.88k|        auto idx     = pos.index(pos.size() - 1);
  744|  2.88k|        auto new_idx = pos.index(pos.size() + branches<BL> - 1);
  745|  2.88k|        auto mutate  = Mutating && node->can_mutate(e);
  ------------------
  |  Branch (745:24): [Folded - Ignored]
  |  Branch (745:36): [True: 0, False: 0]
  ------------------
  746|  2.88k|        if (mutate) {
  ------------------
  |  Branch (746:13): [True: 0, False: 2.88k]
  ------------------
  747|      0|            node->inner()[new_idx] =
  748|      0|                idx == new_idx ? pos.last_oh(this_t{}, idx, e, tail)
  ------------------
  |  Branch (748:17): [True: 0, False: 0]
  ------------------
  749|       |                               /* otherwise */
  750|      0|                               : node_t::make_path_e(e, pos.shift() - B, tail);
  751|      0|            return node;
  752|  2.88k|        } else {
  753|  2.88k|            auto new_parent = node_t::make_inner_e(e);
  754|  2.88k|            IMMER_TRY {
  ------------------
  |  |   41|  2.88k|#define IMMER_TRY try
  ------------------
  755|  2.88k|                new_parent->inner()[new_idx] =
  756|  2.88k|                    idx == new_idx
  ------------------
  |  Branch (756:21): [True: 1.91k, False: 972]
  ------------------
  757|  2.88k|                        ? pos.last_oh(this_no_mut_t{}, idx, e, tail)
  758|       |                        /* otherwise */
  759|  2.88k|                        : node_t::make_path_e(e, pos.shift() - B, tail);
  760|  2.88k|                node_t::do_copy_inner(new_parent, node, new_idx);
  761|  2.88k|                if (Mutating)
  ------------------
  |  Branch (761:21): [Folded - Ignored]
  ------------------
  762|      0|                    pos.visit(dec_visitor{});
  763|  2.88k|                return new_parent;
  764|  2.88k|            }
  765|  2.88k|            IMMER_CATCH (...) {
  766|      0|                node_t::delete_inner_e(new_parent);
  767|      0|                IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
  768|      0|            }
  769|  2.88k|        }
  770|  2.88k|    }
_ZN5immer6detail4rbts21push_tail_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb1EE13visit_regularIRNS1_15regular_sub_posISC_EEJEEEPSC_OT_NSA_5applyIS7_E4type4editESI_DpOT0_:
  740|  1.45M|    {
  741|  1.45M|        assert((pos.size() & mask<BL>) == 0);
  742|      0|        auto node    = pos.node();
  743|  1.45M|        auto idx     = pos.index(pos.size() - 1);
  744|  1.45M|        auto new_idx = pos.index(pos.size() + branches<BL> - 1);
  745|  1.45M|        auto mutate  = Mutating && node->can_mutate(e);
  ------------------
  |  Branch (745:24): [Folded - Ignored]
  |  Branch (745:36): [True: 1.44M, False: 4.17k]
  ------------------
  746|  1.45M|        if (mutate) {
  ------------------
  |  Branch (746:13): [True: 1.44M, False: 4.17k]
  ------------------
  747|  1.44M|            node->inner()[new_idx] =
  748|  1.44M|                idx == new_idx ? pos.last_oh(this_t{}, idx, e, tail)
  ------------------
  |  Branch (748:17): [True: 1.43M, False: 13.1k]
  ------------------
  749|       |                               /* otherwise */
  750|  1.44M|                               : node_t::make_path_e(e, pos.shift() - B, tail);
  751|  1.44M|            return node;
  752|  1.44M|        } else {
  753|  4.17k|            auto new_parent = node_t::make_inner_e(e);
  754|  4.17k|            IMMER_TRY {
  ------------------
  |  |   41|  4.17k|#define IMMER_TRY try
  ------------------
  755|  4.17k|                new_parent->inner()[new_idx] =
  756|  4.17k|                    idx == new_idx
  ------------------
  |  Branch (756:21): [True: 1.92k, False: 2.24k]
  ------------------
  757|  4.17k|                        ? pos.last_oh(this_no_mut_t{}, idx, e, tail)
  758|       |                        /* otherwise */
  759|  4.17k|                        : node_t::make_path_e(e, pos.shift() - B, tail);
  760|  4.17k|                node_t::do_copy_inner(new_parent, node, new_idx);
  761|  4.17k|                if (Mutating)
  ------------------
  |  Branch (761:21): [Folded - Ignored]
  ------------------
  762|  4.17k|                    pos.visit(dec_visitor{});
  763|  4.17k|                return new_parent;
  764|  4.17k|            }
  765|  4.17k|            IMMER_CATCH (...) {
  766|      0|                node_t::delete_inner_e(new_parent);
  767|      0|                IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
  768|      0|            }
  769|  4.17k|        }
  770|  1.45M|    }
_ZN5immer6detail4rbts17dec_empty_regularINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEvPT_:
  579|  5.33k|{
  580|  5.33k|    make_empty_regular_pos(node).visit(dec_visitor());
  581|  5.33k|}
_ZN5immer6detail4rbts15get_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE13visit_relaxedIRNS1_11relaxed_posISC_EEEERiOT_mNSA_5applyIS7_E4type4editEPPSC_:
  594|  13.8k|    {
  595|  13.8k|        auto offset = pos.index(idx);
  596|  13.8k|        auto count  = pos.count();
  597|  13.8k|        auto node   = pos.node();
  598|  13.8k|        if (node->can_mutate(e)) {
  ------------------
  |  Branch (598:13): [True: 3.63k, False: 10.2k]
  ------------------
  599|  3.63k|            return pos.towards_oh(
  600|  3.63k|                this_t{}, idx, offset, e, &node->inner()[offset]);
  601|  10.2k|        } else {
  602|  10.2k|            auto new_node = node_t::copy_inner_sr_e(e, node, count);
  603|  10.2k|            IMMER_TRY {
  ------------------
  |  |   41|  10.2k|#define IMMER_TRY try
  ------------------
  604|  10.2k|                auto& res = pos.towards_oh(
  605|  10.2k|                    this_t{}, idx, offset, e, &new_node->inner()[offset]);
  606|  10.2k|                pos.visit(dec_visitor{});
  607|  10.2k|                *location = new_node;
  608|  10.2k|                return res;
  609|  10.2k|            }
  610|  10.2k|            IMMER_CATCH (...) {
  611|      0|                dec_relaxed(new_node, pos.shift());
  612|      0|                IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
  613|      0|            }
  614|  10.2k|        }
  615|  13.8k|    }
_ZN5immer6detail4rbts15get_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10visit_leafIRNS1_12leaf_sub_posISC_EEEERiOT_mNSA_5applyIS7_E4type4editEPPSC_:
  651|  2.87k|    {
  652|  2.87k|        assert(pos.node() == *location);
  653|      0|        auto node = pos.node();
  654|  2.87k|        if (node->can_mutate(e)) {
  ------------------
  |  Branch (654:13): [True: 721, False: 2.15k]
  ------------------
  655|    721|            return node->leaf()[pos.index(idx)];
  656|  2.15k|        } else {
  657|  2.15k|            auto new_node = node_t::copy_leaf_e(e, pos.node(), pos.count());
  658|  2.15k|            pos.visit(dec_visitor{});
  659|  2.15k|            *location = new_node;
  660|  2.15k|            return new_node->leaf()[pos.index(idx)];
  661|  2.15k|        }
  662|  2.87k|    }
_ZN5immer6detail4rbts15get_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE13visit_regularIRNS1_15regular_sub_posISC_EEEERiOT_mNSA_5applyIS7_E4type4editEPPSC_:
  620|  6.47k|    {
  621|  6.47k|        assert(pos.node() == *location);
  622|      0|        auto offset = pos.index(idx);
  623|  6.47k|        auto count  = pos.count();
  624|  6.47k|        auto node   = pos.node();
  625|  6.47k|        if (node->can_mutate(e)) {
  ------------------
  |  Branch (625:13): [True: 2.42k, False: 4.04k]
  ------------------
  626|  2.42k|            return pos.towards_oh_ch(
  627|  2.42k|                this_t{}, idx, offset, count, e, &node->inner()[offset]);
  628|  4.04k|        } else {
  629|  4.04k|            auto new_node = node_t::copy_inner_e(e, node, count);
  630|  4.04k|            IMMER_TRY {
  ------------------
  |  |   41|  4.04k|#define IMMER_TRY try
  ------------------
  631|  4.04k|                auto& res = pos.towards_oh_ch(this_t{},
  632|  4.04k|                                              idx,
  633|  4.04k|                                              offset,
  634|  4.04k|                                              count,
  635|  4.04k|                                              e,
  636|  4.04k|                                              &new_node->inner()[offset]);
  637|  4.04k|                pos.visit(dec_visitor{});
  638|  4.04k|                *location = new_node;
  639|  4.04k|                return res;
  640|  4.04k|            }
  641|  4.04k|            IMMER_CATCH (...) {
  642|      0|                dec_regular(new_node, pos.shift(), pos.size());
  643|      0|                IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
  644|      0|            }
  645|  4.04k|        }
  646|  6.47k|    }
_ZN5immer6detail4rbts15get_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10visit_leafIRNS1_13full_leaf_posISC_EEEERiOT_mNSA_5applyIS7_E4type4editEPPSC_:
  651|  5.04k|    {
  652|  5.04k|        assert(pos.node() == *location);
  653|      0|        auto node = pos.node();
  654|  5.04k|        if (node->can_mutate(e)) {
  ------------------
  |  Branch (654:13): [True: 1.25k, False: 3.78k]
  ------------------
  655|  1.25k|            return node->leaf()[pos.index(idx)];
  656|  3.78k|        } else {
  657|  3.78k|            auto new_node = node_t::copy_leaf_e(e, pos.node(), pos.count());
  658|  3.78k|            pos.visit(dec_visitor{});
  659|  3.78k|            *location = new_node;
  660|  3.78k|            return new_node->leaf()[pos.index(idx)];
  661|  3.78k|        }
  662|  5.04k|    }
_ZN5immer6detail4rbts15get_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE13visit_regularIRNS1_8full_posISC_EEEERiOT_mNSA_5applyIS7_E4type4editEPPSC_:
  620|  6.27k|    {
  621|  6.27k|        assert(pos.node() == *location);
  622|      0|        auto offset = pos.index(idx);
  623|  6.27k|        auto count  = pos.count();
  624|  6.27k|        auto node   = pos.node();
  625|  6.27k|        if (node->can_mutate(e)) {
  ------------------
  |  Branch (625:13): [True: 1.15k, False: 5.11k]
  ------------------
  626|  1.15k|            return pos.towards_oh_ch(
  627|  1.15k|                this_t{}, idx, offset, count, e, &node->inner()[offset]);
  628|  5.11k|        } else {
  629|  5.11k|            auto new_node = node_t::copy_inner_e(e, node, count);
  630|  5.11k|            IMMER_TRY {
  ------------------
  |  |   41|  5.11k|#define IMMER_TRY try
  ------------------
  631|  5.11k|                auto& res = pos.towards_oh_ch(this_t{},
  632|  5.11k|                                              idx,
  633|  5.11k|                                              offset,
  634|  5.11k|                                              count,
  635|  5.11k|                                              e,
  636|  5.11k|                                              &new_node->inner()[offset]);
  637|  5.11k|                pos.visit(dec_visitor{});
  638|  5.11k|                *location = new_node;
  639|  5.11k|                return res;
  640|  5.11k|            }
  641|  5.11k|            IMMER_CATCH (...) {
  642|      0|                dec_regular(new_node, pos.shift(), pos.size());
  643|      0|                IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
  644|      0|            }
  645|  5.11k|        }
  646|  6.27k|    }
_ZN5immer6detail4rbts15get_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10visit_leafIRNS1_8leaf_posISC_EEEERiOT_mNSA_5applyIS7_E4type4editEPPSC_:
  651|  1.43k|    {
  652|  1.43k|        assert(pos.node() == *location);
  653|      0|        auto node = pos.node();
  654|  1.43k|        if (node->can_mutate(e)) {
  ------------------
  |  Branch (654:13): [True: 890, False: 540]
  ------------------
  655|    890|            return node->leaf()[pos.index(idx)];
  656|    890|        } else {
  657|    540|            auto new_node = node_t::copy_leaf_e(e, pos.node(), pos.count());
  658|    540|            pos.visit(dec_visitor{});
  659|    540|            *location = new_node;
  660|    540|            return new_node->leaf()[pos.index(idx)];
  661|    540|        }
  662|  1.43k|    }
_ZN5immer6detail4rbts15get_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE13visit_regularIRNS1_11regular_posISC_EEEERiOT_mNSA_5applyIS7_E4type4editEPPSC_:
  620|  1.98k|    {
  621|  1.98k|        assert(pos.node() == *location);
  622|      0|        auto offset = pos.index(idx);
  623|  1.98k|        auto count  = pos.count();
  624|  1.98k|        auto node   = pos.node();
  625|  1.98k|        if (node->can_mutate(e)) {
  ------------------
  |  Branch (625:13): [True: 1.44k, False: 541]
  ------------------
  626|  1.44k|            return pos.towards_oh_ch(
  627|  1.44k|                this_t{}, idx, offset, count, e, &node->inner()[offset]);
  628|  1.44k|        } else {
  629|    541|            auto new_node = node_t::copy_inner_e(e, node, count);
  630|    541|            IMMER_TRY {
  ------------------
  |  |   41|    541|#define IMMER_TRY try
  ------------------
  631|    541|                auto& res = pos.towards_oh_ch(this_t{},
  632|    541|                                              idx,
  633|    541|                                              offset,
  634|    541|                                              count,
  635|    541|                                              e,
  636|    541|                                              &new_node->inner()[offset]);
  637|    541|                pos.visit(dec_visitor{});
  638|    541|                *location = new_node;
  639|    541|                return res;
  640|    541|            }
  641|    541|            IMMER_CATCH (...) {
  642|      0|                dec_regular(new_node, pos.shift(), pos.size());
  643|      0|                IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
  644|      0|            }
  645|    541|        }
  646|  1.98k|    }
_ZN5immer6detail4rbts23slice_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb1ELb1EE13visit_relaxedIRNS1_11relaxed_posISC_EEEENSt3__15tupleIJjPSC_jSK_EEEOT_mNSA_5applyIS7_E4type4editE:
  912|  39.6k|    {
  913|  39.6k|        auto idx    = pos.index(last);
  914|  39.6k|        auto node   = pos.node();
  915|  39.6k|        auto mutate = Mutating && node->can_mutate(e);
  ------------------
  |  Branch (915:23): [Folded - Ignored]
  |  Branch (915:35): [True: 30.8k, False: 8.76k]
  ------------------
  916|  39.6k|        if (Collapse && idx == 0) {
  ------------------
  |  Branch (916:13): [Folded - Ignored]
  |  Branch (916:25): [True: 28.2k, False: 11.3k]
  ------------------
  917|  28.2k|            auto res = mutate ? pos.towards_oh(this_t{}, last, idx, e)
  ------------------
  |  Branch (917:24): [True: 22.0k, False: 6.23k]
  ------------------
  918|  28.2k|                              : pos.towards_oh(no_mut_t{}, last, idx, e);
  919|  28.2k|            if (Mutating)
  ------------------
  |  Branch (919:17): [Folded - Ignored]
  ------------------
  920|  28.2k|                pos.visit(dec_right_visitor{}, count_t{1});
  921|  28.2k|            return res;
  922|  28.2k|        } else {
  923|  11.3k|            using std::get;
  924|  11.3k|            auto subs =
  925|  11.3k|                mutate ? pos.towards_oh(no_collapse_t{}, last, idx, e)
  ------------------
  |  Branch (925:17): [True: 8.85k, False: 2.52k]
  ------------------
  926|  11.3k|                       : pos.towards_oh(no_collapse_no_mut_t{}, last, idx, e);
  927|  11.3k|            auto next = get<1>(subs);
  928|  11.3k|            auto ts   = get<2>(subs);
  929|  11.3k|            auto tail = get<3>(subs);
  930|  11.3k|            IMMER_TRY {
  ------------------
  |  |   41|  11.3k|#define IMMER_TRY try
  ------------------
  931|  11.3k|                if (next) {
  ------------------
  |  Branch (931:21): [True: 7.90k, False: 3.47k]
  ------------------
  932|  7.90k|                    if (mutate) {
  ------------------
  |  Branch (932:25): [True: 6.18k, False: 1.72k]
  ------------------
  933|  6.18k|                        auto nodr = node->ensure_mutable_relaxed_n(e, idx);
  934|  6.18k|                        pos.each_right(dec_visitor{}, idx + 1);
  935|  6.18k|                        node->inner()[idx] = next;
  936|  6.18k|                        nodr->d.sizes[idx] = last + 1 - ts;
  937|  6.18k|                        nodr->d.count      = idx + 1;
  938|  6.18k|                        assert(nodr->d.sizes[idx]);
  939|      0|                        return std::make_tuple(pos.shift(), node, ts, tail);
  940|  6.18k|                    } else {
  941|  1.72k|                        auto newn = node_t::copy_inner_r_e(e, node, idx);
  942|  1.72k|                        auto newr = newn->relaxed();
  943|  1.72k|                        newn->inner()[idx] = next;
  944|  1.72k|                        newr->d.sizes[idx] = last + 1 - ts;
  945|  1.72k|                        newr->d.count      = idx + 1;
  946|  1.72k|                        assert(newr->d.sizes[idx]);
  947|  1.72k|                        if (Mutating)
  ------------------
  |  Branch (947:29): [Folded - Ignored]
  ------------------
  948|  1.72k|                            pos.visit(dec_visitor{});
  949|  1.72k|                        return std::make_tuple(pos.shift(), newn, ts, tail);
  950|  1.72k|                    }
  951|  7.90k|                } else if (idx == 0) {
  ------------------
  |  Branch (951:28): [True: 0, False: 3.47k]
  ------------------
  952|      0|                    if (Mutating)
  ------------------
  |  Branch (952:25): [Folded - Ignored]
  ------------------
  953|      0|                        pos.visit(dec_right_visitor{}, count_t{1});
  954|      0|                    return std::make_tuple(pos.shift(), nullptr, ts, tail);
  955|  3.47k|                } else if (Collapse && idx == 1 && pos.shift() > BL) {
  ------------------
  |  Branch (955:28): [Folded - Ignored]
  |  Branch (955:40): [True: 2.74k, False: 733]
  |  Branch (955:52): [True: 1.87k, False: 871]
  ------------------
  956|  1.87k|                    auto newn = pos.node()->inner()[0];
  957|  1.87k|                    if (!mutate)
  ------------------
  |  Branch (957:25): [True: 451, False: 1.42k]
  ------------------
  958|    451|                        newn->inc();
  959|  1.87k|                    if (Mutating)
  ------------------
  |  Branch (959:25): [Folded - Ignored]
  ------------------
  960|  1.87k|                        pos.visit(dec_right_visitor{}, count_t{2});
  961|  1.87k|                    return std::make_tuple(pos.shift() - B, newn, ts, tail);
  962|  1.87k|                } else {
  963|  1.60k|                    if (mutate) {
  ------------------
  |  Branch (963:25): [True: 1.25k, False: 352]
  ------------------
  964|  1.25k|                        pos.each_right(dec_visitor{}, idx + 1);
  965|  1.25k|                        node->ensure_mutable_relaxed_n(e, idx)->d.count = idx;
  966|  1.25k|                        return std::make_tuple(pos.shift(), node, ts, tail);
  967|  1.25k|                    } else {
  968|    352|                        auto newn = node_t::copy_inner_r_e(e, node, idx);
  969|    352|                        if (Mutating)
  ------------------
  |  Branch (969:29): [Folded - Ignored]
  ------------------
  970|    352|                            pos.visit(dec_visitor{});
  971|    352|                        return std::make_tuple(pos.shift(), newn, ts, tail);
  972|    352|                    }
  973|  1.60k|                }
  974|  11.3k|            }
  975|  11.3k|            IMMER_CATCH (...) {
  976|      0|                assert(!mutate);
  977|      0|                assert(!next || pos.shift() > BL);
  978|      0|                if (next)
  ------------------
  |  Branch (978:21): [True: 0, False: 0]
  ------------------
  979|      0|                    dec_inner(next,
  980|      0|                              pos.shift() - B,
  981|      0|                              last + 1 - ts - pos.size_before(idx));
  982|      0|                dec_leaf(tail, ts);
  983|      0|                IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
  984|      0|            }
  985|  11.3k|        }
  986|  39.6k|    }
_ZN5immer6detail4rbts23slice_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb1ELb1EE10visit_leafIRNS1_12leaf_sub_posISC_EEEENSt3__15tupleIJjPSC_jSK_EEEOT_mNSA_5applyIS7_E4type4editE:
 1058|  2.51k|    {
 1059|  2.51k|        auto old_tail_size = pos.count();
 1060|  2.51k|        auto new_tail_size = pos.index(last) + 1;
 1061|  2.51k|        auto node          = pos.node();
 1062|  2.51k|        auto mutate        = Mutating && node->can_mutate(e);
  ------------------
  |  Branch (1062:30): [Folded - Ignored]
  |  Branch (1062:42): [True: 1.82k, False: 691]
  ------------------
 1063|  2.51k|        if (new_tail_size == old_tail_size) {
  ------------------
  |  Branch (1063:13): [True: 2.00k, False: 508]
  ------------------
 1064|  2.00k|            if (!Mutating)
  ------------------
  |  Branch (1064:17): [Folded - Ignored]
  ------------------
 1065|      0|                node->inc();
 1066|  2.00k|            return std::make_tuple(0, nullptr, new_tail_size, node);
 1067|  2.00k|        } else if (mutate) {
  ------------------
  |  Branch (1067:20): [True: 238, False: 270]
  ------------------
 1068|    238|            detail::destroy_n(node->leaf() + new_tail_size,
 1069|    238|                              old_tail_size - new_tail_size);
 1070|    238|            return std::make_tuple(0, nullptr, new_tail_size, node);
 1071|    270|        } else {
 1072|    270|            auto new_tail = node_t::copy_leaf_e(e, node, new_tail_size);
 1073|    270|            if (Mutating)
  ------------------
  |  Branch (1073:17): [Folded - Ignored]
  ------------------
 1074|    270|                pos.visit(dec_visitor{});
 1075|    270|            return std::make_tuple(0, nullptr, new_tail_size, new_tail);
 1076|    270|        }
 1077|  2.51k|    }
_ZN5immer6detail4rbts23slice_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb1ELb0EE10visit_leafIRNS1_12leaf_sub_posISC_EEEENSt3__15tupleIJjPSC_jSK_EEEOT_mNSA_5applyIS7_E4type4editE:
 1058|  1.37k|    {
 1059|  1.37k|        auto old_tail_size = pos.count();
 1060|  1.37k|        auto new_tail_size = pos.index(last) + 1;
 1061|  1.37k|        auto node          = pos.node();
 1062|  1.37k|        auto mutate        = Mutating && node->can_mutate(e);
  ------------------
  |  Branch (1062:30): [Folded - Ignored]
  |  Branch (1062:42): [True: 0, False: 0]
  ------------------
 1063|  1.37k|        if (new_tail_size == old_tail_size) {
  ------------------
  |  Branch (1063:13): [True: 337, False: 1.03k]
  ------------------
 1064|    337|            if (!Mutating)
  ------------------
  |  Branch (1064:17): [Folded - Ignored]
  ------------------
 1065|    337|                node->inc();
 1066|    337|            return std::make_tuple(0, nullptr, new_tail_size, node);
 1067|  1.03k|        } else if (mutate) {
  ------------------
  |  Branch (1067:20): [True: 0, False: 1.03k]
  ------------------
 1068|      0|            detail::destroy_n(node->leaf() + new_tail_size,
 1069|      0|                              old_tail_size - new_tail_size);
 1070|      0|            return std::make_tuple(0, nullptr, new_tail_size, node);
 1071|  1.03k|        } else {
 1072|  1.03k|            auto new_tail = node_t::copy_leaf_e(e, node, new_tail_size);
 1073|  1.03k|            if (Mutating)
  ------------------
  |  Branch (1073:17): [Folded - Ignored]
  ------------------
 1074|      0|                pos.visit(dec_visitor{});
 1075|  1.03k|            return std::make_tuple(0, nullptr, new_tail_size, new_tail);
 1076|  1.03k|        }
 1077|  1.37k|    }
_ZN5immer6detail4rbts23slice_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb1ELb0EE13visit_relaxedIRNS1_11relaxed_posISC_EEEENSt3__15tupleIJjPSC_jSK_EEEOT_mNSA_5applyIS7_E4type4editE:
  912|  21.4k|    {
  913|  21.4k|        auto idx    = pos.index(last);
  914|  21.4k|        auto node   = pos.node();
  915|  21.4k|        auto mutate = Mutating && node->can_mutate(e);
  ------------------
  |  Branch (915:23): [Folded - Ignored]
  |  Branch (915:35): [True: 0, False: 0]
  ------------------
  916|  21.4k|        if (Collapse && idx == 0) {
  ------------------
  |  Branch (916:13): [Folded - Ignored]
  |  Branch (916:25): [True: 17.7k, False: 3.73k]
  ------------------
  917|  17.7k|            auto res = mutate ? pos.towards_oh(this_t{}, last, idx, e)
  ------------------
  |  Branch (917:24): [True: 0, False: 17.7k]
  ------------------
  918|  17.7k|                              : pos.towards_oh(no_mut_t{}, last, idx, e);
  919|  17.7k|            if (Mutating)
  ------------------
  |  Branch (919:17): [Folded - Ignored]
  ------------------
  920|      0|                pos.visit(dec_right_visitor{}, count_t{1});
  921|  17.7k|            return res;
  922|  17.7k|        } else {
  923|  3.73k|            using std::get;
  924|  3.73k|            auto subs =
  925|  3.73k|                mutate ? pos.towards_oh(no_collapse_t{}, last, idx, e)
  ------------------
  |  Branch (925:17): [True: 0, False: 3.73k]
  ------------------
  926|  3.73k|                       : pos.towards_oh(no_collapse_no_mut_t{}, last, idx, e);
  927|  3.73k|            auto next = get<1>(subs);
  928|  3.73k|            auto ts   = get<2>(subs);
  929|  3.73k|            auto tail = get<3>(subs);
  930|  3.73k|            IMMER_TRY {
  ------------------
  |  |   41|  3.73k|#define IMMER_TRY try
  ------------------
  931|  3.73k|                if (next) {
  ------------------
  |  Branch (931:21): [True: 2.18k, False: 1.54k]
  ------------------
  932|  2.18k|                    if (mutate) {
  ------------------
  |  Branch (932:25): [True: 0, False: 2.18k]
  ------------------
  933|      0|                        auto nodr = node->ensure_mutable_relaxed_n(e, idx);
  934|      0|                        pos.each_right(dec_visitor{}, idx + 1);
  935|      0|                        node->inner()[idx] = next;
  936|      0|                        nodr->d.sizes[idx] = last + 1 - ts;
  937|      0|                        nodr->d.count      = idx + 1;
  938|      0|                        assert(nodr->d.sizes[idx]);
  939|      0|                        return std::make_tuple(pos.shift(), node, ts, tail);
  940|  2.18k|                    } else {
  941|  2.18k|                        auto newn = node_t::copy_inner_r_e(e, node, idx);
  942|  2.18k|                        auto newr = newn->relaxed();
  943|  2.18k|                        newn->inner()[idx] = next;
  944|  2.18k|                        newr->d.sizes[idx] = last + 1 - ts;
  945|  2.18k|                        newr->d.count      = idx + 1;
  946|  2.18k|                        assert(newr->d.sizes[idx]);
  947|  2.18k|                        if (Mutating)
  ------------------
  |  Branch (947:29): [Folded - Ignored]
  ------------------
  948|      0|                            pos.visit(dec_visitor{});
  949|  2.18k|                        return std::make_tuple(pos.shift(), newn, ts, tail);
  950|  2.18k|                    }
  951|  2.18k|                } else if (idx == 0) {
  ------------------
  |  Branch (951:28): [True: 0, False: 1.54k]
  ------------------
  952|      0|                    if (Mutating)
  ------------------
  |  Branch (952:25): [Folded - Ignored]
  ------------------
  953|      0|                        pos.visit(dec_right_visitor{}, count_t{1});
  954|      0|                    return std::make_tuple(pos.shift(), nullptr, ts, tail);
  955|  1.54k|                } else if (Collapse && idx == 1 && pos.shift() > BL) {
  ------------------
  |  Branch (955:28): [Folded - Ignored]
  |  Branch (955:40): [True: 946, False: 603]
  |  Branch (955:52): [True: 503, False: 443]
  ------------------
  956|    503|                    auto newn = pos.node()->inner()[0];
  957|    503|                    if (!mutate)
  ------------------
  |  Branch (957:25): [True: 503, False: 0]
  ------------------
  958|    503|                        newn->inc();
  959|    503|                    if (Mutating)
  ------------------
  |  Branch (959:25): [Folded - Ignored]
  ------------------
  960|      0|                        pos.visit(dec_right_visitor{}, count_t{2});
  961|    503|                    return std::make_tuple(pos.shift() - B, newn, ts, tail);
  962|  1.04k|                } else {
  963|  1.04k|                    if (mutate) {
  ------------------
  |  Branch (963:25): [True: 0, False: 1.04k]
  ------------------
  964|      0|                        pos.each_right(dec_visitor{}, idx + 1);
  965|      0|                        node->ensure_mutable_relaxed_n(e, idx)->d.count = idx;
  966|      0|                        return std::make_tuple(pos.shift(), node, ts, tail);
  967|  1.04k|                    } else {
  968|  1.04k|                        auto newn = node_t::copy_inner_r_e(e, node, idx);
  969|  1.04k|                        if (Mutating)
  ------------------
  |  Branch (969:29): [Folded - Ignored]
  ------------------
  970|      0|                            pos.visit(dec_visitor{});
  971|  1.04k|                        return std::make_tuple(pos.shift(), newn, ts, tail);
  972|  1.04k|                    }
  973|  1.04k|                }
  974|  3.73k|            }
  975|  3.73k|            IMMER_CATCH (...) {
  976|      0|                assert(!mutate);
  977|      0|                assert(!next || pos.shift() > BL);
  978|      0|                if (next)
  ------------------
  |  Branch (978:21): [True: 0, False: 0]
  ------------------
  979|      0|                    dec_inner(next,
  980|      0|                              pos.shift() - B,
  981|      0|                              last + 1 - ts - pos.size_before(idx));
  982|      0|                dec_leaf(tail, ts);
  983|      0|                IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
  984|      0|            }
  985|  3.73k|        }
  986|  21.4k|    }
_ZN5immer6detail4rbts23slice_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb1ELb0EE13visit_regularIRNS1_15regular_sub_posISC_EEEENSt3__15tupleIJjPSC_jSK_EEEOT_mNSA_5applyIS7_E4type4editE:
  990|  1.12k|    {
  991|  1.12k|        auto idx    = pos.index(last);
  992|  1.12k|        auto node   = pos.node();
  993|  1.12k|        auto mutate = Mutating && node->can_mutate(e);
  ------------------
  |  Branch (993:23): [Folded - Ignored]
  |  Branch (993:35): [True: 0, False: 0]
  ------------------
  994|  1.12k|        if (Collapse && idx == 0) {
  ------------------
  |  Branch (994:13): [Folded - Ignored]
  |  Branch (994:25): [True: 208, False: 919]
  ------------------
  995|    208|            auto res = mutate ? pos.towards_oh(this_t{}, last, idx, e)
  ------------------
  |  Branch (995:24): [True: 0, False: 208]
  ------------------
  996|    208|                              : pos.towards_oh(no_mut_t{}, last, idx, e);
  997|    208|            if (Mutating)
  ------------------
  |  Branch (997:17): [Folded - Ignored]
  ------------------
  998|      0|                pos.visit(dec_right_visitor{}, count_t{1});
  999|    208|            return res;
 1000|    919|        } else {
 1001|    919|            using std::get;
 1002|    919|            auto subs =
 1003|    919|                mutate ? pos.towards_oh(no_collapse_t{}, last, idx, e)
  ------------------
  |  Branch (1003:17): [True: 0, False: 919]
  ------------------
 1004|    919|                       : pos.towards_oh(no_collapse_no_mut_t{}, last, idx, e);
 1005|    919|            auto next = get<1>(subs);
 1006|    919|            auto ts   = get<2>(subs);
 1007|    919|            auto tail = get<3>(subs);
 1008|    919|            IMMER_TRY {
  ------------------
  |  |   41|    919|#define IMMER_TRY try
  ------------------
 1009|    919|                if (next) {
  ------------------
  |  Branch (1009:21): [True: 196, False: 723]
  ------------------
 1010|    196|                    if (mutate) {
  ------------------
  |  Branch (1010:25): [True: 0, False: 196]
  ------------------
 1011|      0|                        node->inner()[idx] = next;
 1012|      0|                        pos.each_right(dec_visitor{}, idx + 1);
 1013|      0|                        return std::make_tuple(pos.shift(), node, ts, tail);
 1014|    196|                    } else {
 1015|    196|                        auto newn          = node_t::copy_inner_e(e, node, idx);
 1016|    196|                        newn->inner()[idx] = next;
 1017|    196|                        if (Mutating)
  ------------------
  |  Branch (1017:29): [Folded - Ignored]
  ------------------
 1018|      0|                            pos.visit(dec_visitor{});
 1019|    196|                        return std::make_tuple(pos.shift(), newn, ts, tail);
 1020|    196|                    }
 1021|    723|                } else if (idx == 0) {
  ------------------
  |  Branch (1021:28): [True: 0, False: 723]
  ------------------
 1022|      0|                    if (Mutating)
  ------------------
  |  Branch (1022:25): [Folded - Ignored]
  ------------------
 1023|      0|                        pos.visit(dec_right_visitor{}, count_t{1});
 1024|      0|                    return std::make_tuple(pos.shift(), nullptr, ts, tail);
 1025|    723|                } else if (Collapse && idx == 1 && pos.shift() > BL) {
  ------------------
  |  Branch (1025:28): [Folded - Ignored]
  |  Branch (1025:40): [True: 399, False: 324]
  |  Branch (1025:52): [True: 194, False: 205]
  ------------------
 1026|    194|                    auto newn = pos.node()->inner()[0];
 1027|    194|                    if (!mutate)
  ------------------
  |  Branch (1027:25): [True: 194, False: 0]
  ------------------
 1028|    194|                        newn->inc();
 1029|    194|                    if (Mutating)
  ------------------
  |  Branch (1029:25): [Folded - Ignored]
  ------------------
 1030|      0|                        pos.visit(dec_right_visitor{}, count_t{2});
 1031|    194|                    return std::make_tuple(pos.shift() - B, newn, ts, tail);
 1032|    529|                } else {
 1033|    529|                    if (mutate) {
  ------------------
  |  Branch (1033:25): [True: 0, False: 529]
  ------------------
 1034|      0|                        pos.each_right(dec_visitor{}, idx + 1);
 1035|      0|                        return std::make_tuple(pos.shift(), node, ts, tail);
 1036|    529|                    } else {
 1037|    529|                        auto newn = node_t::copy_inner_e(e, node, idx);
 1038|    529|                        if (Mutating)
  ------------------
  |  Branch (1038:29): [Folded - Ignored]
  ------------------
 1039|      0|                            pos.visit(dec_visitor{});
 1040|    529|                        return std::make_tuple(pos.shift(), newn, ts, tail);
 1041|    529|                    }
 1042|    529|                }
 1043|    919|            }
 1044|    919|            IMMER_CATCH (...) {
 1045|      0|                assert(!mutate);
 1046|      0|                assert(!next || pos.shift() > BL);
 1047|      0|                assert(tail);
 1048|      0|                if (next)
  ------------------
  |  Branch (1048:21): [True: 0, False: 0]
  ------------------
 1049|      0|                    dec_regular(next, pos.shift() - B, last + 1 - ts);
 1050|      0|                dec_leaf(tail, ts);
 1051|      0|                IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1052|      0|            }
 1053|    919|        }
 1054|  1.12k|    }
_ZN5immer6detail4rbts23slice_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb1ELb0EE10visit_leafIRNS1_13full_leaf_posISC_EEEENSt3__15tupleIJjPSC_jSK_EEEOT_mNSA_5applyIS7_E4type4editE:
 1058|  1.42k|    {
 1059|  1.42k|        auto old_tail_size = pos.count();
 1060|  1.42k|        auto new_tail_size = pos.index(last) + 1;
 1061|  1.42k|        auto node          = pos.node();
 1062|  1.42k|        auto mutate        = Mutating && node->can_mutate(e);
  ------------------
  |  Branch (1062:30): [Folded - Ignored]
  |  Branch (1062:42): [True: 0, False: 0]
  ------------------
 1063|  1.42k|        if (new_tail_size == old_tail_size) {
  ------------------
  |  Branch (1063:13): [True: 650, False: 778]
  ------------------
 1064|    650|            if (!Mutating)
  ------------------
  |  Branch (1064:17): [Folded - Ignored]
  ------------------
 1065|    650|                node->inc();
 1066|    650|            return std::make_tuple(0, nullptr, new_tail_size, node);
 1067|    778|        } else if (mutate) {
  ------------------
  |  Branch (1067:20): [True: 0, False: 778]
  ------------------
 1068|      0|            detail::destroy_n(node->leaf() + new_tail_size,
 1069|      0|                              old_tail_size - new_tail_size);
 1070|      0|            return std::make_tuple(0, nullptr, new_tail_size, node);
 1071|    778|        } else {
 1072|    778|            auto new_tail = node_t::copy_leaf_e(e, node, new_tail_size);
 1073|    778|            if (Mutating)
  ------------------
  |  Branch (1073:17): [Folded - Ignored]
  ------------------
 1074|      0|                pos.visit(dec_visitor{});
 1075|    778|            return std::make_tuple(0, nullptr, new_tail_size, new_tail);
 1076|    778|        }
 1077|  1.42k|    }
_ZN5immer6detail4rbts23slice_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb1ELb0EE13visit_regularIRNS1_8full_posISC_EEEENSt3__15tupleIJjPSC_jSK_EEEOT_mNSA_5applyIS7_E4type4editE:
  990|  1.92k|    {
  991|  1.92k|        auto idx    = pos.index(last);
  992|  1.92k|        auto node   = pos.node();
  993|  1.92k|        auto mutate = Mutating && node->can_mutate(e);
  ------------------
  |  Branch (993:23): [Folded - Ignored]
  |  Branch (993:35): [True: 0, False: 0]
  ------------------
  994|  1.92k|        if (Collapse && idx == 0) {
  ------------------
  |  Branch (994:13): [Folded - Ignored]
  |  Branch (994:25): [True: 923, False: 1.00k]
  ------------------
  995|    923|            auto res = mutate ? pos.towards_oh(this_t{}, last, idx, e)
  ------------------
  |  Branch (995:24): [True: 0, False: 923]
  ------------------
  996|    923|                              : pos.towards_oh(no_mut_t{}, last, idx, e);
  997|    923|            if (Mutating)
  ------------------
  |  Branch (997:17): [Folded - Ignored]
  ------------------
  998|      0|                pos.visit(dec_right_visitor{}, count_t{1});
  999|    923|            return res;
 1000|  1.00k|        } else {
 1001|  1.00k|            using std::get;
 1002|  1.00k|            auto subs =
 1003|  1.00k|                mutate ? pos.towards_oh(no_collapse_t{}, last, idx, e)
  ------------------
  |  Branch (1003:17): [True: 0, False: 1.00k]
  ------------------
 1004|  1.00k|                       : pos.towards_oh(no_collapse_no_mut_t{}, last, idx, e);
 1005|  1.00k|            auto next = get<1>(subs);
 1006|  1.00k|            auto ts   = get<2>(subs);
 1007|  1.00k|            auto tail = get<3>(subs);
 1008|  1.00k|            IMMER_TRY {
  ------------------
  |  |   41|  1.00k|#define IMMER_TRY try
  ------------------
 1009|  1.00k|                if (next) {
  ------------------
  |  Branch (1009:21): [True: 329, False: 671]
  ------------------
 1010|    329|                    if (mutate) {
  ------------------
  |  Branch (1010:25): [True: 0, False: 329]
  ------------------
 1011|      0|                        node->inner()[idx] = next;
 1012|      0|                        pos.each_right(dec_visitor{}, idx + 1);
 1013|      0|                        return std::make_tuple(pos.shift(), node, ts, tail);
 1014|    329|                    } else {
 1015|    329|                        auto newn          = node_t::copy_inner_e(e, node, idx);
 1016|    329|                        newn->inner()[idx] = next;
 1017|    329|                        if (Mutating)
  ------------------
  |  Branch (1017:29): [Folded - Ignored]
  ------------------
 1018|      0|                            pos.visit(dec_visitor{});
 1019|    329|                        return std::make_tuple(pos.shift(), newn, ts, tail);
 1020|    329|                    }
 1021|    671|                } else if (idx == 0) {
  ------------------
  |  Branch (1021:28): [True: 0, False: 671]
  ------------------
 1022|      0|                    if (Mutating)
  ------------------
  |  Branch (1022:25): [Folded - Ignored]
  ------------------
 1023|      0|                        pos.visit(dec_right_visitor{}, count_t{1});
 1024|      0|                    return std::make_tuple(pos.shift(), nullptr, ts, tail);
 1025|    671|                } else if (Collapse && idx == 1 && pos.shift() > BL) {
  ------------------
  |  Branch (1025:28): [Folded - Ignored]
  |  Branch (1025:40): [True: 447, False: 224]
  |  Branch (1025:52): [True: 197, False: 250]
  ------------------
 1026|    197|                    auto newn = pos.node()->inner()[0];
 1027|    197|                    if (!mutate)
  ------------------
  |  Branch (1027:25): [True: 197, False: 0]
  ------------------
 1028|    197|                        newn->inc();
 1029|    197|                    if (Mutating)
  ------------------
  |  Branch (1029:25): [Folded - Ignored]
  ------------------
 1030|      0|                        pos.visit(dec_right_visitor{}, count_t{2});
 1031|    197|                    return std::make_tuple(pos.shift() - B, newn, ts, tail);
 1032|    474|                } else {
 1033|    474|                    if (mutate) {
  ------------------
  |  Branch (1033:25): [True: 0, False: 474]
  ------------------
 1034|      0|                        pos.each_right(dec_visitor{}, idx + 1);
 1035|      0|                        return std::make_tuple(pos.shift(), node, ts, tail);
 1036|    474|                    } else {
 1037|    474|                        auto newn = node_t::copy_inner_e(e, node, idx);
 1038|    474|                        if (Mutating)
  ------------------
  |  Branch (1038:29): [Folded - Ignored]
  ------------------
 1039|      0|                            pos.visit(dec_visitor{});
 1040|    474|                        return std::make_tuple(pos.shift(), newn, ts, tail);
 1041|    474|                    }
 1042|    474|                }
 1043|  1.00k|            }
 1044|  1.00k|            IMMER_CATCH (...) {
 1045|      0|                assert(!mutate);
 1046|      0|                assert(!next || pos.shift() > BL);
 1047|      0|                assert(tail);
 1048|      0|                if (next)
  ------------------
  |  Branch (1048:21): [True: 0, False: 0]
  ------------------
 1049|      0|                    dec_regular(next, pos.shift() - B, last + 1 - ts);
 1050|      0|                dec_leaf(tail, ts);
 1051|      0|                IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1052|      0|            }
 1053|  1.00k|        }
 1054|  1.92k|    }
_ZN5immer6detail4rbts23slice_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb0ELb1EE10visit_leafIRNS1_13full_leaf_posISC_EEEENSt3__15tupleIJjPSC_jSK_EEEOT_mNSA_5applyIS7_E4type4editE:
 1058|  2.87k|    {
 1059|  2.87k|        auto old_tail_size = pos.count();
 1060|  2.87k|        auto new_tail_size = pos.index(last) + 1;
 1061|  2.87k|        auto node          = pos.node();
 1062|  2.87k|        auto mutate        = Mutating && node->can_mutate(e);
  ------------------
  |  Branch (1062:30): [Folded - Ignored]
  |  Branch (1062:42): [True: 1.44k, False: 1.43k]
  ------------------
 1063|  2.87k|        if (new_tail_size == old_tail_size) {
  ------------------
  |  Branch (1063:13): [True: 1.08k, False: 1.78k]
  ------------------
 1064|  1.08k|            if (!Mutating)
  ------------------
  |  Branch (1064:17): [Folded - Ignored]
  ------------------
 1065|      0|                node->inc();
 1066|  1.08k|            return std::make_tuple(0, nullptr, new_tail_size, node);
 1067|  1.78k|        } else if (mutate) {
  ------------------
  |  Branch (1067:20): [True: 840, False: 949]
  ------------------
 1068|    840|            detail::destroy_n(node->leaf() + new_tail_size,
 1069|    840|                              old_tail_size - new_tail_size);
 1070|    840|            return std::make_tuple(0, nullptr, new_tail_size, node);
 1071|    949|        } else {
 1072|    949|            auto new_tail = node_t::copy_leaf_e(e, node, new_tail_size);
 1073|    949|            if (Mutating)
  ------------------
  |  Branch (1073:17): [Folded - Ignored]
  ------------------
 1074|    949|                pos.visit(dec_visitor{});
 1075|    949|            return std::make_tuple(0, nullptr, new_tail_size, new_tail);
 1076|    949|        }
 1077|  2.87k|    }
_ZN5immer6detail4rbts23slice_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb0ELb1EE13visit_regularIRNS1_8full_posISC_EEEENSt3__15tupleIJjPSC_jSK_EEEOT_mNSA_5applyIS7_E4type4editE:
  990|  2.80k|    {
  991|  2.80k|        auto idx    = pos.index(last);
  992|  2.80k|        auto node   = pos.node();
  993|  2.80k|        auto mutate = Mutating && node->can_mutate(e);
  ------------------
  |  Branch (993:23): [Folded - Ignored]
  |  Branch (993:35): [True: 911, False: 1.89k]
  ------------------
  994|  2.80k|        if (Collapse && idx == 0) {
  ------------------
  |  Branch (994:13): [Folded - Ignored]
  |  Branch (994:25): [True: 0, False: 0]
  ------------------
  995|      0|            auto res = mutate ? pos.towards_oh(this_t{}, last, idx, e)
  ------------------
  |  Branch (995:24): [True: 0, False: 0]
  ------------------
  996|      0|                              : pos.towards_oh(no_mut_t{}, last, idx, e);
  997|      0|            if (Mutating)
  ------------------
  |  Branch (997:17): [Folded - Ignored]
  ------------------
  998|      0|                pos.visit(dec_right_visitor{}, count_t{1});
  999|      0|            return res;
 1000|  2.80k|        } else {
 1001|  2.80k|            using std::get;
 1002|  2.80k|            auto subs =
 1003|  2.80k|                mutate ? pos.towards_oh(no_collapse_t{}, last, idx, e)
  ------------------
  |  Branch (1003:17): [True: 911, False: 1.89k]
  ------------------
 1004|  2.80k|                       : pos.towards_oh(no_collapse_no_mut_t{}, last, idx, e);
 1005|  2.80k|            auto next = get<1>(subs);
 1006|  2.80k|            auto ts   = get<2>(subs);
 1007|  2.80k|            auto tail = get<3>(subs);
 1008|  2.80k|            IMMER_TRY {
  ------------------
  |  |   41|  2.80k|#define IMMER_TRY try
  ------------------
 1009|  2.80k|                if (next) {
  ------------------
  |  Branch (1009:21): [True: 553, False: 2.25k]
  ------------------
 1010|    553|                    if (mutate) {
  ------------------
  |  Branch (1010:25): [True: 273, False: 280]
  ------------------
 1011|    273|                        node->inner()[idx] = next;
 1012|    273|                        pos.each_right(dec_visitor{}, idx + 1);
 1013|    273|                        return std::make_tuple(pos.shift(), node, ts, tail);
 1014|    280|                    } else {
 1015|    280|                        auto newn          = node_t::copy_inner_e(e, node, idx);
 1016|    280|                        newn->inner()[idx] = next;
 1017|    280|                        if (Mutating)
  ------------------
  |  Branch (1017:29): [Folded - Ignored]
  ------------------
 1018|    280|                            pos.visit(dec_visitor{});
 1019|    280|                        return std::make_tuple(pos.shift(), newn, ts, tail);
 1020|    280|                    }
 1021|  2.25k|                } else if (idx == 0) {
  ------------------
  |  Branch (1021:28): [True: 262, False: 1.99k]
  ------------------
 1022|    262|                    if (Mutating)
  ------------------
  |  Branch (1022:25): [Folded - Ignored]
  ------------------
 1023|    262|                        pos.visit(dec_right_visitor{}, count_t{1});
 1024|    262|                    return std::make_tuple(pos.shift(), nullptr, ts, tail);
 1025|  1.99k|                } else if (Collapse && idx == 1 && pos.shift() > BL) {
  ------------------
  |  Branch (1025:28): [Folded - Ignored]
  |  Branch (1025:40): [True: 0, False: 0]
  |  Branch (1025:52): [True: 0, False: 0]
  ------------------
 1026|      0|                    auto newn = pos.node()->inner()[0];
 1027|      0|                    if (!mutate)
  ------------------
  |  Branch (1027:25): [True: 0, False: 0]
  ------------------
 1028|      0|                        newn->inc();
 1029|      0|                    if (Mutating)
  ------------------
  |  Branch (1029:25): [Folded - Ignored]
  ------------------
 1030|      0|                        pos.visit(dec_right_visitor{}, count_t{2});
 1031|      0|                    return std::make_tuple(pos.shift() - B, newn, ts, tail);
 1032|  1.99k|                } else {
 1033|  1.99k|                    if (mutate) {
  ------------------
  |  Branch (1033:25): [True: 621, False: 1.37k]
  ------------------
 1034|    621|                        pos.each_right(dec_visitor{}, idx + 1);
 1035|    621|                        return std::make_tuple(pos.shift(), node, ts, tail);
 1036|  1.37k|                    } else {
 1037|  1.37k|                        auto newn = node_t::copy_inner_e(e, node, idx);
 1038|  1.37k|                        if (Mutating)
  ------------------
  |  Branch (1038:29): [Folded - Ignored]
  ------------------
 1039|  1.37k|                            pos.visit(dec_visitor{});
 1040|  1.37k|                        return std::make_tuple(pos.shift(), newn, ts, tail);
 1041|  1.37k|                    }
 1042|  1.99k|                }
 1043|  2.80k|            }
 1044|  2.80k|            IMMER_CATCH (...) {
 1045|      0|                assert(!mutate);
 1046|      0|                assert(!next || pos.shift() > BL);
 1047|      0|                assert(tail);
 1048|      0|                if (next)
  ------------------
  |  Branch (1048:21): [True: 0, False: 0]
  ------------------
 1049|      0|                    dec_regular(next, pos.shift() - B, last + 1 - ts);
 1050|      0|                dec_leaf(tail, ts);
 1051|      0|                IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1052|      0|            }
 1053|  2.80k|        }
 1054|  2.80k|    }
_ZN5immer6detail4rbts17dec_right_visitor13visit_regularIRNS1_8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEEEvOT_j:
  877|  1.84k|    {
  878|  1.84k|        using node_t = node_type<Pos>;
  879|  1.84k|        auto node    = p.node();
  880|  1.84k|        if (node->dec()) {
  ------------------
  |  Branch (880:13): [True: 0, False: 1.84k]
  ------------------
  881|      0|            p.each_right(dec_t{}, idx);
  882|      0|            node_t::delete_inner(node, p.count());
  883|      0|        }
  884|  1.84k|    }
_ZN5immer6detail4rbts23slice_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb0ELb0EE10visit_leafIRNS1_13full_leaf_posISC_EEEENSt3__15tupleIJjPSC_jSK_EEEOT_mNSA_5applyIS7_E4type4editE:
 1058|  6.68k|    {
 1059|  6.68k|        auto old_tail_size = pos.count();
 1060|  6.68k|        auto new_tail_size = pos.index(last) + 1;
 1061|  6.68k|        auto node          = pos.node();
 1062|  6.68k|        auto mutate        = Mutating && node->can_mutate(e);
  ------------------
  |  Branch (1062:30): [Folded - Ignored]
  |  Branch (1062:42): [True: 0, False: 0]
  ------------------
 1063|  6.68k|        if (new_tail_size == old_tail_size) {
  ------------------
  |  Branch (1063:13): [True: 2.90k, False: 3.77k]
  ------------------
 1064|  2.90k|            if (!Mutating)
  ------------------
  |  Branch (1064:17): [Folded - Ignored]
  ------------------
 1065|  2.90k|                node->inc();
 1066|  2.90k|            return std::make_tuple(0, nullptr, new_tail_size, node);
 1067|  3.77k|        } else if (mutate) {
  ------------------
  |  Branch (1067:20): [True: 0, False: 3.77k]
  ------------------
 1068|      0|            detail::destroy_n(node->leaf() + new_tail_size,
 1069|      0|                              old_tail_size - new_tail_size);
 1070|      0|            return std::make_tuple(0, nullptr, new_tail_size, node);
 1071|  3.77k|        } else {
 1072|  3.77k|            auto new_tail = node_t::copy_leaf_e(e, node, new_tail_size);
 1073|  3.77k|            if (Mutating)
  ------------------
  |  Branch (1073:17): [Folded - Ignored]
  ------------------
 1074|      0|                pos.visit(dec_visitor{});
 1075|  3.77k|            return std::make_tuple(0, nullptr, new_tail_size, new_tail);
 1076|  3.77k|        }
 1077|  6.68k|    }
_ZN5immer6detail4rbts23slice_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb0ELb0EE13visit_regularIRNS1_8full_posISC_EEEENSt3__15tupleIJjPSC_jSK_EEEOT_mNSA_5applyIS7_E4type4editE:
  990|  3.69k|    {
  991|  3.69k|        auto idx    = pos.index(last);
  992|  3.69k|        auto node   = pos.node();
  993|  3.69k|        auto mutate = Mutating && node->can_mutate(e);
  ------------------
  |  Branch (993:23): [Folded - Ignored]
  |  Branch (993:35): [True: 0, False: 0]
  ------------------
  994|  3.69k|        if (Collapse && idx == 0) {
  ------------------
  |  Branch (994:13): [Folded - Ignored]
  |  Branch (994:25): [True: 0, False: 0]
  ------------------
  995|      0|            auto res = mutate ? pos.towards_oh(this_t{}, last, idx, e)
  ------------------
  |  Branch (995:24): [True: 0, False: 0]
  ------------------
  996|      0|                              : pos.towards_oh(no_mut_t{}, last, idx, e);
  997|      0|            if (Mutating)
  ------------------
  |  Branch (997:17): [Folded - Ignored]
  ------------------
  998|      0|                pos.visit(dec_right_visitor{}, count_t{1});
  999|      0|            return res;
 1000|  3.69k|        } else {
 1001|  3.69k|            using std::get;
 1002|  3.69k|            auto subs =
 1003|  3.69k|                mutate ? pos.towards_oh(no_collapse_t{}, last, idx, e)
  ------------------
  |  Branch (1003:17): [True: 0, False: 3.69k]
  ------------------
 1004|  3.69k|                       : pos.towards_oh(no_collapse_no_mut_t{}, last, idx, e);
 1005|  3.69k|            auto next = get<1>(subs);
 1006|  3.69k|            auto ts   = get<2>(subs);
 1007|  3.69k|            auto tail = get<3>(subs);
 1008|  3.69k|            IMMER_TRY {
  ------------------
  |  |   41|  3.69k|#define IMMER_TRY try
  ------------------
 1009|  3.69k|                if (next) {
  ------------------
  |  Branch (1009:21): [True: 639, False: 3.05k]
  ------------------
 1010|    639|                    if (mutate) {
  ------------------
  |  Branch (1010:25): [True: 0, False: 639]
  ------------------
 1011|      0|                        node->inner()[idx] = next;
 1012|      0|                        pos.each_right(dec_visitor{}, idx + 1);
 1013|      0|                        return std::make_tuple(pos.shift(), node, ts, tail);
 1014|    639|                    } else {
 1015|    639|                        auto newn          = node_t::copy_inner_e(e, node, idx);
 1016|    639|                        newn->inner()[idx] = next;
 1017|    639|                        if (Mutating)
  ------------------
  |  Branch (1017:29): [Folded - Ignored]
  ------------------
 1018|      0|                            pos.visit(dec_visitor{});
 1019|    639|                        return std::make_tuple(pos.shift(), newn, ts, tail);
 1020|    639|                    }
 1021|  3.05k|                } else if (idx == 0) {
  ------------------
  |  Branch (1021:28): [True: 1.02k, False: 2.03k]
  ------------------
 1022|  1.02k|                    if (Mutating)
  ------------------
  |  Branch (1022:25): [Folded - Ignored]
  ------------------
 1023|      0|                        pos.visit(dec_right_visitor{}, count_t{1});
 1024|  1.02k|                    return std::make_tuple(pos.shift(), nullptr, ts, tail);
 1025|  2.03k|                } else if (Collapse && idx == 1 && pos.shift() > BL) {
  ------------------
  |  Branch (1025:28): [Folded - Ignored]
  |  Branch (1025:40): [True: 0, False: 0]
  |  Branch (1025:52): [True: 0, False: 0]
  ------------------
 1026|      0|                    auto newn = pos.node()->inner()[0];
 1027|      0|                    if (!mutate)
  ------------------
  |  Branch (1027:25): [True: 0, False: 0]
  ------------------
 1028|      0|                        newn->inc();
 1029|      0|                    if (Mutating)
  ------------------
  |  Branch (1029:25): [Folded - Ignored]
  ------------------
 1030|      0|                        pos.visit(dec_right_visitor{}, count_t{2});
 1031|      0|                    return std::make_tuple(pos.shift() - B, newn, ts, tail);
 1032|  2.03k|                } else {
 1033|  2.03k|                    if (mutate) {
  ------------------
  |  Branch (1033:25): [True: 0, False: 2.03k]
  ------------------
 1034|      0|                        pos.each_right(dec_visitor{}, idx + 1);
 1035|      0|                        return std::make_tuple(pos.shift(), node, ts, tail);
 1036|  2.03k|                    } else {
 1037|  2.03k|                        auto newn = node_t::copy_inner_e(e, node, idx);
 1038|  2.03k|                        if (Mutating)
  ------------------
  |  Branch (1038:29): [Folded - Ignored]
  ------------------
 1039|      0|                            pos.visit(dec_visitor{});
 1040|  2.03k|                        return std::make_tuple(pos.shift(), newn, ts, tail);
 1041|  2.03k|                    }
 1042|  2.03k|                }
 1043|  3.69k|            }
 1044|  3.69k|            IMMER_CATCH (...) {
 1045|      0|                assert(!mutate);
 1046|      0|                assert(!next || pos.shift() > BL);
 1047|      0|                assert(tail);
 1048|      0|                if (next)
  ------------------
  |  Branch (1048:21): [True: 0, False: 0]
  ------------------
 1049|      0|                    dec_regular(next, pos.shift() - B, last + 1 - ts);
 1050|      0|                dec_leaf(tail, ts);
 1051|      0|                IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1052|      0|            }
 1053|  3.69k|        }
 1054|  3.69k|    }
_ZN5immer6detail4rbts23slice_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb1ELb0EE10visit_leafIRNS1_8leaf_posISC_EEEENSt3__15tupleIJjPSC_jSK_EEEOT_mNSA_5applyIS7_E4type4editE:
 1058|    682|    {
 1059|    682|        auto old_tail_size = pos.count();
 1060|    682|        auto new_tail_size = pos.index(last) + 1;
 1061|    682|        auto node          = pos.node();
 1062|    682|        auto mutate        = Mutating && node->can_mutate(e);
  ------------------
  |  Branch (1062:30): [Folded - Ignored]
  |  Branch (1062:42): [True: 0, False: 0]
  ------------------
 1063|    682|        if (new_tail_size == old_tail_size) {
  ------------------
  |  Branch (1063:13): [True: 342, False: 340]
  ------------------
 1064|    342|            if (!Mutating)
  ------------------
  |  Branch (1064:17): [Folded - Ignored]
  ------------------
 1065|    342|                node->inc();
 1066|    342|            return std::make_tuple(0, nullptr, new_tail_size, node);
 1067|    342|        } else if (mutate) {
  ------------------
  |  Branch (1067:20): [True: 0, False: 340]
  ------------------
 1068|      0|            detail::destroy_n(node->leaf() + new_tail_size,
 1069|      0|                              old_tail_size - new_tail_size);
 1070|      0|            return std::make_tuple(0, nullptr, new_tail_size, node);
 1071|    340|        } else {
 1072|    340|            auto new_tail = node_t::copy_leaf_e(e, node, new_tail_size);
 1073|    340|            if (Mutating)
  ------------------
  |  Branch (1073:17): [Folded - Ignored]
  ------------------
 1074|      0|                pos.visit(dec_visitor{});
 1075|    340|            return std::make_tuple(0, nullptr, new_tail_size, new_tail);
 1076|    340|        }
 1077|    682|    }
_ZN5immer6detail4rbts23slice_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb0ELb1EE10visit_leafIRNS1_8leaf_posISC_EEEENSt3__15tupleIJjPSC_jSK_EEEOT_mNSA_5applyIS7_E4type4editE:
 1058|  2.41k|    {
 1059|  2.41k|        auto old_tail_size = pos.count();
 1060|  2.41k|        auto new_tail_size = pos.index(last) + 1;
 1061|  2.41k|        auto node          = pos.node();
 1062|  2.41k|        auto mutate        = Mutating && node->can_mutate(e);
  ------------------
  |  Branch (1062:30): [Folded - Ignored]
  |  Branch (1062:42): [True: 1.12k, False: 1.29k]
  ------------------
 1063|  2.41k|        if (new_tail_size == old_tail_size) {
  ------------------
  |  Branch (1063:13): [True: 1.46k, False: 958]
  ------------------
 1064|  1.46k|            if (!Mutating)
  ------------------
  |  Branch (1064:17): [Folded - Ignored]
  ------------------
 1065|      0|                node->inc();
 1066|  1.46k|            return std::make_tuple(0, nullptr, new_tail_size, node);
 1067|  1.46k|        } else if (mutate) {
  ------------------
  |  Branch (1067:20): [True: 488, False: 470]
  ------------------
 1068|    488|            detail::destroy_n(node->leaf() + new_tail_size,
 1069|    488|                              old_tail_size - new_tail_size);
 1070|    488|            return std::make_tuple(0, nullptr, new_tail_size, node);
 1071|    488|        } else {
 1072|    470|            auto new_tail = node_t::copy_leaf_e(e, node, new_tail_size);
 1073|    470|            if (Mutating)
  ------------------
  |  Branch (1073:17): [Folded - Ignored]
  ------------------
 1074|    470|                pos.visit(dec_visitor{});
 1075|    470|            return std::make_tuple(0, nullptr, new_tail_size, new_tail);
 1076|    470|        }
 1077|  2.41k|    }
_ZN5immer6detail4rbts23slice_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb0ELb1EE13visit_regularIRNS1_11regular_posISC_EEEENSt3__15tupleIJjPSC_jSK_EEEOT_mNSA_5applyIS7_E4type4editE:
  990|  3.48k|    {
  991|  3.48k|        auto idx    = pos.index(last);
  992|  3.48k|        auto node   = pos.node();
  993|  3.48k|        auto mutate = Mutating && node->can_mutate(e);
  ------------------
  |  Branch (993:23): [Folded - Ignored]
  |  Branch (993:35): [True: 3.00k, False: 479]
  ------------------
  994|  3.48k|        if (Collapse && idx == 0) {
  ------------------
  |  Branch (994:13): [Folded - Ignored]
  |  Branch (994:25): [True: 0, False: 0]
  ------------------
  995|      0|            auto res = mutate ? pos.towards_oh(this_t{}, last, idx, e)
  ------------------
  |  Branch (995:24): [True: 0, False: 0]
  ------------------
  996|      0|                              : pos.towards_oh(no_mut_t{}, last, idx, e);
  997|      0|            if (Mutating)
  ------------------
  |  Branch (997:17): [Folded - Ignored]
  ------------------
  998|      0|                pos.visit(dec_right_visitor{}, count_t{1});
  999|      0|            return res;
 1000|  3.48k|        } else {
 1001|  3.48k|            using std::get;
 1002|  3.48k|            auto subs =
 1003|  3.48k|                mutate ? pos.towards_oh(no_collapse_t{}, last, idx, e)
  ------------------
  |  Branch (1003:17): [True: 3.00k, False: 479]
  ------------------
 1004|  3.48k|                       : pos.towards_oh(no_collapse_no_mut_t{}, last, idx, e);
 1005|  3.48k|            auto next = get<1>(subs);
 1006|  3.48k|            auto ts   = get<2>(subs);
 1007|  3.48k|            auto tail = get<3>(subs);
 1008|  3.48k|            IMMER_TRY {
  ------------------
  |  |   41|  3.48k|#define IMMER_TRY try
  ------------------
 1009|  3.48k|                if (next) {
  ------------------
  |  Branch (1009:21): [True: 1.10k, False: 2.37k]
  ------------------
 1010|  1.10k|                    if (mutate) {
  ------------------
  |  Branch (1010:25): [True: 882, False: 219]
  ------------------
 1011|    882|                        node->inner()[idx] = next;
 1012|    882|                        pos.each_right(dec_visitor{}, idx + 1);
 1013|    882|                        return std::make_tuple(pos.shift(), node, ts, tail);
 1014|    882|                    } else {
 1015|    219|                        auto newn          = node_t::copy_inner_e(e, node, idx);
 1016|    219|                        newn->inner()[idx] = next;
 1017|    219|                        if (Mutating)
  ------------------
  |  Branch (1017:29): [Folded - Ignored]
  ------------------
 1018|    219|                            pos.visit(dec_visitor{});
 1019|    219|                        return std::make_tuple(pos.shift(), newn, ts, tail);
 1020|    219|                    }
 1021|  2.37k|                } else if (idx == 0) {
  ------------------
  |  Branch (1021:28): [True: 1.09k, False: 1.28k]
  ------------------
 1022|  1.09k|                    if (Mutating)
  ------------------
  |  Branch (1022:25): [Folded - Ignored]
  ------------------
 1023|  1.09k|                        pos.visit(dec_right_visitor{}, count_t{1});
 1024|  1.09k|                    return std::make_tuple(pos.shift(), nullptr, ts, tail);
 1025|  1.28k|                } else if (Collapse && idx == 1 && pos.shift() > BL) {
  ------------------
  |  Branch (1025:28): [Folded - Ignored]
  |  Branch (1025:40): [True: 0, False: 0]
  |  Branch (1025:52): [True: 0, False: 0]
  ------------------
 1026|      0|                    auto newn = pos.node()->inner()[0];
 1027|      0|                    if (!mutate)
  ------------------
  |  Branch (1027:25): [True: 0, False: 0]
  ------------------
 1028|      0|                        newn->inc();
 1029|      0|                    if (Mutating)
  ------------------
  |  Branch (1029:25): [Folded - Ignored]
  ------------------
 1030|      0|                        pos.visit(dec_right_visitor{}, count_t{2});
 1031|      0|                    return std::make_tuple(pos.shift() - B, newn, ts, tail);
 1032|  1.28k|                } else {
 1033|  1.28k|                    if (mutate) {
  ------------------
  |  Branch (1033:25): [True: 1.09k, False: 194]
  ------------------
 1034|  1.09k|                        pos.each_right(dec_visitor{}, idx + 1);
 1035|  1.09k|                        return std::make_tuple(pos.shift(), node, ts, tail);
 1036|  1.09k|                    } else {
 1037|    194|                        auto newn = node_t::copy_inner_e(e, node, idx);
 1038|    194|                        if (Mutating)
  ------------------
  |  Branch (1038:29): [Folded - Ignored]
  ------------------
 1039|    194|                            pos.visit(dec_visitor{});
 1040|    194|                        return std::make_tuple(pos.shift(), newn, ts, tail);
 1041|    194|                    }
 1042|  1.28k|                }
 1043|  3.48k|            }
 1044|  3.48k|            IMMER_CATCH (...) {
 1045|      0|                assert(!mutate);
 1046|      0|                assert(!next || pos.shift() > BL);
 1047|      0|                assert(tail);
 1048|      0|                if (next)
  ------------------
  |  Branch (1048:21): [True: 0, False: 0]
  ------------------
 1049|      0|                    dec_regular(next, pos.shift() - B, last + 1 - ts);
 1050|      0|                dec_leaf(tail, ts);
 1051|      0|                IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1052|      0|            }
 1053|  3.48k|        }
 1054|  3.48k|    }
_ZN5immer6detail4rbts17dec_right_visitor13visit_regularIRNS1_11regular_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEEEvOT_j:
  877|  1.09k|    {
  878|  1.09k|        using node_t = node_type<Pos>;
  879|  1.09k|        auto node    = p.node();
  880|  1.09k|        if (node->dec()) {
  ------------------
  |  Branch (880:13): [True: 0, False: 1.09k]
  ------------------
  881|      0|            p.each_right(dec_t{}, idx);
  882|      0|            node_t::delete_inner(node, p.count());
  883|      0|        }
  884|  1.09k|    }
_ZN5immer6detail4rbts23slice_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb0ELb0EE10visit_leafIRNS1_8leaf_posISC_EEEENSt3__15tupleIJjPSC_jSK_EEEOT_mNSA_5applyIS7_E4type4editE:
 1058|  3.13k|    {
 1059|  3.13k|        auto old_tail_size = pos.count();
 1060|  3.13k|        auto new_tail_size = pos.index(last) + 1;
 1061|  3.13k|        auto node          = pos.node();
 1062|  3.13k|        auto mutate        = Mutating && node->can_mutate(e);
  ------------------
  |  Branch (1062:30): [Folded - Ignored]
  |  Branch (1062:42): [True: 0, False: 0]
  ------------------
 1063|  3.13k|        if (new_tail_size == old_tail_size) {
  ------------------
  |  Branch (1063:13): [True: 1.28k, False: 1.84k]
  ------------------
 1064|  1.28k|            if (!Mutating)
  ------------------
  |  Branch (1064:17): [Folded - Ignored]
  ------------------
 1065|  1.28k|                node->inc();
 1066|  1.28k|            return std::make_tuple(0, nullptr, new_tail_size, node);
 1067|  1.84k|        } else if (mutate) {
  ------------------
  |  Branch (1067:20): [True: 0, False: 1.84k]
  ------------------
 1068|      0|            detail::destroy_n(node->leaf() + new_tail_size,
 1069|      0|                              old_tail_size - new_tail_size);
 1070|      0|            return std::make_tuple(0, nullptr, new_tail_size, node);
 1071|  1.84k|        } else {
 1072|  1.84k|            auto new_tail = node_t::copy_leaf_e(e, node, new_tail_size);
 1073|  1.84k|            if (Mutating)
  ------------------
  |  Branch (1073:17): [Folded - Ignored]
  ------------------
 1074|      0|                pos.visit(dec_visitor{});
 1075|  1.84k|            return std::make_tuple(0, nullptr, new_tail_size, new_tail);
 1076|  1.84k|        }
 1077|  3.13k|    }
_ZN5immer6detail4rbts23slice_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb0ELb0EE13visit_regularIRNS1_11regular_posISC_EEEENSt3__15tupleIJjPSC_jSK_EEEOT_mNSA_5applyIS7_E4type4editE:
  990|  2.61k|    {
  991|  2.61k|        auto idx    = pos.index(last);
  992|  2.61k|        auto node   = pos.node();
  993|  2.61k|        auto mutate = Mutating && node->can_mutate(e);
  ------------------
  |  Branch (993:23): [Folded - Ignored]
  |  Branch (993:35): [True: 0, False: 0]
  ------------------
  994|  2.61k|        if (Collapse && idx == 0) {
  ------------------
  |  Branch (994:13): [Folded - Ignored]
  |  Branch (994:25): [True: 0, False: 0]
  ------------------
  995|      0|            auto res = mutate ? pos.towards_oh(this_t{}, last, idx, e)
  ------------------
  |  Branch (995:24): [True: 0, False: 0]
  ------------------
  996|      0|                              : pos.towards_oh(no_mut_t{}, last, idx, e);
  997|      0|            if (Mutating)
  ------------------
  |  Branch (997:17): [Folded - Ignored]
  ------------------
  998|      0|                pos.visit(dec_right_visitor{}, count_t{1});
  999|      0|            return res;
 1000|  2.61k|        } else {
 1001|  2.61k|            using std::get;
 1002|  2.61k|            auto subs =
 1003|  2.61k|                mutate ? pos.towards_oh(no_collapse_t{}, last, idx, e)
  ------------------
  |  Branch (1003:17): [True: 0, False: 2.61k]
  ------------------
 1004|  2.61k|                       : pos.towards_oh(no_collapse_no_mut_t{}, last, idx, e);
 1005|  2.61k|            auto next = get<1>(subs);
 1006|  2.61k|            auto ts   = get<2>(subs);
 1007|  2.61k|            auto tail = get<3>(subs);
 1008|  2.61k|            IMMER_TRY {
  ------------------
  |  |   41|  2.61k|#define IMMER_TRY try
  ------------------
 1009|  2.61k|                if (next) {
  ------------------
  |  Branch (1009:21): [True: 708, False: 1.91k]
  ------------------
 1010|    708|                    if (mutate) {
  ------------------
  |  Branch (1010:25): [True: 0, False: 708]
  ------------------
 1011|      0|                        node->inner()[idx] = next;
 1012|      0|                        pos.each_right(dec_visitor{}, idx + 1);
 1013|      0|                        return std::make_tuple(pos.shift(), node, ts, tail);
 1014|    708|                    } else {
 1015|    708|                        auto newn          = node_t::copy_inner_e(e, node, idx);
 1016|    708|                        newn->inner()[idx] = next;
 1017|    708|                        if (Mutating)
  ------------------
  |  Branch (1017:29): [Folded - Ignored]
  ------------------
 1018|      0|                            pos.visit(dec_visitor{});
 1019|    708|                        return std::make_tuple(pos.shift(), newn, ts, tail);
 1020|    708|                    }
 1021|  1.91k|                } else if (idx == 0) {
  ------------------
  |  Branch (1021:28): [True: 991, False: 919]
  ------------------
 1022|    991|                    if (Mutating)
  ------------------
  |  Branch (1022:25): [Folded - Ignored]
  ------------------
 1023|      0|                        pos.visit(dec_right_visitor{}, count_t{1});
 1024|    991|                    return std::make_tuple(pos.shift(), nullptr, ts, tail);
 1025|    991|                } else if (Collapse && idx == 1 && pos.shift() > BL) {
  ------------------
  |  Branch (1025:28): [Folded - Ignored]
  |  Branch (1025:40): [True: 0, False: 0]
  |  Branch (1025:52): [True: 0, False: 0]
  ------------------
 1026|      0|                    auto newn = pos.node()->inner()[0];
 1027|      0|                    if (!mutate)
  ------------------
  |  Branch (1027:25): [True: 0, False: 0]
  ------------------
 1028|      0|                        newn->inc();
 1029|      0|                    if (Mutating)
  ------------------
  |  Branch (1029:25): [Folded - Ignored]
  ------------------
 1030|      0|                        pos.visit(dec_right_visitor{}, count_t{2});
 1031|      0|                    return std::make_tuple(pos.shift() - B, newn, ts, tail);
 1032|    919|                } else {
 1033|    919|                    if (mutate) {
  ------------------
  |  Branch (1033:25): [True: 0, False: 919]
  ------------------
 1034|      0|                        pos.each_right(dec_visitor{}, idx + 1);
 1035|      0|                        return std::make_tuple(pos.shift(), node, ts, tail);
 1036|    919|                    } else {
 1037|    919|                        auto newn = node_t::copy_inner_e(e, node, idx);
 1038|    919|                        if (Mutating)
  ------------------
  |  Branch (1038:29): [Folded - Ignored]
  ------------------
 1039|      0|                            pos.visit(dec_visitor{});
 1040|    919|                        return std::make_tuple(pos.shift(), newn, ts, tail);
 1041|    919|                    }
 1042|    919|                }
 1043|  2.61k|            }
 1044|  2.61k|            IMMER_CATCH (...) {
 1045|      0|                assert(!mutate);
 1046|      0|                assert(!next || pos.shift() > BL);
 1047|      0|                assert(tail);
 1048|      0|                if (next)
  ------------------
  |  Branch (1048:21): [True: 0, False: 0]
  ------------------
 1049|      0|                    dec_regular(next, pos.shift() - B, last + 1 - ts);
 1050|      0|                dec_leaf(tail, ts);
 1051|      0|                IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1052|      0|            }
 1053|  2.61k|        }
 1054|  2.61k|    }
_ZN5immer6detail4rbts17dec_right_visitor13visit_relaxedIRNS1_11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEEEvOT_j:
  866|  31.9k|    {
  867|  31.9k|        using node_t = node_type<Pos>;
  868|  31.9k|        auto node    = p.node();
  869|  31.9k|        if (node->dec()) {
  ------------------
  |  Branch (869:13): [True: 0, False: 31.9k]
  ------------------
  870|      0|            p.each_right(dec_t{}, idx);
  871|      0|            node_t::delete_inner_r(node, p.count());
  872|      0|        }
  873|  31.9k|    }
_ZN5immer6detail4rbts23slice_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb0ELb1EE10visit_leafIRNS1_12leaf_sub_posISC_EEEENSt3__15tupleIJjPSC_jSK_EEEOT_mNSA_5applyIS7_E4type4editE:
 1058|  4.82k|    {
 1059|  4.82k|        auto old_tail_size = pos.count();
 1060|  4.82k|        auto new_tail_size = pos.index(last) + 1;
 1061|  4.82k|        auto node          = pos.node();
 1062|  4.82k|        auto mutate        = Mutating && node->can_mutate(e);
  ------------------
  |  Branch (1062:30): [Folded - Ignored]
  |  Branch (1062:42): [True: 2.45k, False: 2.36k]
  ------------------
 1063|  4.82k|        if (new_tail_size == old_tail_size) {
  ------------------
  |  Branch (1063:13): [True: 2.99k, False: 1.83k]
  ------------------
 1064|  2.99k|            if (!Mutating)
  ------------------
  |  Branch (1064:17): [Folded - Ignored]
  ------------------
 1065|      0|                node->inc();
 1066|  2.99k|            return std::make_tuple(0, nullptr, new_tail_size, node);
 1067|  2.99k|        } else if (mutate) {
  ------------------
  |  Branch (1067:20): [True: 960, False: 872]
  ------------------
 1068|    960|            detail::destroy_n(node->leaf() + new_tail_size,
 1069|    960|                              old_tail_size - new_tail_size);
 1070|    960|            return std::make_tuple(0, nullptr, new_tail_size, node);
 1071|    960|        } else {
 1072|    872|            auto new_tail = node_t::copy_leaf_e(e, node, new_tail_size);
 1073|    872|            if (Mutating)
  ------------------
  |  Branch (1073:17): [Folded - Ignored]
  ------------------
 1074|    872|                pos.visit(dec_visitor{});
 1075|    872|            return std::make_tuple(0, nullptr, new_tail_size, new_tail);
 1076|    872|        }
 1077|  4.82k|    }
_ZN5immer6detail4rbts23slice_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb0ELb1EE13visit_relaxedIRNS1_11relaxed_posISC_EEEENSt3__15tupleIJjPSC_jSK_EEEOT_mNSA_5applyIS7_E4type4editE:
  912|  13.1k|    {
  913|  13.1k|        auto idx    = pos.index(last);
  914|  13.1k|        auto node   = pos.node();
  915|  13.1k|        auto mutate = Mutating && node->can_mutate(e);
  ------------------
  |  Branch (915:23): [Folded - Ignored]
  |  Branch (915:35): [True: 11.4k, False: 1.66k]
  ------------------
  916|  13.1k|        if (Collapse && idx == 0) {
  ------------------
  |  Branch (916:13): [Folded - Ignored]
  |  Branch (916:25): [True: 0, False: 0]
  ------------------
  917|      0|            auto res = mutate ? pos.towards_oh(this_t{}, last, idx, e)
  ------------------
  |  Branch (917:24): [True: 0, False: 0]
  ------------------
  918|      0|                              : pos.towards_oh(no_mut_t{}, last, idx, e);
  919|      0|            if (Mutating)
  ------------------
  |  Branch (919:17): [Folded - Ignored]
  ------------------
  920|      0|                pos.visit(dec_right_visitor{}, count_t{1});
  921|      0|            return res;
  922|  13.1k|        } else {
  923|  13.1k|            using std::get;
  924|  13.1k|            auto subs =
  925|  13.1k|                mutate ? pos.towards_oh(no_collapse_t{}, last, idx, e)
  ------------------
  |  Branch (925:17): [True: 11.4k, False: 1.66k]
  ------------------
  926|  13.1k|                       : pos.towards_oh(no_collapse_no_mut_t{}, last, idx, e);
  927|  13.1k|            auto next = get<1>(subs);
  928|  13.1k|            auto ts   = get<2>(subs);
  929|  13.1k|            auto tail = get<3>(subs);
  930|  13.1k|            IMMER_TRY {
  ------------------
  |  |   41|  13.1k|#define IMMER_TRY try
  ------------------
  931|  13.1k|                if (next) {
  ------------------
  |  Branch (931:21): [True: 7.30k, False: 5.86k]
  ------------------
  932|  7.30k|                    if (mutate) {
  ------------------
  |  Branch (932:25): [True: 6.81k, False: 495]
  ------------------
  933|  6.81k|                        auto nodr = node->ensure_mutable_relaxed_n(e, idx);
  934|  6.81k|                        pos.each_right(dec_visitor{}, idx + 1);
  935|  6.81k|                        node->inner()[idx] = next;
  936|  6.81k|                        nodr->d.sizes[idx] = last + 1 - ts;
  937|  6.81k|                        nodr->d.count      = idx + 1;
  938|  6.81k|                        assert(nodr->d.sizes[idx]);
  939|      0|                        return std::make_tuple(pos.shift(), node, ts, tail);
  940|  6.81k|                    } else {
  941|    495|                        auto newn = node_t::copy_inner_r_e(e, node, idx);
  942|    495|                        auto newr = newn->relaxed();
  943|    495|                        newn->inner()[idx] = next;
  944|    495|                        newr->d.sizes[idx] = last + 1 - ts;
  945|    495|                        newr->d.count      = idx + 1;
  946|    495|                        assert(newr->d.sizes[idx]);
  947|    495|                        if (Mutating)
  ------------------
  |  Branch (947:29): [Folded - Ignored]
  ------------------
  948|    495|                            pos.visit(dec_visitor{});
  949|    495|                        return std::make_tuple(pos.shift(), newn, ts, tail);
  950|    495|                    }
  951|  7.30k|                } else if (idx == 0) {
  ------------------
  |  Branch (951:28): [True: 1.77k, False: 4.08k]
  ------------------
  952|  1.77k|                    if (Mutating)
  ------------------
  |  Branch (952:25): [Folded - Ignored]
  ------------------
  953|  1.77k|                        pos.visit(dec_right_visitor{}, count_t{1});
  954|  1.77k|                    return std::make_tuple(pos.shift(), nullptr, ts, tail);
  955|  4.08k|                } else if (Collapse && idx == 1 && pos.shift() > BL) {
  ------------------
  |  Branch (955:28): [Folded - Ignored]
  |  Branch (955:40): [True: 0, False: 0]
  |  Branch (955:52): [True: 0, False: 0]
  ------------------
  956|      0|                    auto newn = pos.node()->inner()[0];
  957|      0|                    if (!mutate)
  ------------------
  |  Branch (957:25): [True: 0, False: 0]
  ------------------
  958|      0|                        newn->inc();
  959|      0|                    if (Mutating)
  ------------------
  |  Branch (959:25): [Folded - Ignored]
  ------------------
  960|      0|                        pos.visit(dec_right_visitor{}, count_t{2});
  961|      0|                    return std::make_tuple(pos.shift() - B, newn, ts, tail);
  962|  4.08k|                } else {
  963|  4.08k|                    if (mutate) {
  ------------------
  |  Branch (963:25): [True: 3.41k, False: 668]
  ------------------
  964|  3.41k|                        pos.each_right(dec_visitor{}, idx + 1);
  965|  3.41k|                        node->ensure_mutable_relaxed_n(e, idx)->d.count = idx;
  966|  3.41k|                        return std::make_tuple(pos.shift(), node, ts, tail);
  967|  3.41k|                    } else {
  968|    668|                        auto newn = node_t::copy_inner_r_e(e, node, idx);
  969|    668|                        if (Mutating)
  ------------------
  |  Branch (969:29): [Folded - Ignored]
  ------------------
  970|    668|                            pos.visit(dec_visitor{});
  971|    668|                        return std::make_tuple(pos.shift(), newn, ts, tail);
  972|    668|                    }
  973|  4.08k|                }
  974|  13.1k|            }
  975|  13.1k|            IMMER_CATCH (...) {
  976|      0|                assert(!mutate);
  977|      0|                assert(!next || pos.shift() > BL);
  978|      0|                if (next)
  ------------------
  |  Branch (978:21): [True: 0, False: 0]
  ------------------
  979|      0|                    dec_inner(next,
  980|      0|                              pos.shift() - B,
  981|      0|                              last + 1 - ts - pos.size_before(idx));
  982|      0|                dec_leaf(tail, ts);
  983|      0|                IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
  984|      0|            }
  985|  13.1k|        }
  986|  13.1k|    }
_ZN5immer6detail4rbts23slice_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb0ELb1EE13visit_regularIRNS1_15regular_sub_posISC_EEEENSt3__15tupleIJjPSC_jSK_EEEOT_mNSA_5applyIS7_E4type4editE:
  990|  2.36k|    {
  991|  2.36k|        auto idx    = pos.index(last);
  992|  2.36k|        auto node   = pos.node();
  993|  2.36k|        auto mutate = Mutating && node->can_mutate(e);
  ------------------
  |  Branch (993:23): [Folded - Ignored]
  |  Branch (993:35): [True: 1.60k, False: 758]
  ------------------
  994|  2.36k|        if (Collapse && idx == 0) {
  ------------------
  |  Branch (994:13): [Folded - Ignored]
  |  Branch (994:25): [True: 0, False: 0]
  ------------------
  995|      0|            auto res = mutate ? pos.towards_oh(this_t{}, last, idx, e)
  ------------------
  |  Branch (995:24): [True: 0, False: 0]
  ------------------
  996|      0|                              : pos.towards_oh(no_mut_t{}, last, idx, e);
  997|      0|            if (Mutating)
  ------------------
  |  Branch (997:17): [Folded - Ignored]
  ------------------
  998|      0|                pos.visit(dec_right_visitor{}, count_t{1});
  999|      0|            return res;
 1000|  2.36k|        } else {
 1001|  2.36k|            using std::get;
 1002|  2.36k|            auto subs =
 1003|  2.36k|                mutate ? pos.towards_oh(no_collapse_t{}, last, idx, e)
  ------------------
  |  Branch (1003:17): [True: 1.60k, False: 758]
  ------------------
 1004|  2.36k|                       : pos.towards_oh(no_collapse_no_mut_t{}, last, idx, e);
 1005|  2.36k|            auto next = get<1>(subs);
 1006|  2.36k|            auto ts   = get<2>(subs);
 1007|  2.36k|            auto tail = get<3>(subs);
 1008|  2.36k|            IMMER_TRY {
  ------------------
  |  |   41|  2.36k|#define IMMER_TRY try
  ------------------
 1009|  2.36k|                if (next) {
  ------------------
  |  Branch (1009:21): [True: 821, False: 1.53k]
  ------------------
 1010|    821|                    if (mutate) {
  ------------------
  |  Branch (1010:25): [True: 564, False: 257]
  ------------------
 1011|    564|                        node->inner()[idx] = next;
 1012|    564|                        pos.each_right(dec_visitor{}, idx + 1);
 1013|    564|                        return std::make_tuple(pos.shift(), node, ts, tail);
 1014|    564|                    } else {
 1015|    257|                        auto newn          = node_t::copy_inner_e(e, node, idx);
 1016|    257|                        newn->inner()[idx] = next;
 1017|    257|                        if (Mutating)
  ------------------
  |  Branch (1017:29): [Folded - Ignored]
  ------------------
 1018|    257|                            pos.visit(dec_visitor{});
 1019|    257|                        return std::make_tuple(pos.shift(), newn, ts, tail);
 1020|    257|                    }
 1021|  1.53k|                } else if (idx == 0) {
  ------------------
  |  Branch (1021:28): [True: 759, False: 780]
  ------------------
 1022|    759|                    if (Mutating)
  ------------------
  |  Branch (1022:25): [Folded - Ignored]
  ------------------
 1023|    759|                        pos.visit(dec_right_visitor{}, count_t{1});
 1024|    759|                    return std::make_tuple(pos.shift(), nullptr, ts, tail);
 1025|    780|                } else if (Collapse && idx == 1 && pos.shift() > BL) {
  ------------------
  |  Branch (1025:28): [Folded - Ignored]
  |  Branch (1025:40): [True: 0, False: 0]
  |  Branch (1025:52): [True: 0, False: 0]
  ------------------
 1026|      0|                    auto newn = pos.node()->inner()[0];
 1027|      0|                    if (!mutate)
  ------------------
  |  Branch (1027:25): [True: 0, False: 0]
  ------------------
 1028|      0|                        newn->inc();
 1029|      0|                    if (Mutating)
  ------------------
  |  Branch (1029:25): [Folded - Ignored]
  ------------------
 1030|      0|                        pos.visit(dec_right_visitor{}, count_t{2});
 1031|      0|                    return std::make_tuple(pos.shift() - B, newn, ts, tail);
 1032|    780|                } else {
 1033|    780|                    if (mutate) {
  ------------------
  |  Branch (1033:25): [True: 295, False: 485]
  ------------------
 1034|    295|                        pos.each_right(dec_visitor{}, idx + 1);
 1035|    295|                        return std::make_tuple(pos.shift(), node, ts, tail);
 1036|    485|                    } else {
 1037|    485|                        auto newn = node_t::copy_inner_e(e, node, idx);
 1038|    485|                        if (Mutating)
  ------------------
  |  Branch (1038:29): [Folded - Ignored]
  ------------------
 1039|    485|                            pos.visit(dec_visitor{});
 1040|    485|                        return std::make_tuple(pos.shift(), newn, ts, tail);
 1041|    485|                    }
 1042|    780|                }
 1043|  2.36k|            }
 1044|  2.36k|            IMMER_CATCH (...) {
 1045|      0|                assert(!mutate);
 1046|      0|                assert(!next || pos.shift() > BL);
 1047|      0|                assert(tail);
 1048|      0|                if (next)
  ------------------
  |  Branch (1048:21): [True: 0, False: 0]
  ------------------
 1049|      0|                    dec_regular(next, pos.shift() - B, last + 1 - ts);
 1050|      0|                dec_leaf(tail, ts);
 1051|      0|                IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1052|      0|            }
 1053|  2.36k|        }
 1054|  2.36k|    }
_ZN5immer6detail4rbts17dec_right_visitor13visit_regularIRNS1_15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEEEvOT_j:
  877|  9.31k|    {
  878|  9.31k|        using node_t = node_type<Pos>;
  879|  9.31k|        auto node    = p.node();
  880|  9.31k|        if (node->dec()) {
  ------------------
  |  Branch (880:13): [True: 0, False: 9.31k]
  ------------------
  881|      0|            p.each_right(dec_t{}, idx);
  882|      0|            node_t::delete_inner(node, p.count());
  883|      0|        }
  884|  9.31k|    }
_ZN5immer6detail4rbts23slice_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb0ELb0EE10visit_leafIRNS1_12leaf_sub_posISC_EEEENSt3__15tupleIJjPSC_jSK_EEEOT_mNSA_5applyIS7_E4type4editE:
 1058|  6.51k|    {
 1059|  6.51k|        auto old_tail_size = pos.count();
 1060|  6.51k|        auto new_tail_size = pos.index(last) + 1;
 1061|  6.51k|        auto node          = pos.node();
 1062|  6.51k|        auto mutate        = Mutating && node->can_mutate(e);
  ------------------
  |  Branch (1062:30): [Folded - Ignored]
  |  Branch (1062:42): [True: 0, False: 0]
  ------------------
 1063|  6.51k|        if (new_tail_size == old_tail_size) {
  ------------------
  |  Branch (1063:13): [True: 2.05k, False: 4.46k]
  ------------------
 1064|  2.05k|            if (!Mutating)
  ------------------
  |  Branch (1064:17): [Folded - Ignored]
  ------------------
 1065|  2.05k|                node->inc();
 1066|  2.05k|            return std::make_tuple(0, nullptr, new_tail_size, node);
 1067|  4.46k|        } else if (mutate) {
  ------------------
  |  Branch (1067:20): [True: 0, False: 4.46k]
  ------------------
 1068|      0|            detail::destroy_n(node->leaf() + new_tail_size,
 1069|      0|                              old_tail_size - new_tail_size);
 1070|      0|            return std::make_tuple(0, nullptr, new_tail_size, node);
 1071|  4.46k|        } else {
 1072|  4.46k|            auto new_tail = node_t::copy_leaf_e(e, node, new_tail_size);
 1073|  4.46k|            if (Mutating)
  ------------------
  |  Branch (1073:17): [Folded - Ignored]
  ------------------
 1074|      0|                pos.visit(dec_visitor{});
 1075|  4.46k|            return std::make_tuple(0, nullptr, new_tail_size, new_tail);
 1076|  4.46k|        }
 1077|  6.51k|    }
_ZN5immer6detail4rbts23slice_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb0ELb0EE13visit_relaxedIRNS1_11relaxed_posISC_EEEENSt3__15tupleIJjPSC_jSK_EEEOT_mNSA_5applyIS7_E4type4editE:
  912|  10.7k|    {
  913|  10.7k|        auto idx    = pos.index(last);
  914|  10.7k|        auto node   = pos.node();
  915|  10.7k|        auto mutate = Mutating && node->can_mutate(e);
  ------------------
  |  Branch (915:23): [Folded - Ignored]
  |  Branch (915:35): [True: 0, False: 0]
  ------------------
  916|  10.7k|        if (Collapse && idx == 0) {
  ------------------
  |  Branch (916:13): [Folded - Ignored]
  |  Branch (916:25): [True: 0, False: 0]
  ------------------
  917|      0|            auto res = mutate ? pos.towards_oh(this_t{}, last, idx, e)
  ------------------
  |  Branch (917:24): [True: 0, False: 0]
  ------------------
  918|      0|                              : pos.towards_oh(no_mut_t{}, last, idx, e);
  919|      0|            if (Mutating)
  ------------------
  |  Branch (919:17): [Folded - Ignored]
  ------------------
  920|      0|                pos.visit(dec_right_visitor{}, count_t{1});
  921|      0|            return res;
  922|  10.7k|        } else {
  923|  10.7k|            using std::get;
  924|  10.7k|            auto subs =
  925|  10.7k|                mutate ? pos.towards_oh(no_collapse_t{}, last, idx, e)
  ------------------
  |  Branch (925:17): [True: 0, False: 10.7k]
  ------------------
  926|  10.7k|                       : pos.towards_oh(no_collapse_no_mut_t{}, last, idx, e);
  927|  10.7k|            auto next = get<1>(subs);
  928|  10.7k|            auto ts   = get<2>(subs);
  929|  10.7k|            auto tail = get<3>(subs);
  930|  10.7k|            IMMER_TRY {
  ------------------
  |  |   41|  10.7k|#define IMMER_TRY try
  ------------------
  931|  10.7k|                if (next) {
  ------------------
  |  Branch (931:21): [True: 4.77k, False: 5.98k]
  ------------------
  932|  4.77k|                    if (mutate) {
  ------------------
  |  Branch (932:25): [True: 0, False: 4.77k]
  ------------------
  933|      0|                        auto nodr = node->ensure_mutable_relaxed_n(e, idx);
  934|      0|                        pos.each_right(dec_visitor{}, idx + 1);
  935|      0|                        node->inner()[idx] = next;
  936|      0|                        nodr->d.sizes[idx] = last + 1 - ts;
  937|      0|                        nodr->d.count      = idx + 1;
  938|      0|                        assert(nodr->d.sizes[idx]);
  939|      0|                        return std::make_tuple(pos.shift(), node, ts, tail);
  940|  4.77k|                    } else {
  941|  4.77k|                        auto newn = node_t::copy_inner_r_e(e, node, idx);
  942|  4.77k|                        auto newr = newn->relaxed();
  943|  4.77k|                        newn->inner()[idx] = next;
  944|  4.77k|                        newr->d.sizes[idx] = last + 1 - ts;
  945|  4.77k|                        newr->d.count      = idx + 1;
  946|  4.77k|                        assert(newr->d.sizes[idx]);
  947|  4.77k|                        if (Mutating)
  ------------------
  |  Branch (947:29): [Folded - Ignored]
  ------------------
  948|      0|                            pos.visit(dec_visitor{});
  949|  4.77k|                        return std::make_tuple(pos.shift(), newn, ts, tail);
  950|  4.77k|                    }
  951|  5.98k|                } else if (idx == 0) {
  ------------------
  |  Branch (951:28): [True: 2.56k, False: 3.42k]
  ------------------
  952|  2.56k|                    if (Mutating)
  ------------------
  |  Branch (952:25): [Folded - Ignored]
  ------------------
  953|      0|                        pos.visit(dec_right_visitor{}, count_t{1});
  954|  2.56k|                    return std::make_tuple(pos.shift(), nullptr, ts, tail);
  955|  3.42k|                } else if (Collapse && idx == 1 && pos.shift() > BL) {
  ------------------
  |  Branch (955:28): [Folded - Ignored]
  |  Branch (955:40): [True: 0, False: 0]
  |  Branch (955:52): [True: 0, False: 0]
  ------------------
  956|      0|                    auto newn = pos.node()->inner()[0];
  957|      0|                    if (!mutate)
  ------------------
  |  Branch (957:25): [True: 0, False: 0]
  ------------------
  958|      0|                        newn->inc();
  959|      0|                    if (Mutating)
  ------------------
  |  Branch (959:25): [Folded - Ignored]
  ------------------
  960|      0|                        pos.visit(dec_right_visitor{}, count_t{2});
  961|      0|                    return std::make_tuple(pos.shift() - B, newn, ts, tail);
  962|  3.42k|                } else {
  963|  3.42k|                    if (mutate) {
  ------------------
  |  Branch (963:25): [True: 0, False: 3.42k]
  ------------------
  964|      0|                        pos.each_right(dec_visitor{}, idx + 1);
  965|      0|                        node->ensure_mutable_relaxed_n(e, idx)->d.count = idx;
  966|      0|                        return std::make_tuple(pos.shift(), node, ts, tail);
  967|  3.42k|                    } else {
  968|  3.42k|                        auto newn = node_t::copy_inner_r_e(e, node, idx);
  969|  3.42k|                        if (Mutating)
  ------------------
  |  Branch (969:29): [Folded - Ignored]
  ------------------
  970|      0|                            pos.visit(dec_visitor{});
  971|  3.42k|                        return std::make_tuple(pos.shift(), newn, ts, tail);
  972|  3.42k|                    }
  973|  3.42k|                }
  974|  10.7k|            }
  975|  10.7k|            IMMER_CATCH (...) {
  976|      0|                assert(!mutate);
  977|      0|                assert(!next || pos.shift() > BL);
  978|      0|                if (next)
  ------------------
  |  Branch (978:21): [True: 0, False: 0]
  ------------------
  979|      0|                    dec_inner(next,
  980|      0|                              pos.shift() - B,
  981|      0|                              last + 1 - ts - pos.size_before(idx));
  982|      0|                dec_leaf(tail, ts);
  983|      0|                IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
  984|      0|            }
  985|  10.7k|        }
  986|  10.7k|    }
_ZN5immer6detail4rbts23slice_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb0ELb0EE13visit_regularIRNS1_15regular_sub_posISC_EEEENSt3__15tupleIJjPSC_jSK_EEEOT_mNSA_5applyIS7_E4type4editE:
  990|  1.41k|    {
  991|  1.41k|        auto idx    = pos.index(last);
  992|  1.41k|        auto node   = pos.node();
  993|  1.41k|        auto mutate = Mutating && node->can_mutate(e);
  ------------------
  |  Branch (993:23): [Folded - Ignored]
  |  Branch (993:35): [True: 0, False: 0]
  ------------------
  994|  1.41k|        if (Collapse && idx == 0) {
  ------------------
  |  Branch (994:13): [Folded - Ignored]
  |  Branch (994:25): [True: 0, False: 0]
  ------------------
  995|      0|            auto res = mutate ? pos.towards_oh(this_t{}, last, idx, e)
  ------------------
  |  Branch (995:24): [True: 0, False: 0]
  ------------------
  996|      0|                              : pos.towards_oh(no_mut_t{}, last, idx, e);
  997|      0|            if (Mutating)
  ------------------
  |  Branch (997:17): [Folded - Ignored]
  ------------------
  998|      0|                pos.visit(dec_right_visitor{}, count_t{1});
  999|      0|            return res;
 1000|  1.41k|        } else {
 1001|  1.41k|            using std::get;
 1002|  1.41k|            auto subs =
 1003|  1.41k|                mutate ? pos.towards_oh(no_collapse_t{}, last, idx, e)
  ------------------
  |  Branch (1003:17): [True: 0, False: 1.41k]
  ------------------
 1004|  1.41k|                       : pos.towards_oh(no_collapse_no_mut_t{}, last, idx, e);
 1005|  1.41k|            auto next = get<1>(subs);
 1006|  1.41k|            auto ts   = get<2>(subs);
 1007|  1.41k|            auto tail = get<3>(subs);
 1008|  1.41k|            IMMER_TRY {
  ------------------
  |  |   41|  1.41k|#define IMMER_TRY try
  ------------------
 1009|  1.41k|                if (next) {
  ------------------
  |  Branch (1009:21): [True: 486, False: 930]
  ------------------
 1010|    486|                    if (mutate) {
  ------------------
  |  Branch (1010:25): [True: 0, False: 486]
  ------------------
 1011|      0|                        node->inner()[idx] = next;
 1012|      0|                        pos.each_right(dec_visitor{}, idx + 1);
 1013|      0|                        return std::make_tuple(pos.shift(), node, ts, tail);
 1014|    486|                    } else {
 1015|    486|                        auto newn          = node_t::copy_inner_e(e, node, idx);
 1016|    486|                        newn->inner()[idx] = next;
 1017|    486|                        if (Mutating)
  ------------------
  |  Branch (1017:29): [Folded - Ignored]
  ------------------
 1018|      0|                            pos.visit(dec_visitor{});
 1019|    486|                        return std::make_tuple(pos.shift(), newn, ts, tail);
 1020|    486|                    }
 1021|    930|                } else if (idx == 0) {
  ------------------
  |  Branch (1021:28): [True: 430, False: 500]
  ------------------
 1022|    430|                    if (Mutating)
  ------------------
  |  Branch (1022:25): [Folded - Ignored]
  ------------------
 1023|      0|                        pos.visit(dec_right_visitor{}, count_t{1});
 1024|    430|                    return std::make_tuple(pos.shift(), nullptr, ts, tail);
 1025|    500|                } else if (Collapse && idx == 1 && pos.shift() > BL) {
  ------------------
  |  Branch (1025:28): [Folded - Ignored]
  |  Branch (1025:40): [True: 0, False: 0]
  |  Branch (1025:52): [True: 0, False: 0]
  ------------------
 1026|      0|                    auto newn = pos.node()->inner()[0];
 1027|      0|                    if (!mutate)
  ------------------
  |  Branch (1027:25): [True: 0, False: 0]
  ------------------
 1028|      0|                        newn->inc();
 1029|      0|                    if (Mutating)
  ------------------
  |  Branch (1029:25): [Folded - Ignored]
  ------------------
 1030|      0|                        pos.visit(dec_right_visitor{}, count_t{2});
 1031|      0|                    return std::make_tuple(pos.shift() - B, newn, ts, tail);
 1032|    500|                } else {
 1033|    500|                    if (mutate) {
  ------------------
  |  Branch (1033:25): [True: 0, False: 500]
  ------------------
 1034|      0|                        pos.each_right(dec_visitor{}, idx + 1);
 1035|      0|                        return std::make_tuple(pos.shift(), node, ts, tail);
 1036|    500|                    } else {
 1037|    500|                        auto newn = node_t::copy_inner_e(e, node, idx);
 1038|    500|                        if (Mutating)
  ------------------
  |  Branch (1038:29): [Folded - Ignored]
  ------------------
 1039|      0|                            pos.visit(dec_visitor{});
 1040|    500|                        return std::make_tuple(pos.shift(), newn, ts, tail);
 1041|    500|                    }
 1042|    500|                }
 1043|  1.41k|            }
 1044|  1.41k|            IMMER_CATCH (...) {
 1045|      0|                assert(!mutate);
 1046|      0|                assert(!next || pos.shift() > BL);
 1047|      0|                assert(tail);
 1048|      0|                if (next)
  ------------------
  |  Branch (1048:21): [True: 0, False: 0]
  ------------------
 1049|      0|                    dec_regular(next, pos.shift() - B, last + 1 - ts);
 1050|      0|                dec_leaf(tail, ts);
 1051|      0|                IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1052|      0|            }
 1053|  1.41k|        }
 1054|  1.41k|    }
_ZN5immer6detail4rbts23slice_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb1ELb1EE13visit_regularIRNS1_15regular_sub_posISC_EEEENSt3__15tupleIJjPSC_jSK_EEEOT_mNSA_5applyIS7_E4type4editE:
  990|  14.5k|    {
  991|  14.5k|        auto idx    = pos.index(last);
  992|  14.5k|        auto node   = pos.node();
  993|  14.5k|        auto mutate = Mutating && node->can_mutate(e);
  ------------------
  |  Branch (993:23): [Folded - Ignored]
  |  Branch (993:35): [True: 9.05k, False: 5.46k]
  ------------------
  994|  14.5k|        if (Collapse && idx == 0) {
  ------------------
  |  Branch (994:13): [Folded - Ignored]
  |  Branch (994:25): [True: 6.65k, False: 7.86k]
  ------------------
  995|  6.65k|            auto res = mutate ? pos.towards_oh(this_t{}, last, idx, e)
  ------------------
  |  Branch (995:24): [True: 3.95k, False: 2.69k]
  ------------------
  996|  6.65k|                              : pos.towards_oh(no_mut_t{}, last, idx, e);
  997|  6.65k|            if (Mutating)
  ------------------
  |  Branch (997:17): [Folded - Ignored]
  ------------------
  998|  6.65k|                pos.visit(dec_right_visitor{}, count_t{1});
  999|  6.65k|            return res;
 1000|  7.86k|        } else {
 1001|  7.86k|            using std::get;
 1002|  7.86k|            auto subs =
 1003|  7.86k|                mutate ? pos.towards_oh(no_collapse_t{}, last, idx, e)
  ------------------
  |  Branch (1003:17): [True: 5.09k, False: 2.76k]
  ------------------
 1004|  7.86k|                       : pos.towards_oh(no_collapse_no_mut_t{}, last, idx, e);
 1005|  7.86k|            auto next = get<1>(subs);
 1006|  7.86k|            auto ts   = get<2>(subs);
 1007|  7.86k|            auto tail = get<3>(subs);
 1008|  7.86k|            IMMER_TRY {
  ------------------
  |  |   41|  7.86k|#define IMMER_TRY try
  ------------------
 1009|  7.86k|                if (next) {
  ------------------
  |  Branch (1009:21): [True: 3.71k, False: 4.14k]
  ------------------
 1010|  3.71k|                    if (mutate) {
  ------------------
  |  Branch (1010:25): [True: 2.72k, False: 993]
  ------------------
 1011|  2.72k|                        node->inner()[idx] = next;
 1012|  2.72k|                        pos.each_right(dec_visitor{}, idx + 1);
 1013|  2.72k|                        return std::make_tuple(pos.shift(), node, ts, tail);
 1014|  2.72k|                    } else {
 1015|    993|                        auto newn          = node_t::copy_inner_e(e, node, idx);
 1016|    993|                        newn->inner()[idx] = next;
 1017|    993|                        if (Mutating)
  ------------------
  |  Branch (1017:29): [Folded - Ignored]
  ------------------
 1018|    993|                            pos.visit(dec_visitor{});
 1019|    993|                        return std::make_tuple(pos.shift(), newn, ts, tail);
 1020|    993|                    }
 1021|  4.14k|                } else if (idx == 0) {
  ------------------
  |  Branch (1021:28): [True: 0, False: 4.14k]
  ------------------
 1022|      0|                    if (Mutating)
  ------------------
  |  Branch (1022:25): [Folded - Ignored]
  ------------------
 1023|      0|                        pos.visit(dec_right_visitor{}, count_t{1});
 1024|      0|                    return std::make_tuple(pos.shift(), nullptr, ts, tail);
 1025|  4.14k|                } else if (Collapse && idx == 1 && pos.shift() > BL) {
  ------------------
  |  Branch (1025:28): [Folded - Ignored]
  |  Branch (1025:40): [True: 3.59k, False: 556]
  |  Branch (1025:52): [True: 1.90k, False: 1.68k]
  ------------------
 1026|  1.90k|                    auto newn = pos.node()->inner()[0];
 1027|  1.90k|                    if (!mutate)
  ------------------
  |  Branch (1027:25): [True: 971, False: 932]
  ------------------
 1028|    971|                        newn->inc();
 1029|  1.90k|                    if (Mutating)
  ------------------
  |  Branch (1029:25): [Folded - Ignored]
  ------------------
 1030|  1.90k|                        pos.visit(dec_right_visitor{}, count_t{2});
 1031|  1.90k|                    return std::make_tuple(pos.shift() - B, newn, ts, tail);
 1032|  2.24k|                } else {
 1033|  2.24k|                    if (mutate) {
  ------------------
  |  Branch (1033:25): [True: 1.44k, False: 802]
  ------------------
 1034|  1.44k|                        pos.each_right(dec_visitor{}, idx + 1);
 1035|  1.44k|                        return std::make_tuple(pos.shift(), node, ts, tail);
 1036|  1.44k|                    } else {
 1037|    802|                        auto newn = node_t::copy_inner_e(e, node, idx);
 1038|    802|                        if (Mutating)
  ------------------
  |  Branch (1038:29): [Folded - Ignored]
  ------------------
 1039|    802|                            pos.visit(dec_visitor{});
 1040|    802|                        return std::make_tuple(pos.shift(), newn, ts, tail);
 1041|    802|                    }
 1042|  2.24k|                }
 1043|  7.86k|            }
 1044|  7.86k|            IMMER_CATCH (...) {
 1045|      0|                assert(!mutate);
 1046|      0|                assert(!next || pos.shift() > BL);
 1047|      0|                assert(tail);
 1048|      0|                if (next)
  ------------------
  |  Branch (1048:21): [True: 0, False: 0]
  ------------------
 1049|      0|                    dec_regular(next, pos.shift() - B, last + 1 - ts);
 1050|      0|                dec_leaf(tail, ts);
 1051|      0|                IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1052|      0|            }
 1053|  7.86k|        }
 1054|  14.5k|    }
_ZN5immer6detail4rbts23slice_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb1ELb1EE10visit_leafIRNS1_13full_leaf_posISC_EEEENSt3__15tupleIJjPSC_jSK_EEEOT_mNSA_5applyIS7_E4type4editE:
 1058|  1.35k|    {
 1059|  1.35k|        auto old_tail_size = pos.count();
 1060|  1.35k|        auto new_tail_size = pos.index(last) + 1;
 1061|  1.35k|        auto node          = pos.node();
 1062|  1.35k|        auto mutate        = Mutating && node->can_mutate(e);
  ------------------
  |  Branch (1062:30): [Folded - Ignored]
  |  Branch (1062:42): [True: 738, False: 618]
  ------------------
 1063|  1.35k|        if (new_tail_size == old_tail_size) {
  ------------------
  |  Branch (1063:13): [True: 395, False: 961]
  ------------------
 1064|    395|            if (!Mutating)
  ------------------
  |  Branch (1064:17): [Folded - Ignored]
  ------------------
 1065|      0|                node->inc();
 1066|    395|            return std::make_tuple(0, nullptr, new_tail_size, node);
 1067|    961|        } else if (mutate) {
  ------------------
  |  Branch (1067:20): [True: 536, False: 425]
  ------------------
 1068|    536|            detail::destroy_n(node->leaf() + new_tail_size,
 1069|    536|                              old_tail_size - new_tail_size);
 1070|    536|            return std::make_tuple(0, nullptr, new_tail_size, node);
 1071|    536|        } else {
 1072|    425|            auto new_tail = node_t::copy_leaf_e(e, node, new_tail_size);
 1073|    425|            if (Mutating)
  ------------------
  |  Branch (1073:17): [Folded - Ignored]
  ------------------
 1074|    425|                pos.visit(dec_visitor{});
 1075|    425|            return std::make_tuple(0, nullptr, new_tail_size, new_tail);
 1076|    425|        }
 1077|  1.35k|    }
_ZN5immer6detail4rbts23slice_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb1ELb1EE13visit_regularIRNS1_8full_posISC_EEEENSt3__15tupleIJjPSC_jSK_EEEOT_mNSA_5applyIS7_E4type4editE:
  990|  2.89k|    {
  991|  2.89k|        auto idx    = pos.index(last);
  992|  2.89k|        auto node   = pos.node();
  993|  2.89k|        auto mutate = Mutating && node->can_mutate(e);
  ------------------
  |  Branch (993:23): [Folded - Ignored]
  |  Branch (993:35): [True: 2.11k, False: 786]
  ------------------
  994|  2.89k|        if (Collapse && idx == 0) {
  ------------------
  |  Branch (994:13): [Folded - Ignored]
  |  Branch (994:25): [True: 1.34k, False: 1.55k]
  ------------------
  995|  1.34k|            auto res = mutate ? pos.towards_oh(this_t{}, last, idx, e)
  ------------------
  |  Branch (995:24): [True: 1.13k, False: 203]
  ------------------
  996|  1.34k|                              : pos.towards_oh(no_mut_t{}, last, idx, e);
  997|  1.34k|            if (Mutating)
  ------------------
  |  Branch (997:17): [Folded - Ignored]
  ------------------
  998|  1.34k|                pos.visit(dec_right_visitor{}, count_t{1});
  999|  1.34k|            return res;
 1000|  1.55k|        } else {
 1001|  1.55k|            using std::get;
 1002|  1.55k|            auto subs =
 1003|  1.55k|                mutate ? pos.towards_oh(no_collapse_t{}, last, idx, e)
  ------------------
  |  Branch (1003:17): [True: 971, False: 583]
  ------------------
 1004|  1.55k|                       : pos.towards_oh(no_collapse_no_mut_t{}, last, idx, e);
 1005|  1.55k|            auto next = get<1>(subs);
 1006|  1.55k|            auto ts   = get<2>(subs);
 1007|  1.55k|            auto tail = get<3>(subs);
 1008|  1.55k|            IMMER_TRY {
  ------------------
  |  |   41|  1.55k|#define IMMER_TRY try
  ------------------
 1009|  1.55k|                if (next) {
  ------------------
  |  Branch (1009:21): [True: 688, False: 866]
  ------------------
 1010|    688|                    if (mutate) {
  ------------------
  |  Branch (1010:25): [True: 494, False: 194]
  ------------------
 1011|    494|                        node->inner()[idx] = next;
 1012|    494|                        pos.each_right(dec_visitor{}, idx + 1);
 1013|    494|                        return std::make_tuple(pos.shift(), node, ts, tail);
 1014|    494|                    } else {
 1015|    194|                        auto newn          = node_t::copy_inner_e(e, node, idx);
 1016|    194|                        newn->inner()[idx] = next;
 1017|    194|                        if (Mutating)
  ------------------
  |  Branch (1017:29): [Folded - Ignored]
  ------------------
 1018|    194|                            pos.visit(dec_visitor{});
 1019|    194|                        return std::make_tuple(pos.shift(), newn, ts, tail);
 1020|    194|                    }
 1021|    866|                } else if (idx == 0) {
  ------------------
  |  Branch (1021:28): [True: 0, False: 866]
  ------------------
 1022|      0|                    if (Mutating)
  ------------------
  |  Branch (1022:25): [Folded - Ignored]
  ------------------
 1023|      0|                        pos.visit(dec_right_visitor{}, count_t{1});
 1024|      0|                    return std::make_tuple(pos.shift(), nullptr, ts, tail);
 1025|    866|                } else if (Collapse && idx == 1 && pos.shift() > BL) {
  ------------------
  |  Branch (1025:28): [Folded - Ignored]
  |  Branch (1025:40): [True: 645, False: 221]
  |  Branch (1025:52): [True: 243, False: 402]
  ------------------
 1026|    243|                    auto newn = pos.node()->inner()[0];
 1027|    243|                    if (!mutate)
  ------------------
  |  Branch (1027:25): [True: 193, False: 50]
  ------------------
 1028|    193|                        newn->inc();
 1029|    243|                    if (Mutating)
  ------------------
  |  Branch (1029:25): [Folded - Ignored]
  ------------------
 1030|    243|                        pos.visit(dec_right_visitor{}, count_t{2});
 1031|    243|                    return std::make_tuple(pos.shift() - B, newn, ts, tail);
 1032|    623|                } else {
 1033|    623|                    if (mutate) {
  ------------------
  |  Branch (1033:25): [True: 427, False: 196]
  ------------------
 1034|    427|                        pos.each_right(dec_visitor{}, idx + 1);
 1035|    427|                        return std::make_tuple(pos.shift(), node, ts, tail);
 1036|    427|                    } else {
 1037|    196|                        auto newn = node_t::copy_inner_e(e, node, idx);
 1038|    196|                        if (Mutating)
  ------------------
  |  Branch (1038:29): [Folded - Ignored]
  ------------------
 1039|    196|                            pos.visit(dec_visitor{});
 1040|    196|                        return std::make_tuple(pos.shift(), newn, ts, tail);
 1041|    196|                    }
 1042|    623|                }
 1043|  1.55k|            }
 1044|  1.55k|            IMMER_CATCH (...) {
 1045|      0|                assert(!mutate);
 1046|      0|                assert(!next || pos.shift() > BL);
 1047|      0|                assert(tail);
 1048|      0|                if (next)
  ------------------
  |  Branch (1048:21): [True: 0, False: 0]
  ------------------
 1049|      0|                    dec_regular(next, pos.shift() - B, last + 1 - ts);
 1050|      0|                dec_leaf(tail, ts);
 1051|      0|                IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1052|      0|            }
 1053|  1.55k|        }
 1054|  2.89k|    }
_ZN5immer6detail4rbts23slice_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb1ELb1EE10visit_leafIRNS1_8leaf_posISC_EEEENSt3__15tupleIJjPSC_jSK_EEEOT_mNSA_5applyIS7_E4type4editE:
 1058|    844|    {
 1059|    844|        auto old_tail_size = pos.count();
 1060|    844|        auto new_tail_size = pos.index(last) + 1;
 1061|    844|        auto node          = pos.node();
 1062|    844|        auto mutate        = Mutating && node->can_mutate(e);
  ------------------
  |  Branch (1062:30): [Folded - Ignored]
  |  Branch (1062:42): [True: 642, False: 202]
  ------------------
 1063|    844|        if (new_tail_size == old_tail_size) {
  ------------------
  |  Branch (1063:13): [True: 386, False: 458]
  ------------------
 1064|    386|            if (!Mutating)
  ------------------
  |  Branch (1064:17): [Folded - Ignored]
  ------------------
 1065|      0|                node->inc();
 1066|    386|            return std::make_tuple(0, nullptr, new_tail_size, node);
 1067|    458|        } else if (mutate) {
  ------------------
  |  Branch (1067:20): [True: 262, False: 196]
  ------------------
 1068|    262|            detail::destroy_n(node->leaf() + new_tail_size,
 1069|    262|                              old_tail_size - new_tail_size);
 1070|    262|            return std::make_tuple(0, nullptr, new_tail_size, node);
 1071|    262|        } else {
 1072|    196|            auto new_tail = node_t::copy_leaf_e(e, node, new_tail_size);
 1073|    196|            if (Mutating)
  ------------------
  |  Branch (1073:17): [Folded - Ignored]
  ------------------
 1074|    196|                pos.visit(dec_visitor{});
 1075|    196|            return std::make_tuple(0, nullptr, new_tail_size, new_tail);
 1076|    196|        }
 1077|    844|    }
_ZN5immer6detail4rbts16concat_trees_mutINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEENS1_11relaxed_posIT_EENSt3__15decayISE_E4type6node_t6edit_tESJ_PSE_jSJ_SK_jm:
 2493|  7.93k|{
 2494|  7.93k|    return make_singleton_regular_sub_pos(ltail, ltcount)
 2495|  7.93k|        .visit(concat_trees_left_mut_visitor<Node>{},
 2496|  7.93k|               ec,
 2497|  7.93k|               el,
 2498|  7.93k|               empty_leaf_pos<Node>{},
 2499|  7.93k|               er,
 2500|  7.93k|               rroot,
 2501|  7.93k|               rshift,
 2502|  7.93k|               rsize)
 2503|  7.93k|        .realize_e(ec);
 2504|  7.93k|}
_ZN5immer6detail4rbts29concat_trees_left_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10visit_nodeIRNS1_25singleton_regular_sub_posISC_EENS1_14empty_leaf_posISC_EEJRPSC_RjRmEEENS1_17concat_center_posISC_EEOT_NSA_5applyIS7_E4type4editESV_OT0_SV_DpOT1_:
 2446|  7.93k|    {
 2447|  7.93k|        return visit_maybe_relaxed_sub(args...,
 2448|  7.93k|                                       concat_trees_right_mut_visitor<Node>{},
 2449|  7.93k|                                       ec,
 2450|  7.93k|                                       el,
 2451|  7.93k|                                       lpos,
 2452|  7.93k|                                       tpos,
 2453|  7.93k|                                       er);
 2454|  7.93k|    }
_ZN5immer6detail4rbts30concat_trees_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10visit_nodeIRNS1_11relaxed_posISC_EERNS1_25singleton_regular_sub_posISC_EERNS1_14empty_leaf_posISC_EEEENS1_17concat_center_posISC_EEOT_NSA_5applyIS7_E4type4editESV_OT0_OT1_SV_:
 2427|  4.20k|    {
 2428|  4.20k|        return concat_inners_mut<Node>(ec, el, lpos, tpos, er, rpos);
 2429|  4.20k|    }
_ZN5immer6detail4rbts17concat_inners_mutINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEERNS1_25singleton_regular_sub_posISC_EERNS1_14empty_leaf_posISC_EERNS1_11relaxed_posISC_EEEENS1_17concat_center_posIT_EENSt3__15decayISN_E4type6node_t6edit_tESS_OT0_OT1_SS_OT2_:
 2328|  18.6k|{
 2329|  18.6k|    auto lshift = lpos.shift();
 2330|  18.6k|    auto rshift = rpos.shift();
 2331|       |    // lpos.node() can be null it is a singleton_regular_sub_pos<...>,
 2332|       |    // this is, when the tree is just a tail...
 2333|  18.6k|    if (lshift > rshift) {
  ------------------
  |  Branch (2333:9): [True: 0, False: 18.6k]
  ------------------
 2334|      0|        auto cpos = lpos.last_sub(
 2335|      0|            concat_left_mut_visitor<Node>{}, ec, el, tpos, er, rpos);
 2336|      0|        return concat_rebalance_mut<Node>(
 2337|      0|            ec, el, lpos, cpos, er, null_sub_pos{});
 2338|  18.6k|    } else if (lshift < rshift) {
  ------------------
  |  Branch (2338:16): [True: 14.7k, False: 3.92k]
  ------------------
 2339|  14.7k|        auto cpos = rpos.first_sub(
 2340|  14.7k|            concat_right_mut_visitor<Node>{}, ec, el, lpos, tpos, er);
 2341|  14.7k|        return concat_rebalance_mut<Node>(
 2342|  14.7k|            ec, el, null_sub_pos{}, cpos, er, rpos);
 2343|  14.7k|    } else {
 2344|  3.92k|        assert(lshift == rshift);
 2345|      0|        assert(Node::bits_leaf == 0u || lshift > 0);
 2346|      0|        auto cpos = lpos.last_sub(
 2347|  3.92k|            concat_both_mut_visitor<Node>{}, ec, el, tpos, er, rpos);
 2348|  3.92k|        return concat_rebalance_mut<Node>(ec, el, lpos, cpos, er, rpos);
 2349|  3.92k|    }
 2350|  18.6k|}
_ZN5immer6detail4rbts17concat_merger_mutINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEC2ENSA_5applyIS7_E4type4editEjPjjSH_PSC_:
 2039|   557k|    {
 2040|   557k|        if (candidate) {
  ------------------
  |  Branch (2040:13): [True: 124k, False: 433k]
  ------------------
 2041|   124k|            candidate->ensure_mutable_relaxed_e(candidate_e, ec);
 2042|   124k|            result_.nodes_[0] = candidate;
 2043|   433k|        } else {
 2044|   433k|            result_.nodes_[0] = node_t::make_inner_r_e(ec);
 2045|   433k|        }
 2046|   557k|    }
_ZN5immer6detail4rbts17concat_center_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE8each_subINS1_25concat_merger_mut_visitorEJRNS1_17concat_merger_mutISC_EERNSA_5applyIS7_E4type4editEEEEvT_DpOT0_:
 1508|   557k|    {
 1509|   557k|        if (shift_ == BL) {
  ------------------
  |  Branch (1509:13): [True: 80.3k, False: 477k]
  ------------------
 1510|  80.3k|            auto s = size_t{};
 1511|   313k|            for (auto i = count_t{0}; i < count_; ++i) {
  ------------------
  |  Branch (1511:39): [True: 233k, False: 80.3k]
  ------------------
 1512|   233k|                make_leaf_sub_pos(nodes_[i], sizes_[i] - s).visit(v, args...);
 1513|   233k|                s = sizes_[i];
 1514|   233k|            }
 1515|   477k|        } else {
 1516|  1.24M|            for (auto i = count_t{0}; i < count_; ++i)
  ------------------
  |  Branch (1516:39): [True: 769k, False: 477k]
  ------------------
 1517|   769k|                make_relaxed_pos(nodes_[i], shift_ - B, nodes_[i]->relaxed())
 1518|   769k|                    .visit(v, args...);
 1519|   477k|        }
 1520|   557k|    }
_ZN5immer6detail4rbts25concat_merger_mut_visitor10visit_leafIRNS1_12leaf_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEENS1_17concat_merger_mutISE_EEEEvOT_RT0_NSt3__15decayISJ_E4type6node_t6edit_tE:
 2222|   435k|    {
 2223|   435k|        merger.merge_leaf(p, e);
 2224|   435k|    }
_ZN5immer6detail4rbts17concat_merger_mutINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10merge_leafIRNS1_12leaf_sub_posISC_EEEEvOT_NSA_5applyIS7_E4type4editE:
 2092|   435k|    {
 2093|   435k|        auto from       = p.node();
 2094|   435k|        auto from_size  = p.size();
 2095|   435k|        auto from_count = p.count();
 2096|   435k|        assert(from);
 2097|      0|        assert(from_size);
 2098|   435k|        if (!to_ && *curr_ == from_count) {
  ------------------
  |  Branch (2098:13): [True: 400k, False: 34.7k]
  |  Branch (2098:21): [True: 385k, False: 15.2k]
  ------------------
 2099|   385k|            add_child(from, from_size);
 2100|   385k|        } else {
 2101|  50.0k|            auto from_offset = count_t{};
 2102|  50.0k|            auto from_data   = from->leaf();
 2103|  50.0k|            auto from_mutate = from->can_mutate(e);
 2104|  68.5k|            do {
 2105|  68.5k|                if (!to_) {
  ------------------
  |  Branch (2105:21): [True: 33.7k, False: 34.7k]
  ------------------
 2106|  33.7k|                    if (from_mutate) {
  ------------------
  |  Branch (2106:25): [True: 1.42k, False: 32.2k]
  ------------------
 2107|  1.42k|                        node_t::ownee(from) = ec_;
 2108|  1.42k|                        to_                 = from->inc();
 2109|  1.42k|                        assert(from_count);
 2110|  32.2k|                    } else {
 2111|  32.2k|                        to_ = node_t::make_leaf_e(ec_);
 2112|  32.2k|                    }
 2113|      0|                    to_offset_ = 0;
 2114|  33.7k|                }
 2115|      0|                auto data = to_->leaf();
 2116|  68.5k|                auto to_copy =
 2117|  68.5k|                    std::min(from_count - from_offset, *curr_ - to_offset_);
 2118|  68.5k|                if (from == to_) {
  ------------------
  |  Branch (2118:21): [True: 1.42k, False: 67.0k]
  ------------------
 2119|  1.42k|                    if (from_offset != to_offset_)
  ------------------
  |  Branch (2119:25): [True: 382, False: 1.03k]
  ------------------
 2120|    382|                        std::move(from_data + from_offset,
 2121|    382|                                  from_data + from_offset + to_copy,
 2122|    382|                                  data + to_offset_);
 2123|  67.0k|                } else {
 2124|  67.0k|                    if (!from_mutate)
  ------------------
  |  Branch (2124:25): [True: 66.1k, False: 944]
  ------------------
 2125|  66.1k|                        detail::uninitialized_copy(from_data + from_offset,
 2126|  66.1k|                                                   from_data + from_offset +
 2127|  66.1k|                                                       to_copy,
 2128|  66.1k|                                                   data + to_offset_);
 2129|    944|                    else
 2130|    944|                        detail::uninitialized_move(from_data + from_offset,
 2131|    944|                                                   from_data + from_offset +
 2132|    944|                                                       to_copy,
 2133|    944|                                                   data + to_offset_);
 2134|  67.0k|                }
 2135|  68.5k|                to_offset_ += to_copy;
 2136|  68.5k|                from_offset += to_copy;
 2137|  68.5k|                if (*curr_ == to_offset_) {
  ------------------
  |  Branch (2137:21): [True: 33.7k, False: 34.7k]
  ------------------
 2138|  33.7k|                    add_child(to_, to_offset_);
 2139|  33.7k|                    to_ = nullptr;
 2140|  33.7k|                }
 2141|  68.5k|            } while (from_offset != from_count);
  ------------------
  |  Branch (2141:22): [True: 18.4k, False: 50.0k]
  ------------------
 2142|  50.0k|        }
 2143|   435k|    }
_ZN5immer6detail4rbts17concat_merger_mutINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE9add_childEPSC_m:
 2059|  2.55M|    {
 2060|  2.55M|        assert(size);
 2061|      0|        ++curr_;
 2062|  2.55M|        auto parent  = result_.nodes_[result_.count_ - 1];
 2063|  2.55M|        auto relaxed = parent->relaxed();
 2064|  2.55M|        if (count_ == branches<B>) {
  ------------------
  |  Branch (2064:13): [True: 306k, False: 2.25M]
  ------------------
 2065|   306k|            parent->relaxed()->d.count = count_;
 2066|   306k|            assert(result_.count_ < result_t::max_children);
 2067|      0|            n_ -= branches<B>;
 2068|   306k|            if (candidate_) {
  ------------------
  |  Branch (2068:17): [True: 18.8k, False: 288k]
  ------------------
 2069|  18.8k|                parent = candidate_;
 2070|  18.8k|                parent->ensure_mutable_relaxed_e(candidate_e_, ec_);
 2071|  18.8k|                candidate_ = nullptr;
 2072|  18.8k|            } else
 2073|   288k|                parent = node_t::make_inner_r_e(ec_);
 2074|   306k|            count_                         = 0;
 2075|   306k|            relaxed                        = parent->relaxed();
 2076|   306k|            result_.nodes_[result_.count_] = parent;
 2077|   306k|            result_.sizes_[result_.count_] = result_.sizes_[result_.count_ - 1];
 2078|   306k|            assert(result_.sizes_[result_.count_]);
 2079|      0|            ++result_.count_;
 2080|   306k|        }
 2081|      0|        auto idx = count_++;
 2082|  2.55M|        result_.sizes_[result_.count_ - 1] += size;
 2083|  2.55M|        assert(size);
 2084|      0|        assert(result_.sizes_[result_.count_ - 1]);
 2085|  2.55M|        relaxed->d.sizes[idx] = size + (idx ? relaxed->d.sizes[idx - 1] : 0);
  ------------------
  |  Branch (2085:41): [True: 1.69M, False: 864k]
  ------------------
 2086|  2.55M|        assert(relaxed->d.sizes[idx]);
 2087|      0|        parent->inner()[idx] = p;
 2088|  2.55M|    };
_ZN5immer6detail4rbts25concat_merger_mut_visitor11visit_innerIRNS1_11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEENS1_17concat_merger_mutISE_EEEEvOT_RT0_NSt3__15decayISJ_E4type6node_t6edit_tE:
 2216|  1.82M|    {
 2217|  1.82M|        merger.merge_inner(p, e);
 2218|  1.82M|    }
_ZN5immer6detail4rbts17concat_merger_mutINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE11merge_innerIRNS1_11relaxed_posISC_EEEEvOT_NSA_5applyIS7_E4type4editE:
 2147|  1.82M|    {
 2148|  1.82M|        auto from       = p.node();
 2149|  1.82M|        auto from_size  = p.size();
 2150|  1.82M|        auto from_count = p.count();
 2151|  1.82M|        assert(from_size);
 2152|  1.82M|        if (!to_ && *curr_ == from_count) {
  ------------------
  |  Branch (2152:13): [True: 1.75M, False: 65.1k]
  |  Branch (2152:21): [True: 1.71M, False: 45.1k]
  ------------------
 2153|  1.71M|            add_child(from, from_size);
 2154|  1.71M|        } else {
 2155|   110k|            auto from_offset = count_t{};
 2156|   110k|            auto from_data   = from->inner();
 2157|   110k|            auto from_mutate = from->can_relax() && from->can_mutate(e);
  ------------------
  |  Branch (2157:32): [True: 110k, False: 0]
  |  Branch (2157:53): [True: 64.2k, False: 46.0k]
  ------------------
 2158|   129k|            do {
 2159|   129k|                if (!to_) {
  ------------------
  |  Branch (2159:21): [True: 64.1k, False: 65.1k]
  ------------------
 2160|  64.1k|                    if (from_mutate) {
  ------------------
  |  Branch (2160:25): [True: 43.0k, False: 21.0k]
  ------------------
 2161|  43.0k|                        node_t::ownee(from) = ec_;
 2162|  43.0k|                        from->ensure_mutable_relaxed_e(e, ec_);
 2163|  43.0k|                        to_ = from;
 2164|  43.0k|                    } else {
 2165|  21.0k|                        to_ = node_t::make_inner_r_e(ec_);
 2166|  21.0k|                    }
 2167|  64.1k|                    to_offset_ = 0;
 2168|  64.1k|                    to_size_   = 0;
 2169|  64.1k|                }
 2170|   129k|                auto data = to_->inner();
 2171|   129k|                auto to_copy =
 2172|   129k|                    std::min(from_count - from_offset, *curr_ - to_offset_);
 2173|   129k|                auto sizes = to_->relaxed()->d.sizes;
 2174|   129k|                if (from != to_ || from_offset != to_offset_) {
  ------------------
  |  Branch (2174:21): [True: 86.1k, False: 43.0k]
  |  Branch (2174:36): [True: 15.5k, False: 27.4k]
  ------------------
 2175|   101k|                    std::copy(from_data + from_offset,
 2176|   101k|                              from_data + from_offset + to_copy,
 2177|   101k|                              data + to_offset_);
 2178|   101k|                    p.copy_sizes(
 2179|   101k|                        from_offset, to_copy, to_size_, sizes + to_offset_);
 2180|   101k|                }
 2181|   129k|                to_offset_ += to_copy;
 2182|   129k|                from_offset += to_copy;
 2183|   129k|                to_size_ = sizes[to_offset_ - 1];
 2184|   129k|                if (*curr_ == to_offset_) {
  ------------------
  |  Branch (2184:21): [True: 64.1k, False: 65.1k]
  ------------------
 2185|  64.1k|                    to_->relaxed()->d.count = to_offset_;
 2186|  64.1k|                    add_child(to_, to_size_);
 2187|  64.1k|                    to_ = nullptr;
 2188|  64.1k|                }
 2189|   129k|            } while (from_offset != from_count);
  ------------------
  |  Branch (2189:22): [True: 18.9k, False: 110k]
  ------------------
 2190|   110k|        }
 2191|  1.82M|    }
_ZN5immer6detail4rbts17concat_merger_mutINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE13set_candidateENSA_5applyIS7_E4type4editEPSC_:
 2053|  44.1k|    {
 2054|  44.1k|        candidate_   = candidate;
 2055|  44.1k|        candidate_e_ = candidate_e;
 2056|  44.1k|    }
_ZNK5immer6detail4rbts17concat_merger_mutINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE6finishEv:
 2194|   557k|    {
 2195|   557k|        assert(!to_);
 2196|      0|        result_.nodes_[result_.count_ - 1]->relaxed()->d.count = count_;
 2197|   557k|        return result_;
 2198|   557k|    }
_ZN5immer6detail4rbts24concat_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE11visit_innerIRNS1_11relaxed_posISC_EERNS1_25singleton_regular_sub_posISC_EERNS1_14empty_leaf_posISC_EEEENS1_17concat_center_posISC_EEOT_NSA_5applyIS7_E4type4editESV_OT0_OT1_SV_:
 2382|  14.4k|    {
 2383|  14.4k|        return concat_inners_mut<Node>(ec, el, lpos, tpos, er, rpos);
 2384|  14.4k|    }
_ZN5immer6detail4rbts24concat_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE11visit_innerIRNS1_15regular_sub_posISC_EERNS1_25singleton_regular_sub_posISC_EERNS1_14empty_leaf_posISC_EEEENS1_17concat_center_posISC_EEOT_NSA_5applyIS7_E4type4editESV_OT0_OT1_SV_:
 2382|    278|    {
 2383|    278|        return concat_inners_mut<Node>(ec, el, lpos, tpos, er, rpos);
 2384|    278|    }
_ZN5immer6detail4rbts17concat_inners_mutINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEERNS1_25singleton_regular_sub_posISC_EERNS1_14empty_leaf_posISC_EERNS1_15regular_sub_posISC_EEEENS1_17concat_center_posIT_EENSt3__15decayISN_E4type6node_t6edit_tESS_OT0_OT1_SS_OT2_:
 2328|  4.00k|{
 2329|  4.00k|    auto lshift = lpos.shift();
 2330|  4.00k|    auto rshift = rpos.shift();
 2331|       |    // lpos.node() can be null it is a singleton_regular_sub_pos<...>,
 2332|       |    // this is, when the tree is just a tail...
 2333|  4.00k|    if (lshift > rshift) {
  ------------------
  |  Branch (2333:9): [True: 0, False: 4.00k]
  ------------------
 2334|      0|        auto cpos = lpos.last_sub(
 2335|      0|            concat_left_mut_visitor<Node>{}, ec, el, tpos, er, rpos);
 2336|      0|        return concat_rebalance_mut<Node>(
 2337|      0|            ec, el, lpos, cpos, er, null_sub_pos{});
 2338|  4.00k|    } else if (lshift < rshift) {
  ------------------
  |  Branch (2338:16): [True: 988, False: 3.02k]
  ------------------
 2339|    988|        auto cpos = rpos.first_sub(
 2340|    988|            concat_right_mut_visitor<Node>{}, ec, el, lpos, tpos, er);
 2341|    988|        return concat_rebalance_mut<Node>(
 2342|    988|            ec, el, null_sub_pos{}, cpos, er, rpos);
 2343|  3.02k|    } else {
 2344|  3.02k|        assert(lshift == rshift);
 2345|      0|        assert(Node::bits_leaf == 0u || lshift > 0);
 2346|      0|        auto cpos = lpos.last_sub(
 2347|  3.02k|            concat_both_mut_visitor<Node>{}, ec, el, tpos, er, rpos);
 2348|  3.02k|        return concat_rebalance_mut<Node>(ec, el, lpos, cpos, er, rpos);
 2349|  3.02k|    }
 2350|  4.00k|}
_ZN5immer6detail4rbts24concat_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE11visit_innerIRNS1_8full_posISC_EERNS1_25singleton_regular_sub_posISC_EERNS1_14empty_leaf_posISC_EEEENS1_17concat_center_posISC_EEOT_NSA_5applyIS7_E4type4editESV_OT0_OT1_SV_:
 2382|  1.72k|    {
 2383|  1.72k|        return concat_inners_mut<Node>(ec, el, lpos, tpos, er, rpos);
 2384|  1.72k|    }
_ZN5immer6detail4rbts17concat_inners_mutINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEERNS1_25singleton_regular_sub_posISC_EERNS1_14empty_leaf_posISC_EERNS1_8full_posISC_EEEENS1_17concat_center_posIT_EENSt3__15decayISN_E4type6node_t6edit_tESS_OT0_OT1_SS_OT2_:
 2328|  1.72k|{
 2329|  1.72k|    auto lshift = lpos.shift();
 2330|  1.72k|    auto rshift = rpos.shift();
 2331|       |    // lpos.node() can be null it is a singleton_regular_sub_pos<...>,
 2332|       |    // this is, when the tree is just a tail...
 2333|  1.72k|    if (lshift > rshift) {
  ------------------
  |  Branch (2333:9): [True: 0, False: 1.72k]
  ------------------
 2334|      0|        auto cpos = lpos.last_sub(
 2335|      0|            concat_left_mut_visitor<Node>{}, ec, el, tpos, er, rpos);
 2336|      0|        return concat_rebalance_mut<Node>(
 2337|      0|            ec, el, lpos, cpos, er, null_sub_pos{});
 2338|  1.72k|    } else if (lshift < rshift) {
  ------------------
  |  Branch (2338:16): [True: 734, False: 988]
  ------------------
 2339|    734|        auto cpos = rpos.first_sub(
 2340|    734|            concat_right_mut_visitor<Node>{}, ec, el, lpos, tpos, er);
 2341|    734|        return concat_rebalance_mut<Node>(
 2342|    734|            ec, el, null_sub_pos{}, cpos, er, rpos);
 2343|    988|    } else {
 2344|    988|        assert(lshift == rshift);
 2345|      0|        assert(Node::bits_leaf == 0u || lshift > 0);
 2346|      0|        auto cpos = lpos.last_sub(
 2347|    988|            concat_both_mut_visitor<Node>{}, ec, el, tpos, er, rpos);
 2348|    988|        return concat_rebalance_mut<Node>(ec, el, lpos, cpos, er, rpos);
 2349|    988|    }
 2350|  1.72k|}
_ZN5immer6detail4rbts20concat_rebalance_mutINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEENS1_12null_sub_posERNS1_17concat_center_posISC_EERNS1_8full_posISC_EEEENSE_IT_EENSt3__15decayISK_E4type6node_t6edit_tESP_OT0_OT1_SP_OT2_:
 2275|  1.17k|{
 2276|  1.17k|    auto plan = concat_rebalance_plan_mut<Node::bits, Node::bits_leaf>{};
 2277|  1.17k|    plan.fill(lpos, cpos, rpos);
 2278|  1.17k|    plan.shuffle(cpos.shift());
 2279|  1.17k|    return plan.merge(ec, el, lpos, cpos, er, rpos);
 2280|  1.17k|}
_ZN5immer6detail4rbts25concat_rebalance_plan_mutILj2ELj2EE5mergeIRNS1_12null_sub_posERNS1_17concat_center_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_8full_posISH_EEEENS7_INSt3__15decayIT0_E4type6node_tEEENSQ_4type6node_t6edit_tEST_OT_OSP_ST_OT1_:
 2239|  1.17k|    {
 2240|  1.17k|        using node_t    = node_type<CPos>;
 2241|  1.17k|        using merger_t  = concat_merger_mut<node_t>;
 2242|  1.17k|        using visitor_t = concat_merger_mut_visitor;
 2243|  1.17k|        auto lnode      = ((node_t*) lpos.node());
 2244|  1.17k|        auto rnode      = ((node_t*) rpos.node());
 2245|  1.17k|        auto lmut2      = lnode && lnode->can_relax() && lnode->can_mutate(el);
  ------------------
  |  Branch (2245:27): [True: 0, False: 1.17k]
  |  Branch (2245:36): [True: 0, False: 0]
  |  Branch (2245:58): [True: 0, False: 0]
  ------------------
 2246|  1.17k|        auto rmut2      = rnode && rnode->can_relax() && rnode->can_mutate(er);
  ------------------
  |  Branch (2246:27): [True: 1.17k, False: 0]
  |  Branch (2246:36): [True: 1.17k, False: 0]
  |  Branch (2246:58): [True: 220, False: 959]
  ------------------
 2247|  1.17k|        auto merger     = merger_t{ec,
 2248|  1.17k|                               cpos.shift(),
 2249|  1.17k|                               this->counts,
 2250|  1.17k|                               this->n,
 2251|  1.17k|                               el,
 2252|  1.17k|                               lmut2 ? lnode : nullptr};
  ------------------
  |  Branch (2252:32): [True: 0, False: 1.17k]
  ------------------
 2253|  1.17k|        IMMER_TRY {
  ------------------
  |  |   41|  1.17k|#define IMMER_TRY try
  ------------------
 2254|  1.17k|            lpos.each_left_sub(visitor_t{}, merger, el);
 2255|  1.17k|            cpos.each_sub(visitor_t{}, merger, ec);
 2256|  1.17k|            if (rmut2)
  ------------------
  |  Branch (2256:17): [True: 220, False: 959]
  ------------------
 2257|    220|                merger.set_candidate(er, rnode);
 2258|  1.17k|            rpos.each_right_sub(visitor_t{}, merger, er);
 2259|  1.17k|            return merger.finish();
 2260|  1.17k|        }
 2261|  1.17k|        IMMER_CATCH (...) {
 2262|      0|            merger.abort();
 2263|      0|            IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 2264|      0|        }
 2265|  1.17k|    }
_ZN5immer6detail4rbts25concat_merger_mut_visitor10visit_leafIRNS1_13full_leaf_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEENS1_17concat_merger_mutISE_EEEEvOT_RT0_NSt3__15decayISJ_E4type6node_t6edit_tE:
 2222|  61.9k|    {
 2223|  61.9k|        merger.merge_leaf(p, e);
 2224|  61.9k|    }
_ZN5immer6detail4rbts17concat_merger_mutINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10merge_leafIRNS1_13full_leaf_posISC_EEEEvOT_NSA_5applyIS7_E4type4editE:
 2092|  61.9k|    {
 2093|  61.9k|        auto from       = p.node();
 2094|  61.9k|        auto from_size  = p.size();
 2095|  61.9k|        auto from_count = p.count();
 2096|  61.9k|        assert(from);
 2097|      0|        assert(from_size);
 2098|  61.9k|        if (!to_ && *curr_ == from_count) {
  ------------------
  |  Branch (2098:13): [True: 61.9k, False: 0]
  |  Branch (2098:21): [True: 61.9k, False: 0]
  ------------------
 2099|  61.9k|            add_child(from, from_size);
 2100|  61.9k|        } else {
 2101|      0|            auto from_offset = count_t{};
 2102|      0|            auto from_data   = from->leaf();
 2103|      0|            auto from_mutate = from->can_mutate(e);
 2104|      0|            do {
 2105|      0|                if (!to_) {
  ------------------
  |  Branch (2105:21): [True: 0, False: 0]
  ------------------
 2106|      0|                    if (from_mutate) {
  ------------------
  |  Branch (2106:25): [True: 0, False: 0]
  ------------------
 2107|      0|                        node_t::ownee(from) = ec_;
 2108|      0|                        to_                 = from->inc();
 2109|      0|                        assert(from_count);
 2110|      0|                    } else {
 2111|      0|                        to_ = node_t::make_leaf_e(ec_);
 2112|      0|                    }
 2113|      0|                    to_offset_ = 0;
 2114|      0|                }
 2115|      0|                auto data = to_->leaf();
 2116|      0|                auto to_copy =
 2117|      0|                    std::min(from_count - from_offset, *curr_ - to_offset_);
 2118|      0|                if (from == to_) {
  ------------------
  |  Branch (2118:21): [True: 0, False: 0]
  ------------------
 2119|      0|                    if (from_offset != to_offset_)
  ------------------
  |  Branch (2119:25): [True: 0, False: 0]
  ------------------
 2120|      0|                        std::move(from_data + from_offset,
 2121|      0|                                  from_data + from_offset + to_copy,
 2122|      0|                                  data + to_offset_);
 2123|      0|                } else {
 2124|      0|                    if (!from_mutate)
  ------------------
  |  Branch (2124:25): [True: 0, False: 0]
  ------------------
 2125|      0|                        detail::uninitialized_copy(from_data + from_offset,
 2126|      0|                                                   from_data + from_offset +
 2127|      0|                                                       to_copy,
 2128|      0|                                                   data + to_offset_);
 2129|      0|                    else
 2130|      0|                        detail::uninitialized_move(from_data + from_offset,
 2131|      0|                                                   from_data + from_offset +
 2132|      0|                                                       to_copy,
 2133|      0|                                                   data + to_offset_);
 2134|      0|                }
 2135|      0|                to_offset_ += to_copy;
 2136|      0|                from_offset += to_copy;
 2137|      0|                if (*curr_ == to_offset_) {
  ------------------
  |  Branch (2137:21): [True: 0, False: 0]
  ------------------
 2138|      0|                    add_child(to_, to_offset_);
 2139|      0|                    to_ = nullptr;
 2140|      0|                }
 2141|      0|            } while (from_offset != from_count);
  ------------------
  |  Branch (2141:22): [True: 0, False: 0]
  ------------------
 2142|      0|        }
 2143|  61.9k|    }
_ZN5immer6detail4rbts25concat_merger_mut_visitor11visit_innerIRNS1_8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEENS1_17concat_merger_mutISE_EEEEvOT_RT0_NSt3__15decayISJ_E4type6node_t6edit_tE:
 2216|   242k|    {
 2217|   242k|        merger.merge_inner(p, e);
 2218|   242k|    }
_ZN5immer6detail4rbts17concat_merger_mutINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE11merge_innerIRNS1_8full_posISC_EEEEvOT_NSA_5applyIS7_E4type4editE:
 2147|   242k|    {
 2148|   242k|        auto from       = p.node();
 2149|   242k|        auto from_size  = p.size();
 2150|   242k|        auto from_count = p.count();
 2151|   242k|        assert(from_size);
 2152|   242k|        if (!to_ && *curr_ == from_count) {
  ------------------
  |  Branch (2152:13): [True: 242k, False: 0]
  |  Branch (2152:21): [True: 242k, False: 0]
  ------------------
 2153|   242k|            add_child(from, from_size);
 2154|   242k|        } else {
 2155|      0|            auto from_offset = count_t{};
 2156|      0|            auto from_data   = from->inner();
 2157|      0|            auto from_mutate = from->can_relax() && from->can_mutate(e);
  ------------------
  |  Branch (2157:32): [True: 0, False: 0]
  |  Branch (2157:53): [True: 0, False: 0]
  ------------------
 2158|      0|            do {
 2159|      0|                if (!to_) {
  ------------------
  |  Branch (2159:21): [True: 0, False: 0]
  ------------------
 2160|      0|                    if (from_mutate) {
  ------------------
  |  Branch (2160:25): [True: 0, False: 0]
  ------------------
 2161|      0|                        node_t::ownee(from) = ec_;
 2162|      0|                        from->ensure_mutable_relaxed_e(e, ec_);
 2163|      0|                        to_ = from;
 2164|      0|                    } else {
 2165|      0|                        to_ = node_t::make_inner_r_e(ec_);
 2166|      0|                    }
 2167|      0|                    to_offset_ = 0;
 2168|      0|                    to_size_   = 0;
 2169|      0|                }
 2170|      0|                auto data = to_->inner();
 2171|      0|                auto to_copy =
 2172|      0|                    std::min(from_count - from_offset, *curr_ - to_offset_);
 2173|      0|                auto sizes = to_->relaxed()->d.sizes;
 2174|      0|                if (from != to_ || from_offset != to_offset_) {
  ------------------
  |  Branch (2174:21): [True: 0, False: 0]
  |  Branch (2174:36): [True: 0, False: 0]
  ------------------
 2175|      0|                    std::copy(from_data + from_offset,
 2176|      0|                              from_data + from_offset + to_copy,
 2177|      0|                              data + to_offset_);
 2178|      0|                    p.copy_sizes(
 2179|      0|                        from_offset, to_copy, to_size_, sizes + to_offset_);
 2180|      0|                }
 2181|      0|                to_offset_ += to_copy;
 2182|      0|                from_offset += to_copy;
 2183|      0|                to_size_ = sizes[to_offset_ - 1];
 2184|      0|                if (*curr_ == to_offset_) {
  ------------------
  |  Branch (2184:21): [True: 0, False: 0]
  ------------------
 2185|      0|                    to_->relaxed()->d.count = to_offset_;
 2186|      0|                    add_child(to_, to_size_);
 2187|      0|                    to_ = nullptr;
 2188|      0|                }
 2189|      0|            } while (from_offset != from_count);
  ------------------
  |  Branch (2189:22): [True: 0, False: 0]
  ------------------
 2190|      0|        }
 2191|   242k|    }
_ZN5immer6detail4rbts23concat_both_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10visit_leafIRNS1_12leaf_sub_posISC_EERNS1_14empty_leaf_posISC_EERNS1_8full_posISC_EEEENS1_17concat_center_posISC_EEOT_NSA_5applyIS7_E4type4editESV_OT0_SV_OT1_:
 2411|    988|    {
 2412|    988|        return rpos.first_sub_leaf(
 2413|    988|            concat_right_mut_visitor<Node>{}, ec, el, lpos, tpos, er);
 2414|    988|    }
_ZN5immer6detail4rbts24concat_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10visit_leafIRNS1_13full_leaf_posISC_EERNS1_12leaf_sub_posISC_EERNS1_14empty_leaf_posISC_EEEENS1_17concat_center_posISC_EEOT_NSA_5applyIS7_E4type4editESV_OT0_OT1_SV_:
 2389|  4.00k|    {
 2390|  4.00k|        return concat_leafs_mut<Node>(ec, el, lpos, tpos, er, rpos);
 2391|  4.00k|    }
_ZN5immer6detail4rbts16concat_leafs_mutINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEERNS1_12leaf_sub_posISC_EERNS1_14empty_leaf_posISC_EERNS1_13full_leaf_posISC_EEEENS1_17concat_center_posIT_EENSt3__15decayISN_E4type6node_t6edit_tESS_OT0_OT1_SS_OT2_:
 2289|  4.00k|{
 2290|  4.00k|    static_assert(Node::bits >= 2, "");
 2291|  4.00k|    assert(lpos.shift() == tpos.shift());
 2292|      0|    assert(lpos.shift() == rpos.shift());
 2293|      0|    assert(lpos.shift() == 0);
 2294|  4.00k|    if (tpos.count() > 0)
  ------------------
  |  Branch (2294:9): [True: 0, False: 4.00k]
  ------------------
 2295|      0|        return {
 2296|      0|            Node::bits_leaf,
 2297|      0|            lpos.node(),
 2298|      0|            lpos.count(),
 2299|      0|            tpos.node(),
 2300|      0|            tpos.count(),
 2301|      0|            rpos.node(),
 2302|      0|            rpos.count(),
 2303|      0|        };
 2304|  4.00k|    else
 2305|  4.00k|        return {
 2306|  4.00k|            Node::bits_leaf,
 2307|  4.00k|            lpos.node(),
 2308|  4.00k|            lpos.count(),
 2309|  4.00k|            rpos.node(),
 2310|  4.00k|            rpos.count(),
 2311|  4.00k|        };
 2312|  4.00k|}
_ZN5immer6detail4rbts20concat_rebalance_mutINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEERNS1_25singleton_regular_sub_posISC_EERNS1_17concat_center_posISC_EERNS1_8full_posISC_EEEENSG_IT_EENSt3__15decayISM_E4type6node_t6edit_tESR_OT0_OT1_SR_OT2_:
 2275|    988|{
 2276|    988|    auto plan = concat_rebalance_plan_mut<Node::bits, Node::bits_leaf>{};
 2277|    988|    plan.fill(lpos, cpos, rpos);
 2278|    988|    plan.shuffle(cpos.shift());
 2279|    988|    return plan.merge(ec, el, lpos, cpos, er, rpos);
 2280|    988|}
_ZN5immer6detail4rbts25concat_rebalance_plan_mutILj2ELj2EE5mergeIRNS1_25singleton_regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_17concat_center_posISF_EERNS1_8full_posISF_EEEENSI_INSt3__15decayIT0_E4type6node_tEEENSR_4type6node_t6edit_tESU_OT_OSQ_SU_OT1_:
 2239|    988|    {
 2240|    988|        using node_t    = node_type<CPos>;
 2241|    988|        using merger_t  = concat_merger_mut<node_t>;
 2242|    988|        using visitor_t = concat_merger_mut_visitor;
 2243|    988|        auto lnode      = ((node_t*) lpos.node());
 2244|    988|        auto rnode      = ((node_t*) rpos.node());
 2245|    988|        auto lmut2      = lnode && lnode->can_relax() && lnode->can_mutate(el);
  ------------------
  |  Branch (2245:27): [True: 0, False: 988]
  |  Branch (2245:36): [True: 0, False: 0]
  |  Branch (2245:58): [True: 0, False: 0]
  ------------------
 2246|    988|        auto rmut2      = rnode && rnode->can_relax() && rnode->can_mutate(er);
  ------------------
  |  Branch (2246:27): [True: 988, False: 0]
  |  Branch (2246:36): [True: 988, False: 0]
  |  Branch (2246:58): [True: 360, False: 628]
  ------------------
 2247|    988|        auto merger     = merger_t{ec,
 2248|    988|                               cpos.shift(),
 2249|    988|                               this->counts,
 2250|    988|                               this->n,
 2251|    988|                               el,
 2252|    988|                               lmut2 ? lnode : nullptr};
  ------------------
  |  Branch (2252:32): [True: 0, False: 988]
  ------------------
 2253|    988|        IMMER_TRY {
  ------------------
  |  |   41|    988|#define IMMER_TRY try
  ------------------
 2254|    988|            lpos.each_left_sub(visitor_t{}, merger, el);
 2255|    988|            cpos.each_sub(visitor_t{}, merger, ec);
 2256|    988|            if (rmut2)
  ------------------
  |  Branch (2256:17): [True: 360, False: 628]
  ------------------
 2257|    360|                merger.set_candidate(er, rnode);
 2258|    988|            rpos.each_right_sub(visitor_t{}, merger, er);
 2259|    988|            return merger.finish();
 2260|    988|        }
 2261|    988|        IMMER_CATCH (...) {
 2262|      0|            merger.abort();
 2263|      0|            IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 2264|      0|        }
 2265|    988|    }
_ZN5immer6detail4rbts20concat_rebalance_mutINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEENS1_12null_sub_posERNS1_17concat_center_posISC_EERNS1_15regular_sub_posISC_EEEENSE_IT_EENSt3__15decayISK_E4type6node_t6edit_tESP_OT0_OT1_SP_OT2_:
 2275|  1.95k|{
 2276|  1.95k|    auto plan = concat_rebalance_plan_mut<Node::bits, Node::bits_leaf>{};
 2277|  1.95k|    plan.fill(lpos, cpos, rpos);
 2278|  1.95k|    plan.shuffle(cpos.shift());
 2279|  1.95k|    return plan.merge(ec, el, lpos, cpos, er, rpos);
 2280|  1.95k|}
_ZN5immer6detail4rbts25concat_rebalance_plan_mutILj2ELj2EE5mergeIRNS1_12null_sub_posERNS1_17concat_center_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_15regular_sub_posISH_EEEENS7_INSt3__15decayIT0_E4type6node_tEEENSQ_4type6node_t6edit_tEST_OT_OSP_ST_OT1_:
 2239|  1.95k|    {
 2240|  1.95k|        using node_t    = node_type<CPos>;
 2241|  1.95k|        using merger_t  = concat_merger_mut<node_t>;
 2242|  1.95k|        using visitor_t = concat_merger_mut_visitor;
 2243|  1.95k|        auto lnode      = ((node_t*) lpos.node());
 2244|  1.95k|        auto rnode      = ((node_t*) rpos.node());
 2245|  1.95k|        auto lmut2      = lnode && lnode->can_relax() && lnode->can_mutate(el);
  ------------------
  |  Branch (2245:27): [True: 0, False: 1.95k]
  |  Branch (2245:36): [True: 0, False: 0]
  |  Branch (2245:58): [True: 0, False: 0]
  ------------------
 2246|  1.95k|        auto rmut2      = rnode && rnode->can_relax() && rnode->can_mutate(er);
  ------------------
  |  Branch (2246:27): [True: 1.95k, False: 0]
  |  Branch (2246:36): [True: 1.95k, False: 0]
  |  Branch (2246:58): [True: 394, False: 1.56k]
  ------------------
 2247|  1.95k|        auto merger     = merger_t{ec,
 2248|  1.95k|                               cpos.shift(),
 2249|  1.95k|                               this->counts,
 2250|  1.95k|                               this->n,
 2251|  1.95k|                               el,
 2252|  1.95k|                               lmut2 ? lnode : nullptr};
  ------------------
  |  Branch (2252:32): [True: 0, False: 1.95k]
  ------------------
 2253|  1.95k|        IMMER_TRY {
  ------------------
  |  |   41|  1.95k|#define IMMER_TRY try
  ------------------
 2254|  1.95k|            lpos.each_left_sub(visitor_t{}, merger, el);
 2255|  1.95k|            cpos.each_sub(visitor_t{}, merger, ec);
 2256|  1.95k|            if (rmut2)
  ------------------
  |  Branch (2256:17): [True: 394, False: 1.56k]
  ------------------
 2257|    394|                merger.set_candidate(er, rnode);
 2258|  1.95k|            rpos.each_right_sub(visitor_t{}, merger, er);
 2259|  1.95k|            return merger.finish();
 2260|  1.95k|        }
 2261|  1.95k|        IMMER_CATCH (...) {
 2262|      0|            merger.abort();
 2263|      0|            IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 2264|      0|        }
 2265|  1.95k|    }
_ZN5immer6detail4rbts25concat_merger_mut_visitor11visit_innerIRNS1_15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEENS1_17concat_merger_mutISE_EEEEvOT_RT0_NSt3__15decayISJ_E4type6node_t6edit_tE:
 2216|  56.4k|    {
 2217|  56.4k|        merger.merge_inner(p, e);
 2218|  56.4k|    }
_ZN5immer6detail4rbts17concat_merger_mutINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE11merge_innerIRNS1_15regular_sub_posISC_EEEEvOT_NSA_5applyIS7_E4type4editE:
 2147|  56.4k|    {
 2148|  56.4k|        auto from       = p.node();
 2149|  56.4k|        auto from_size  = p.size();
 2150|  56.4k|        auto from_count = p.count();
 2151|  56.4k|        assert(from_size);
 2152|  56.4k|        if (!to_ && *curr_ == from_count) {
  ------------------
  |  Branch (2152:13): [True: 55.6k, False: 832]
  |  Branch (2152:21): [True: 55.6k, False: 0]
  ------------------
 2153|  55.6k|            add_child(from, from_size);
 2154|  55.6k|        } else {
 2155|    832|            auto from_offset = count_t{};
 2156|    832|            auto from_data   = from->inner();
 2157|    832|            auto from_mutate = from->can_relax() && from->can_mutate(e);
  ------------------
  |  Branch (2157:32): [True: 832, False: 0]
  |  Branch (2157:53): [True: 198, False: 634]
  ------------------
 2158|  1.66k|            do {
 2159|  1.66k|                if (!to_) {
  ------------------
  |  Branch (2159:21): [True: 832, False: 832]
  ------------------
 2160|    832|                    if (from_mutate) {
  ------------------
  |  Branch (2160:25): [True: 198, False: 634]
  ------------------
 2161|    198|                        node_t::ownee(from) = ec_;
 2162|    198|                        from->ensure_mutable_relaxed_e(e, ec_);
 2163|    198|                        to_ = from;
 2164|    634|                    } else {
 2165|    634|                        to_ = node_t::make_inner_r_e(ec_);
 2166|    634|                    }
 2167|    832|                    to_offset_ = 0;
 2168|    832|                    to_size_   = 0;
 2169|    832|                }
 2170|  1.66k|                auto data = to_->inner();
 2171|  1.66k|                auto to_copy =
 2172|  1.66k|                    std::min(from_count - from_offset, *curr_ - to_offset_);
 2173|  1.66k|                auto sizes = to_->relaxed()->d.sizes;
 2174|  1.66k|                if (from != to_ || from_offset != to_offset_) {
  ------------------
  |  Branch (2174:21): [True: 1.46k, False: 198]
  |  Branch (2174:36): [True: 198, False: 0]
  ------------------
 2175|  1.66k|                    std::copy(from_data + from_offset,
 2176|  1.66k|                              from_data + from_offset + to_copy,
 2177|  1.66k|                              data + to_offset_);
 2178|  1.66k|                    p.copy_sizes(
 2179|  1.66k|                        from_offset, to_copy, to_size_, sizes + to_offset_);
 2180|  1.66k|                }
 2181|  1.66k|                to_offset_ += to_copy;
 2182|  1.66k|                from_offset += to_copy;
 2183|  1.66k|                to_size_ = sizes[to_offset_ - 1];
 2184|  1.66k|                if (*curr_ == to_offset_) {
  ------------------
  |  Branch (2184:21): [True: 832, False: 832]
  ------------------
 2185|    832|                    to_->relaxed()->d.count = to_offset_;
 2186|    832|                    add_child(to_, to_size_);
 2187|    832|                    to_ = nullptr;
 2188|    832|                }
 2189|  1.66k|            } while (from_offset != from_count);
  ------------------
  |  Branch (2189:22): [True: 832, False: 832]
  ------------------
 2190|    832|        }
 2191|  56.4k|    }
_ZN5immer6detail4rbts23concat_both_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10visit_leafIRNS1_12leaf_sub_posISC_EERNS1_14empty_leaf_posISC_EERNS1_15regular_sub_posISC_EEEENS1_17concat_center_posISC_EEOT_NSA_5applyIS7_E4type4editESV_OT0_SV_OT1_:
 2411|  3.02k|    {
 2412|  3.02k|        return rpos.first_sub_leaf(
 2413|  3.02k|            concat_right_mut_visitor<Node>{}, ec, el, lpos, tpos, er);
 2414|  3.02k|    }
_ZN5immer6detail4rbts24concat_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10visit_leafIRNS1_12leaf_sub_posISC_EESH_RNS1_14empty_leaf_posISC_EEEENS1_17concat_center_posISC_EEOT_NSA_5applyIS7_E4type4editESS_OT0_OT1_SS_:
 2389|  3.92k|    {
 2390|  3.92k|        return concat_leafs_mut<Node>(ec, el, lpos, tpos, er, rpos);
 2391|  3.92k|    }
_ZN5immer6detail4rbts16concat_leafs_mutINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEERNS1_12leaf_sub_posISC_EERNS1_14empty_leaf_posISC_EESF_EENS1_17concat_center_posIT_EENSt3__15decayISK_E4type6node_t6edit_tESP_OT0_OT1_SP_OT2_:
 2289|  3.92k|{
 2290|  3.92k|    static_assert(Node::bits >= 2, "");
 2291|  3.92k|    assert(lpos.shift() == tpos.shift());
 2292|      0|    assert(lpos.shift() == rpos.shift());
 2293|      0|    assert(lpos.shift() == 0);
 2294|  3.92k|    if (tpos.count() > 0)
  ------------------
  |  Branch (2294:9): [True: 0, False: 3.92k]
  ------------------
 2295|      0|        return {
 2296|      0|            Node::bits_leaf,
 2297|      0|            lpos.node(),
 2298|      0|            lpos.count(),
 2299|      0|            tpos.node(),
 2300|      0|            tpos.count(),
 2301|      0|            rpos.node(),
 2302|      0|            rpos.count(),
 2303|      0|        };
 2304|  3.92k|    else
 2305|  3.92k|        return {
 2306|  3.92k|            Node::bits_leaf,
 2307|  3.92k|            lpos.node(),
 2308|  3.92k|            lpos.count(),
 2309|  3.92k|            rpos.node(),
 2310|  3.92k|            rpos.count(),
 2311|  3.92k|        };
 2312|  3.92k|}
_ZN5immer6detail4rbts20concat_rebalance_mutINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEERNS1_25singleton_regular_sub_posISC_EERNS1_17concat_center_posISC_EERNS1_15regular_sub_posISC_EEEENSG_IT_EENSt3__15decayISM_E4type6node_t6edit_tESR_OT0_OT1_SR_OT2_:
 2275|  3.02k|{
 2276|  3.02k|    auto plan = concat_rebalance_plan_mut<Node::bits, Node::bits_leaf>{};
 2277|  3.02k|    plan.fill(lpos, cpos, rpos);
 2278|  3.02k|    plan.shuffle(cpos.shift());
 2279|  3.02k|    return plan.merge(ec, el, lpos, cpos, er, rpos);
 2280|  3.02k|}
_ZN5immer6detail4rbts25concat_rebalance_plan_mutILj2ELj2EE5mergeIRNS1_25singleton_regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_17concat_center_posISF_EERNS1_15regular_sub_posISF_EEEENSI_INSt3__15decayIT0_E4type6node_tEEENSR_4type6node_t6edit_tESU_OT_OSQ_SU_OT1_:
 2239|  3.02k|    {
 2240|  3.02k|        using node_t    = node_type<CPos>;
 2241|  3.02k|        using merger_t  = concat_merger_mut<node_t>;
 2242|  3.02k|        using visitor_t = concat_merger_mut_visitor;
 2243|  3.02k|        auto lnode      = ((node_t*) lpos.node());
 2244|  3.02k|        auto rnode      = ((node_t*) rpos.node());
 2245|  3.02k|        auto lmut2      = lnode && lnode->can_relax() && lnode->can_mutate(el);
  ------------------
  |  Branch (2245:27): [True: 0, False: 3.02k]
  |  Branch (2245:36): [True: 0, False: 0]
  |  Branch (2245:58): [True: 0, False: 0]
  ------------------
 2246|  3.02k|        auto rmut2      = rnode && rnode->can_relax() && rnode->can_mutate(er);
  ------------------
  |  Branch (2246:27): [True: 3.02k, False: 0]
  |  Branch (2246:36): [True: 3.02k, False: 0]
  |  Branch (2246:58): [True: 400, False: 2.62k]
  ------------------
 2247|  3.02k|        auto merger     = merger_t{ec,
 2248|  3.02k|                               cpos.shift(),
 2249|  3.02k|                               this->counts,
 2250|  3.02k|                               this->n,
 2251|  3.02k|                               el,
 2252|  3.02k|                               lmut2 ? lnode : nullptr};
  ------------------
  |  Branch (2252:32): [True: 0, False: 3.02k]
  ------------------
 2253|  3.02k|        IMMER_TRY {
  ------------------
  |  |   41|  3.02k|#define IMMER_TRY try
  ------------------
 2254|  3.02k|            lpos.each_left_sub(visitor_t{}, merger, el);
 2255|  3.02k|            cpos.each_sub(visitor_t{}, merger, ec);
 2256|  3.02k|            if (rmut2)
  ------------------
  |  Branch (2256:17): [True: 400, False: 2.62k]
  ------------------
 2257|    400|                merger.set_candidate(er, rnode);
 2258|  3.02k|            rpos.each_right_sub(visitor_t{}, merger, er);
 2259|  3.02k|            return merger.finish();
 2260|  3.02k|        }
 2261|  3.02k|        IMMER_CATCH (...) {
 2262|      0|            merger.abort();
 2263|      0|            IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 2264|      0|        }
 2265|  3.02k|    }
_ZN5immer6detail4rbts20concat_rebalance_mutINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEENS1_12null_sub_posERNS1_17concat_center_posISC_EERNS1_11relaxed_posISC_EEEENSE_IT_EENSt3__15decayISK_E4type6node_t6edit_tESP_OT0_OT1_SP_OT2_:
 2275|  57.2k|{
 2276|  57.2k|    auto plan = concat_rebalance_plan_mut<Node::bits, Node::bits_leaf>{};
 2277|  57.2k|    plan.fill(lpos, cpos, rpos);
 2278|  57.2k|    plan.shuffle(cpos.shift());
 2279|  57.2k|    return plan.merge(ec, el, lpos, cpos, er, rpos);
 2280|  57.2k|}
_ZN5immer6detail4rbts25concat_rebalance_plan_mutILj2ELj2EE5mergeIRNS1_12null_sub_posERNS1_17concat_center_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_11relaxed_posISH_EEEENS7_INSt3__15decayIT0_E4type6node_tEEENSQ_4type6node_t6edit_tEST_OT_OSP_ST_OT1_:
 2239|  57.2k|    {
 2240|  57.2k|        using node_t    = node_type<CPos>;
 2241|  57.2k|        using merger_t  = concat_merger_mut<node_t>;
 2242|  57.2k|        using visitor_t = concat_merger_mut_visitor;
 2243|  57.2k|        auto lnode      = ((node_t*) lpos.node());
 2244|  57.2k|        auto rnode      = ((node_t*) rpos.node());
 2245|  57.2k|        auto lmut2      = lnode && lnode->can_relax() && lnode->can_mutate(el);
  ------------------
  |  Branch (2245:27): [True: 0, False: 57.2k]
  |  Branch (2245:36): [True: 0, False: 0]
  |  Branch (2245:58): [True: 0, False: 0]
  ------------------
 2246|  57.2k|        auto rmut2      = rnode && rnode->can_relax() && rnode->can_mutate(er);
  ------------------
  |  Branch (2246:27): [True: 57.2k, False: 0]
  |  Branch (2246:36): [True: 57.2k, False: 0]
  |  Branch (2246:58): [True: 24.8k, False: 32.4k]
  ------------------
 2247|  57.2k|        auto merger     = merger_t{ec,
 2248|  57.2k|                               cpos.shift(),
 2249|  57.2k|                               this->counts,
 2250|  57.2k|                               this->n,
 2251|  57.2k|                               el,
 2252|  57.2k|                               lmut2 ? lnode : nullptr};
  ------------------
  |  Branch (2252:32): [True: 0, False: 57.2k]
  ------------------
 2253|  57.2k|        IMMER_TRY {
  ------------------
  |  |   41|  57.2k|#define IMMER_TRY try
  ------------------
 2254|  57.2k|            lpos.each_left_sub(visitor_t{}, merger, el);
 2255|  57.2k|            cpos.each_sub(visitor_t{}, merger, ec);
 2256|  57.2k|            if (rmut2)
  ------------------
  |  Branch (2256:17): [True: 24.8k, False: 32.4k]
  ------------------
 2257|  24.8k|                merger.set_candidate(er, rnode);
 2258|  57.2k|            rpos.each_right_sub(visitor_t{}, merger, er);
 2259|  57.2k|            return merger.finish();
 2260|  57.2k|        }
 2261|  57.2k|        IMMER_CATCH (...) {
 2262|      0|            merger.abort();
 2263|      0|            IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 2264|      0|        }
 2265|  57.2k|    }
_ZN5immer6detail4rbts23concat_both_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10visit_leafIRNS1_12leaf_sub_posISC_EERNS1_14empty_leaf_posISC_EERNS1_11relaxed_posISC_EEEENS1_17concat_center_posISC_EEOT_NSA_5applyIS7_E4type4editESV_OT0_SV_OT1_:
 2411|  3.92k|    {
 2412|  3.92k|        return rpos.first_sub_leaf(
 2413|  3.92k|            concat_right_mut_visitor<Node>{}, ec, el, lpos, tpos, er);
 2414|  3.92k|    }
_ZN5immer6detail4rbts20concat_rebalance_mutINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEERNS1_25singleton_regular_sub_posISC_EERNS1_17concat_center_posISC_EERNS1_11relaxed_posISC_EEEENSG_IT_EENSt3__15decayISM_E4type6node_t6edit_tESR_OT0_OT1_SR_OT2_:
 2275|  3.92k|{
 2276|  3.92k|    auto plan = concat_rebalance_plan_mut<Node::bits, Node::bits_leaf>{};
 2277|  3.92k|    plan.fill(lpos, cpos, rpos);
 2278|  3.92k|    plan.shuffle(cpos.shift());
 2279|  3.92k|    return plan.merge(ec, el, lpos, cpos, er, rpos);
 2280|  3.92k|}
_ZN5immer6detail4rbts25concat_rebalance_plan_mutILj2ELj2EE5mergeIRNS1_25singleton_regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_17concat_center_posISF_EERNS1_11relaxed_posISF_EEEENSI_INSt3__15decayIT0_E4type6node_tEEENSR_4type6node_t6edit_tESU_OT_OSQ_SU_OT1_:
 2239|  3.92k|    {
 2240|  3.92k|        using node_t    = node_type<CPos>;
 2241|  3.92k|        using merger_t  = concat_merger_mut<node_t>;
 2242|  3.92k|        using visitor_t = concat_merger_mut_visitor;
 2243|  3.92k|        auto lnode      = ((node_t*) lpos.node());
 2244|  3.92k|        auto rnode      = ((node_t*) rpos.node());
 2245|  3.92k|        auto lmut2      = lnode && lnode->can_relax() && lnode->can_mutate(el);
  ------------------
  |  Branch (2245:27): [True: 0, False: 3.92k]
  |  Branch (2245:36): [True: 0, False: 0]
  |  Branch (2245:58): [True: 0, False: 0]
  ------------------
 2246|  3.92k|        auto rmut2      = rnode && rnode->can_relax() && rnode->can_mutate(er);
  ------------------
  |  Branch (2246:27): [True: 3.92k, False: 0]
  |  Branch (2246:36): [True: 3.92k, False: 0]
  |  Branch (2246:58): [True: 1.81k, False: 2.11k]
  ------------------
 2247|  3.92k|        auto merger     = merger_t{ec,
 2248|  3.92k|                               cpos.shift(),
 2249|  3.92k|                               this->counts,
 2250|  3.92k|                               this->n,
 2251|  3.92k|                               el,
 2252|  3.92k|                               lmut2 ? lnode : nullptr};
  ------------------
  |  Branch (2252:32): [True: 0, False: 3.92k]
  ------------------
 2253|  3.92k|        IMMER_TRY {
  ------------------
  |  |   41|  3.92k|#define IMMER_TRY try
  ------------------
 2254|  3.92k|            lpos.each_left_sub(visitor_t{}, merger, el);
 2255|  3.92k|            cpos.each_sub(visitor_t{}, merger, ec);
 2256|  3.92k|            if (rmut2)
  ------------------
  |  Branch (2256:17): [True: 1.81k, False: 2.11k]
  ------------------
 2257|  1.81k|                merger.set_candidate(er, rnode);
 2258|  3.92k|            rpos.each_right_sub(visitor_t{}, merger, er);
 2259|  3.92k|            return merger.finish();
 2260|  3.92k|        }
 2261|  3.92k|        IMMER_CATCH (...) {
 2262|      0|            merger.abort();
 2263|      0|            IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 2264|      0|        }
 2265|  3.92k|    }
_ZN5immer6detail4rbts30concat_trees_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10visit_nodeIRNS1_15regular_sub_posISC_EERNS1_25singleton_regular_sub_posISC_EERNS1_14empty_leaf_posISC_EEEENS1_17concat_center_posISC_EEOT_NSA_5applyIS7_E4type4editESV_OT0_OT1_SV_:
 2427|  3.73k|    {
 2428|  3.73k|        return concat_inners_mut<Node>(ec, el, lpos, tpos, er, rpos);
 2429|  3.73k|    }
_ZN5immer6detail4rbts17concat_center_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE9realize_eENSA_5applyIS7_E4type4editE:
 1544|  80.3k|    {
 1545|  80.3k|        if (count_ > 1) {
  ------------------
  |  Branch (1545:13): [True: 13.8k, False: 66.5k]
  ------------------
 1546|  13.8k|            auto result = node_t::make_inner_r_e(e);
 1547|  13.8k|            auto r      = result->relaxed();
 1548|  13.8k|            r->d.count  = count_;
 1549|  13.8k|            std::copy(nodes_, nodes_ + count_, result->inner());
 1550|  13.8k|            std::copy(sizes_, sizes_ + count_, r->d.sizes);
 1551|  13.8k|            return {result, shift_, r};
 1552|  66.5k|        } else {
 1553|  66.5k|            assert(shift_ >= B + BL);
 1554|      0|            return {nodes_[0], shift_ - B, nodes_[0]->relaxed()};
 1555|  66.5k|        }
 1556|  80.3k|    }
_ZN5immer6detail4rbts16concat_trees_mutINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEENS1_11relaxed_posIT_EENSt3__15decayISE_E4type6node_t6edit_tESJ_PSE_jmSK_jSJ_SK_jm:
 2469|  72.4k|{
 2470|  72.4k|    return visit_maybe_relaxed_sub(lroot,
 2471|  72.4k|                                   lshift,
 2472|  72.4k|                                   lsize,
 2473|  72.4k|                                   concat_trees_left_mut_visitor<Node>{},
 2474|  72.4k|                                   ec,
 2475|  72.4k|                                   el,
 2476|  72.4k|                                   make_leaf_pos(ltail, ltcount),
 2477|  72.4k|                                   er,
 2478|  72.4k|                                   rroot,
 2479|  72.4k|                                   rshift,
 2480|  72.4k|                                   rsize)
 2481|  72.4k|        .realize_e(ec);
 2482|  72.4k|}
_ZN5immer6detail4rbts29concat_trees_left_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10visit_nodeIRNS1_11relaxed_posISC_EENS1_8leaf_posISC_EEJRPSC_RjRmEEENS1_17concat_center_posISC_EEOT_NSA_5applyIS7_E4type4editESV_OT0_SV_DpOT1_:
 2446|  66.5k|    {
 2447|  66.5k|        return visit_maybe_relaxed_sub(args...,
 2448|  66.5k|                                       concat_trees_right_mut_visitor<Node>{},
 2449|  66.5k|                                       ec,
 2450|  66.5k|                                       el,
 2451|  66.5k|                                       lpos,
 2452|  66.5k|                                       tpos,
 2453|  66.5k|                                       er);
 2454|  66.5k|    }
_ZN5immer6detail4rbts30concat_trees_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10visit_nodeIRNS1_11relaxed_posISC_EESH_RNS1_8leaf_posISC_EEEENS1_17concat_center_posISC_EEOT_NSA_5applyIS7_E4type4editESS_OT0_OT1_SS_:
 2427|  60.1k|    {
 2428|  60.1k|        return concat_inners_mut<Node>(ec, el, lpos, tpos, er, rpos);
 2429|  60.1k|    }
_ZN5immer6detail4rbts17concat_inners_mutINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEERNS1_11relaxed_posISC_EERNS1_8leaf_posISC_EESF_EENS1_17concat_center_posIT_EENSt3__15decayISK_E4type6node_t6edit_tESP_OT0_OT1_SP_OT2_:
 2328|   346k|{
 2329|   346k|    auto lshift = lpos.shift();
 2330|   346k|    auto rshift = rpos.shift();
 2331|       |    // lpos.node() can be null it is a singleton_regular_sub_pos<...>,
 2332|       |    // this is, when the tree is just a tail...
 2333|   346k|    if (lshift > rshift) {
  ------------------
  |  Branch (2333:9): [True: 80.0k, False: 266k]
  ------------------
 2334|  80.0k|        auto cpos = lpos.last_sub(
 2335|  80.0k|            concat_left_mut_visitor<Node>{}, ec, el, tpos, er, rpos);
 2336|  80.0k|        return concat_rebalance_mut<Node>(
 2337|  80.0k|            ec, el, lpos, cpos, er, null_sub_pos{});
 2338|   266k|    } else if (lshift < rshift) {
  ------------------
  |  Branch (2338:16): [True: 34.5k, False: 232k]
  ------------------
 2339|  34.5k|        auto cpos = rpos.first_sub(
 2340|  34.5k|            concat_right_mut_visitor<Node>{}, ec, el, lpos, tpos, er);
 2341|  34.5k|        return concat_rebalance_mut<Node>(
 2342|  34.5k|            ec, el, null_sub_pos{}, cpos, er, rpos);
 2343|   232k|    } else {
 2344|   232k|        assert(lshift == rshift);
 2345|      0|        assert(Node::bits_leaf == 0u || lshift > 0);
 2346|      0|        auto cpos = lpos.last_sub(
 2347|   232k|            concat_both_mut_visitor<Node>{}, ec, el, tpos, er, rpos);
 2348|   232k|        return concat_rebalance_mut<Node>(ec, el, lpos, cpos, er, rpos);
 2349|   232k|    }
 2350|   346k|}
_ZN5immer6detail4rbts23concat_left_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE11visit_innerIRNS1_11relaxed_posISC_EERNS1_8leaf_posISC_EESH_EENS1_17concat_center_posISC_EEOT_NSA_5applyIS7_E4type4editESS_OT0_SS_OT1_:
 2361|  78.2k|    {
 2362|  78.2k|        return concat_inners_mut<Node>(ec, el, lpos, tpos, er, rpos);
 2363|  78.2k|    }
_ZN5immer6detail4rbts23concat_left_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE11visit_innerIRNS1_15regular_sub_posISC_EERNS1_8leaf_posISC_EERNS1_11relaxed_posISC_EEEENS1_17concat_center_posISC_EEOT_NSA_5applyIS7_E4type4editESV_OT0_SV_OT1_:
 2361|  5.08k|    {
 2362|  5.08k|        return concat_inners_mut<Node>(ec, el, lpos, tpos, er, rpos);
 2363|  5.08k|    }
_ZN5immer6detail4rbts17concat_inners_mutINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEERNS1_15regular_sub_posISC_EERNS1_8leaf_posISC_EERNS1_11relaxed_posISC_EEEENS1_17concat_center_posIT_EENSt3__15decayISN_E4type6node_t6edit_tESS_OT0_OT1_SS_OT2_:
 2328|   153k|{
 2329|   153k|    auto lshift = lpos.shift();
 2330|   153k|    auto rshift = rpos.shift();
 2331|       |    // lpos.node() can be null it is a singleton_regular_sub_pos<...>,
 2332|       |    // this is, when the tree is just a tail...
 2333|   153k|    if (lshift > rshift) {
  ------------------
  |  Branch (2333:9): [True: 3.29k, False: 149k]
  ------------------
 2334|  3.29k|        auto cpos = lpos.last_sub(
 2335|  3.29k|            concat_left_mut_visitor<Node>{}, ec, el, tpos, er, rpos);
 2336|  3.29k|        return concat_rebalance_mut<Node>(
 2337|  3.29k|            ec, el, lpos, cpos, er, null_sub_pos{});
 2338|   149k|    } else if (lshift < rshift) {
  ------------------
  |  Branch (2338:16): [True: 7.97k, False: 142k]
  ------------------
 2339|  7.97k|        auto cpos = rpos.first_sub(
 2340|  7.97k|            concat_right_mut_visitor<Node>{}, ec, el, lpos, tpos, er);
 2341|  7.97k|        return concat_rebalance_mut<Node>(
 2342|  7.97k|            ec, el, null_sub_pos{}, cpos, er, rpos);
 2343|   142k|    } else {
 2344|   142k|        assert(lshift == rshift);
 2345|      0|        assert(Node::bits_leaf == 0u || lshift > 0);
 2346|      0|        auto cpos = lpos.last_sub(
 2347|   142k|            concat_both_mut_visitor<Node>{}, ec, el, tpos, er, rpos);
 2348|   142k|        return concat_rebalance_mut<Node>(ec, el, lpos, cpos, er, rpos);
 2349|   142k|    }
 2350|   153k|}
_ZN5immer6detail4rbts20concat_rebalance_mutINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEERNS1_15regular_sub_posISC_EERNS1_17concat_center_posISC_EENS1_12null_sub_posEEENSG_IT_EENSt3__15decayISK_E4type6node_t6edit_tESP_OT0_OT1_SP_OT2_:
 2275|  4.95k|{
 2276|  4.95k|    auto plan = concat_rebalance_plan_mut<Node::bits, Node::bits_leaf>{};
 2277|  4.95k|    plan.fill(lpos, cpos, rpos);
 2278|  4.95k|    plan.shuffle(cpos.shift());
 2279|  4.95k|    return plan.merge(ec, el, lpos, cpos, er, rpos);
 2280|  4.95k|}
_ZN5immer6detail4rbts25concat_rebalance_plan_mutILj2ELj2EE5mergeIRNS1_15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_17concat_center_posISF_EERNS1_12null_sub_posEEENSI_INSt3__15decayIT0_E4type6node_tEEENSQ_4type6node_t6edit_tEST_OT_OSP_ST_OT1_:
 2239|  4.95k|    {
 2240|  4.95k|        using node_t    = node_type<CPos>;
 2241|  4.95k|        using merger_t  = concat_merger_mut<node_t>;
 2242|  4.95k|        using visitor_t = concat_merger_mut_visitor;
 2243|  4.95k|        auto lnode      = ((node_t*) lpos.node());
 2244|  4.95k|        auto rnode      = ((node_t*) rpos.node());
 2245|  4.95k|        auto lmut2      = lnode && lnode->can_relax() && lnode->can_mutate(el);
  ------------------
  |  Branch (2245:27): [True: 4.95k, False: 0]
  |  Branch (2245:36): [True: 4.95k, False: 0]
  |  Branch (2245:58): [True: 668, False: 4.29k]
  ------------------
 2246|  4.95k|        auto rmut2      = rnode && rnode->can_relax() && rnode->can_mutate(er);
  ------------------
  |  Branch (2246:27): [True: 0, False: 4.95k]
  |  Branch (2246:36): [True: 0, False: 0]
  |  Branch (2246:58): [True: 0, False: 0]
  ------------------
 2247|  4.95k|        auto merger     = merger_t{ec,
 2248|  4.95k|                               cpos.shift(),
 2249|  4.95k|                               this->counts,
 2250|  4.95k|                               this->n,
 2251|  4.95k|                               el,
 2252|  4.95k|                               lmut2 ? lnode : nullptr};
  ------------------
  |  Branch (2252:32): [True: 668, False: 4.29k]
  ------------------
 2253|  4.95k|        IMMER_TRY {
  ------------------
  |  |   41|  4.95k|#define IMMER_TRY try
  ------------------
 2254|  4.95k|            lpos.each_left_sub(visitor_t{}, merger, el);
 2255|  4.95k|            cpos.each_sub(visitor_t{}, merger, ec);
 2256|  4.95k|            if (rmut2)
  ------------------
  |  Branch (2256:17): [True: 0, False: 4.95k]
  ------------------
 2257|      0|                merger.set_candidate(er, rnode);
 2258|  4.95k|            rpos.each_right_sub(visitor_t{}, merger, er);
 2259|  4.95k|            return merger.finish();
 2260|  4.95k|        }
 2261|  4.95k|        IMMER_CATCH (...) {
 2262|      0|            merger.abort();
 2263|      0|            IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 2264|      0|        }
 2265|  4.95k|    }
_ZN5immer6detail4rbts24concat_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE11visit_innerIRNS1_11relaxed_posISC_EERNS1_15regular_sub_posISC_EERNS1_8leaf_posISC_EEEENS1_17concat_center_posISC_EEOT_NSA_5applyIS7_E4type4editESV_OT0_OT1_SV_:
 2382|   144k|    {
 2383|   144k|        return concat_inners_mut<Node>(ec, el, lpos, tpos, er, rpos);
 2384|   144k|    }
_ZN5immer6detail4rbts24concat_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE11visit_innerIRNS1_15regular_sub_posISC_EESH_RNS1_8leaf_posISC_EEEENS1_17concat_center_posISC_EEOT_NSA_5applyIS7_E4type4editESS_OT0_OT1_SS_:
 2382|  1.89k|    {
 2383|  1.89k|        return concat_inners_mut<Node>(ec, el, lpos, tpos, er, rpos);
 2384|  1.89k|    }
_ZN5immer6detail4rbts17concat_inners_mutINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEERNS1_15regular_sub_posISC_EERNS1_8leaf_posISC_EESF_EENS1_17concat_center_posIT_EENSt3__15decayISK_E4type6node_t6edit_tESP_OT0_OT1_SP_OT2_:
 2328|  6.69k|{
 2329|  6.69k|    auto lshift = lpos.shift();
 2330|  6.69k|    auto rshift = rpos.shift();
 2331|       |    // lpos.node() can be null it is a singleton_regular_sub_pos<...>,
 2332|       |    // this is, when the tree is just a tail...
 2333|  6.69k|    if (lshift > rshift) {
  ------------------
  |  Branch (2333:9): [True: 1.66k, False: 5.02k]
  ------------------
 2334|  1.66k|        auto cpos = lpos.last_sub(
 2335|  1.66k|            concat_left_mut_visitor<Node>{}, ec, el, tpos, er, rpos);
 2336|  1.66k|        return concat_rebalance_mut<Node>(
 2337|  1.66k|            ec, el, lpos, cpos, er, null_sub_pos{});
 2338|  5.02k|    } else if (lshift < rshift) {
  ------------------
  |  Branch (2338:16): [True: 405, False: 4.62k]
  ------------------
 2339|    405|        auto cpos = rpos.first_sub(
 2340|    405|            concat_right_mut_visitor<Node>{}, ec, el, lpos, tpos, er);
 2341|    405|        return concat_rebalance_mut<Node>(
 2342|    405|            ec, el, null_sub_pos{}, cpos, er, rpos);
 2343|  4.62k|    } else {
 2344|  4.62k|        assert(lshift == rshift);
 2345|      0|        assert(Node::bits_leaf == 0u || lshift > 0);
 2346|      0|        auto cpos = lpos.last_sub(
 2347|  4.62k|            concat_both_mut_visitor<Node>{}, ec, el, tpos, er, rpos);
 2348|  4.62k|        return concat_rebalance_mut<Node>(ec, el, lpos, cpos, er, rpos);
 2349|  4.62k|    }
 2350|  6.69k|}
_ZN5immer6detail4rbts23concat_left_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE11visit_innerIRNS1_15regular_sub_posISC_EERNS1_8leaf_posISC_EESH_EENS1_17concat_center_posISC_EEOT_NSA_5applyIS7_E4type4editESS_OT0_SS_OT1_:
 2361|  2.24k|    {
 2362|  2.24k|        return concat_inners_mut<Node>(ec, el, lpos, tpos, er, rpos);
 2363|  2.24k|    }
_ZN5immer6detail4rbts24concat_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE11visit_innerIRNS1_8full_posISC_EERNS1_15regular_sub_posISC_EERNS1_8leaf_posISC_EEEENS1_17concat_center_posISC_EEOT_NSA_5applyIS7_E4type4editESV_OT0_OT1_SV_:
 2382|  5.33k|    {
 2383|  5.33k|        return concat_inners_mut<Node>(ec, el, lpos, tpos, er, rpos);
 2384|  5.33k|    }
_ZN5immer6detail4rbts17concat_inners_mutINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEERNS1_15regular_sub_posISC_EERNS1_8leaf_posISC_EERNS1_8full_posISC_EEEENS1_17concat_center_posIT_EENSt3__15decayISN_E4type6node_t6edit_tESS_OT0_OT1_SS_OT2_:
 2328|  5.33k|{
 2329|  5.33k|    auto lshift = lpos.shift();
 2330|  5.33k|    auto rshift = rpos.shift();
 2331|       |    // lpos.node() can be null it is a singleton_regular_sub_pos<...>,
 2332|       |    // this is, when the tree is just a tail...
 2333|  5.33k|    if (lshift > rshift) {
  ------------------
  |  Branch (2333:9): [True: 0, False: 5.33k]
  ------------------
 2334|      0|        auto cpos = lpos.last_sub(
 2335|      0|            concat_left_mut_visitor<Node>{}, ec, el, tpos, er, rpos);
 2336|      0|        return concat_rebalance_mut<Node>(
 2337|      0|            ec, el, lpos, cpos, er, null_sub_pos{});
 2338|  5.33k|    } else if (lshift < rshift) {
  ------------------
  |  Branch (2338:16): [True: 220, False: 5.11k]
  ------------------
 2339|    220|        auto cpos = rpos.first_sub(
 2340|    220|            concat_right_mut_visitor<Node>{}, ec, el, lpos, tpos, er);
 2341|    220|        return concat_rebalance_mut<Node>(
 2342|    220|            ec, el, null_sub_pos{}, cpos, er, rpos);
 2343|  5.11k|    } else {
 2344|  5.11k|        assert(lshift == rshift);
 2345|      0|        assert(Node::bits_leaf == 0u || lshift > 0);
 2346|      0|        auto cpos = lpos.last_sub(
 2347|  5.11k|            concat_both_mut_visitor<Node>{}, ec, el, tpos, er, rpos);
 2348|  5.11k|        return concat_rebalance_mut<Node>(ec, el, lpos, cpos, er, rpos);
 2349|  5.11k|    }
 2350|  5.33k|}
_ZN5immer6detail4rbts23concat_both_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10visit_leafIRNS1_12leaf_sub_posISC_EERNS1_8leaf_posISC_EERNS1_8full_posISC_EEEENS1_17concat_center_posISC_EEOT_NSA_5applyIS7_E4type4editESV_OT0_SV_OT1_:
 2411|  4.51k|    {
 2412|  4.51k|        return rpos.first_sub_leaf(
 2413|  4.51k|            concat_right_mut_visitor<Node>{}, ec, el, lpos, tpos, er);
 2414|  4.51k|    }
_ZN5immer6detail4rbts24concat_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10visit_leafIRNS1_13full_leaf_posISC_EERNS1_12leaf_sub_posISC_EERNS1_8leaf_posISC_EEEENS1_17concat_center_posISC_EEOT_NSA_5applyIS7_E4type4editESV_OT0_OT1_SV_:
 2389|  12.2k|    {
 2390|  12.2k|        return concat_leafs_mut<Node>(ec, el, lpos, tpos, er, rpos);
 2391|  12.2k|    }
_ZN5immer6detail4rbts16concat_leafs_mutINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEERNS1_12leaf_sub_posISC_EERNS1_8leaf_posISC_EERNS1_13full_leaf_posISC_EEEENS1_17concat_center_posIT_EENSt3__15decayISN_E4type6node_t6edit_tESS_OT0_OT1_SS_OT2_:
 2289|  12.2k|{
 2290|  12.2k|    static_assert(Node::bits >= 2, "");
 2291|  12.2k|    assert(lpos.shift() == tpos.shift());
 2292|      0|    assert(lpos.shift() == rpos.shift());
 2293|      0|    assert(lpos.shift() == 0);
 2294|  12.2k|    if (tpos.count() > 0)
  ------------------
  |  Branch (2294:9): [True: 12.2k, False: 0]
  ------------------
 2295|  12.2k|        return {
 2296|  12.2k|            Node::bits_leaf,
 2297|  12.2k|            lpos.node(),
 2298|  12.2k|            lpos.count(),
 2299|  12.2k|            tpos.node(),
 2300|  12.2k|            tpos.count(),
 2301|  12.2k|            rpos.node(),
 2302|  12.2k|            rpos.count(),
 2303|  12.2k|        };
 2304|      0|    else
 2305|      0|        return {
 2306|      0|            Node::bits_leaf,
 2307|      0|            lpos.node(),
 2308|      0|            lpos.count(),
 2309|      0|            rpos.node(),
 2310|      0|            rpos.count(),
 2311|      0|        };
 2312|  12.2k|}
_ZN5immer6detail4rbts23concat_both_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE11visit_innerIRNS1_15regular_sub_posISC_EERNS1_8leaf_posISC_EERNS1_8full_posISC_EEEENS1_17concat_center_posISC_EEOT_NSA_5applyIS7_E4type4editESV_OT0_SV_OT1_:
 2403|  2.25k|    {
 2404|  2.25k|        return rpos.first_sub(
 2405|  2.25k|            concat_right_mut_visitor<Node>{}, ec, el, lpos, tpos, er);
 2406|  2.25k|    }
_ZN5immer6detail4rbts20concat_rebalance_mutINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEERNS1_15regular_sub_posISC_EERNS1_17concat_center_posISC_EERNS1_8full_posISC_EEEENSG_IT_EENSt3__15decayISM_E4type6node_t6edit_tESR_OT0_OT1_SR_OT2_:
 2275|  5.11k|{
 2276|  5.11k|    auto plan = concat_rebalance_plan_mut<Node::bits, Node::bits_leaf>{};
 2277|  5.11k|    plan.fill(lpos, cpos, rpos);
 2278|  5.11k|    plan.shuffle(cpos.shift());
 2279|  5.11k|    return plan.merge(ec, el, lpos, cpos, er, rpos);
 2280|  5.11k|}
_ZN5immer6detail4rbts25concat_rebalance_plan_mutILj2ELj2EE5mergeIRNS1_15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_17concat_center_posISF_EERNS1_8full_posISF_EEEENSI_INSt3__15decayIT0_E4type6node_tEEENSR_4type6node_t6edit_tESU_OT_OSQ_SU_OT1_:
 2239|  5.11k|    {
 2240|  5.11k|        using node_t    = node_type<CPos>;
 2241|  5.11k|        using merger_t  = concat_merger_mut<node_t>;
 2242|  5.11k|        using visitor_t = concat_merger_mut_visitor;
 2243|  5.11k|        auto lnode      = ((node_t*) lpos.node());
 2244|  5.11k|        auto rnode      = ((node_t*) rpos.node());
 2245|  5.11k|        auto lmut2      = lnode && lnode->can_relax() && lnode->can_mutate(el);
  ------------------
  |  Branch (2245:27): [True: 5.11k, False: 0]
  |  Branch (2245:36): [True: 5.11k, False: 0]
  |  Branch (2245:58): [True: 301, False: 4.81k]
  ------------------
 2246|  5.11k|        auto rmut2      = rnode && rnode->can_relax() && rnode->can_mutate(er);
  ------------------
  |  Branch (2246:27): [True: 5.11k, False: 0]
  |  Branch (2246:36): [True: 5.11k, False: 0]
  |  Branch (2246:58): [True: 197, False: 4.91k]
  ------------------
 2247|  5.11k|        auto merger     = merger_t{ec,
 2248|  5.11k|                               cpos.shift(),
 2249|  5.11k|                               this->counts,
 2250|  5.11k|                               this->n,
 2251|  5.11k|                               el,
 2252|  5.11k|                               lmut2 ? lnode : nullptr};
  ------------------
  |  Branch (2252:32): [True: 301, False: 4.81k]
  ------------------
 2253|  5.11k|        IMMER_TRY {
  ------------------
  |  |   41|  5.11k|#define IMMER_TRY try
  ------------------
 2254|  5.11k|            lpos.each_left_sub(visitor_t{}, merger, el);
 2255|  5.11k|            cpos.each_sub(visitor_t{}, merger, ec);
 2256|  5.11k|            if (rmut2)
  ------------------
  |  Branch (2256:17): [True: 197, False: 4.91k]
  ------------------
 2257|    197|                merger.set_candidate(er, rnode);
 2258|  5.11k|            rpos.each_right_sub(visitor_t{}, merger, er);
 2259|  5.11k|            return merger.finish();
 2260|  5.11k|        }
 2261|  5.11k|        IMMER_CATCH (...) {
 2262|      0|            merger.abort();
 2263|      0|            IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 2264|      0|        }
 2265|  5.11k|    }
_ZN5immer6detail4rbts23concat_both_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10visit_leafIRNS1_12leaf_sub_posISC_EERNS1_8leaf_posISC_EERNS1_15regular_sub_posISC_EEEENS1_17concat_center_posISC_EEOT_NSA_5applyIS7_E4type4editESV_OT0_SV_OT1_:
 2411|  7.69k|    {
 2412|  7.69k|        return rpos.first_sub_leaf(
 2413|  7.69k|            concat_right_mut_visitor<Node>{}, ec, el, lpos, tpos, er);
 2414|  7.69k|    }
_ZN5immer6detail4rbts24concat_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10visit_leafIRNS1_12leaf_sub_posISC_EESH_RNS1_8leaf_posISC_EEEENS1_17concat_center_posISC_EEOT_NSA_5applyIS7_E4type4editESS_OT0_OT1_SS_:
 2389|  60.2k|    {
 2390|  60.2k|        return concat_leafs_mut<Node>(ec, el, lpos, tpos, er, rpos);
 2391|  60.2k|    }
_ZN5immer6detail4rbts16concat_leafs_mutINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEERNS1_12leaf_sub_posISC_EERNS1_8leaf_posISC_EESF_EENS1_17concat_center_posIT_EENSt3__15decayISK_E4type6node_t6edit_tESP_OT0_OT1_SP_OT2_:
 2289|  60.2k|{
 2290|  60.2k|    static_assert(Node::bits >= 2, "");
 2291|  60.2k|    assert(lpos.shift() == tpos.shift());
 2292|      0|    assert(lpos.shift() == rpos.shift());
 2293|      0|    assert(lpos.shift() == 0);
 2294|  60.2k|    if (tpos.count() > 0)
  ------------------
  |  Branch (2294:9): [True: 60.2k, False: 0]
  ------------------
 2295|  60.2k|        return {
 2296|  60.2k|            Node::bits_leaf,
 2297|  60.2k|            lpos.node(),
 2298|  60.2k|            lpos.count(),
 2299|  60.2k|            tpos.node(),
 2300|  60.2k|            tpos.count(),
 2301|  60.2k|            rpos.node(),
 2302|  60.2k|            rpos.count(),
 2303|  60.2k|        };
 2304|      0|    else
 2305|      0|        return {
 2306|      0|            Node::bits_leaf,
 2307|      0|            lpos.node(),
 2308|      0|            lpos.count(),
 2309|      0|            rpos.node(),
 2310|      0|            rpos.count(),
 2311|      0|        };
 2312|  60.2k|}
_ZN5immer6detail4rbts23concat_both_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE11visit_innerIRNS1_15regular_sub_posISC_EERNS1_8leaf_posISC_EESH_EENS1_17concat_center_posISC_EEOT_NSA_5applyIS7_E4type4editESS_OT0_SS_OT1_:
 2403|  2.45k|    {
 2404|  2.45k|        return rpos.first_sub(
 2405|  2.45k|            concat_right_mut_visitor<Node>{}, ec, el, lpos, tpos, er);
 2406|  2.45k|    }
_ZN5immer6detail4rbts20concat_rebalance_mutINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEERNS1_15regular_sub_posISC_EERNS1_17concat_center_posISC_EESF_EENSG_IT_EENSt3__15decayISJ_E4type6node_t6edit_tESO_OT0_OT1_SO_OT2_:
 2275|  4.62k|{
 2276|  4.62k|    auto plan = concat_rebalance_plan_mut<Node::bits, Node::bits_leaf>{};
 2277|  4.62k|    plan.fill(lpos, cpos, rpos);
 2278|  4.62k|    plan.shuffle(cpos.shift());
 2279|  4.62k|    return plan.merge(ec, el, lpos, cpos, er, rpos);
 2280|  4.62k|}
_ZN5immer6detail4rbts25concat_rebalance_plan_mutILj2ELj2EE5mergeIRNS1_15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_17concat_center_posISF_EESH_EENSI_INSt3__15decayIT0_E4type6node_tEEENSO_4type6node_t6edit_tESR_OT_OSN_SR_OT1_:
 2239|  4.62k|    {
 2240|  4.62k|        using node_t    = node_type<CPos>;
 2241|  4.62k|        using merger_t  = concat_merger_mut<node_t>;
 2242|  4.62k|        using visitor_t = concat_merger_mut_visitor;
 2243|  4.62k|        auto lnode      = ((node_t*) lpos.node());
 2244|  4.62k|        auto rnode      = ((node_t*) rpos.node());
 2245|  4.62k|        auto lmut2      = lnode && lnode->can_relax() && lnode->can_mutate(el);
  ------------------
  |  Branch (2245:27): [True: 4.62k, False: 0]
  |  Branch (2245:36): [True: 4.62k, False: 0]
  |  Branch (2245:58): [True: 400, False: 4.22k]
  ------------------
 2246|  4.62k|        auto rmut2      = rnode && rnode->can_relax() && rnode->can_mutate(er);
  ------------------
  |  Branch (2246:27): [True: 4.62k, False: 0]
  |  Branch (2246:36): [True: 4.62k, False: 0]
  |  Branch (2246:58): [True: 825, False: 3.79k]
  ------------------
 2247|  4.62k|        auto merger     = merger_t{ec,
 2248|  4.62k|                               cpos.shift(),
 2249|  4.62k|                               this->counts,
 2250|  4.62k|                               this->n,
 2251|  4.62k|                               el,
 2252|  4.62k|                               lmut2 ? lnode : nullptr};
  ------------------
  |  Branch (2252:32): [True: 400, False: 4.22k]
  ------------------
 2253|  4.62k|        IMMER_TRY {
  ------------------
  |  |   41|  4.62k|#define IMMER_TRY try
  ------------------
 2254|  4.62k|            lpos.each_left_sub(visitor_t{}, merger, el);
 2255|  4.62k|            cpos.each_sub(visitor_t{}, merger, ec);
 2256|  4.62k|            if (rmut2)
  ------------------
  |  Branch (2256:17): [True: 825, False: 3.79k]
  ------------------
 2257|    825|                merger.set_candidate(er, rnode);
 2258|  4.62k|            rpos.each_right_sub(visitor_t{}, merger, er);
 2259|  4.62k|            return merger.finish();
 2260|  4.62k|        }
 2261|  4.62k|        IMMER_CATCH (...) {
 2262|      0|            merger.abort();
 2263|      0|            IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 2264|      0|        }
 2265|  4.62k|    }
_ZN5immer6detail4rbts23concat_both_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10visit_leafIRNS1_12leaf_sub_posISC_EERNS1_8leaf_posISC_EERNS1_11relaxed_posISC_EEEENS1_17concat_center_posISC_EEOT_NSA_5applyIS7_E4type4editESV_OT0_SV_OT1_:
 2411|  60.2k|    {
 2412|  60.2k|        return rpos.first_sub_leaf(
 2413|  60.2k|            concat_right_mut_visitor<Node>{}, ec, el, lpos, tpos, er);
 2414|  60.2k|    }
_ZN5immer6detail4rbts23concat_both_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE11visit_innerIRNS1_15regular_sub_posISC_EERNS1_8leaf_posISC_EERNS1_11relaxed_posISC_EEEENS1_17concat_center_posISC_EEOT_NSA_5applyIS7_E4type4editESV_OT0_SV_OT1_:
 2403|   138k|    {
 2404|   138k|        return rpos.first_sub(
 2405|   138k|            concat_right_mut_visitor<Node>{}, ec, el, lpos, tpos, er);
 2406|   138k|    }
_ZN5immer6detail4rbts20concat_rebalance_mutINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEERNS1_15regular_sub_posISC_EERNS1_17concat_center_posISC_EERNS1_11relaxed_posISC_EEEENSG_IT_EENSt3__15decayISM_E4type6node_t6edit_tESR_OT0_OT1_SR_OT2_:
 2275|   142k|{
 2276|   142k|    auto plan = concat_rebalance_plan_mut<Node::bits, Node::bits_leaf>{};
 2277|   142k|    plan.fill(lpos, cpos, rpos);
 2278|   142k|    plan.shuffle(cpos.shift());
 2279|   142k|    return plan.merge(ec, el, lpos, cpos, er, rpos);
 2280|   142k|}
_ZN5immer6detail4rbts25concat_rebalance_plan_mutILj2ELj2EE5mergeIRNS1_15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_17concat_center_posISF_EERNS1_11relaxed_posISF_EEEENSI_INSt3__15decayIT0_E4type6node_tEEENSR_4type6node_t6edit_tESU_OT_OSQ_SU_OT1_:
 2239|   142k|    {
 2240|   142k|        using node_t    = node_type<CPos>;
 2241|   142k|        using merger_t  = concat_merger_mut<node_t>;
 2242|   142k|        using visitor_t = concat_merger_mut_visitor;
 2243|   142k|        auto lnode      = ((node_t*) lpos.node());
 2244|   142k|        auto rnode      = ((node_t*) rpos.node());
 2245|   142k|        auto lmut2      = lnode && lnode->can_relax() && lnode->can_mutate(el);
  ------------------
  |  Branch (2245:27): [True: 142k, False: 0]
  |  Branch (2245:36): [True: 142k, False: 0]
  |  Branch (2245:58): [True: 3.79k, False: 138k]
  ------------------
 2246|   142k|        auto rmut2      = rnode && rnode->can_relax() && rnode->can_mutate(er);
  ------------------
  |  Branch (2246:27): [True: 142k, False: 0]
  |  Branch (2246:36): [True: 142k, False: 0]
  |  Branch (2246:58): [True: 3.79k, False: 138k]
  ------------------
 2247|   142k|        auto merger     = merger_t{ec,
 2248|   142k|                               cpos.shift(),
 2249|   142k|                               this->counts,
 2250|   142k|                               this->n,
 2251|   142k|                               el,
 2252|   142k|                               lmut2 ? lnode : nullptr};
  ------------------
  |  Branch (2252:32): [True: 3.79k, False: 138k]
  ------------------
 2253|   142k|        IMMER_TRY {
  ------------------
  |  |   41|   142k|#define IMMER_TRY try
  ------------------
 2254|   142k|            lpos.each_left_sub(visitor_t{}, merger, el);
 2255|   142k|            cpos.each_sub(visitor_t{}, merger, ec);
 2256|   142k|            if (rmut2)
  ------------------
  |  Branch (2256:17): [True: 3.79k, False: 138k]
  ------------------
 2257|  3.79k|                merger.set_candidate(er, rnode);
 2258|   142k|            rpos.each_right_sub(visitor_t{}, merger, er);
 2259|   142k|            return merger.finish();
 2260|   142k|        }
 2261|   142k|        IMMER_CATCH (...) {
 2262|      0|            merger.abort();
 2263|      0|            IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 2264|      0|        }
 2265|   142k|    }
_ZN5immer6detail4rbts20concat_rebalance_mutINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEERNS1_11relaxed_posISC_EERNS1_17concat_center_posISC_EENS1_12null_sub_posEEENSG_IT_EENSt3__15decayISK_E4type6node_t6edit_tESP_OT0_OT1_SP_OT2_:
 2275|  91.5k|{
 2276|  91.5k|    auto plan = concat_rebalance_plan_mut<Node::bits, Node::bits_leaf>{};
 2277|  91.5k|    plan.fill(lpos, cpos, rpos);
 2278|  91.5k|    plan.shuffle(cpos.shift());
 2279|  91.5k|    return plan.merge(ec, el, lpos, cpos, er, rpos);
 2280|  91.5k|}
_ZN5immer6detail4rbts25concat_rebalance_plan_mutILj2ELj2EE5mergeIRNS1_11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_17concat_center_posISF_EERNS1_12null_sub_posEEENSI_INSt3__15decayIT0_E4type6node_tEEENSQ_4type6node_t6edit_tEST_OT_OSP_ST_OT1_:
 2239|  91.5k|    {
 2240|  91.5k|        using node_t    = node_type<CPos>;
 2241|  91.5k|        using merger_t  = concat_merger_mut<node_t>;
 2242|  91.5k|        using visitor_t = concat_merger_mut_visitor;
 2243|  91.5k|        auto lnode      = ((node_t*) lpos.node());
 2244|  91.5k|        auto rnode      = ((node_t*) rpos.node());
 2245|  91.5k|        auto lmut2      = lnode && lnode->can_relax() && lnode->can_mutate(el);
  ------------------
  |  Branch (2245:27): [True: 91.5k, False: 0]
  |  Branch (2245:36): [True: 91.5k, False: 0]
  |  Branch (2245:58): [True: 75.3k, False: 16.2k]
  ------------------
 2246|  91.5k|        auto rmut2      = rnode && rnode->can_relax() && rnode->can_mutate(er);
  ------------------
  |  Branch (2246:27): [True: 0, False: 91.5k]
  |  Branch (2246:36): [True: 0, False: 0]
  |  Branch (2246:58): [True: 0, False: 0]
  ------------------
 2247|  91.5k|        auto merger     = merger_t{ec,
 2248|  91.5k|                               cpos.shift(),
 2249|  91.5k|                               this->counts,
 2250|  91.5k|                               this->n,
 2251|  91.5k|                               el,
 2252|  91.5k|                               lmut2 ? lnode : nullptr};
  ------------------
  |  Branch (2252:32): [True: 75.3k, False: 16.2k]
  ------------------
 2253|  91.5k|        IMMER_TRY {
  ------------------
  |  |   41|  91.5k|#define IMMER_TRY try
  ------------------
 2254|  91.5k|            lpos.each_left_sub(visitor_t{}, merger, el);
 2255|  91.5k|            cpos.each_sub(visitor_t{}, merger, ec);
 2256|  91.5k|            if (rmut2)
  ------------------
  |  Branch (2256:17): [True: 0, False: 91.5k]
  ------------------
 2257|      0|                merger.set_candidate(er, rnode);
 2258|  91.5k|            rpos.each_right_sub(visitor_t{}, merger, er);
 2259|  91.5k|            return merger.finish();
 2260|  91.5k|        }
 2261|  91.5k|        IMMER_CATCH (...) {
 2262|      0|            merger.abort();
 2263|      0|            IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 2264|      0|        }
 2265|  91.5k|    }
_ZN5immer6detail4rbts24concat_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE11visit_innerIRNS1_11relaxed_posISC_EESH_RNS1_8leaf_posISC_EEEENS1_17concat_center_posISC_EEOT_NSA_5applyIS7_E4type4editESS_OT0_OT1_SS_:
 2382|   208k|    {
 2383|   208k|        return concat_inners_mut<Node>(ec, el, lpos, tpos, er, rpos);
 2384|   208k|    }
_ZN5immer6detail4rbts24concat_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE11visit_innerIRNS1_15regular_sub_posISC_EERNS1_11relaxed_posISC_EERNS1_8leaf_posISC_EEEENS1_17concat_center_posISC_EEOT_NSA_5applyIS7_E4type4editESV_OT0_OT1_SV_:
 2382|  1.33k|    {
 2383|  1.33k|        return concat_inners_mut<Node>(ec, el, lpos, tpos, er, rpos);
 2384|  1.33k|    }
_ZN5immer6detail4rbts17concat_inners_mutINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEERNS1_11relaxed_posISC_EERNS1_8leaf_posISC_EERNS1_15regular_sub_posISC_EEEENS1_17concat_center_posIT_EENSt3__15decayISN_E4type6node_t6edit_tESS_OT0_OT1_SS_OT2_:
 2328|  18.6k|{
 2329|  18.6k|    auto lshift = lpos.shift();
 2330|  18.6k|    auto rshift = rpos.shift();
 2331|       |    // lpos.node() can be null it is a singleton_regular_sub_pos<...>,
 2332|       |    // this is, when the tree is just a tail...
 2333|  18.6k|    if (lshift > rshift) {
  ------------------
  |  Branch (2333:9): [True: 11.4k, False: 7.18k]
  ------------------
 2334|  11.4k|        auto cpos = lpos.last_sub(
 2335|  11.4k|            concat_left_mut_visitor<Node>{}, ec, el, tpos, er, rpos);
 2336|  11.4k|        return concat_rebalance_mut<Node>(
 2337|  11.4k|            ec, el, lpos, cpos, er, null_sub_pos{});
 2338|  11.4k|    } else if (lshift < rshift) {
  ------------------
  |  Branch (2338:16): [True: 565, False: 6.62k]
  ------------------
 2339|    565|        auto cpos = rpos.first_sub(
 2340|    565|            concat_right_mut_visitor<Node>{}, ec, el, lpos, tpos, er);
 2341|    565|        return concat_rebalance_mut<Node>(
 2342|    565|            ec, el, null_sub_pos{}, cpos, er, rpos);
 2343|  6.62k|    } else {
 2344|  6.62k|        assert(lshift == rshift);
 2345|      0|        assert(Node::bits_leaf == 0u || lshift > 0);
 2346|      0|        auto cpos = lpos.last_sub(
 2347|  6.62k|            concat_both_mut_visitor<Node>{}, ec, el, tpos, er, rpos);
 2348|  6.62k|        return concat_rebalance_mut<Node>(ec, el, lpos, cpos, er, rpos);
 2349|  6.62k|    }
 2350|  18.6k|}
_ZN5immer6detail4rbts23concat_left_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE11visit_innerIRNS1_11relaxed_posISC_EERNS1_8leaf_posISC_EERNS1_15regular_sub_posISC_EEEENS1_17concat_center_posISC_EEOT_NSA_5applyIS7_E4type4editESV_OT0_SV_OT1_:
 2361|  10.8k|    {
 2362|  10.8k|        return concat_inners_mut<Node>(ec, el, lpos, tpos, er, rpos);
 2363|  10.8k|    }
_ZN5immer6detail4rbts24concat_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE11visit_innerIRNS1_8full_posISC_EERNS1_11relaxed_posISC_EERNS1_8leaf_posISC_EEEENS1_17concat_center_posISC_EEOT_NSA_5applyIS7_E4type4editESV_OT0_OT1_SV_:
 2382|  2.40k|    {
 2383|  2.40k|        return concat_inners_mut<Node>(ec, el, lpos, tpos, er, rpos);
 2384|  2.40k|    }
_ZN5immer6detail4rbts17concat_inners_mutINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEERNS1_11relaxed_posISC_EERNS1_8leaf_posISC_EERNS1_8full_posISC_EEEENS1_17concat_center_posIT_EENSt3__15decayISN_E4type6node_t6edit_tESS_OT0_OT1_SS_OT2_:
 2328|  2.40k|{
 2329|  2.40k|    auto lshift = lpos.shift();
 2330|  2.40k|    auto rshift = rpos.shift();
 2331|       |    // lpos.node() can be null it is a singleton_regular_sub_pos<...>,
 2332|       |    // this is, when the tree is just a tail...
 2333|  2.40k|    if (lshift > rshift) {
  ------------------
  |  Branch (2333:9): [True: 0, False: 2.40k]
  ------------------
 2334|      0|        auto cpos = lpos.last_sub(
 2335|      0|            concat_left_mut_visitor<Node>{}, ec, el, tpos, er, rpos);
 2336|      0|        return concat_rebalance_mut<Node>(
 2337|      0|            ec, el, lpos, cpos, er, null_sub_pos{});
 2338|  2.40k|    } else if (lshift < rshift) {
  ------------------
  |  Branch (2338:16): [True: 225, False: 2.17k]
  ------------------
 2339|    225|        auto cpos = rpos.first_sub(
 2340|    225|            concat_right_mut_visitor<Node>{}, ec, el, lpos, tpos, er);
 2341|    225|        return concat_rebalance_mut<Node>(
 2342|    225|            ec, el, null_sub_pos{}, cpos, er, rpos);
 2343|  2.17k|    } else {
 2344|  2.17k|        assert(lshift == rshift);
 2345|      0|        assert(Node::bits_leaf == 0u || lshift > 0);
 2346|      0|        auto cpos = lpos.last_sub(
 2347|  2.17k|            concat_both_mut_visitor<Node>{}, ec, el, tpos, er, rpos);
 2348|  2.17k|        return concat_rebalance_mut<Node>(ec, el, lpos, cpos, er, rpos);
 2349|  2.17k|    }
 2350|  2.40k|}
_ZN5immer6detail4rbts23concat_both_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE11visit_innerIRNS1_11relaxed_posISC_EERNS1_8leaf_posISC_EERNS1_8full_posISC_EEEENS1_17concat_center_posISC_EEOT_NSA_5applyIS7_E4type4editESV_OT0_SV_OT1_:
 2403|    517|    {
 2404|    517|        return rpos.first_sub(
 2405|    517|            concat_right_mut_visitor<Node>{}, ec, el, lpos, tpos, er);
 2406|    517|    }
_ZN5immer6detail4rbts20concat_rebalance_mutINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEERNS1_11relaxed_posISC_EERNS1_17concat_center_posISC_EERNS1_8full_posISC_EEEENSG_IT_EENSt3__15decayISM_E4type6node_t6edit_tESR_OT0_OT1_SR_OT2_:
 2275|  2.17k|{
 2276|  2.17k|    auto plan = concat_rebalance_plan_mut<Node::bits, Node::bits_leaf>{};
 2277|  2.17k|    plan.fill(lpos, cpos, rpos);
 2278|  2.17k|    plan.shuffle(cpos.shift());
 2279|  2.17k|    return plan.merge(ec, el, lpos, cpos, er, rpos);
 2280|  2.17k|}
_ZN5immer6detail4rbts25concat_rebalance_plan_mutILj2ELj2EE5mergeIRNS1_11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_17concat_center_posISF_EERNS1_8full_posISF_EEEENSI_INSt3__15decayIT0_E4type6node_tEEENSR_4type6node_t6edit_tESU_OT_OSQ_SU_OT1_:
 2239|  2.17k|    {
 2240|  2.17k|        using node_t    = node_type<CPos>;
 2241|  2.17k|        using merger_t  = concat_merger_mut<node_t>;
 2242|  2.17k|        using visitor_t = concat_merger_mut_visitor;
 2243|  2.17k|        auto lnode      = ((node_t*) lpos.node());
 2244|  2.17k|        auto rnode      = ((node_t*) rpos.node());
 2245|  2.17k|        auto lmut2      = lnode && lnode->can_relax() && lnode->can_mutate(el);
  ------------------
  |  Branch (2245:27): [True: 2.17k, False: 0]
  |  Branch (2245:36): [True: 2.17k, False: 0]
  |  Branch (2245:58): [True: 666, False: 1.51k]
  ------------------
 2246|  2.17k|        auto rmut2      = rnode && rnode->can_relax() && rnode->can_mutate(er);
  ------------------
  |  Branch (2246:27): [True: 2.17k, False: 0]
  |  Branch (2246:36): [True: 2.17k, False: 0]
  |  Branch (2246:58): [True: 196, False: 1.98k]
  ------------------
 2247|  2.17k|        auto merger     = merger_t{ec,
 2248|  2.17k|                               cpos.shift(),
 2249|  2.17k|                               this->counts,
 2250|  2.17k|                               this->n,
 2251|  2.17k|                               el,
 2252|  2.17k|                               lmut2 ? lnode : nullptr};
  ------------------
  |  Branch (2252:32): [True: 666, False: 1.51k]
  ------------------
 2253|  2.17k|        IMMER_TRY {
  ------------------
  |  |   41|  2.17k|#define IMMER_TRY try
  ------------------
 2254|  2.17k|            lpos.each_left_sub(visitor_t{}, merger, el);
 2255|  2.17k|            cpos.each_sub(visitor_t{}, merger, ec);
 2256|  2.17k|            if (rmut2)
  ------------------
  |  Branch (2256:17): [True: 196, False: 1.98k]
  ------------------
 2257|    196|                merger.set_candidate(er, rnode);
 2258|  2.17k|            rpos.each_right_sub(visitor_t{}, merger, er);
 2259|  2.17k|            return merger.finish();
 2260|  2.17k|        }
 2261|  2.17k|        IMMER_CATCH (...) {
 2262|      0|            merger.abort();
 2263|      0|            IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 2264|      0|        }
 2265|  2.17k|    }
_ZN5immer6detail4rbts23concat_both_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE11visit_innerIRNS1_11relaxed_posISC_EERNS1_8leaf_posISC_EERNS1_15regular_sub_posISC_EEEENS1_17concat_center_posISC_EEOT_NSA_5applyIS7_E4type4editESV_OT0_SV_OT1_:
 2403|  1.09k|    {
 2404|  1.09k|        return rpos.first_sub(
 2405|  1.09k|            concat_right_mut_visitor<Node>{}, ec, el, lpos, tpos, er);
 2406|  1.09k|    }
_ZN5immer6detail4rbts20concat_rebalance_mutINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEERNS1_11relaxed_posISC_EERNS1_17concat_center_posISC_EERNS1_15regular_sub_posISC_EEEENSG_IT_EENSt3__15decayISM_E4type6node_t6edit_tESR_OT0_OT1_SR_OT2_:
 2275|  6.62k|{
 2276|  6.62k|    auto plan = concat_rebalance_plan_mut<Node::bits, Node::bits_leaf>{};
 2277|  6.62k|    plan.fill(lpos, cpos, rpos);
 2278|  6.62k|    plan.shuffle(cpos.shift());
 2279|  6.62k|    return plan.merge(ec, el, lpos, cpos, er, rpos);
 2280|  6.62k|}
_ZN5immer6detail4rbts25concat_rebalance_plan_mutILj2ELj2EE5mergeIRNS1_11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_17concat_center_posISF_EERNS1_15regular_sub_posISF_EEEENSI_INSt3__15decayIT0_E4type6node_tEEENSR_4type6node_t6edit_tESU_OT_OSQ_SU_OT1_:
 2239|  6.62k|    {
 2240|  6.62k|        using node_t    = node_type<CPos>;
 2241|  6.62k|        using merger_t  = concat_merger_mut<node_t>;
 2242|  6.62k|        using visitor_t = concat_merger_mut_visitor;
 2243|  6.62k|        auto lnode      = ((node_t*) lpos.node());
 2244|  6.62k|        auto rnode      = ((node_t*) rpos.node());
 2245|  6.62k|        auto lmut2      = lnode && lnode->can_relax() && lnode->can_mutate(el);
  ------------------
  |  Branch (2245:27): [True: 6.62k, False: 0]
  |  Branch (2245:36): [True: 6.62k, False: 0]
  |  Branch (2245:58): [True: 3.87k, False: 2.74k]
  ------------------
 2246|  6.62k|        auto rmut2      = rnode && rnode->can_relax() && rnode->can_mutate(er);
  ------------------
  |  Branch (2246:27): [True: 6.62k, False: 0]
  |  Branch (2246:36): [True: 6.62k, False: 0]
  |  Branch (2246:58): [True: 291, False: 6.32k]
  ------------------
 2247|  6.62k|        auto merger     = merger_t{ec,
 2248|  6.62k|                               cpos.shift(),
 2249|  6.62k|                               this->counts,
 2250|  6.62k|                               this->n,
 2251|  6.62k|                               el,
 2252|  6.62k|                               lmut2 ? lnode : nullptr};
  ------------------
  |  Branch (2252:32): [True: 3.87k, False: 2.74k]
  ------------------
 2253|  6.62k|        IMMER_TRY {
  ------------------
  |  |   41|  6.62k|#define IMMER_TRY try
  ------------------
 2254|  6.62k|            lpos.each_left_sub(visitor_t{}, merger, el);
 2255|  6.62k|            cpos.each_sub(visitor_t{}, merger, ec);
 2256|  6.62k|            if (rmut2)
  ------------------
  |  Branch (2256:17): [True: 291, False: 6.32k]
  ------------------
 2257|    291|                merger.set_candidate(er, rnode);
 2258|  6.62k|            rpos.each_right_sub(visitor_t{}, merger, er);
 2259|  6.62k|            return merger.finish();
 2260|  6.62k|        }
 2261|  6.62k|        IMMER_CATCH (...) {
 2262|      0|            merger.abort();
 2263|      0|            IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 2264|      0|        }
 2265|  6.62k|    }
_ZN5immer6detail4rbts23concat_both_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE11visit_innerIRNS1_11relaxed_posISC_EERNS1_8leaf_posISC_EESH_EENS1_17concat_center_posISC_EEOT_NSA_5applyIS7_E4type4editESS_OT0_SS_OT1_:
 2403|   175k|    {
 2404|   175k|        return rpos.first_sub(
 2405|   175k|            concat_right_mut_visitor<Node>{}, ec, el, lpos, tpos, er);
 2406|   175k|    }
_ZN5immer6detail4rbts20concat_rebalance_mutINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEERNS1_11relaxed_posISC_EERNS1_17concat_center_posISC_EESF_EENSG_IT_EENSt3__15decayISJ_E4type6node_t6edit_tESO_OT0_OT1_SO_OT2_:
 2275|   232k|{
 2276|   232k|    auto plan = concat_rebalance_plan_mut<Node::bits, Node::bits_leaf>{};
 2277|   232k|    plan.fill(lpos, cpos, rpos);
 2278|   232k|    plan.shuffle(cpos.shift());
 2279|   232k|    return plan.merge(ec, el, lpos, cpos, er, rpos);
 2280|   232k|}
_ZN5immer6detail4rbts25concat_rebalance_plan_mutILj2ELj2EE5mergeIRNS1_11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_17concat_center_posISF_EESH_EENSI_INSt3__15decayIT0_E4type6node_tEEENSO_4type6node_t6edit_tESR_OT_OSN_SR_OT1_:
 2239|   232k|    {
 2240|   232k|        using node_t    = node_type<CPos>;
 2241|   232k|        using merger_t  = concat_merger_mut<node_t>;
 2242|   232k|        using visitor_t = concat_merger_mut_visitor;
 2243|   232k|        auto lnode      = ((node_t*) lpos.node());
 2244|   232k|        auto rnode      = ((node_t*) rpos.node());
 2245|   232k|        auto lmut2      = lnode && lnode->can_relax() && lnode->can_mutate(el);
  ------------------
  |  Branch (2245:27): [True: 232k, False: 0]
  |  Branch (2245:36): [True: 232k, False: 0]
  |  Branch (2245:58): [True: 39.4k, False: 192k]
  ------------------
 2246|   232k|        auto rmut2      = rnode && rnode->can_relax() && rnode->can_mutate(er);
  ------------------
  |  Branch (2246:27): [True: 232k, False: 0]
  |  Branch (2246:36): [True: 232k, False: 0]
  |  Branch (2246:58): [True: 10.8k, False: 221k]
  ------------------
 2247|   232k|        auto merger     = merger_t{ec,
 2248|   232k|                               cpos.shift(),
 2249|   232k|                               this->counts,
 2250|   232k|                               this->n,
 2251|   232k|                               el,
 2252|   232k|                               lmut2 ? lnode : nullptr};
  ------------------
  |  Branch (2252:32): [True: 39.4k, False: 192k]
  ------------------
 2253|   232k|        IMMER_TRY {
  ------------------
  |  |   41|   232k|#define IMMER_TRY try
  ------------------
 2254|   232k|            lpos.each_left_sub(visitor_t{}, merger, el);
 2255|   232k|            cpos.each_sub(visitor_t{}, merger, ec);
 2256|   232k|            if (rmut2)
  ------------------
  |  Branch (2256:17): [True: 10.8k, False: 221k]
  ------------------
 2257|  10.8k|                merger.set_candidate(er, rnode);
 2258|   232k|            rpos.each_right_sub(visitor_t{}, merger, er);
 2259|   232k|            return merger.finish();
 2260|   232k|        }
 2261|   232k|        IMMER_CATCH (...) {
 2262|      0|            merger.abort();
 2263|      0|            IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 2264|      0|        }
 2265|   232k|    }
_ZN5immer6detail4rbts30concat_trees_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10visit_nodeIRNS1_15regular_sub_posISC_EERNS1_11relaxed_posISC_EERNS1_8leaf_posISC_EEEENS1_17concat_center_posISC_EEOT_NSA_5applyIS7_E4type4editESV_OT0_OT1_SV_:
 2427|  6.43k|    {
 2428|  6.43k|        return concat_inners_mut<Node>(ec, el, lpos, tpos, er, rpos);
 2429|  6.43k|    }
_ZN5immer6detail4rbts29concat_trees_left_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10visit_nodeIRNS1_15regular_sub_posISC_EENS1_8leaf_posISC_EEJRPSC_RjRmEEENS1_17concat_center_posISC_EEOT_NSA_5applyIS7_E4type4editESV_OT0_SV_DpOT1_:
 2446|  5.91k|    {
 2447|  5.91k|        return visit_maybe_relaxed_sub(args...,
 2448|  5.91k|                                       concat_trees_right_mut_visitor<Node>{},
 2449|  5.91k|                                       ec,
 2450|  5.91k|                                       el,
 2451|  5.91k|                                       lpos,
 2452|  5.91k|                                       tpos,
 2453|  5.91k|                                       er);
 2454|  5.91k|    }
_ZN5immer6detail4rbts30concat_trees_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10visit_nodeIRNS1_11relaxed_posISC_EERNS1_15regular_sub_posISC_EERNS1_8leaf_posISC_EEEENS1_17concat_center_posISC_EEOT_NSA_5applyIS7_E4type4editESV_OT0_OT1_SV_:
 2427|  3.37k|    {
 2428|  3.37k|        return concat_inners_mut<Node>(ec, el, lpos, tpos, er, rpos);
 2429|  3.37k|    }
_ZN5immer6detail4rbts30concat_trees_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10visit_nodeIRNS1_15regular_sub_posISC_EESH_RNS1_8leaf_posISC_EEEENS1_17concat_center_posISC_EEOT_NSA_5applyIS7_E4type4editESS_OT0_OT1_SS_:
 2427|  2.54k|    {
 2428|  2.54k|        return concat_inners_mut<Node>(ec, el, lpos, tpos, er, rpos);
 2429|  2.54k|    }

_ZN5immer6detail4rbts23visit_maybe_relaxed_subINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEENS1_11dec_visitorEJEEEDcPT_jmT0_DpOT1_:
 1830|   265k|{
 1831|   265k|    assert(node);
 1832|      0|    auto relaxed = node->relaxed();
 1833|   265k|    if (relaxed) {
  ------------------
  |  Branch (1833:9): [True: 225k, False: 39.8k]
  ------------------
 1834|   225k|        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
 1835|      0|        return make_relaxed_pos(node, shift, relaxed)
 1836|   225k|            .visit(v, std::forward<Args>(args)...);
 1837|   225k|    } else {
 1838|  39.8k|        return make_regular_sub_pos(node, shift, size)
 1839|  39.8k|            .visit(v, std::forward<Args>(args)...);
 1840|  39.8k|    }
 1841|   265k|}
_ZN5immer6detail4rbts16make_relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEENS1_11relaxed_posIT_EEPSE_jPNSE_9relaxed_tE:
 1820|  9.83M|{
 1821|  9.83M|    assert(node);
 1822|      0|    assert(relaxed);
 1823|      0|    assert(shift >= NodeT::bits_leaf);
 1824|      0|    return {node, shift, relaxed};
 1825|  9.83M|}
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_11dec_visitorEJEEEDcT_DpOT0_:
 1805|   662k|    {
 1806|   662k|        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
 1807|   662k|    }
_ZNK5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE4nodeEv:
 1423|  6.38M|    node_t* node() const { return node_; }
_ZNK5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5countEv:
 1422|  8.97M|    count_t count() const { return relaxed_->d.count; }
_ZN5immer6detail4rbts20make_regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEENS1_15regular_sub_posIT_EEPSE_jm:
 1036|  2.63M|{
 1037|  2.63M|    assert(node);
 1038|      0|    assert(shift >= NodeT::bits_leaf);
 1039|      0|    assert(size > 0);
 1040|      0|    assert(size <= (branches<NodeT::bits, size_t> << shift));
 1041|      0|    return {node, shift, size};
 1042|  2.63M|}
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_11dec_visitorEJEEEDcT_DpOT0_:
 1028|  51.6k|    {
 1029|  51.6k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1030|  51.6k|    }
_ZNK5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE4nodeEv:
  777|  5.23M|    node_t* node() const { return node_; }
_ZNK5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5shiftEv:
  779|  5.41M|    shift_t shift() const { return shift_; }
_ZN5immer6detail4rbts18make_full_leaf_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEENS1_13full_leaf_posIT_EEPSE_:
  212|   216k|{
  213|   216k|    assert(node);
  214|      0|    return {node};
  215|   216k|}
_ZN5immer6detail4rbts13full_leaf_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_11dec_visitorEJEEEDcT_DpOT0_:
  205|  6.08k|    {
  206|  6.08k|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  207|  6.08k|    }
_ZNK5immer6detail4rbts13full_leaf_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE4nodeEv:
  197|   149k|    node_t* node() const { return node_; }
_ZNK5immer6detail4rbts13full_leaf_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5countEv:
  196|   214k|    count_t count() const { return branches<BL>; }
_ZN5immer6detail4rbts13make_leaf_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEENS1_8leaf_posIT_EEPSE_m:
  118|   133k|{
  119|   133k|    assert(node);
  120|      0|    assert(size > 0);
  121|      0|    return {node, size};
  122|   133k|}
_ZNK5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE4sizeEv:
  778|  8.97M|    size_t size() const { return size_; }
_ZN5immer6detail4rbts8leaf_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_11dec_visitorEJEEEDcT_DpOT0_:
  111|  2.60k|    {
  112|  2.60k|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  113|  2.60k|    }
_ZNK5immer6detail4rbts8leaf_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE4nodeEv:
  103|   136k|    node_t* node() const { return node_; }
_ZNK5immer6detail4rbts8leaf_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5countEv:
  102|   251k|    count_t count() const { return index(size_ - 1) + 1; }
_ZNK5immer6detail4rbts8leaf_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5indexEm:
  106|   263k|    count_t index(size_t idx) const { return idx & mask<BL>; }
_ZN5immer6detail4rbts13make_full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEENS1_8full_posIT_EEPSE_j:
 1404|   567k|{
 1405|   567k|    assert(node);
 1406|      0|    assert(shift >= NodeT::bits_leaf);
 1407|      0|    return {node, shift};
 1408|   567k|}
_ZN5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_11dec_visitorEJEEEDcT_DpOT0_:
 1397|  8.87k|    {
 1398|  8.87k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1399|  8.87k|    }
_ZNK5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE4nodeEv:
 1151|   313k|    node_t* node() const { return node_; }
_ZNK5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5countEv:
 1150|   534k|    count_t count() const { return branches<B>; }
_ZN5immer6detail4rbts16make_regular_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEENS1_11regular_posIT_EEPSE_jm:
  688|  11.5M|{
  689|  11.5M|    assert(node);
  690|      0|    assert(shift >= NodeT::bits_leaf);
  691|      0|    assert(size > 0);
  692|      0|    return {node, shift, size};
  693|  11.5M|}
_ZN5immer6detail4rbts11regular_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_11dec_visitorEJEEEDcT_DpOT0_:
  334|  3.12k|    {
  335|  3.12k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
  336|  3.12k|    }
_ZNK5immer6detail4rbts11regular_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE4nodeEv:
  229|  20.8M|    node_t* node() const { return node_; }
_ZNK5immer6detail4rbts11regular_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5shiftEv:
  231|  20.8M|    shift_t shift() const { return shift_; }
_ZNK5immer6detail4rbts11regular_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE4sizeEv:
  230|  43.9M|    size_t size() const { return size_; }
_ZNK5immer6detail4rbts11regular_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5countEv:
  228|  9.35M|    count_t count() const { return index(size_ - 1) + 1; }
_ZNK5immer6detail4rbts11regular_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5indexEm:
  232|  32.4M|    count_t index(size_t idx) const { return (idx >> shift_) & mask<B>; }
_ZNK5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5countEv:
  776|  3.38M|    count_t count() const { return subindex(size_ - 1) + 1; }
_ZNK5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE8subindexEm:
  781|  3.39M|    count_t subindex(size_t idx) const { return idx >> shift_; }
_ZN5immer6detail4rbts22make_empty_regular_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEENS1_17empty_regular_posIT_EEPSE_:
   63|   445k|{
   64|   445k|    return {node};
   65|   445k|}
_ZN5immer6detail4rbts17empty_regular_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_11dec_visitorEJEEEDcT_DpOT0_:
   56|   445k|    {
   57|   445k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
   58|   445k|    }
_ZNK5immer6detail4rbts17empty_regular_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE4nodeEv:
   41|   445k|    node_t* node() const { return node_; }
_ZN5immer6detail4rbts17make_leaf_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEENS1_12leaf_sub_posIT_EEPSE_j:
  150|  2.35M|{
  151|  2.35M|    assert(node);
  152|      0|    assert(count <= branches<NodeT::bits_leaf>);
  153|      0|    return {node, count};
  154|  2.35M|}
_ZN5immer6detail4rbts12leaf_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_11dec_visitorEJEEEDcT_DpOT0_:
  143|   517k|    {
  144|   517k|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  145|   517k|    }
_ZNK5immer6detail4rbts12leaf_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE4nodeEv:
  135|  1.58M|    node_t* node() const { return node_; }
_ZNK5immer6detail4rbts12leaf_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5countEv:
  134|  1.83M|    count_t count() const { return count_; }
_ZN5immer6detail4rbts19make_empty_leaf_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEENS1_14empty_leaf_posIT_EEPSE_:
   87|   388k|{
   88|   388k|    assert(node);
   89|      0|    return {node};
   90|   388k|}
_ZN5immer6detail4rbts14empty_leaf_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_11dec_visitorEJEEEDcT_DpOT0_:
   80|   388k|    {
   81|   388k|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
   82|   388k|    }
_ZNK5immer6detail4rbts14empty_leaf_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE4nodeEv:
   74|   388k|    node_t* node() const { return node_; }
_ZNK5immer6detail4rbts14empty_leaf_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5countEv:
   73|  10.6k|    count_t count() const { return 0; }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_17push_tail_visitorISC_EEJRPSC_RjEEEDcT_DpOT0_:
 1805|  50.8k|    {
 1806|  50.8k|        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
 1807|  50.8k|    }
_ZNK5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5shiftEv:
 1425|  2.93M|    shift_t shift() const { return shift_; }
_ZNK5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE4sizeEj:
 1435|  2.77M|    {
 1436|  2.77M|        return size_sbh(offset, size_before(offset));
 1437|  2.77M|    }
_ZNK5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE8size_sbhEjm:
 1440|  2.94M|    {
 1441|  2.94M|        assert(size_before_hint == size_before(offset));
 1442|      0|        return relaxed_->d.sizes[offset] - size_before_hint;
 1443|  2.94M|    }
_ZNK5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE11size_beforeEj:
 1430|  6.16M|    {
 1431|  6.16M|        return offset ? relaxed_->d.sizes[offset - 1] : 0;
  ------------------
  |  Branch (1431:16): [True: 5.45M, False: 708k]
  ------------------
 1432|  6.16M|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE11last_oh_cshINS1_17push_tail_visitorISC_EEJRPSC_RjEEEDcT_jmDpOT0_:
 1729|  46.5k|    {
 1730|  46.5k|        assert(offset_hint == count() - 1);
 1731|      0|        assert(child_size_hint == size(offset_hint));
 1732|      0|        auto child   = node_->inner()[offset_hint];
 1733|  46.5k|        auto is_leaf = shift_ == BL;
 1734|  46.5k|        return is_leaf
  ------------------
  |  Branch (1734:16): [True: 0, False: 46.5k]
  ------------------
 1735|  46.5k|                   ? make_leaf_sub_pos(child, child_size_hint).visit(v, args...)
 1736|  46.5k|                   : visit_maybe_relaxed_sub(
 1737|  46.5k|                         child, shift_ - B, child_size_hint, v, args...);
 1738|  46.5k|    }
_ZN5immer6detail4rbts23visit_maybe_relaxed_subINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEENS1_17push_tail_visitorISC_EEJRPSC_RjEEEDcPT_jmT0_DpOT1_:
 1830|  46.5k|{
 1831|  46.5k|    assert(node);
 1832|      0|    auto relaxed = node->relaxed();
 1833|  46.5k|    if (relaxed) {
  ------------------
  |  Branch (1833:9): [True: 35.3k, False: 11.1k]
  ------------------
 1834|  35.3k|        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
 1835|      0|        return make_relaxed_pos(node, shift, relaxed)
 1836|  35.3k|            .visit(v, std::forward<Args>(args)...);
 1837|  35.3k|    } else {
 1838|  11.1k|        return make_regular_sub_pos(node, shift, size)
 1839|  11.1k|            .visit(v, std::forward<Args>(args)...);
 1840|  11.1k|    }
 1841|  46.5k|}
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_17push_tail_visitorISC_EEJRPSC_RjEEEDcT_DpOT0_:
 1028|  11.1k|    {
 1029|  11.1k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1030|  11.1k|    }
_ZNK5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5indexEm:
  780|  4.52M|    count_t index(size_t idx) const { return (idx >> shift_) & mask<B>; }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE7last_ohINS1_17push_tail_visitorISC_EEJRPSC_EEEDcT_jDpOT0_:
  944|  11.7k|    {
  945|  11.7k|        return last_oh_regular(*this, v, offset_hint, args...);
  946|  11.7k|    }
_ZN5immer6detail4rbts15last_oh_regularIRNS1_15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEENS1_17push_tail_visitorISD_EEJRPSD_EEEDcOT_T0_jDpOT1_:
  675|  11.7k|{
  676|  11.7k|    assert(offset_hint == p.count() - 1);
  677|      0|    constexpr auto B  = bits<Pos>;
  678|  11.7k|    constexpr auto BL = bits_leaf<Pos>;
  679|  11.7k|    auto child        = p.node()->inner()[offset_hint];
  680|  11.7k|    auto is_leaf      = p.shift() == BL;
  681|  11.7k|    return is_leaf ? make_leaf_pos(child, p.size()).visit(v, args...)
  ------------------
  |  Branch (681:12): [True: 0, False: 11.7k]
  ------------------
  682|  11.7k|                   : make_regular_pos(child, p.shift() - B, p.size())
  683|  11.7k|                         .visit(v, args...);
  684|  11.7k|}
_ZN5immer6detail4rbts11regular_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_17push_tail_visitorISC_EEJRPSC_EEEDcT_DpOT0_:
  334|  52.6k|    {
  335|  52.6k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
  336|  52.6k|    }
_ZN5immer6detail4rbts11regular_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE7last_ohINS1_17push_tail_visitorISC_EEJRPSC_EEEDcT_jDpOT0_:
  328|  40.8k|    {
  329|  40.8k|        return last_oh_regular(*this, v, offset_hint, args...);
  330|  40.8k|    }
_ZN5immer6detail4rbts15last_oh_regularIRNS1_11regular_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEENS1_17push_tail_visitorISD_EEJRPSD_EEEDcOT_T0_jDpOT1_:
  675|  40.8k|{
  676|  40.8k|    assert(offset_hint == p.count() - 1);
  677|      0|    constexpr auto B  = bits<Pos>;
  678|  40.8k|    constexpr auto BL = bits_leaf<Pos>;
  679|  40.8k|    auto child        = p.node()->inner()[offset_hint];
  680|  40.8k|    auto is_leaf      = p.shift() == BL;
  681|  40.8k|    return is_leaf ? make_leaf_pos(child, p.size()).visit(v, args...)
  ------------------
  |  Branch (681:12): [True: 0, False: 40.8k]
  ------------------
  682|  40.8k|                   : make_regular_pos(child, p.shift() - B, p.size())
  683|  40.8k|                         .visit(v, args...);
  684|  40.8k|}
_ZNK5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE4sizeEv:
 1424|  4.52M|    size_t size() const { return relaxed_->d.sizes[relaxed_->d.count - 1]; }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_17push_tail_visitorISC_EEJRPSC_EEEDcT_DpOT0_:
 1028|  3.84k|    {
 1029|  3.84k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1030|  3.84k|    }
flex-vector-gc.cpp:_ZN5immer6detail4rbts12leaf_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_14update_visitorISC_EEJmRZZ22LLVMFuzzerTestOneInputENK3$_5clI12fuzzer_inputEEDaRT_EUlSK_E_EEEDcSK_DpOT0_:
  143|    629|    {
  144|    629|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  145|    629|    }
_ZNK5immer6detail4rbts12leaf_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5indexEm:
  138|  46.8k|    count_t index(size_t idx) const { return idx & mask<BL>; }
flex-vector-gc.cpp:_ZN5immer6detail4rbts23visit_maybe_relaxed_subINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEENS1_14update_visitorISC_EEJRmRZZ22LLVMFuzzerTestOneInputENK3$_5clI12fuzzer_inputEEDaRT_EUlSJ_E_EEEDcPSJ_jmT0_DpOT1_:
 1830|  43.4k|{
 1831|  43.4k|    assert(node);
 1832|      0|    auto relaxed = node->relaxed();
 1833|  43.4k|    if (relaxed) {
  ------------------
  |  Branch (1833:9): [True: 41.4k, False: 1.99k]
  ------------------
 1834|  41.4k|        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
 1835|      0|        return make_relaxed_pos(node, shift, relaxed)
 1836|  41.4k|            .visit(v, std::forward<Args>(args)...);
 1837|  41.4k|    } else {
 1838|  1.99k|        return make_regular_sub_pos(node, shift, size)
 1839|  1.99k|            .visit(v, std::forward<Args>(args)...);
 1840|  1.99k|    }
 1841|  43.4k|}
flex-vector-gc.cpp:_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_14update_visitorISC_EEJRmRZZ22LLVMFuzzerTestOneInputENK3$_5clI12fuzzer_inputEEDaRT_EUlSL_E_EEEDcSL_DpOT0_:
 1805|  41.4k|    {
 1806|  41.4k|        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
 1807|  41.4k|    }
_ZNK5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5indexEm:
 1446|   972k|    {
 1447|   972k|        auto offset = idx >> shift_;
 1448|  1.18M|        while (relaxed_->d.sizes[offset] <= idx)
  ------------------
  |  Branch (1448:16): [True: 213k, False: 972k]
  ------------------
 1449|   213k|            ++offset;
 1450|   972k|        return offset;
 1451|   972k|    }
_ZNK5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE7relaxedEv:
 1427|  41.4k|    relaxed_t* relaxed() const { return relaxed_; }
flex-vector-gc.cpp:_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10towards_ohINS1_14update_visitorISC_EEJRZZ22LLVMFuzzerTestOneInputENK3$_5clI12fuzzer_inputEEDaRT_EUlSK_E_EEEDcSK_mjDpOT0_:
 1678|  41.4k|    {
 1679|  41.4k|        assert(offset_hint == index(idx));
 1680|  41.4k|        auto left_size = offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0;
  ------------------
  |  Branch (1680:26): [True: 3.54k, False: 37.8k]
  ------------------
 1681|  41.4k|        return towards_oh_sbh(v, idx, offset_hint, left_size, args...);
 1682|  41.4k|    }
flex-vector-gc.cpp:_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE14towards_oh_sbhINS1_14update_visitorISC_EEJRZZ22LLVMFuzzerTestOneInputENK3$_5clI12fuzzer_inputEEDaRT_EUlSK_E_EEEDcSK_mjmDpOT0_:
 1690|  41.4k|    {
 1691|  41.4k|        return towards_sub_oh_sbh(v, idx, offset_hint, left_size_hint, args...);
 1692|  41.4k|    }
flex-vector-gc.cpp:_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE18towards_sub_oh_sbhINS1_14update_visitorISC_EEJRZZ22LLVMFuzzerTestOneInputENK3$_5clI12fuzzer_inputEEDaRT_EUlSK_E_EEEDcSK_mjmDpOT0_:
 1709|  41.4k|    {
 1710|  41.4k|        assert(offset_hint == index(idx));
 1711|      0|        assert(left_size_hint ==
 1712|  41.4k|               (offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0));
 1713|      0|        auto child     = node_->inner()[offset_hint];
 1714|  41.4k|        auto is_leaf   = shift_ == BL;
 1715|  41.4k|        auto next_size = relaxed_->d.sizes[offset_hint] - left_size_hint;
 1716|  41.4k|        auto next_idx  = idx - left_size_hint;
 1717|  41.4k|        return is_leaf
  ------------------
  |  Branch (1717:16): [True: 5.41k, False: 36.0k]
  ------------------
 1718|  41.4k|                   ? make_leaf_sub_pos(child, next_size)
 1719|  5.41k|                         .visit(v, next_idx, args...)
 1720|  41.4k|                   : visit_maybe_relaxed_sub(
 1721|  36.0k|                         child, shift_ - B, next_size, v, next_idx, args...);
 1722|  41.4k|    }
flex-vector-gc.cpp:_ZN5immer6detail4rbts12leaf_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_14update_visitorISC_EEJRmRZZ22LLVMFuzzerTestOneInputENK3$_5clI12fuzzer_inputEEDaRT_EUlSL_E_EEEDcSL_DpOT0_:
  143|  5.41k|    {
  144|  5.41k|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  145|  5.41k|    }
flex-vector-gc.cpp:_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_14update_visitorISC_EEJRmRZZ22LLVMFuzzerTestOneInputENK3$_5clI12fuzzer_inputEEDaRT_EUlSL_E_EEEDcSL_DpOT0_:
 1028|  1.99k|    {
 1029|  1.99k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1030|  1.99k|    }
flex-vector-gc.cpp:_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE13towards_oh_chINS1_14update_visitorISC_EEJRZZ22LLVMFuzzerTestOneInputENK3$_5clI12fuzzer_inputEEDaRT_EUlSK_E_EEEDcSK_mjjDpOT0_:
  930|  1.99k|    {
  931|  1.99k|        return towards_oh_ch_regular(
  932|  1.99k|            *this, v, idx, offset_hint, count(), args...);
  933|  1.99k|    }
flex-vector-gc.cpp:_ZN5immer6detail4rbts21towards_oh_ch_regularIRNS1_15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEENS1_14update_visitorISD_EEJRZZ22LLVMFuzzerTestOneInputENK3$_5clI12fuzzer_inputEEDaRT_EUlSL_E_EEEDcOSL_T0_mjjDpOT1_:
  630|  1.99k|{
  631|  1.99k|    constexpr auto B  = bits<Pos>;
  632|  1.99k|    constexpr auto BL = bits_leaf<Pos>;
  633|  1.99k|    assert(offset_hint == p.index(idx));
  634|      0|    assert(count_hint == p.count());
  635|      0|    auto is_leaf = p.shift() == BL;
  636|  1.99k|    auto child   = p.node()->inner()[offset_hint];
  637|  1.99k|    auto is_full = offset_hint + 1 != count_hint;
  638|  1.99k|    return is_full
  ------------------
  |  Branch (638:12): [True: 899, False: 1.09k]
  ------------------
  639|  1.99k|               ? (is_leaf ? make_full_leaf_pos(child).visit(v, idx, args...)
  ------------------
  |  Branch (639:19): [True: 297, False: 602]
  ------------------
  640|    899|                          : make_full_pos(child, p.shift() - B)
  641|    602|                                .visit(v, idx, args...))
  642|  1.99k|               : (is_leaf
  ------------------
  |  Branch (642:19): [True: 240, False: 854]
  ------------------
  643|  1.09k|                      ? make_leaf_pos(child, p.size()).visit(v, idx, args...)
  644|  1.09k|                      : make_regular_pos(child, p.shift() - B, p.size())
  645|    854|                            .visit(v, idx, args...));
  646|  1.99k|}
flex-vector-gc.cpp:_ZN5immer6detail4rbts13full_leaf_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_14update_visitorISC_EEJRmRZZ22LLVMFuzzerTestOneInputENK3$_5clI12fuzzer_inputEEDaRT_EUlSL_E_EEEDcSL_DpOT0_:
  205|  1.29k|    {
  206|  1.29k|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  207|  1.29k|    }
_ZNK5immer6detail4rbts13full_leaf_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5indexEm:
  200|  27.3k|    count_t index(size_t idx) const { return idx & mask<BL>; }
flex-vector-gc.cpp:_ZN5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_14update_visitorISC_EEJRmRZZ22LLVMFuzzerTestOneInputENK3$_5clI12fuzzer_inputEEDaRT_EUlSL_E_EEEDcSL_DpOT0_:
 1397|  1.50k|    {
 1398|  1.50k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1399|  1.50k|    }
_ZNK5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5indexEm:
 1154|  52.1k|    count_t index(size_t idx) const { return (idx >> shift_) & mask<B>; }
flex-vector-gc.cpp:_ZN5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE13towards_oh_chINS1_14update_visitorISC_EEJRZZ22LLVMFuzzerTestOneInputENK3$_5clI12fuzzer_inputEEDaRT_EUlSK_E_EEEDcSK_mjjDpOT0_:
 1321|  1.50k|    {
 1322|  1.50k|        return towards_oh(v, idx, offset_hint, args...);
 1323|  1.50k|    }
flex-vector-gc.cpp:_ZN5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10towards_ohINS1_14update_visitorISC_EEJRZZ22LLVMFuzzerTestOneInputENK3$_5clI12fuzzer_inputEEDaRT_EUlSK_E_EEEDcSK_mjDpOT0_:
 1328|  1.50k|    {
 1329|  1.50k|        assert(offset_hint == index(idx));
 1330|      0|        auto is_leaf = shift_ == BL;
 1331|  1.50k|        auto child   = node_->inner()[offset_hint];
 1332|  1.50k|        return is_leaf
  ------------------
  |  Branch (1332:16): [True: 802, False: 699]
  ------------------
 1333|  1.50k|                   ? make_full_leaf_pos(child).visit(v, idx, args...)
 1334|  1.50k|                   : make_full_pos(child, shift_ - B).visit(v, idx, args...);
 1335|  1.50k|    }
flex-vector-gc.cpp:_ZN5immer6detail4rbts8leaf_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_14update_visitorISC_EEJRmRZZ22LLVMFuzzerTestOneInputENK3$_5clI12fuzzer_inputEEDaRT_EUlSL_E_EEEDcSL_DpOT0_:
  111|    699|    {
  112|    699|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  113|    699|    }
flex-vector-gc.cpp:_ZN5immer6detail4rbts11regular_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_14update_visitorISC_EEJRmRZZ22LLVMFuzzerTestOneInputENK3$_5clI12fuzzer_inputEEDaRT_EUlSL_E_EEEDcSL_DpOT0_:
  334|  1.13k|    {
  335|  1.13k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
  336|  1.13k|    }
flex-vector-gc.cpp:_ZN5immer6detail4rbts11regular_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE13towards_oh_chINS1_14update_visitorISC_EEJRZZ22LLVMFuzzerTestOneInputENK3$_5clI12fuzzer_inputEEDaRT_EUlSK_E_EEEDcSK_mjjDpOT0_:
  314|  1.13k|    {
  315|  1.13k|        return towards_oh_ch_regular(
  316|  1.13k|            *this, v, idx, offset_hint, count(), args...);
  317|  1.13k|    }
flex-vector-gc.cpp:_ZN5immer6detail4rbts21towards_oh_ch_regularIRNS1_11regular_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEENS1_14update_visitorISD_EEJRZZ22LLVMFuzzerTestOneInputENK3$_5clI12fuzzer_inputEEDaRT_EUlSL_E_EEEDcOSL_T0_mjjDpOT1_:
  630|  1.13k|{
  631|  1.13k|    constexpr auto B  = bits<Pos>;
  632|  1.13k|    constexpr auto BL = bits_leaf<Pos>;
  633|  1.13k|    assert(offset_hint == p.index(idx));
  634|      0|    assert(count_hint == p.count());
  635|      0|    auto is_leaf = p.shift() == BL;
  636|  1.13k|    auto child   = p.node()->inner()[offset_hint];
  637|  1.13k|    auto is_full = offset_hint + 1 != count_hint;
  638|  1.13k|    return is_full
  ------------------
  |  Branch (638:12): [True: 395, False: 736]
  ------------------
  639|  1.13k|               ? (is_leaf ? make_full_leaf_pos(child).visit(v, idx, args...)
  ------------------
  |  Branch (639:19): [True: 195, False: 200]
  ------------------
  640|    395|                          : make_full_pos(child, p.shift() - B)
  641|    200|                                .visit(v, idx, args...))
  642|  1.13k|               : (is_leaf
  ------------------
  |  Branch (642:19): [True: 459, False: 277]
  ------------------
  643|    736|                      ? make_leaf_pos(child, p.size()).visit(v, idx, args...)
  644|    736|                      : make_regular_pos(child, p.shift() - B, p.size())
  645|    277|                            .visit(v, idx, args...));
  646|  1.13k|}
_ZN5immer6detail4rbts23visit_maybe_relaxed_subINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEENS1_19slice_right_visitorISC_Lb1EEEJRmEEEDcPT_jmT0_DpOT1_:
 1830|  17.0k|{
 1831|  17.0k|    assert(node);
 1832|      0|    auto relaxed = node->relaxed();
 1833|  17.0k|    if (relaxed) {
  ------------------
  |  Branch (1833:9): [True: 12.0k, False: 5.02k]
  ------------------
 1834|  12.0k|        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
 1835|      0|        return make_relaxed_pos(node, shift, relaxed)
 1836|  12.0k|            .visit(v, std::forward<Args>(args)...);
 1837|  12.0k|    } else {
 1838|  5.02k|        return make_regular_sub_pos(node, shift, size)
 1839|  5.02k|            .visit(v, std::forward<Args>(args)...);
 1840|  5.02k|    }
 1841|  17.0k|}
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_19slice_right_visitorISC_Lb1EEEJRmEEEDcT_DpOT0_:
 1805|  12.0k|    {
 1806|  12.0k|        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
 1807|  12.0k|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10towards_ohINS1_19slice_right_visitorISC_Lb1EEEJEEEDcT_mjDpOT0_:
 1678|  7.76k|    {
 1679|  7.76k|        assert(offset_hint == index(idx));
 1680|  7.76k|        auto left_size = offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0;
  ------------------
  |  Branch (1680:26): [True: 0, False: 7.76k]
  ------------------
 1681|  7.76k|        return towards_oh_sbh(v, idx, offset_hint, left_size, args...);
 1682|  7.76k|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE14towards_oh_sbhINS1_19slice_right_visitorISC_Lb1EEEJEEEDcT_mjmDpOT0_:
 1690|  7.76k|    {
 1691|  7.76k|        return towards_sub_oh_sbh(v, idx, offset_hint, left_size_hint, args...);
 1692|  7.76k|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE18towards_sub_oh_sbhINS1_19slice_right_visitorISC_Lb1EEEJEEEDcT_mjmDpOT0_:
 1709|  7.76k|    {
 1710|  7.76k|        assert(offset_hint == index(idx));
 1711|      0|        assert(left_size_hint ==
 1712|  7.76k|               (offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0));
 1713|      0|        auto child     = node_->inner()[offset_hint];
 1714|  7.76k|        auto is_leaf   = shift_ == BL;
 1715|  7.76k|        auto next_size = relaxed_->d.sizes[offset_hint] - left_size_hint;
 1716|  7.76k|        auto next_idx  = idx - left_size_hint;
 1717|  7.76k|        return is_leaf
  ------------------
  |  Branch (1717:16): [True: 682, False: 7.07k]
  ------------------
 1718|  7.76k|                   ? make_leaf_sub_pos(child, next_size)
 1719|    682|                         .visit(v, next_idx, args...)
 1720|  7.76k|                   : visit_maybe_relaxed_sub(
 1721|  7.07k|                         child, shift_ - B, next_size, v, next_idx, args...);
 1722|  7.76k|    }
_ZN5immer6detail4rbts12leaf_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_19slice_right_visitorISC_Lb1EEEJRmEEEDcT_DpOT0_:
  143|    682|    {
  144|    682|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  145|    682|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10towards_ohINS1_19slice_right_visitorISC_Lb0EEEJEEEDcT_mjDpOT0_:
 1678|  11.6k|    {
 1679|  11.6k|        assert(offset_hint == index(idx));
 1680|  11.6k|        auto left_size = offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0;
  ------------------
  |  Branch (1680:26): [True: 6.63k, False: 5.03k]
  ------------------
 1681|  11.6k|        return towards_oh_sbh(v, idx, offset_hint, left_size, args...);
 1682|  11.6k|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE14towards_oh_sbhINS1_19slice_right_visitorISC_Lb0EEEJEEEDcT_mjmDpOT0_:
 1690|  11.6k|    {
 1691|  11.6k|        return towards_sub_oh_sbh(v, idx, offset_hint, left_size_hint, args...);
 1692|  11.6k|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE18towards_sub_oh_sbhINS1_19slice_right_visitorISC_Lb0EEEJEEEDcT_mjmDpOT0_:
 1709|  11.6k|    {
 1710|  11.6k|        assert(offset_hint == index(idx));
 1711|      0|        assert(left_size_hint ==
 1712|  11.6k|               (offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0));
 1713|      0|        auto child     = node_->inner()[offset_hint];
 1714|  11.6k|        auto is_leaf   = shift_ == BL;
 1715|  11.6k|        auto next_size = relaxed_->d.sizes[offset_hint] - left_size_hint;
 1716|  11.6k|        auto next_idx  = idx - left_size_hint;
 1717|  11.6k|        return is_leaf
  ------------------
  |  Branch (1717:16): [True: 2.91k, False: 8.76k]
  ------------------
 1718|  11.6k|                   ? make_leaf_sub_pos(child, next_size)
 1719|  2.91k|                         .visit(v, next_idx, args...)
 1720|  11.6k|                   : visit_maybe_relaxed_sub(
 1721|  8.76k|                         child, shift_ - B, next_size, v, next_idx, args...);
 1722|  11.6k|    }
_ZN5immer6detail4rbts12leaf_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_19slice_right_visitorISC_Lb0EEEJRmEEEDcT_DpOT0_:
  143|  2.91k|    {
  144|  2.91k|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  145|  2.91k|    }
_ZN5immer6detail4rbts23visit_maybe_relaxed_subINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEENS1_19slice_right_visitorISC_Lb0EEEJRmEEEDcPT_jmT0_DpOT1_:
 1830|  8.76k|{
 1831|  8.76k|    assert(node);
 1832|      0|    auto relaxed = node->relaxed();
 1833|  8.76k|    if (relaxed) {
  ------------------
  |  Branch (1833:9): [True: 7.37k, False: 1.39k]
  ------------------
 1834|  7.37k|        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
 1835|      0|        return make_relaxed_pos(node, shift, relaxed)
 1836|  7.37k|            .visit(v, std::forward<Args>(args)...);
 1837|  7.37k|    } else {
 1838|  1.39k|        return make_regular_sub_pos(node, shift, size)
 1839|  1.39k|            .visit(v, std::forward<Args>(args)...);
 1840|  1.39k|    }
 1841|  8.76k|}
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_19slice_right_visitorISC_Lb0EEEJRmEEEDcT_DpOT0_:
 1805|  7.37k|    {
 1806|  7.37k|        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
 1807|  7.37k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_19slice_right_visitorISC_Lb0EEEJRmEEEDcT_DpOT0_:
 1028|  1.39k|    {
 1029|  1.39k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1030|  1.39k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10towards_ohINS1_19slice_right_visitorISC_Lb0EEEJEEEDcT_mjDpOT0_:
  919|  3.70k|    {
  920|  3.70k|        return towards_oh_ch_regular(
  921|  3.70k|            *this, v, idx, offset_hint, count(), args...);
  922|  3.70k|    }
_ZN5immer6detail4rbts21towards_oh_ch_regularIRNS1_15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEENS1_19slice_right_visitorISD_Lb0EEEJEEEDcOT_T0_mjjDpOT1_:
  630|  3.70k|{
  631|  3.70k|    constexpr auto B  = bits<Pos>;
  632|  3.70k|    constexpr auto BL = bits_leaf<Pos>;
  633|  3.70k|    assert(offset_hint == p.index(idx));
  634|      0|    assert(count_hint == p.count());
  635|      0|    auto is_leaf = p.shift() == BL;
  636|  3.70k|    auto child   = p.node()->inner()[offset_hint];
  637|  3.70k|    auto is_full = offset_hint + 1 != count_hint;
  638|  3.70k|    return is_full
  ------------------
  |  Branch (638:12): [True: 1.06k, False: 2.64k]
  ------------------
  639|  3.70k|               ? (is_leaf ? make_full_leaf_pos(child).visit(v, idx, args...)
  ------------------
  |  Branch (639:19): [True: 419, False: 642]
  ------------------
  640|  1.06k|                          : make_full_pos(child, p.shift() - B)
  641|    642|                                .visit(v, idx, args...))
  642|  3.70k|               : (is_leaf
  ------------------
  |  Branch (642:19): [True: 857, False: 1.78k]
  ------------------
  643|  2.64k|                      ? make_leaf_pos(child, p.size()).visit(v, idx, args...)
  644|  2.64k|                      : make_regular_pos(child, p.shift() - B, p.size())
  645|  1.78k|                            .visit(v, idx, args...));
  646|  3.70k|}
_ZN5immer6detail4rbts13full_leaf_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_19slice_right_visitorISC_Lb0EEEJRmEEEDcT_DpOT0_:
  205|  2.89k|    {
  206|  2.89k|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  207|  2.89k|    }
_ZN5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_19slice_right_visitorISC_Lb0EEEJRmEEEDcT_DpOT0_:
 1397|  2.04k|    {
 1398|  2.04k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1399|  2.04k|    }
_ZN5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10towards_ohINS1_19slice_right_visitorISC_Lb0EEEJEEEDcT_mjDpOT0_:
 1328|  3.15k|    {
 1329|  3.15k|        assert(offset_hint == index(idx));
 1330|      0|        auto is_leaf = shift_ == BL;
 1331|  3.15k|        auto child   = node_->inner()[offset_hint];
 1332|  3.15k|        return is_leaf
  ------------------
  |  Branch (1332:16): [True: 2.01k, False: 1.14k]
  ------------------
 1333|  3.15k|                   ? make_full_leaf_pos(child).visit(v, idx, args...)
 1334|  3.15k|                   : make_full_pos(child, shift_ - B).visit(v, idx, args...);
 1335|  3.15k|    }
_ZNK5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5shiftEv:
 1153|  35.8k|    shift_t shift() const { return shift_; }
_ZN5immer6detail4rbts8leaf_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_19slice_right_visitorISC_Lb0EEEJRmEEEDcT_DpOT0_:
  111|  1.93k|    {
  112|  1.93k|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  113|  1.93k|    }
_ZN5immer6detail4rbts11regular_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_19slice_right_visitorISC_Lb0EEEJRmEEEDcT_DpOT0_:
  334|  2.57k|    {
  335|  2.57k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
  336|  2.57k|    }
_ZN5immer6detail4rbts11regular_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10towards_ohINS1_19slice_right_visitorISC_Lb0EEEJEEEDcT_mjDpOT0_:
  303|  2.57k|    {
  304|  2.57k|        return towards_oh_ch_regular(
  305|  2.57k|            *this, v, idx, offset_hint, count(), args...);
  306|  2.57k|    }
_ZN5immer6detail4rbts21towards_oh_ch_regularIRNS1_11regular_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEENS1_19slice_right_visitorISD_Lb0EEEJEEEDcOT_T0_mjjDpOT1_:
  630|  2.57k|{
  631|  2.57k|    constexpr auto B  = bits<Pos>;
  632|  2.57k|    constexpr auto BL = bits_leaf<Pos>;
  633|  2.57k|    assert(offset_hint == p.index(idx));
  634|      0|    assert(count_hint == p.count());
  635|      0|    auto is_leaf = p.shift() == BL;
  636|  2.57k|    auto child   = p.node()->inner()[offset_hint];
  637|  2.57k|    auto is_full = offset_hint + 1 != count_hint;
  638|  2.57k|    return is_full
  ------------------
  |  Branch (638:12): [True: 715, False: 1.86k]
  ------------------
  639|  2.57k|               ? (is_leaf ? make_full_leaf_pos(child).visit(v, idx, args...)
  ------------------
  |  Branch (639:19): [True: 460, False: 255]
  ------------------
  640|    715|                          : make_full_pos(child, p.shift() - B)
  641|    255|                                .visit(v, idx, args...))
  642|  2.57k|               : (is_leaf
  ------------------
  |  Branch (642:19): [True: 1.07k, False: 790]
  ------------------
  643|  1.86k|                      ? make_leaf_pos(child, p.size()).visit(v, idx, args...)
  644|  1.86k|                      : make_regular_pos(child, p.shift() - B, p.size())
  645|    790|                            .visit(v, idx, args...));
  646|  2.57k|}
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_19slice_right_visitorISC_Lb1EEEJRmEEEDcT_DpOT0_:
 1028|  5.02k|    {
 1029|  5.02k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1030|  5.02k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10towards_ohINS1_19slice_right_visitorISC_Lb1EEEJEEEDcT_mjDpOT0_:
  919|  2.71k|    {
  920|  2.71k|        return towards_oh_ch_regular(
  921|  2.71k|            *this, v, idx, offset_hint, count(), args...);
  922|  2.71k|    }
_ZN5immer6detail4rbts21towards_oh_ch_regularIRNS1_15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEENS1_19slice_right_visitorISD_Lb1EEEJEEEDcOT_T0_mjjDpOT1_:
  630|  2.71k|{
  631|  2.71k|    constexpr auto B  = bits<Pos>;
  632|  2.71k|    constexpr auto BL = bits_leaf<Pos>;
  633|  2.71k|    assert(offset_hint == p.index(idx));
  634|      0|    assert(count_hint == p.count());
  635|      0|    auto is_leaf = p.shift() == BL;
  636|  2.71k|    auto child   = p.node()->inner()[offset_hint];
  637|  2.71k|    auto is_full = offset_hint + 1 != count_hint;
  638|  2.71k|    return is_full
  ------------------
  |  Branch (638:12): [True: 2.31k, False: 396]
  ------------------
  639|  2.71k|               ? (is_leaf ? make_full_leaf_pos(child).visit(v, idx, args...)
  ------------------
  |  Branch (639:19): [True: 561, False: 1.75k]
  ------------------
  640|  2.31k|                          : make_full_pos(child, p.shift() - B)
  641|  1.75k|                                .visit(v, idx, args...))
  642|  2.71k|               : (is_leaf
  ------------------
  |  Branch (642:19): [True: 396, False: 0]
  ------------------
  643|    396|                      ? make_leaf_pos(child, p.size()).visit(v, idx, args...)
  644|    396|                      : make_regular_pos(child, p.shift() - B, p.size())
  645|      0|                            .visit(v, idx, args...));
  646|  2.71k|}
_ZN5immer6detail4rbts13full_leaf_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_19slice_right_visitorISC_Lb1EEEJRmEEEDcT_DpOT0_:
  205|  1.19k|    {
  206|  1.19k|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  207|  1.19k|    }
_ZN5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_19slice_right_visitorISC_Lb1EEEJRmEEEDcT_DpOT0_:
 1397|  2.24k|    {
 1398|  2.24k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1399|  2.24k|    }
_ZN5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10towards_ohINS1_19slice_right_visitorISC_Lb1EEEJEEEDcT_mjDpOT0_:
 1328|  1.12k|    {
 1329|  1.12k|        assert(offset_hint == index(idx));
 1330|      0|        auto is_leaf = shift_ == BL;
 1331|  1.12k|        auto child   = node_->inner()[offset_hint];
 1332|  1.12k|        return is_leaf
  ------------------
  |  Branch (1332:16): [True: 638, False: 486]
  ------------------
 1333|  1.12k|                   ? make_full_leaf_pos(child).visit(v, idx, args...)
 1334|  1.12k|                   : make_full_pos(child, shift_ - B).visit(v, idx, args...);
 1335|  1.12k|    }
_ZN5immer6detail4rbts8leaf_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_19slice_right_visitorISC_Lb1EEEJRmEEEDcT_DpOT0_:
  111|    396|    {
  112|    396|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  113|    396|    }
_ZN5immer6detail4rbts23visit_maybe_relaxed_subINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEENS1_18slice_left_visitorISC_Lb1EEEJRmEEEDcPT_jmT0_DpOT1_:
 1830|  25.2k|{
 1831|  25.2k|    assert(node);
 1832|      0|    auto relaxed = node->relaxed();
 1833|  25.2k|    if (relaxed) {
  ------------------
  |  Branch (1833:9): [True: 22.3k, False: 2.90k]
  ------------------
 1834|  22.3k|        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
 1835|      0|        return make_relaxed_pos(node, shift, relaxed)
 1836|  22.3k|            .visit(v, std::forward<Args>(args)...);
 1837|  22.3k|    } else {
 1838|  2.90k|        return make_regular_sub_pos(node, shift, size)
 1839|  2.90k|            .visit(v, std::forward<Args>(args)...);
 1840|  2.90k|    }
 1841|  25.2k|}
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_18slice_left_visitorISC_Lb1EEEJRmEEEDcT_DpOT0_:
 1805|  22.3k|    {
 1806|  22.3k|        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
 1807|  22.3k|    }
_ZNK5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE8subindexEm:
 1426|   164k|    count_t subindex(size_t idx) const { return index(idx); }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE14towards_sub_ohINS1_18slice_left_visitorISC_Lb1EEEJEEEDcT_mjDpOT0_:
 1697|  1.63k|    {
 1698|  1.63k|        assert(offset_hint == index(idx));
 1699|  1.63k|        auto left_size = offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0;
  ------------------
  |  Branch (1699:26): [True: 1.09k, False: 540]
  ------------------
 1700|  1.63k|        return towards_sub_oh_sbh(v, idx, offset_hint, left_size, args...);
 1701|  1.63k|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE18towards_sub_oh_sbhINS1_18slice_left_visitorISC_Lb1EEEJEEEDcT_mjmDpOT0_:
 1709|  1.63k|    {
 1710|  1.63k|        assert(offset_hint == index(idx));
 1711|      0|        assert(left_size_hint ==
 1712|  1.63k|               (offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0));
 1713|      0|        auto child     = node_->inner()[offset_hint];
 1714|  1.63k|        auto is_leaf   = shift_ == BL;
 1715|  1.63k|        auto next_size = relaxed_->d.sizes[offset_hint] - left_size_hint;
 1716|  1.63k|        auto next_idx  = idx - left_size_hint;
 1717|  1.63k|        return is_leaf
  ------------------
  |  Branch (1717:16): [True: 0, False: 1.63k]
  ------------------
 1718|  1.63k|                   ? make_leaf_sub_pos(child, next_size)
 1719|      0|                         .visit(v, next_idx, args...)
 1720|  1.63k|                   : visit_maybe_relaxed_sub(
 1721|  1.63k|                         child, shift_ - B, next_size, v, next_idx, args...);
 1722|  1.63k|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE14towards_sub_ohINS1_18slice_left_visitorISC_Lb0EEEJEEEDcT_mjDpOT0_:
 1697|   162k|    {
 1698|   162k|        assert(offset_hint == index(idx));
 1699|   162k|        auto left_size = offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0;
  ------------------
  |  Branch (1699:26): [True: 34.1k, False: 128k]
  ------------------
 1700|   162k|        return towards_sub_oh_sbh(v, idx, offset_hint, left_size, args...);
 1701|   162k|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE18towards_sub_oh_sbhINS1_18slice_left_visitorISC_Lb0EEEJEEEDcT_mjmDpOT0_:
 1709|   162k|    {
 1710|   162k|        assert(offset_hint == index(idx));
 1711|      0|        assert(left_size_hint ==
 1712|   162k|               (offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0));
 1713|      0|        auto child     = node_->inner()[offset_hint];
 1714|   162k|        auto is_leaf   = shift_ == BL;
 1715|   162k|        auto next_size = relaxed_->d.sizes[offset_hint] - left_size_hint;
 1716|   162k|        auto next_idx  = idx - left_size_hint;
 1717|   162k|        return is_leaf
  ------------------
  |  Branch (1717:16): [True: 19.1k, False: 143k]
  ------------------
 1718|   162k|                   ? make_leaf_sub_pos(child, next_size)
 1719|  19.1k|                         .visit(v, next_idx, args...)
 1720|   162k|                   : visit_maybe_relaxed_sub(
 1721|   143k|                         child, shift_ - B, next_size, v, next_idx, args...);
 1722|   162k|    }
_ZN5immer6detail4rbts12leaf_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_18slice_left_visitorISC_Lb0EEEJRmEEEDcT_DpOT0_:
  143|  19.1k|    {
  144|  19.1k|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  145|  19.1k|    }
_ZN5immer6detail4rbts23visit_maybe_relaxed_subINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEENS1_18slice_left_visitorISC_Lb0EEEJRmEEEDcPT_jmT0_DpOT1_:
 1830|   143k|{
 1831|   143k|    assert(node);
 1832|      0|    auto relaxed = node->relaxed();
 1833|   143k|    if (relaxed) {
  ------------------
  |  Branch (1833:9): [True: 142k, False: 1.63k]
  ------------------
 1834|   142k|        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
 1835|      0|        return make_relaxed_pos(node, shift, relaxed)
 1836|   142k|            .visit(v, std::forward<Args>(args)...);
 1837|   142k|    } else {
 1838|  1.63k|        return make_regular_sub_pos(node, shift, size)
 1839|  1.63k|            .visit(v, std::forward<Args>(args)...);
 1840|  1.63k|    }
 1841|   143k|}
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_18slice_left_visitorISC_Lb0EEEJRmEEEDcT_DpOT0_:
 1805|   142k|    {
 1806|   142k|        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
 1807|   142k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_18slice_left_visitorISC_Lb0EEEJRmEEEDcT_DpOT0_:
 1028|  1.63k|    {
 1029|  1.63k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1030|  1.63k|    }
_ZNK5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE11size_beforeEj:
  783|  13.7k|    {
  784|  13.7k|        return size_t{offset} << shift_;
  785|  13.7k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE8size_sbhEjm:
  795|  4.96k|    {
  796|  4.96k|        assert(size_before_hint == size_before(offset));
  797|  4.96k|        return offset == subindex(size_ - 1) ? size_ - size_before_hint
  ------------------
  |  Branch (797:16): [True: 2.31k, False: 2.64k]
  ------------------
  798|  4.96k|                                             : size_t{1} << shift_;
  799|  4.96k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE14towards_sub_ohINS1_18slice_left_visitorISC_Lb0EEEJEEEDcT_mjDpOT0_:
  938|  3.60k|    {
  939|  3.60k|        return towards_sub_oh_regular(*this, v, idx, offset_hint, args...);
  940|  3.60k|    }
_ZN5immer6detail4rbts22towards_sub_oh_regularIRNS1_15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEENS1_18slice_left_visitorISD_Lb0EEEJEEEDcOT_T0_mjDpOT1_:
  651|  3.60k|{
  652|  3.60k|    constexpr auto B  = bits<Pos>;
  653|  3.60k|    constexpr auto BL = bits_leaf<Pos>;
  654|  3.60k|    assert(offset_hint == p.index(idx));
  655|      0|    auto is_leaf = p.shift() == BL;
  656|  3.60k|    auto child   = p.node()->inner()[offset_hint];
  657|  3.60k|    auto lsize   = offset_hint << p.shift();
  658|  3.60k|    auto size    = p.this_size();
  659|  3.60k|    auto is_full = (size - lsize) >= (size_t{1} << p.shift());
  660|  3.60k|    return is_full
  ------------------
  |  Branch (660:12): [True: 3.60k, False: 0]
  ------------------
  661|  3.60k|               ? (is_leaf
  ------------------
  |  Branch (661:19): [True: 2.01k, False: 1.58k]
  ------------------
  662|  3.60k|                      ? make_full_leaf_pos(child).visit(v, idx - lsize, args...)
  663|  3.60k|                      : make_full_pos(child, p.shift() - B)
  664|  1.58k|                            .visit(v, idx - lsize, args...))
  665|  3.60k|               : (is_leaf
  ------------------
  |  Branch (665:19): [True: 0, False: 0]
  ------------------
  666|      0|                      ? make_leaf_sub_pos(child, size - lsize)
  667|      0|                            .visit(v, idx - lsize, args...)
  668|      0|                      : make_regular_sub_pos(child, p.shift() - B, size - lsize)
  669|      0|                            .visit(v, idx - lsize, args...));
  670|  3.60k|}
_ZNK5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE9this_sizeEv:
  786|  4.96k|    size_t this_size() const { return size_; }
_ZN5immer6detail4rbts13full_leaf_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_18slice_left_visitorISC_Lb0EEEJmEEEDcT_DpOT0_:
  205|  4.54k|    {
  206|  4.54k|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  207|  4.54k|    }
_ZN5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_18slice_left_visitorISC_Lb0EEEJmEEEDcT_DpOT0_:
 1397|  4.19k|    {
 1398|  4.19k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1399|  4.19k|    }
_ZNK5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE8subindexEm:
 1155|  5.39k|    count_t subindex(size_t idx) const { return idx >> shift_; }
_ZNK5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE11size_beforeEj:
 1162|  5.39k|    {
 1163|  5.39k|        return size_t{offset} << shift_;
 1164|  5.39k|    }
_ZNK5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE8size_sbhEjm:
 1158|  5.39k|    {
 1159|  5.39k|        return size_t{1} << shift_;
 1160|  5.39k|    }
_ZN5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE14towards_sub_ohINS1_18slice_left_visitorISC_Lb0EEEJEEEDcT_mjDpOT0_:
 1340|  5.13k|    {
 1341|  5.13k|        assert(offset_hint == index(idx));
 1342|      0|        auto is_leaf = shift_ == BL;
 1343|  5.13k|        auto child   = node_->inner()[offset_hint];
 1344|  5.13k|        auto lsize   = size_t{offset_hint} << shift_;
 1345|  5.13k|        return is_leaf
  ------------------
  |  Branch (1345:16): [True: 2.52k, False: 2.60k]
  ------------------
 1346|  5.13k|                   ? make_full_leaf_pos(child).visit(v, idx - lsize, args...)
 1347|  5.13k|                   : make_full_pos(child, shift_ - B)
 1348|  2.60k|                         .visit(v, idx - lsize, args...);
 1349|  5.13k|    }
_ZN5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10copy_sizesEjjmPm:
 1167|  5.13k|    {
 1168|  5.13k|        auto e = sizes + n;
 1169|  15.5k|        for (; sizes != e; ++sizes) {
  ------------------
  |  Branch (1169:16): [True: 10.3k, False: 5.13k]
  ------------------
 1170|  10.3k|            init = *sizes = init + (size_t{1} << shift_);
 1171|  10.3k|            assert(init);
 1172|  10.3k|        }
 1173|  5.13k|    }
_ZNK5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE4sizeEv:
 1152|   265k|    size_t size() const { return branches<B, size_t> << shift_; }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10copy_sizesEjjmPm:
  802|  6.00k|    {
  803|  6.00k|        if (n) {
  ------------------
  |  Branch (803:13): [True: 5.05k, False: 954]
  ------------------
  804|  5.05k|            auto last = offset + n - 1;
  805|  5.05k|            auto e    = sizes + n - 1;
  806|  9.92k|            for (; sizes != e; ++sizes) {
  ------------------
  |  Branch (806:20): [True: 4.87k, False: 5.05k]
  ------------------
  807|  4.87k|                init = *sizes = init + (size_t{1} << shift_);
  808|  4.87k|                assert(init);
  809|  4.87k|            }
  810|  5.05k|            *sizes = init + size(last);
  811|  5.05k|            assert(*sizes);
  812|  5.05k|        }
  813|  6.00k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE4sizeEj:
  789|  5.05k|    {
  790|  5.05k|        return offset == subindex(size_ - 1) ? size_ - size_before(offset)
  ------------------
  |  Branch (790:16): [True: 3.85k, False: 1.20k]
  ------------------
  791|  5.05k|                                             : size_t{1} << shift_;
  792|  5.05k|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10copy_sizesEjjmPm:
 1454|   279k|    {
 1455|   279k|        auto e     = sizes + n;
 1456|   279k|        auto prev  = size_before(offset);
 1457|   279k|        auto these = relaxed_->d.sizes + offset;
 1458|   721k|        for (; sizes != e; ++sizes, ++these) {
  ------------------
  |  Branch (1458:16): [True: 441k, False: 279k]
  ------------------
 1459|   441k|            auto this_size = *these;
 1460|   441k|            init = *sizes = init + (this_size - prev);
 1461|   441k|            assert(init);
 1462|      0|            prev = this_size;
 1463|   441k|        }
 1464|   279k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_18slice_left_visitorISC_Lb1EEEJRmEEEDcT_DpOT0_:
 1028|  2.90k|    {
 1029|  2.90k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1030|  2.90k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE14towards_sub_ohINS1_18slice_left_visitorISC_Lb1EEEJEEEDcT_mjDpOT0_:
  938|  1.36k|    {
  939|  1.36k|        return towards_sub_oh_regular(*this, v, idx, offset_hint, args...);
  940|  1.36k|    }
_ZN5immer6detail4rbts22towards_sub_oh_regularIRNS1_15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEENS1_18slice_left_visitorISD_Lb1EEEJEEEDcOT_T0_mjDpOT1_:
  651|  1.36k|{
  652|  1.36k|    constexpr auto B  = bits<Pos>;
  653|  1.36k|    constexpr auto BL = bits_leaf<Pos>;
  654|  1.36k|    assert(offset_hint == p.index(idx));
  655|      0|    auto is_leaf = p.shift() == BL;
  656|  1.36k|    auto child   = p.node()->inner()[offset_hint];
  657|  1.36k|    auto lsize   = offset_hint << p.shift();
  658|  1.36k|    auto size    = p.this_size();
  659|  1.36k|    auto is_full = (size - lsize) >= (size_t{1} << p.shift());
  660|  1.36k|    return is_full
  ------------------
  |  Branch (660:12): [True: 940, False: 425]
  ------------------
  661|  1.36k|               ? (is_leaf
  ------------------
  |  Branch (661:19): [True: 0, False: 940]
  ------------------
  662|    940|                      ? make_full_leaf_pos(child).visit(v, idx - lsize, args...)
  663|    940|                      : make_full_pos(child, p.shift() - B)
  664|    940|                            .visit(v, idx - lsize, args...))
  665|  1.36k|               : (is_leaf
  ------------------
  |  Branch (665:19): [True: 0, False: 425]
  ------------------
  666|    425|                      ? make_leaf_sub_pos(child, size - lsize)
  667|      0|                            .visit(v, idx - lsize, args...)
  668|    425|                      : make_regular_sub_pos(child, p.shift() - B, size - lsize)
  669|    425|                            .visit(v, idx - lsize, args...));
  670|  1.36k|}
_ZN5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_18slice_left_visitorISC_Lb1EEEJmEEEDcT_DpOT0_:
 1397|  1.20k|    {
 1398|  1.20k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1399|  1.20k|    }
_ZN5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE14towards_sub_ohINS1_18slice_left_visitorISC_Lb1EEEJEEEDcT_mjDpOT0_:
 1340|    260|    {
 1341|    260|        assert(offset_hint == index(idx));
 1342|      0|        auto is_leaf = shift_ == BL;
 1343|    260|        auto child   = node_->inner()[offset_hint];
 1344|    260|        auto lsize   = size_t{offset_hint} << shift_;
 1345|    260|        return is_leaf
  ------------------
  |  Branch (1345:16): [True: 0, False: 260]
  ------------------
 1346|    260|                   ? make_full_leaf_pos(child).visit(v, idx - lsize, args...)
 1347|    260|                   : make_full_pos(child, shift_ - B)
 1348|    260|                         .visit(v, idx - lsize, args...);
 1349|    260|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_18slice_left_visitorISC_Lb1EEEJmEEEDcT_DpOT0_:
 1028|    425|    {
 1029|    425|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1030|    425|    }
_ZN5immer6detail4rbts30make_singleton_regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEDaPT_j:
  758|  10.6k|{
  759|  10.6k|    assert(leaf);
  760|  10.6k|    IMMER_ASSERT_TAGGED(leaf->kind() == NodeT::kind_t::leaf);
  ------------------
  |  |   60|  10.6k|#define IMMER_ASSERT_TAGGED(assertion) assert(assertion)
  ------------------
  761|      0|    assert(count > 0);
  762|      0|    return singleton_regular_sub_pos<NodeT>{leaf, count};
  763|  10.6k|}
_ZN5immer6detail4rbts25singleton_regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_25concat_trees_left_visitorISC_EEJNS1_14empty_leaf_posISC_EERPSC_RjRmEEEDcT_DpOT0_:
  751|  2.75k|    {
  752|  2.75k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
  753|  2.75k|    }
_ZN5immer6detail4rbts23visit_maybe_relaxed_subINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEENS1_26concat_trees_right_visitorISC_EEJRNS1_25singleton_regular_sub_posISC_EERNS1_14empty_leaf_posISC_EEEEEDcPT_jmT0_DpOT1_:
 1830|  2.75k|{
 1831|  2.75k|    assert(node);
 1832|      0|    auto relaxed = node->relaxed();
 1833|  2.75k|    if (relaxed) {
  ------------------
  |  Branch (1833:9): [True: 1.16k, False: 1.58k]
  ------------------
 1834|  1.16k|        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
 1835|      0|        return make_relaxed_pos(node, shift, relaxed)
 1836|  1.16k|            .visit(v, std::forward<Args>(args)...);
 1837|  1.58k|    } else {
 1838|  1.58k|        return make_regular_sub_pos(node, shift, size)
 1839|  1.58k|            .visit(v, std::forward<Args>(args)...);
 1840|  1.58k|    }
 1841|  2.75k|}
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_26concat_trees_right_visitorISC_EEJRNS1_25singleton_regular_sub_posISC_EERNS1_14empty_leaf_posISC_EEEEEDcT_DpOT0_:
 1805|  1.16k|    {
 1806|  1.16k|        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
 1807|  1.16k|    }
_ZNK5immer6detail4rbts25singleton_regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5shiftEv:
  729|  31.1k|    shift_t shift() const { return BL; }
_ZN5immer6detail4rbts25singleton_regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE13each_left_subINS1_34concat_rebalance_plan_fill_visitorEJRNS1_21concat_rebalance_planILj2ELj2EEEEEEvT_DpOT0_:
  738|  10.6k|    {}
_ZN5immer6detail4rbts12leaf_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_34concat_rebalance_plan_fill_visitorEJRNS1_21concat_rebalance_planILj2ELj2EEEEEEDcT_DpOT0_:
  143|   778k|    {
  144|   778k|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  145|   778k|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_34concat_rebalance_plan_fill_visitorEJRNS1_21concat_rebalance_planILj2ELj2EEEEEEDcT_DpOT0_:
 1805|  3.26M|    {
 1806|  3.26M|        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
 1807|  3.26M|    }
_ZN5immer6detail4rbts12null_sub_pos14each_right_subINS1_34concat_rebalance_plan_fill_visitorEJRNS1_21concat_rebalance_planILj2ELj2EEEEEEvT_DpOT0_:
  704|   103k|    {}
_ZN5immer6detail4rbts25singleton_regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE13each_left_subINS1_21concat_merger_visitorEJRNS1_13concat_mergerISC_EEEEEvT_DpOT0_:
  738|  2.75k|    {}
_ZN5immer6detail4rbts12leaf_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_21concat_merger_visitorEJRNS1_13concat_mergerISC_EEEEEDcT_DpOT0_:
  143|   342k|    {
  144|   342k|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  145|   342k|    }
_ZNK5immer6detail4rbts12leaf_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE4sizeEv:
  136|   778k|    size_t size() const { return count_; }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_21concat_merger_visitorEJRNS1_13concat_mergerISC_EEEEEDcT_DpOT0_:
 1805|  1.43M|    {
 1806|  1.43M|        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
 1807|  1.43M|    }
_ZN5immer6detail4rbts12null_sub_pos14each_right_subINS1_21concat_merger_visitorEJRNS1_13concat_mergerINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEEEEvT_DpOT0_:
  704|  7.26k|    {}
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE9first_subINS1_20concat_right_visitorISC_EEJRNS1_25singleton_regular_sub_posISC_EERNS1_14empty_leaf_posISC_EEEEEDcT_DpOT0_:
 1754|  2.71k|    {
 1755|  2.71k|        auto child      = node_->inner()[0];
 1756|  2.71k|        auto child_size = relaxed_->d.sizes[0];
 1757|  2.71k|        auto is_leaf    = shift_ == BL;
 1758|  2.71k|        assert(child_size);
 1759|  2.71k|        return is_leaf ? make_leaf_sub_pos(child, child_size).visit(v, args...)
  ------------------
  |  Branch (1759:16): [True: 0, False: 2.71k]
  ------------------
 1760|  2.71k|                       : visit_maybe_relaxed_sub(
 1761|  2.71k|                             child, shift_ - B, child_size, v, args...);
 1762|  2.71k|    }
_ZNK5immer6detail4rbts14empty_leaf_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5shiftEv:
   75|  10.6k|    shift_t shift() const { return 0; }
_ZNK5immer6detail4rbts12leaf_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5shiftEv:
  137|   498k|    shift_t shift() const { return 0; }
_ZNK5immer6detail4rbts25singleton_regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE4nodeEv:
  727|  7.93k|    node_t* node() const { return nullptr; }
_ZN5immer6detail4rbts23visit_maybe_relaxed_subINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEENS1_20concat_right_visitorISC_EEJRNS1_25singleton_regular_sub_posISC_EERNS1_14empty_leaf_posISC_EEEEEDcPT_jmT0_DpOT1_:
 1830|  2.71k|{
 1831|  2.71k|    assert(node);
 1832|      0|    auto relaxed = node->relaxed();
 1833|  2.71k|    if (relaxed) {
  ------------------
  |  Branch (1833:9): [True: 2.51k, False: 198]
  ------------------
 1834|  2.51k|        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
 1835|      0|        return make_relaxed_pos(node, shift, relaxed)
 1836|  2.51k|            .visit(v, std::forward<Args>(args)...);
 1837|  2.51k|    } else {
 1838|    198|        return make_regular_sub_pos(node, shift, size)
 1839|    198|            .visit(v, std::forward<Args>(args)...);
 1840|    198|    }
 1841|  2.71k|}
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_20concat_right_visitorISC_EEJRNS1_25singleton_regular_sub_posISC_EERNS1_14empty_leaf_posISC_EEEEEDcT_DpOT0_:
 1805|  2.51k|    {
 1806|  2.51k|        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
 1807|  2.51k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_20concat_right_visitorISC_EEJRNS1_25singleton_regular_sub_posISC_EERNS1_14empty_leaf_posISC_EEEEEDcT_DpOT0_:
 1028|    198|    {
 1029|    198|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1030|    198|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE9first_subINS1_20concat_right_visitorISC_EEJRNS1_25singleton_regular_sub_posISC_EERNS1_14empty_leaf_posISC_EEEEEDcT_DpOT0_:
  962|    795|    {
  963|    795|        auto is_leaf = shift_ == BL;
  964|    795|        auto child   = node_->inner()[0];
  965|    795|        auto is_full = size_ >= (size_t{1} << shift_);
  966|    795|        return is_full
  ------------------
  |  Branch (966:16): [True: 795, False: 0]
  ------------------
  967|    795|                   ? (is_leaf
  ------------------
  |  Branch (967:23): [True: 0, False: 795]
  ------------------
  968|    795|                          ? make_full_leaf_pos(child).visit(v, args...)
  969|    795|                          : make_full_pos(child, shift_ - B).visit(v, args...))
  970|    795|                   : (is_leaf
  ------------------
  |  Branch (970:23): [True: 0, False: 0]
  ------------------
  971|      0|                          ? make_leaf_sub_pos(child, size_).visit(v, args...)
  972|      0|                          : make_regular_sub_pos(child, shift_ - B, size_)
  973|      0|                                .visit(v, args...));
  974|    795|    }
_ZNK5immer6detail4rbts13full_leaf_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5shiftEv:
  199|  26.3k|    shift_t shift() const { return 0; }
_ZN5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_20concat_right_visitorISC_EEJRNS1_25singleton_regular_sub_posISC_EERNS1_14empty_leaf_posISC_EEEEEDcT_DpOT0_:
 1397|  1.28k|    {
 1398|  1.28k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1399|  1.28k|    }
_ZN5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE9first_subINS1_20concat_right_visitorISC_EEJRNS1_25singleton_regular_sub_posISC_EERNS1_14empty_leaf_posISC_EEEEEDcT_DpOT0_:
 1353|    491|    {
 1354|    491|        auto is_leaf = shift_ == BL;
 1355|    491|        auto child   = node_->inner()[0];
 1356|    491|        return is_leaf ? make_full_leaf_pos(child).visit(v, args...)
  ------------------
  |  Branch (1356:16): [True: 0, False: 491]
  ------------------
 1357|    491|                       : make_full_pos(child, shift_ - B).visit(v, args...);
 1358|    491|    }
_ZN5immer6detail4rbts12null_sub_pos13each_left_subINS1_34concat_rebalance_plan_fill_visitorEJRNS1_21concat_rebalance_planILj2ELj2EEEEEEvT_DpOT0_:
  707|  69.1k|    {}
_ZN5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE14each_right_subINS1_34concat_rebalance_plan_fill_visitorEJRNS1_21concat_rebalance_planILj2ELj2EEEEEEvT_DpOT0_:
 1296|  15.5k|    {
 1297|  15.5k|        each_i(v, 1, branches<B>, args...);
 1298|  15.5k|    }
_ZN5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE6each_iINS1_34concat_rebalance_plan_fill_visitorEJRNS1_21concat_rebalance_planILj2ELj2EEEEEEvT_jjDpOT0_:
 1255|  15.5k|    {
 1256|  15.5k|        auto p = node_->inner() + i;
 1257|  15.5k|        auto e = node_->inner() + n;
 1258|  15.5k|        if (shift_ == BL) {
  ------------------
  |  Branch (1258:13): [True: 8.92k, False: 6.60k]
  ------------------
 1259|  35.6k|            for (; p != e; ++p) {
  ------------------
  |  Branch (1259:20): [True: 26.7k, False: 8.92k]
  ------------------
 1260|  26.7k|                IMMER_PREFETCH(p + 1);
 1261|  26.7k|                make_full_leaf_pos(*p).visit(v, args...);
 1262|  26.7k|            }
 1263|  8.92k|        } else {
 1264|  6.60k|            auto ss = shift_ - B;
 1265|  26.4k|            for (; p != e; ++p)
  ------------------
  |  Branch (1265:20): [True: 19.8k, False: 6.60k]
  ------------------
 1266|  19.8k|                make_full_pos(*p, ss).visit(v, args...);
 1267|  6.60k|        }
 1268|  15.5k|    }
_ZN5immer6detail4rbts13full_leaf_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_34concat_rebalance_plan_fill_visitorEJRNS1_21concat_rebalance_planILj2ELj2EEEEEEDcT_DpOT0_:
  205|  80.9k|    {
  206|  80.9k|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  207|  80.9k|    }
_ZN5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_34concat_rebalance_plan_fill_visitorEJRNS1_21concat_rebalance_planILj2ELj2EEEEEEDcT_DpOT0_:
 1397|   260k|    {
 1398|   260k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1399|   260k|    }
_ZN5immer6detail4rbts12null_sub_pos13each_left_subINS1_21concat_merger_visitorEJRNS1_13concat_mergerINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEEEEvT_DpOT0_:
  707|  8.69k|    {}
_ZN5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE14each_right_subINS1_21concat_merger_visitorEJRNS1_13concat_mergerISC_EEEEEvT_DpOT0_:
 1296|  6.06k|    {
 1297|  6.06k|        each_i(v, 1, branches<B>, args...);
 1298|  6.06k|    }
_ZN5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE6each_iINS1_21concat_merger_visitorEJRNS1_13concat_mergerISC_EEEEEvT_jjDpOT0_:
 1255|  6.06k|    {
 1256|  6.06k|        auto p = node_->inner() + i;
 1257|  6.06k|        auto e = node_->inner() + n;
 1258|  6.06k|        if (shift_ == BL) {
  ------------------
  |  Branch (1258:13): [True: 3.41k, False: 2.65k]
  ------------------
 1259|  13.6k|            for (; p != e; ++p) {
  ------------------
  |  Branch (1259:20): [True: 10.2k, False: 3.41k]
  ------------------
 1260|  10.2k|                IMMER_PREFETCH(p + 1);
 1261|  10.2k|                make_full_leaf_pos(*p).visit(v, args...);
 1262|  10.2k|            }
 1263|  3.41k|        } else {
 1264|  2.65k|            auto ss = shift_ - B;
 1265|  10.6k|            for (; p != e; ++p)
  ------------------
  |  Branch (1265:20): [True: 7.96k, False: 2.65k]
  ------------------
 1266|  7.96k|                make_full_pos(*p, ss).visit(v, args...);
 1267|  2.65k|        }
 1268|  6.06k|    }
_ZN5immer6detail4rbts13full_leaf_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_21concat_merger_visitorEJRNS1_13concat_mergerISC_EEEEEDcT_DpOT0_:
  205|  18.9k|    {
  206|  18.9k|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  207|  18.9k|    }
_ZNK5immer6detail4rbts13full_leaf_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE4sizeEv:
  198|  80.9k|    size_t size() const { return branches<BL>; }
_ZN5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_21concat_merger_visitorEJRNS1_13concat_mergerISC_EEEEEDcT_DpOT0_:
 1397|  18.2k|    {
 1398|  18.2k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1399|  18.2k|    }
_ZN5immer6detail4rbts25singleton_regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE8last_subINS1_19concat_both_visitorISC_EEJRNS1_14empty_leaf_posISC_EERNS1_8full_posISC_EEEEEDcT_DpOT0_:
  745|    795|    {
  746|    795|        return make_leaf_sub_pos(leaf_, count_).visit(v, args...);
  747|    795|    }
_ZN5immer6detail4rbts12leaf_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_19concat_both_visitorISC_EEJRNS1_14empty_leaf_posISC_EERNS1_8full_posISC_EEEEEDcT_DpOT0_:
  143|    795|    {
  144|    795|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  145|    795|    }
_ZN5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE14first_sub_leafINS1_20concat_right_visitorISC_EEJRNS1_12leaf_sub_posISC_EERNS1_14empty_leaf_posISC_EEEEEDcT_DpOT0_:
 1362|    795|    {
 1363|    795|        assert(shift_ == BL);
 1364|      0|        auto child = node_->inner()[0];
 1365|    795|        return make_full_leaf_pos(child).visit(v, args...);
 1366|    795|    }
_ZN5immer6detail4rbts13full_leaf_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_20concat_right_visitorISC_EEJRNS1_12leaf_sub_posISC_EERNS1_14empty_leaf_posISC_EEEEEDcT_DpOT0_:
  205|  1.78k|    {
  206|  1.78k|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  207|  1.78k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE14each_right_subINS1_34concat_rebalance_plan_fill_visitorEJRNS1_21concat_rebalance_planILj2ELj2EEEEEEvT_DpOT0_:
  898|  26.3k|    {
  899|  26.3k|        if (count() > 1)
  ------------------
  |  Branch (899:13): [True: 16.2k, False: 10.1k]
  ------------------
  900|  16.2k|            each_right_sub_(v, 1, args...);
  901|  26.3k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE15each_right_sub_INS1_34concat_rebalance_plan_fill_visitorEJRNS1_21concat_rebalance_planILj2ELj2EEEEEEvT_jDpOT0_:
  871|  16.2k|    {
  872|  16.2k|        auto last  = count() - 1;
  873|  16.2k|        auto lsize = size_ - (last << shift_);
  874|  16.2k|        auto n     = node()->inner() + i;
  875|  16.2k|        auto e     = node()->inner() + last;
  876|  16.2k|        if (shift() == BL) {
  ------------------
  |  Branch (876:13): [True: 7.31k, False: 8.92k]
  ------------------
  877|  15.5k|            for (; n != e; ++n) {
  ------------------
  |  Branch (877:20): [True: 8.21k, False: 7.31k]
  ------------------
  878|  8.21k|                IMMER_PREFETCH(n + 1);
  879|  8.21k|                make_full_leaf_pos(*n).visit(v, args...);
  880|  8.21k|            }
  881|  7.31k|            make_leaf_sub_pos(*n, lsize).visit(v, args...);
  882|  8.92k|        } else {
  883|  8.92k|            auto ss = shift_ - B;
  884|  14.4k|            for (; n != e; ++n)
  ------------------
  |  Branch (884:20): [True: 5.50k, False: 8.92k]
  ------------------
  885|  5.50k|                make_full_pos(*n, ss).visit(v, args...);
  886|  8.92k|            make_regular_sub_pos(*n, ss, lsize).visit(v, args...);
  887|  8.92k|        }
  888|  16.2k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_34concat_rebalance_plan_fill_visitorEJRNS1_21concat_rebalance_planILj2ELj2EEEEEEDcT_DpOT0_:
 1028|  63.6k|    {
 1029|  63.6k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1030|  63.6k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE14each_right_subINS1_21concat_merger_visitorEJRNS1_13concat_mergerISC_EEEEEvT_DpOT0_:
  898|  10.1k|    {
  899|  10.1k|        if (count() > 1)
  ------------------
  |  Branch (899:13): [True: 5.96k, False: 4.20k]
  ------------------
  900|  5.96k|            each_right_sub_(v, 1, args...);
  901|  10.1k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE15each_right_sub_INS1_21concat_merger_visitorEJRNS1_13concat_mergerISC_EEEEEvT_jDpOT0_:
  871|  5.96k|    {
  872|  5.96k|        auto last  = count() - 1;
  873|  5.96k|        auto lsize = size_ - (last << shift_);
  874|  5.96k|        auto n     = node()->inner() + i;
  875|  5.96k|        auto e     = node()->inner() + last;
  876|  5.96k|        if (shift() == BL) {
  ------------------
  |  Branch (876:13): [True: 2.55k, False: 3.41k]
  ------------------
  877|  5.39k|            for (; n != e; ++n) {
  ------------------
  |  Branch (877:20): [True: 2.83k, False: 2.55k]
  ------------------
  878|  2.83k|                IMMER_PREFETCH(n + 1);
  879|  2.83k|                make_full_leaf_pos(*n).visit(v, args...);
  880|  2.83k|            }
  881|  2.55k|            make_leaf_sub_pos(*n, lsize).visit(v, args...);
  882|  3.41k|        } else {
  883|  3.41k|            auto ss = shift_ - B;
  884|  4.44k|            for (; n != e; ++n)
  ------------------
  |  Branch (884:20): [True: 1.03k, False: 3.41k]
  ------------------
  885|  1.03k|                make_full_pos(*n, ss).visit(v, args...);
  886|  3.41k|            make_regular_sub_pos(*n, ss, lsize).visit(v, args...);
  887|  3.41k|        }
  888|  5.96k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_21concat_merger_visitorEJRNS1_13concat_mergerISC_EEEEEDcT_DpOT0_:
 1028|  7.22k|    {
 1029|  7.22k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1030|  7.22k|    }
_ZN5immer6detail4rbts25singleton_regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE8last_subINS1_19concat_both_visitorISC_EEJRNS1_14empty_leaf_posISC_EERNS1_15regular_sub_posISC_EEEEEDcT_DpOT0_:
  745|    986|    {
  746|    986|        return make_leaf_sub_pos(leaf_, count_).visit(v, args...);
  747|    986|    }
_ZN5immer6detail4rbts12leaf_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_19concat_both_visitorISC_EEJRNS1_14empty_leaf_posISC_EERNS1_15regular_sub_posISC_EEEEEDcT_DpOT0_:
  143|    986|    {
  144|    986|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  145|    986|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE14first_sub_leafINS1_20concat_right_visitorISC_EEJRNS1_12leaf_sub_posISC_EERNS1_14empty_leaf_posISC_EEEEEDcT_DpOT0_:
  978|    986|    {
  979|    986|        assert(shift_ == BL);
  980|      0|        auto child   = node_->inner()[0];
  981|    986|        auto is_full = size_ >= branches<BL>;
  982|    986|        return is_full ? make_full_leaf_pos(child).visit(v, args...)
  ------------------
  |  Branch (982:16): [True: 986, False: 0]
  ------------------
  983|    986|                       : make_leaf_sub_pos(child, size_).visit(v, args...);
  984|    986|    }
_ZN5immer6detail4rbts12leaf_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_20concat_right_visitorISC_EEJRSD_RNS1_14empty_leaf_posISC_EEEEEDcT_DpOT0_:
  143|    970|    {
  144|    970|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  145|    970|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE14each_right_subINS1_34concat_rebalance_plan_fill_visitorEJRNS1_21concat_rebalance_planILj2ELj2EEEEEEvT_DpOT0_:
 1639|   673k|    {
 1640|   673k|        each_right(v, 1, std::forward<Args>(args)...);
 1641|   673k|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10each_rightINS1_34concat_rebalance_plan_fill_visitorEJRNS1_21concat_rebalance_planILj2ELj2EEEEEEvT_jDpOT0_:
 1645|   673k|    {
 1646|   673k|        assert(start > 0);
 1647|      0|        assert(start <= relaxed_->d.count);
 1648|      0|        auto s = relaxed_->d.sizes[start - 1];
 1649|   673k|        auto p = node_->inner();
 1650|   673k|        if (shift_ == BL) {
  ------------------
  |  Branch (1650:13): [True: 104k, False: 568k]
  ------------------
 1651|   357k|            for (auto i = start; i < relaxed_->d.count; ++i) {
  ------------------
  |  Branch (1651:34): [True: 252k, False: 104k]
  ------------------
 1652|   252k|                IMMER_PREFETCH(p + i + 1);
 1653|   252k|                make_leaf_sub_pos(p[i], relaxed_->d.sizes[i] - s)
 1654|   252k|                    .visit(v, args...);
 1655|   252k|                s = relaxed_->d.sizes[i];
 1656|   252k|                assert(s);
 1657|   252k|            }
 1658|   568k|        } else {
 1659|   568k|            auto ss = shift_ - B;
 1660|  1.83M|            for (auto i = start; i < relaxed_->d.count; ++i) {
  ------------------
  |  Branch (1660:34): [True: 1.26M, False: 568k]
  ------------------
 1661|  1.26M|                visit_maybe_relaxed_sub(
 1662|  1.26M|                    p[i], ss, relaxed_->d.sizes[i] - s, v, args...);
 1663|  1.26M|                s = relaxed_->d.sizes[i];
 1664|  1.26M|                assert(s);
 1665|  1.26M|            }
 1666|   568k|        }
 1667|   673k|    }
_ZN5immer6detail4rbts23visit_maybe_relaxed_subINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEENS1_34concat_rebalance_plan_fill_visitorEJRNS1_21concat_rebalance_planILj2ELj2EEEEEEDcPT_jmT0_DpOT1_:
 1830|  2.12M|{
 1831|  2.12M|    assert(node);
 1832|      0|    auto relaxed = node->relaxed();
 1833|  2.12M|    if (relaxed) {
  ------------------
  |  Branch (1833:9): [True: 2.07M, False: 54.7k]
  ------------------
 1834|  2.07M|        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
 1835|      0|        return make_relaxed_pos(node, shift, relaxed)
 1836|  2.07M|            .visit(v, std::forward<Args>(args)...);
 1837|  2.07M|    } else {
 1838|  54.7k|        return make_regular_sub_pos(node, shift, size)
 1839|  54.7k|            .visit(v, std::forward<Args>(args)...);
 1840|  54.7k|    }
 1841|  2.12M|}
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE14each_right_subINS1_21concat_merger_visitorEJRNS1_13concat_mergerISC_EEEEEvT_DpOT0_:
 1639|   237k|    {
 1640|   237k|        each_right(v, 1, std::forward<Args>(args)...);
 1641|   237k|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10each_rightINS1_21concat_merger_visitorEJRNS1_13concat_mergerISC_EEEEEvT_jDpOT0_:
 1645|   237k|    {
 1646|   237k|        assert(start > 0);
 1647|      0|        assert(start <= relaxed_->d.count);
 1648|      0|        auto s = relaxed_->d.sizes[start - 1];
 1649|   237k|        auto p = node_->inner();
 1650|   237k|        if (shift_ == BL) {
  ------------------
  |  Branch (1650:13): [True: 40.7k, False: 196k]
  ------------------
 1651|   155k|            for (auto i = start; i < relaxed_->d.count; ++i) {
  ------------------
  |  Branch (1651:34): [True: 114k, False: 40.7k]
  ------------------
 1652|   114k|                IMMER_PREFETCH(p + i + 1);
 1653|   114k|                make_leaf_sub_pos(p[i], relaxed_->d.sizes[i] - s)
 1654|   114k|                    .visit(v, args...);
 1655|   114k|                s = relaxed_->d.sizes[i];
 1656|   114k|                assert(s);
 1657|   114k|            }
 1658|   196k|        } else {
 1659|   196k|            auto ss = shift_ - B;
 1660|   725k|            for (auto i = start; i < relaxed_->d.count; ++i) {
  ------------------
  |  Branch (1660:34): [True: 528k, False: 196k]
  ------------------
 1661|   528k|                visit_maybe_relaxed_sub(
 1662|   528k|                    p[i], ss, relaxed_->d.sizes[i] - s, v, args...);
 1663|   528k|                s = relaxed_->d.sizes[i];
 1664|   528k|                assert(s);
 1665|   528k|            }
 1666|   196k|        }
 1667|   237k|    }
_ZN5immer6detail4rbts23visit_maybe_relaxed_subINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEENS1_21concat_merger_visitorEJRNS1_13concat_mergerISC_EEEEEDcPT_jmT0_DpOT1_:
 1830|  1.02M|{
 1831|  1.02M|    assert(node);
 1832|      0|    auto relaxed = node->relaxed();
 1833|  1.02M|    if (relaxed) {
  ------------------
  |  Branch (1833:9): [True: 1.01M, False: 3.81k]
  ------------------
 1834|  1.01M|        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
 1835|      0|        return make_relaxed_pos(node, shift, relaxed)
 1836|  1.01M|            .visit(v, std::forward<Args>(args)...);
 1837|  1.01M|    } else {
 1838|  3.81k|        return make_regular_sub_pos(node, shift, size)
 1839|  3.81k|            .visit(v, std::forward<Args>(args)...);
 1840|  3.81k|    }
 1841|  1.02M|}
_ZN5immer6detail4rbts25singleton_regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE8last_subINS1_19concat_both_visitorISC_EEJRNS1_14empty_leaf_posISC_EERNS1_11relaxed_posISC_EEEEEDcT_DpOT0_:
  745|    970|    {
  746|    970|        return make_leaf_sub_pos(leaf_, count_).visit(v, args...);
  747|    970|    }
_ZN5immer6detail4rbts12leaf_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_19concat_both_visitorISC_EEJRNS1_14empty_leaf_posISC_EERNS1_11relaxed_posISC_EEEEEDcT_DpOT0_:
  143|    970|    {
  144|    970|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  145|    970|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE14first_sub_leafINS1_20concat_right_visitorISC_EEJRNS1_12leaf_sub_posISC_EERNS1_14empty_leaf_posISC_EEEEEDcT_DpOT0_:
 1766|    970|    {
 1767|    970|        assert(shift_ == BL);
 1768|      0|        auto child      = node_->inner()[0];
 1769|    970|        auto child_size = relaxed_->d.sizes[0];
 1770|    970|        return make_leaf_sub_pos(child, child_size).visit(v, args...);
 1771|    970|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_26concat_trees_right_visitorISC_EEJRNS1_25singleton_regular_sub_posISC_EERNS1_14empty_leaf_posISC_EEEEEDcT_DpOT0_:
 1028|  1.58k|    {
 1029|  1.58k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1030|  1.58k|    }
_ZN5immer6detail4rbts23visit_maybe_relaxed_subINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEENS1_25concat_trees_left_visitorISC_EEJNS1_8leaf_posISC_EERPSC_RjRmEEEDcPT_jmT0_DpOT1_:
 1830|  48.1k|{
 1831|  48.1k|    assert(node);
 1832|      0|    auto relaxed = node->relaxed();
 1833|  48.1k|    if (relaxed) {
  ------------------
  |  Branch (1833:9): [True: 42.8k, False: 5.32k]
  ------------------
 1834|  42.8k|        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
 1835|      0|        return make_relaxed_pos(node, shift, relaxed)
 1836|  42.8k|            .visit(v, std::forward<Args>(args)...);
 1837|  42.8k|    } else {
 1838|  5.32k|        return make_regular_sub_pos(node, shift, size)
 1839|  5.32k|            .visit(v, std::forward<Args>(args)...);
 1840|  5.32k|    }
 1841|  48.1k|}
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_25concat_trees_left_visitorISC_EEJNS1_8leaf_posISC_EERPSC_RjRmEEEDcT_DpOT0_:
 1805|  42.8k|    {
 1806|  42.8k|        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
 1807|  42.8k|    }
_ZN5immer6detail4rbts23visit_maybe_relaxed_subINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEENS1_26concat_trees_right_visitorISC_EEJRNS1_11relaxed_posISC_EERNS1_8leaf_posISC_EEEEEDcPT_jmT0_DpOT1_:
 1830|  42.8k|{
 1831|  42.8k|    assert(node);
 1832|      0|    auto relaxed = node->relaxed();
 1833|  42.8k|    if (relaxed) {
  ------------------
  |  Branch (1833:9): [True: 39.7k, False: 3.11k]
  ------------------
 1834|  39.7k|        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
 1835|      0|        return make_relaxed_pos(node, shift, relaxed)
 1836|  39.7k|            .visit(v, std::forward<Args>(args)...);
 1837|  39.7k|    } else {
 1838|  3.11k|        return make_regular_sub_pos(node, shift, size)
 1839|  3.11k|            .visit(v, std::forward<Args>(args)...);
 1840|  3.11k|    }
 1841|  42.8k|}
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_26concat_trees_right_visitorISC_EEJRSD_RNS1_8leaf_posISC_EEEEEDcT_DpOT0_:
 1805|  39.7k|    {
 1806|  39.7k|        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
 1807|  39.7k|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE8last_subINS1_19concat_left_visitorISC_EEJRNS1_8leaf_posISC_EERSD_EEEDcT_DpOT0_:
 1742|  3.18k|    {
 1743|  3.18k|        auto offset     = relaxed_->d.count - 1;
 1744|  3.18k|        auto child      = node_->inner()[offset];
 1745|  3.18k|        auto child_size = size(offset);
 1746|  3.18k|        auto is_leaf    = shift_ == BL;
 1747|  3.18k|        return is_leaf ? make_leaf_sub_pos(child, child_size).visit(v, args...)
  ------------------
  |  Branch (1747:16): [True: 0, False: 3.18k]
  ------------------
 1748|  3.18k|                       : visit_maybe_relaxed_sub(
 1749|  3.18k|                             child, shift_ - B, child_size, v, args...);
 1750|  3.18k|    }
_ZN5immer6detail4rbts23visit_maybe_relaxed_subINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEENS1_19concat_left_visitorISC_EEJRNS1_8leaf_posISC_EERNS1_11relaxed_posISC_EEEEEDcPT_jmT0_DpOT1_:
 1830|  3.18k|{
 1831|  3.18k|    assert(node);
 1832|      0|    auto relaxed = node->relaxed();
 1833|  3.18k|    if (relaxed) {
  ------------------
  |  Branch (1833:9): [True: 2.88k, False: 300]
  ------------------
 1834|  2.88k|        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
 1835|      0|        return make_relaxed_pos(node, shift, relaxed)
 1836|  2.88k|            .visit(v, std::forward<Args>(args)...);
 1837|  2.88k|    } else {
 1838|    300|        return make_regular_sub_pos(node, shift, size)
 1839|    300|            .visit(v, std::forward<Args>(args)...);
 1840|    300|    }
 1841|  3.18k|}
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_19concat_left_visitorISC_EEJRNS1_8leaf_posISC_EERSD_EEEDcT_DpOT0_:
 1805|  2.88k|    {
 1806|  2.88k|        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
 1807|  2.88k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_19concat_left_visitorISC_EEJRNS1_8leaf_posISC_EERNS1_11relaxed_posISC_EEEEEDcT_DpOT0_:
 1028|    832|    {
 1029|    832|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1030|    832|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE8last_subINS1_19concat_left_visitorISC_EEJRNS1_8leaf_posISC_EERNS1_11relaxed_posISC_EEEEEDcT_DpOT0_:
  950|    532|    {
  951|    532|        auto offset  = count() - 1;
  952|    532|        auto child   = node_->inner()[offset];
  953|    532|        auto is_leaf = shift_ == BL;
  954|    532|        auto lsize   = size_ - (size_t{offset} << shift_);
  955|    532|        return is_leaf ? make_leaf_sub_pos(child, lsize).visit(v, args...)
  ------------------
  |  Branch (955:16): [True: 0, False: 532]
  ------------------
  956|    532|                       : make_regular_sub_pos(child, shift_ - B, lsize)
  957|    532|                             .visit(v, args...);
  958|    532|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE13each_left_subINS1_34concat_rebalance_plan_fill_visitorEJRNS1_21concat_rebalance_planILj2ELj2EEEEEEvT_DpOT0_:
  905|   175k|    {
  906|   175k|        each_left(v, count() - 1, args...);
  907|   175k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE9each_leftINS1_34concat_rebalance_plan_fill_visitorEJRNS1_21concat_rebalance_planILj2ELj2EEEEEEvT_jDpOT0_:
  865|   175k|    {
  866|   175k|        return each_left_regular(*this, v, last, args...);
  867|   175k|    }
_ZN5immer6detail4rbts17each_left_regularIRNS1_15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEENS1_34concat_rebalance_plan_fill_visitorEJRNS1_21concat_rebalance_planILj2ELj2EEEEEEvOT_T0_jDpOT1_:
  573|   175k|{
  574|   175k|    constexpr auto B  = bits<Pos>;
  575|   175k|    constexpr auto BL = bits_leaf<Pos>;
  576|   175k|    assert(last < p.count());
  577|   175k|    if (p.shift() == BL) {
  ------------------
  |  Branch (577:9): [True: 44.2k, False: 130k]
  ------------------
  578|  44.2k|        auto n = p.node()->inner();
  579|  44.2k|        auto e = n + last;
  580|  90.2k|        for (; n != e; ++n) {
  ------------------
  |  Branch (580:16): [True: 45.9k, False: 44.2k]
  ------------------
  581|  45.9k|            IMMER_PREFETCH(n + 1);
  582|  45.9k|            make_full_leaf_pos(*n).visit(v, args...);
  583|  45.9k|        }
  584|   130k|    } else {
  585|   130k|        auto n  = p.node()->inner();
  586|   130k|        auto e  = n + last;
  587|   130k|        auto ss = p.shift() - B;
  588|   365k|        for (; n != e; ++n)
  ------------------
  |  Branch (588:16): [True: 235k, False: 130k]
  ------------------
  589|   235k|            make_full_pos(*n, ss).visit(v, args...);
  590|   130k|    }
  591|   175k|}
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE13each_left_subINS1_21concat_merger_visitorEJRNS1_13concat_mergerISC_EEEEEvT_DpOT0_:
  905|  18.3k|    {
  906|  18.3k|        each_left(v, count() - 1, args...);
  907|  18.3k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE9each_leftINS1_21concat_merger_visitorEJRNS1_13concat_mergerISC_EEEEEvT_jDpOT0_:
  865|  18.3k|    {
  866|  18.3k|        return each_left_regular(*this, v, last, args...);
  867|  18.3k|    }
_ZN5immer6detail4rbts17each_left_regularIRNS1_15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEENS1_21concat_merger_visitorEJRNS1_13concat_mergerISD_EEEEEvOT_T0_jDpOT1_:
  573|  18.3k|{
  574|  18.3k|    constexpr auto B  = bits<Pos>;
  575|  18.3k|    constexpr auto BL = bits_leaf<Pos>;
  576|  18.3k|    assert(last < p.count());
  577|  18.3k|    if (p.shift() == BL) {
  ------------------
  |  Branch (577:9): [True: 9.21k, False: 9.08k]
  ------------------
  578|  9.21k|        auto n = p.node()->inner();
  579|  9.21k|        auto e = n + last;
  580|  15.1k|        for (; n != e; ++n) {
  ------------------
  |  Branch (580:16): [True: 5.90k, False: 9.21k]
  ------------------
  581|  5.90k|            IMMER_PREFETCH(n + 1);
  582|  5.90k|            make_full_leaf_pos(*n).visit(v, args...);
  583|  5.90k|        }
  584|  9.21k|    } else {
  585|  9.08k|        auto n  = p.node()->inner();
  586|  9.08k|        auto e  = n + last;
  587|  9.08k|        auto ss = p.shift() - B;
  588|  18.3k|        for (; n != e; ++n)
  ------------------
  |  Branch (588:16): [True: 9.29k, False: 9.08k]
  ------------------
  589|  9.29k|            make_full_pos(*n, ss).visit(v, args...);
  590|  9.08k|    }
  591|  18.3k|}
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE9first_subINS1_20concat_right_visitorISC_EEJRNS1_15regular_sub_posISC_EERNS1_8leaf_posISC_EEEEEDcT_DpOT0_:
 1754|  9.26k|    {
 1755|  9.26k|        auto child      = node_->inner()[0];
 1756|  9.26k|        auto child_size = relaxed_->d.sizes[0];
 1757|  9.26k|        auto is_leaf    = shift_ == BL;
 1758|  9.26k|        assert(child_size);
 1759|  9.26k|        return is_leaf ? make_leaf_sub_pos(child, child_size).visit(v, args...)
  ------------------
  |  Branch (1759:16): [True: 0, False: 9.26k]
  ------------------
 1760|  9.26k|                       : visit_maybe_relaxed_sub(
 1761|  9.26k|                             child, shift_ - B, child_size, v, args...);
 1762|  9.26k|    }
_ZNK5immer6detail4rbts8leaf_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5shiftEv:
  105|   120k|    shift_t shift() const { return 0; }
_ZN5immer6detail4rbts23visit_maybe_relaxed_subINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEENS1_20concat_right_visitorISC_EEJRNS1_15regular_sub_posISC_EERNS1_8leaf_posISC_EEEEEDcPT_jmT0_DpOT1_:
 1830|  9.26k|{
 1831|  9.26k|    assert(node);
 1832|      0|    auto relaxed = node->relaxed();
 1833|  9.26k|    if (relaxed) {
  ------------------
  |  Branch (1833:9): [True: 8.88k, False: 389]
  ------------------
 1834|  8.88k|        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
 1835|      0|        return make_relaxed_pos(node, shift, relaxed)
 1836|  8.88k|            .visit(v, std::forward<Args>(args)...);
 1837|  8.88k|    } else {
 1838|    389|        return make_regular_sub_pos(node, shift, size)
 1839|    389|            .visit(v, std::forward<Args>(args)...);
 1840|    389|    }
 1841|  9.26k|}
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_20concat_right_visitorISC_EEJRNS1_15regular_sub_posISC_EERNS1_8leaf_posISC_EEEEEDcT_DpOT0_:
 1805|  8.88k|    {
 1806|  8.88k|        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
 1807|  8.88k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_20concat_right_visitorISC_EEJRSD_RNS1_8leaf_posISC_EEEEEDcT_DpOT0_:
 1028|    389|    {
 1029|    389|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1030|    389|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE8last_subINS1_19concat_left_visitorISC_EEJRNS1_8leaf_posISC_EERSD_EEEDcT_DpOT0_:
  950|  1.21k|    {
  951|  1.21k|        auto offset  = count() - 1;
  952|  1.21k|        auto child   = node_->inner()[offset];
  953|  1.21k|        auto is_leaf = shift_ == BL;
  954|  1.21k|        auto lsize   = size_ - (size_t{offset} << shift_);
  955|  1.21k|        return is_leaf ? make_leaf_sub_pos(child, lsize).visit(v, args...)
  ------------------
  |  Branch (955:16): [True: 0, False: 1.21k]
  ------------------
  956|  1.21k|                       : make_regular_sub_pos(child, shift_ - B, lsize)
  957|  1.21k|                             .visit(v, args...);
  958|  1.21k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_19concat_left_visitorISC_EEJRNS1_8leaf_posISC_EERSD_EEEDcT_DpOT0_:
 1028|  1.54k|    {
 1029|  1.54k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1030|  1.54k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE9first_subINS1_20concat_right_visitorISC_EEJRSD_RNS1_8leaf_posISC_EEEEEDcT_DpOT0_:
  962|  1.45k|    {
  963|  1.45k|        auto is_leaf = shift_ == BL;
  964|  1.45k|        auto child   = node_->inner()[0];
  965|  1.45k|        auto is_full = size_ >= (size_t{1} << shift_);
  966|  1.45k|        return is_full
  ------------------
  |  Branch (966:16): [True: 1.45k, False: 0]
  ------------------
  967|  1.45k|                   ? (is_leaf
  ------------------
  |  Branch (967:23): [True: 0, False: 1.45k]
  ------------------
  968|  1.45k|                          ? make_full_leaf_pos(child).visit(v, args...)
  969|  1.45k|                          : make_full_pos(child, shift_ - B).visit(v, args...))
  970|  1.45k|                   : (is_leaf
  ------------------
  |  Branch (970:23): [True: 0, False: 0]
  ------------------
  971|      0|                          ? make_leaf_sub_pos(child, size_).visit(v, args...)
  972|      0|                          : make_regular_sub_pos(child, shift_ - B, size_)
  973|      0|                                .visit(v, args...));
  974|  1.45k|    }
_ZN5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_20concat_right_visitorISC_EEJRNS1_15regular_sub_posISC_EERNS1_8leaf_posISC_EEEEEDcT_DpOT0_:
 1397|  2.98k|    {
 1398|  2.98k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1399|  2.98k|    }
_ZN5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE9first_subINS1_20concat_right_visitorISC_EEJRNS1_15regular_sub_posISC_EERNS1_8leaf_posISC_EEEEEDcT_DpOT0_:
 1353|  1.52k|    {
 1354|  1.52k|        auto is_leaf = shift_ == BL;
 1355|  1.52k|        auto child   = node_->inner()[0];
 1356|  1.52k|        return is_leaf ? make_full_leaf_pos(child).visit(v, args...)
  ------------------
  |  Branch (1356:16): [True: 0, False: 1.52k]
  ------------------
 1357|  1.52k|                       : make_full_pos(child, shift_ - B).visit(v, args...);
 1358|  1.52k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE8last_subINS1_19concat_both_visitorISC_EEJRNS1_8leaf_posISC_EERNS1_8full_posISC_EEEEEDcT_DpOT0_:
  950|  2.73k|    {
  951|  2.73k|        auto offset  = count() - 1;
  952|  2.73k|        auto child   = node_->inner()[offset];
  953|  2.73k|        auto is_leaf = shift_ == BL;
  954|  2.73k|        auto lsize   = size_ - (size_t{offset} << shift_);
  955|  2.73k|        return is_leaf ? make_leaf_sub_pos(child, lsize).visit(v, args...)
  ------------------
  |  Branch (955:16): [True: 1.70k, False: 1.02k]
  ------------------
  956|  2.73k|                       : make_regular_sub_pos(child, shift_ - B, lsize)
  957|  1.02k|                             .visit(v, args...);
  958|  2.73k|    }
_ZN5immer6detail4rbts12leaf_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_19concat_both_visitorISC_EEJRNS1_8leaf_posISC_EERNS1_8full_posISC_EEEEEDcT_DpOT0_:
  143|  2.61k|    {
  144|  2.61k|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  145|  2.61k|    }
_ZN5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE14first_sub_leafINS1_20concat_right_visitorISC_EEJRNS1_12leaf_sub_posISC_EERNS1_8leaf_posISC_EEEEEDcT_DpOT0_:
 1362|  2.61k|    {
 1363|  2.61k|        assert(shift_ == BL);
 1364|      0|        auto child = node_->inner()[0];
 1365|  2.61k|        return make_full_leaf_pos(child).visit(v, args...);
 1366|  2.61k|    }
_ZN5immer6detail4rbts13full_leaf_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_20concat_right_visitorISC_EEJRNS1_12leaf_sub_posISC_EERNS1_8leaf_posISC_EEEEEDcT_DpOT0_:
  205|  8.39k|    {
  206|  8.39k|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  207|  8.39k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_19concat_both_visitorISC_EEJRNS1_8leaf_posISC_EERNS1_8full_posISC_EEEEEDcT_DpOT0_:
 1028|  1.27k|    {
 1029|  1.27k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1030|  1.27k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE8last_subINS1_19concat_both_visitorISC_EEJRNS1_8leaf_posISC_EERSD_EEEDcT_DpOT0_:
  950|  4.89k|    {
  951|  4.89k|        auto offset  = count() - 1;
  952|  4.89k|        auto child   = node_->inner()[offset];
  953|  4.89k|        auto is_leaf = shift_ == BL;
  954|  4.89k|        auto lsize   = size_ - (size_t{offset} << shift_);
  955|  4.89k|        return is_leaf ? make_leaf_sub_pos(child, lsize).visit(v, args...)
  ------------------
  |  Branch (955:16): [True: 4.33k, False: 561]
  ------------------
  956|  4.89k|                       : make_regular_sub_pos(child, shift_ - B, lsize)
  957|    561|                             .visit(v, args...);
  958|  4.89k|    }
_ZN5immer6detail4rbts12leaf_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_19concat_both_visitorISC_EEJRNS1_8leaf_posISC_EERNS1_15regular_sub_posISC_EEEEEDcT_DpOT0_:
  143|  5.77k|    {
  144|  5.77k|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  145|  5.77k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE14first_sub_leafINS1_20concat_right_visitorISC_EEJRNS1_12leaf_sub_posISC_EERNS1_8leaf_posISC_EEEEEDcT_DpOT0_:
  978|  5.77k|    {
  979|  5.77k|        assert(shift_ == BL);
  980|      0|        auto child   = node_->inner()[0];
  981|  5.77k|        auto is_full = size_ >= branches<BL>;
  982|  5.77k|        return is_full ? make_full_leaf_pos(child).visit(v, args...)
  ------------------
  |  Branch (982:16): [True: 5.77k, False: 0]
  ------------------
  983|  5.77k|                       : make_leaf_sub_pos(child, size_).visit(v, args...);
  984|  5.77k|    }
_ZN5immer6detail4rbts12leaf_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_20concat_right_visitorISC_EEJRSD_RNS1_8leaf_posISC_EEEEEDcT_DpOT0_:
  143|  39.8k|    {
  144|  39.8k|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  145|  39.8k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_19concat_both_visitorISC_EEJRNS1_8leaf_posISC_EERSD_EEEDcT_DpOT0_:
 1028|    963|    {
 1029|    963|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1030|    963|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE8last_subINS1_19concat_both_visitorISC_EEJRNS1_8leaf_posISC_EERNS1_11relaxed_posISC_EEEEEDcT_DpOT0_:
  950|  8.93k|    {
  951|  8.93k|        auto offset  = count() - 1;
  952|  8.93k|        auto child   = node_->inner()[offset];
  953|  8.93k|        auto is_leaf = shift_ == BL;
  954|  8.93k|        auto lsize   = size_ - (size_t{offset} << shift_);
  955|  8.93k|        return is_leaf ? make_leaf_sub_pos(child, lsize).visit(v, args...)
  ------------------
  |  Branch (955:16): [True: 3.18k, False: 5.75k]
  ------------------
  956|  8.93k|                       : make_regular_sub_pos(child, shift_ - B, lsize)
  957|  5.75k|                             .visit(v, args...);
  958|  8.93k|    }
_ZN5immer6detail4rbts12leaf_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_19concat_both_visitorISC_EEJRNS1_8leaf_posISC_EERNS1_11relaxed_posISC_EEEEEDcT_DpOT0_:
  143|  39.8k|    {
  144|  39.8k|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  145|  39.8k|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE14first_sub_leafINS1_20concat_right_visitorISC_EEJRNS1_12leaf_sub_posISC_EERNS1_8leaf_posISC_EEEEEDcT_DpOT0_:
 1766|  39.8k|    {
 1767|  39.8k|        assert(shift_ == BL);
 1768|      0|        auto child      = node_->inner()[0];
 1769|  39.8k|        auto child_size = relaxed_->d.sizes[0];
 1770|  39.8k|        return make_leaf_sub_pos(child, child_size).visit(v, args...);
 1771|  39.8k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_19concat_both_visitorISC_EEJRNS1_8leaf_posISC_EERNS1_11relaxed_posISC_EEEEEDcT_DpOT0_:
 1028|  8.37k|    {
 1029|  8.37k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1030|  8.37k|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE13each_left_subINS1_34concat_rebalance_plan_fill_visitorEJRNS1_21concat_rebalance_planILj2ELj2EEEEEEvT_DpOT0_:
 1609|   563k|    {
 1610|   563k|        each_left(v, relaxed_->d.count - 1, args...);
 1611|   563k|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE9each_leftINS1_34concat_rebalance_plan_fill_visitorEJRNS1_21concat_rebalance_planILj2ELj2EEEEEEvT_jDpOT0_:
 1615|   563k|    {
 1616|   563k|        auto p = node_->inner();
 1617|   563k|        auto s = size_t{};
 1618|   563k|        if (shift_ == BL) {
  ------------------
  |  Branch (1618:13): [True: 76.4k, False: 487k]
  ------------------
 1619|   211k|            for (auto i = count_t{0}; i < n; ++i) {
  ------------------
  |  Branch (1619:39): [True: 134k, False: 76.4k]
  ------------------
 1620|   134k|                IMMER_PREFETCH(p + i + 1);
 1621|   134k|                make_leaf_sub_pos(p[i], relaxed_->d.sizes[i] - s)
 1622|   134k|                    .visit(v, args...);
 1623|   134k|                s = relaxed_->d.sizes[i];
 1624|   134k|                assert(s);
 1625|   134k|            }
 1626|   487k|        } else {
 1627|   487k|            auto ss = shift_ - B;
 1628|  1.35M|            for (auto i = count_t{0}; i < n; ++i) {
  ------------------
  |  Branch (1628:39): [True: 864k, False: 487k]
  ------------------
 1629|   864k|                visit_maybe_relaxed_sub(
 1630|   864k|                    p[i], ss, relaxed_->d.sizes[i] - s, v, args...);
 1631|   864k|                s = relaxed_->d.sizes[i];
 1632|   864k|                assert(s);
 1633|   864k|            }
 1634|   487k|        }
 1635|   563k|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE13each_left_subINS1_21concat_merger_visitorEJRNS1_13concat_mergerISC_EEEEEvT_DpOT0_:
 1609|   231k|    {
 1610|   231k|        each_left(v, relaxed_->d.count - 1, args...);
 1611|   231k|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE9each_leftINS1_21concat_merger_visitorEJRNS1_13concat_mergerISC_EEEEEvT_jDpOT0_:
 1615|   231k|    {
 1616|   231k|        auto p = node_->inner();
 1617|   231k|        auto s = size_t{};
 1618|   231k|        if (shift_ == BL) {
  ------------------
  |  Branch (1618:13): [True: 38.9k, False: 192k]
  ------------------
 1619|   114k|            for (auto i = count_t{0}; i < n; ++i) {
  ------------------
  |  Branch (1619:39): [True: 75.7k, False: 38.9k]
  ------------------
 1620|  75.7k|                IMMER_PREFETCH(p + i + 1);
 1621|  75.7k|                make_leaf_sub_pos(p[i], relaxed_->d.sizes[i] - s)
 1622|  75.7k|                    .visit(v, args...);
 1623|  75.7k|                s = relaxed_->d.sizes[i];
 1624|  75.7k|                assert(s);
 1625|  75.7k|            }
 1626|   192k|        } else {
 1627|   192k|            auto ss = shift_ - B;
 1628|   686k|            for (auto i = count_t{0}; i < n; ++i) {
  ------------------
  |  Branch (1628:39): [True: 493k, False: 192k]
  ------------------
 1629|   493k|                visit_maybe_relaxed_sub(
 1630|   493k|                    p[i], ss, relaxed_->d.sizes[i] - s, v, args...);
 1631|   493k|                s = relaxed_->d.sizes[i];
 1632|   493k|                assert(s);
 1633|   493k|            }
 1634|   192k|        }
 1635|   231k|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE9first_subINS1_20concat_right_visitorISC_EEJRSD_RNS1_8leaf_posISC_EEEEEDcT_DpOT0_:
 1754|   185k|    {
 1755|   185k|        auto child      = node_->inner()[0];
 1756|   185k|        auto child_size = relaxed_->d.sizes[0];
 1757|   185k|        auto is_leaf    = shift_ == BL;
 1758|   185k|        assert(child_size);
 1759|   185k|        return is_leaf ? make_leaf_sub_pos(child, child_size).visit(v, args...)
  ------------------
  |  Branch (1759:16): [True: 0, False: 185k]
  ------------------
 1760|   185k|                       : visit_maybe_relaxed_sub(
 1761|   185k|                             child, shift_ - B, child_size, v, args...);
 1762|   185k|    }
_ZN5immer6detail4rbts23visit_maybe_relaxed_subINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEENS1_20concat_right_visitorISC_EEJRNS1_11relaxed_posISC_EERNS1_8leaf_posISC_EEEEEDcPT_jmT0_DpOT1_:
 1830|   185k|{
 1831|   185k|    assert(node);
 1832|      0|    auto relaxed = node->relaxed();
 1833|   185k|    if (relaxed) {
  ------------------
  |  Branch (1833:9): [True: 184k, False: 212]
  ------------------
 1834|   184k|        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
 1835|      0|        return make_relaxed_pos(node, shift, relaxed)
 1836|   184k|            .visit(v, std::forward<Args>(args)...);
 1837|   184k|    } else {
 1838|    212|        return make_regular_sub_pos(node, shift, size)
 1839|    212|            .visit(v, std::forward<Args>(args)...);
 1840|    212|    }
 1841|   185k|}
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_20concat_right_visitorISC_EEJRSD_RNS1_8leaf_posISC_EEEEEDcT_DpOT0_:
 1805|   184k|    {
 1806|   184k|        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
 1807|   184k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_20concat_right_visitorISC_EEJRNS1_11relaxed_posISC_EERNS1_8leaf_posISC_EEEEEDcT_DpOT0_:
 1028|    212|    {
 1029|    212|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1030|    212|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE8last_subINS1_19concat_left_visitorISC_EEJRNS1_8leaf_posISC_EERNS1_15regular_sub_posISC_EEEEEDcT_DpOT0_:
 1742|  2.33k|    {
 1743|  2.33k|        auto offset     = relaxed_->d.count - 1;
 1744|  2.33k|        auto child      = node_->inner()[offset];
 1745|  2.33k|        auto child_size = size(offset);
 1746|  2.33k|        auto is_leaf    = shift_ == BL;
 1747|  2.33k|        return is_leaf ? make_leaf_sub_pos(child, child_size).visit(v, args...)
  ------------------
  |  Branch (1747:16): [True: 0, False: 2.33k]
  ------------------
 1748|  2.33k|                       : visit_maybe_relaxed_sub(
 1749|  2.33k|                             child, shift_ - B, child_size, v, args...);
 1750|  2.33k|    }
_ZN5immer6detail4rbts23visit_maybe_relaxed_subINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEENS1_19concat_left_visitorISC_EEJRNS1_8leaf_posISC_EERNS1_15regular_sub_posISC_EEEEEDcPT_jmT0_DpOT1_:
 1830|  2.33k|{
 1831|  2.33k|    assert(node);
 1832|      0|    auto relaxed = node->relaxed();
 1833|  2.33k|    if (relaxed) {
  ------------------
  |  Branch (1833:9): [True: 2.01k, False: 326]
  ------------------
 1834|  2.01k|        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
 1835|      0|        return make_relaxed_pos(node, shift, relaxed)
 1836|  2.01k|            .visit(v, std::forward<Args>(args)...);
 1837|  2.01k|    } else {
 1838|    326|        return make_regular_sub_pos(node, shift, size)
 1839|    326|            .visit(v, std::forward<Args>(args)...);
 1840|    326|    }
 1841|  2.33k|}
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_19concat_left_visitorISC_EEJRNS1_8leaf_posISC_EERNS1_15regular_sub_posISC_EEEEEDcT_DpOT0_:
 1805|  2.01k|    {
 1806|  2.01k|        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
 1807|  2.01k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE9first_subINS1_20concat_right_visitorISC_EEJRNS1_11relaxed_posISC_EERNS1_8leaf_posISC_EEEEEDcT_DpOT0_:
  962|  1.16k|    {
  963|  1.16k|        auto is_leaf = shift_ == BL;
  964|  1.16k|        auto child   = node_->inner()[0];
  965|  1.16k|        auto is_full = size_ >= (size_t{1} << shift_);
  966|  1.16k|        return is_full
  ------------------
  |  Branch (966:16): [True: 1.16k, False: 0]
  ------------------
  967|  1.16k|                   ? (is_leaf
  ------------------
  |  Branch (967:23): [True: 0, False: 1.16k]
  ------------------
  968|  1.16k|                          ? make_full_leaf_pos(child).visit(v, args...)
  969|  1.16k|                          : make_full_pos(child, shift_ - B).visit(v, args...))
  970|  1.16k|                   : (is_leaf
  ------------------
  |  Branch (970:23): [True: 0, False: 0]
  ------------------
  971|      0|                          ? make_leaf_sub_pos(child, size_).visit(v, args...)
  972|      0|                          : make_regular_sub_pos(child, shift_ - B, size_)
  973|      0|                                .visit(v, args...));
  974|  1.16k|    }
_ZN5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_20concat_right_visitorISC_EEJRNS1_11relaxed_posISC_EERNS1_8leaf_posISC_EEEEEDcT_DpOT0_:
 1397|  1.80k|    {
 1398|  1.80k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1399|  1.80k|    }
_ZN5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE9first_subINS1_20concat_right_visitorISC_EEJRNS1_11relaxed_posISC_EERNS1_8leaf_posISC_EEEEEDcT_DpOT0_:
 1353|    640|    {
 1354|    640|        auto is_leaf = shift_ == BL;
 1355|    640|        auto child   = node_->inner()[0];
 1356|    640|        return is_leaf ? make_full_leaf_pos(child).visit(v, args...)
  ------------------
  |  Branch (1356:16): [True: 0, False: 640]
  ------------------
 1357|    640|                       : make_full_pos(child, shift_ - B).visit(v, args...);
 1358|    640|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE8last_subINS1_19concat_both_visitorISC_EEJRNS1_8leaf_posISC_EERNS1_8full_posISC_EEEEEDcT_DpOT0_:
 1742|  1.49k|    {
 1743|  1.49k|        auto offset     = relaxed_->d.count - 1;
 1744|  1.49k|        auto child      = node_->inner()[offset];
 1745|  1.49k|        auto child_size = size(offset);
 1746|  1.49k|        auto is_leaf    = shift_ == BL;
 1747|  1.49k|        return is_leaf ? make_leaf_sub_pos(child, child_size).visit(v, args...)
  ------------------
  |  Branch (1747:16): [True: 915, False: 576]
  ------------------
 1748|  1.49k|                       : visit_maybe_relaxed_sub(
 1749|    576|                             child, shift_ - B, child_size, v, args...);
 1750|  1.49k|    }
_ZN5immer6detail4rbts23visit_maybe_relaxed_subINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEENS1_19concat_both_visitorISC_EEJRNS1_8leaf_posISC_EERNS1_8full_posISC_EEEEEDcPT_jmT0_DpOT1_:
 1830|    576|{
 1831|    576|    assert(node);
 1832|      0|    auto relaxed = node->relaxed();
 1833|    576|    if (relaxed) {
  ------------------
  |  Branch (1833:9): [True: 329, False: 247]
  ------------------
 1834|    329|        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
 1835|      0|        return make_relaxed_pos(node, shift, relaxed)
 1836|    329|            .visit(v, std::forward<Args>(args)...);
 1837|    329|    } else {
 1838|    247|        return make_regular_sub_pos(node, shift, size)
 1839|    247|            .visit(v, std::forward<Args>(args)...);
 1840|    247|    }
 1841|    576|}
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_19concat_both_visitorISC_EEJRNS1_8leaf_posISC_EERNS1_8full_posISC_EEEEEDcT_DpOT0_:
 1805|    329|    {
 1806|    329|        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
 1807|    329|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE8last_subINS1_19concat_both_visitorISC_EEJRNS1_8leaf_posISC_EERNS1_15regular_sub_posISC_EEEEEDcT_DpOT0_:
 1742|  2.43k|    {
 1743|  2.43k|        auto offset     = relaxed_->d.count - 1;
 1744|  2.43k|        auto child      = node_->inner()[offset];
 1745|  2.43k|        auto child_size = size(offset);
 1746|  2.43k|        auto is_leaf    = shift_ == BL;
 1747|  2.43k|        return is_leaf ? make_leaf_sub_pos(child, child_size).visit(v, args...)
  ------------------
  |  Branch (1747:16): [True: 1.44k, False: 991]
  ------------------
 1748|  2.43k|                       : visit_maybe_relaxed_sub(
 1749|    991|                             child, shift_ - B, child_size, v, args...);
 1750|  2.43k|    }
_ZN5immer6detail4rbts23visit_maybe_relaxed_subINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEENS1_19concat_both_visitorISC_EEJRNS1_8leaf_posISC_EERNS1_15regular_sub_posISC_EEEEEDcPT_jmT0_DpOT1_:
 1830|    991|{
 1831|    991|    assert(node);
 1832|      0|    auto relaxed = node->relaxed();
 1833|    991|    if (relaxed) {
  ------------------
  |  Branch (1833:9): [True: 589, False: 402]
  ------------------
 1834|    589|        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
 1835|      0|        return make_relaxed_pos(node, shift, relaxed)
 1836|    589|            .visit(v, std::forward<Args>(args)...);
 1837|    589|    } else {
 1838|    402|        return make_regular_sub_pos(node, shift, size)
 1839|    402|            .visit(v, std::forward<Args>(args)...);
 1840|    402|    }
 1841|    991|}
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_19concat_both_visitorISC_EEJRNS1_8leaf_posISC_EERNS1_15regular_sub_posISC_EEEEEDcT_DpOT0_:
 1805|    589|    {
 1806|    589|        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
 1807|    589|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE8last_subINS1_19concat_both_visitorISC_EEJRNS1_8leaf_posISC_EERSD_EEEDcT_DpOT0_:
 1742|   222k|    {
 1743|   222k|        auto offset     = relaxed_->d.count - 1;
 1744|   222k|        auto child      = node_->inner()[offset];
 1745|   222k|        auto child_size = size(offset);
 1746|   222k|        auto is_leaf    = shift_ == BL;
 1747|   222k|        return is_leaf ? make_leaf_sub_pos(child, child_size).visit(v, args...)
  ------------------
  |  Branch (1747:16): [True: 36.6k, False: 185k]
  ------------------
 1748|   222k|                       : visit_maybe_relaxed_sub(
 1749|   185k|                             child, shift_ - B, child_size, v, args...);
 1750|   222k|    }
_ZN5immer6detail4rbts23visit_maybe_relaxed_subINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEENS1_19concat_both_visitorISC_EEJRNS1_8leaf_posISC_EERNS1_11relaxed_posISC_EEEEEDcPT_jmT0_DpOT1_:
 1830|   185k|{
 1831|   185k|    assert(node);
 1832|      0|    auto relaxed = node->relaxed();
 1833|   185k|    if (relaxed) {
  ------------------
  |  Branch (1833:9): [True: 182k, False: 2.62k]
  ------------------
 1834|   182k|        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
 1835|      0|        return make_relaxed_pos(node, shift, relaxed)
 1836|   182k|            .visit(v, std::forward<Args>(args)...);
 1837|   182k|    } else {
 1838|  2.62k|        return make_regular_sub_pos(node, shift, size)
 1839|  2.62k|            .visit(v, std::forward<Args>(args)...);
 1840|  2.62k|    }
 1841|   185k|}
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_19concat_both_visitorISC_EEJRNS1_8leaf_posISC_EERSD_EEEDcT_DpOT0_:
 1805|   182k|    {
 1806|   182k|        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
 1807|   182k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_26concat_trees_right_visitorISC_EEJRNS1_11relaxed_posISC_EERNS1_8leaf_posISC_EEEEEDcT_DpOT0_:
 1028|  3.11k|    {
 1029|  3.11k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1030|  3.11k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_25concat_trees_left_visitorISC_EEJNS1_8leaf_posISC_EERPSC_RjRmEEEDcT_DpOT0_:
 1028|  5.32k|    {
 1029|  5.32k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1030|  5.32k|    }
_ZN5immer6detail4rbts23visit_maybe_relaxed_subINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEENS1_26concat_trees_right_visitorISC_EEJRNS1_15regular_sub_posISC_EERNS1_8leaf_posISC_EEEEEDcPT_jmT0_DpOT1_:
 1830|  5.32k|{
 1831|  5.32k|    assert(node);
 1832|      0|    auto relaxed = node->relaxed();
 1833|  5.32k|    if (relaxed) {
  ------------------
  |  Branch (1833:9): [True: 647, False: 4.67k]
  ------------------
 1834|    647|        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
 1835|      0|        return make_relaxed_pos(node, shift, relaxed)
 1836|    647|            .visit(v, std::forward<Args>(args)...);
 1837|  4.67k|    } else {
 1838|  4.67k|        return make_regular_sub_pos(node, shift, size)
 1839|  4.67k|            .visit(v, std::forward<Args>(args)...);
 1840|  4.67k|    }
 1841|  5.32k|}
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_26concat_trees_right_visitorISC_EEJRNS1_15regular_sub_posISC_EERNS1_8leaf_posISC_EEEEEDcT_DpOT0_:
 1805|    647|    {
 1806|    647|        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
 1807|    647|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_26concat_trees_right_visitorISC_EEJRSD_RNS1_8leaf_posISC_EEEEEDcT_DpOT0_:
 1028|  4.67k|    {
 1029|  4.67k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1030|  4.67k|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_21push_tail_mut_visitorISC_Lb1EEEJRNSA_5applyIS7_E4type4editERPSC_RjEEEDcT_DpOT0_:
 1805|  1.04M|    {
 1806|  1.04M|        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
 1807|  1.04M|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE11last_oh_cshINS1_21push_tail_mut_visitorISC_Lb1EEEJRNSA_5applyIS7_E4type4editERPSC_RjEEEDcT_jmDpOT0_:
 1729|  1.03M|    {
 1730|  1.03M|        assert(offset_hint == count() - 1);
 1731|      0|        assert(child_size_hint == size(offset_hint));
 1732|      0|        auto child   = node_->inner()[offset_hint];
 1733|  1.03M|        auto is_leaf = shift_ == BL;
 1734|  1.03M|        return is_leaf
  ------------------
  |  Branch (1734:16): [True: 0, False: 1.03M]
  ------------------
 1735|  1.03M|                   ? make_leaf_sub_pos(child, child_size_hint).visit(v, args...)
 1736|  1.03M|                   : visit_maybe_relaxed_sub(
 1737|  1.03M|                         child, shift_ - B, child_size_hint, v, args...);
 1738|  1.03M|    }
_ZN5immer6detail4rbts23visit_maybe_relaxed_subINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEENS1_21push_tail_mut_visitorISC_Lb1EEEJRNSA_5applyIS7_E4type4editERPSC_RjEEEDcPT_jmT0_DpOT1_:
 1830|  1.03M|{
 1831|  1.03M|    assert(node);
 1832|      0|    auto relaxed = node->relaxed();
 1833|  1.03M|    if (relaxed) {
  ------------------
  |  Branch (1833:9): [True: 276k, False: 756k]
  ------------------
 1834|   276k|        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
 1835|      0|        return make_relaxed_pos(node, shift, relaxed)
 1836|   276k|            .visit(v, std::forward<Args>(args)...);
 1837|   756k|    } else {
 1838|   756k|        return make_regular_sub_pos(node, shift, size)
 1839|   756k|            .visit(v, std::forward<Args>(args)...);
 1840|   756k|    }
 1841|  1.03M|}
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_21push_tail_mut_visitorISC_Lb1EEEJRNSA_5applyIS7_E4type4editERPSC_RjEEEDcT_DpOT0_:
 1028|   756k|    {
 1029|   756k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1030|   756k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE7last_ohINS1_21push_tail_mut_visitorISC_Lb1EEEJRNSA_5applyIS7_E4type4editERPSC_EEEDcT_jDpOT0_:
  944|  2.18M|    {
  945|  2.18M|        return last_oh_regular(*this, v, offset_hint, args...);
  946|  2.18M|    }
_ZN5immer6detail4rbts15last_oh_regularIRNS1_15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEENS1_21push_tail_mut_visitorISD_Lb1EEEJRNSB_5applyIS8_E4type4editERPSD_EEEDcOT_T0_jDpOT1_:
  675|  2.18M|{
  676|  2.18M|    assert(offset_hint == p.count() - 1);
  677|      0|    constexpr auto B  = bits<Pos>;
  678|  2.18M|    constexpr auto BL = bits_leaf<Pos>;
  679|  2.18M|    auto child        = p.node()->inner()[offset_hint];
  680|  2.18M|    auto is_leaf      = p.shift() == BL;
  681|  2.18M|    return is_leaf ? make_leaf_pos(child, p.size()).visit(v, args...)
  ------------------
  |  Branch (681:12): [True: 0, False: 2.18M]
  ------------------
  682|  2.18M|                   : make_regular_pos(child, p.shift() - B, p.size())
  683|  2.18M|                         .visit(v, args...);
  684|  2.18M|}
_ZN5immer6detail4rbts11regular_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_21push_tail_mut_visitorISC_Lb1EEEJRNSA_5applyIS7_E4type4editERPSC_EEEDcT_DpOT0_:
  334|  11.4M|    {
  335|  11.4M|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
  336|  11.4M|    }
_ZN5immer6detail4rbts11regular_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE7last_ohINS1_21push_tail_mut_visitorISC_Lb1EEEJRNSA_5applyIS7_E4type4editERPSC_EEEDcT_jDpOT0_:
  328|  9.27M|    {
  329|  9.27M|        return last_oh_regular(*this, v, offset_hint, args...);
  330|  9.27M|    }
_ZN5immer6detail4rbts15last_oh_regularIRNS1_11regular_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEENS1_21push_tail_mut_visitorISD_Lb1EEEJRNSB_5applyIS8_E4type4editERPSD_EEEDcOT_T0_jDpOT1_:
  675|  9.27M|{
  676|  9.27M|    assert(offset_hint == p.count() - 1);
  677|      0|    constexpr auto B  = bits<Pos>;
  678|  9.27M|    constexpr auto BL = bits_leaf<Pos>;
  679|  9.27M|    auto child        = p.node()->inner()[offset_hint];
  680|  9.27M|    auto is_leaf      = p.shift() == BL;
  681|  9.27M|    return is_leaf ? make_leaf_pos(child, p.size()).visit(v, args...)
  ------------------
  |  Branch (681:12): [True: 0, False: 9.27M]
  ------------------
  682|  9.27M|                   : make_regular_pos(child, p.shift() - B, p.size())
  683|  9.27M|                         .visit(v, args...);
  684|  9.27M|}
_ZN5immer6detail4rbts11regular_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE7last_ohINS1_21push_tail_mut_visitorISC_Lb0EEEJRNSA_5applyIS7_E4type4editERPSC_EEEDcT_jDpOT0_:
  328|  9.59k|    {
  329|  9.59k|        return last_oh_regular(*this, v, offset_hint, args...);
  330|  9.59k|    }
_ZN5immer6detail4rbts15last_oh_regularIRNS1_11regular_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEENS1_21push_tail_mut_visitorISD_Lb0EEEJRNSB_5applyIS8_E4type4editERPSD_EEEDcOT_T0_jDpOT1_:
  675|  9.59k|{
  676|  9.59k|    assert(offset_hint == p.count() - 1);
  677|      0|    constexpr auto B  = bits<Pos>;
  678|  9.59k|    constexpr auto BL = bits_leaf<Pos>;
  679|  9.59k|    auto child        = p.node()->inner()[offset_hint];
  680|  9.59k|    auto is_leaf      = p.shift() == BL;
  681|  9.59k|    return is_leaf ? make_leaf_pos(child, p.size()).visit(v, args...)
  ------------------
  |  Branch (681:12): [True: 0, False: 9.59k]
  ------------------
  682|  9.59k|                   : make_regular_pos(child, p.shift() - B, p.size())
  683|  9.59k|                         .visit(v, args...);
  684|  9.59k|}
_ZN5immer6detail4rbts11regular_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_21push_tail_mut_visitorISC_Lb0EEEJRNSA_5applyIS7_E4type4editERPSC_EEEDcT_DpOT0_:
  334|  14.1k|    {
  335|  14.1k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
  336|  14.1k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE7last_ohINS1_21push_tail_mut_visitorISC_Lb0EEEJRNSA_5applyIS7_E4type4editERPSC_EEEDcT_jDpOT0_:
  944|  4.53k|    {
  945|  4.53k|        return last_oh_regular(*this, v, offset_hint, args...);
  946|  4.53k|    }
_ZN5immer6detail4rbts15last_oh_regularIRNS1_15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEENS1_21push_tail_mut_visitorISD_Lb0EEEJRNSB_5applyIS8_E4type4editERPSD_EEEDcOT_T0_jDpOT1_:
  675|  4.53k|{
  676|  4.53k|    assert(offset_hint == p.count() - 1);
  677|      0|    constexpr auto B  = bits<Pos>;
  678|  4.53k|    constexpr auto BL = bits_leaf<Pos>;
  679|  4.53k|    auto child        = p.node()->inner()[offset_hint];
  680|  4.53k|    auto is_leaf      = p.shift() == BL;
  681|  4.53k|    return is_leaf ? make_leaf_pos(child, p.size()).visit(v, args...)
  ------------------
  |  Branch (681:12): [True: 0, False: 4.53k]
  ------------------
  682|  4.53k|                   : make_regular_pos(child, p.shift() - B, p.size())
  683|  4.53k|                         .visit(v, args...);
  684|  4.53k|}
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE11last_oh_cshINS1_21push_tail_mut_visitorISC_Lb0EEEJRNSA_5applyIS7_E4type4editERPSC_RjEEEDcT_jmDpOT0_:
 1729|  20.8k|    {
 1730|  20.8k|        assert(offset_hint == count() - 1);
 1731|      0|        assert(child_size_hint == size(offset_hint));
 1732|      0|        auto child   = node_->inner()[offset_hint];
 1733|  20.8k|        auto is_leaf = shift_ == BL;
 1734|  20.8k|        return is_leaf
  ------------------
  |  Branch (1734:16): [True: 0, False: 20.8k]
  ------------------
 1735|  20.8k|                   ? make_leaf_sub_pos(child, child_size_hint).visit(v, args...)
 1736|  20.8k|                   : visit_maybe_relaxed_sub(
 1737|  20.8k|                         child, shift_ - B, child_size_hint, v, args...);
 1738|  20.8k|    }
_ZN5immer6detail4rbts23visit_maybe_relaxed_subINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEENS1_21push_tail_mut_visitorISC_Lb0EEEJRNSA_5applyIS7_E4type4editERPSC_RjEEEDcPT_jmT0_DpOT1_:
 1830|  20.8k|{
 1831|  20.8k|    assert(node);
 1832|      0|    auto relaxed = node->relaxed();
 1833|  20.8k|    if (relaxed) {
  ------------------
  |  Branch (1833:9): [True: 17.9k, False: 2.88k]
  ------------------
 1834|  17.9k|        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
 1835|      0|        return make_relaxed_pos(node, shift, relaxed)
 1836|  17.9k|            .visit(v, std::forward<Args>(args)...);
 1837|  17.9k|    } else {
 1838|  2.88k|        return make_regular_sub_pos(node, shift, size)
 1839|  2.88k|            .visit(v, std::forward<Args>(args)...);
 1840|  2.88k|    }
 1841|  20.8k|}
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_21push_tail_mut_visitorISC_Lb0EEEJRNSA_5applyIS7_E4type4editERPSC_RjEEEDcT_DpOT0_:
 1805|  17.9k|    {
 1806|  17.9k|        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
 1807|  17.9k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_21push_tail_mut_visitorISC_Lb0EEEJRNSA_5applyIS7_E4type4editERPSC_RjEEEDcT_DpOT0_:
 1028|  2.88k|    {
 1029|  2.88k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1030|  2.88k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_21push_tail_mut_visitorISC_Lb1EEEJRNSA_5applyIS7_E4type4editERPSC_EEEDcT_DpOT0_:
 1028|  1.45M|    {
 1029|  1.45M|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1030|  1.45M|    }
_ZN5immer6detail4rbts23visit_maybe_relaxed_subINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEENS1_15get_mut_visitorISC_EEJRmRNSA_5applyIS7_E4type4editEPPSC_EEEDcPT_jmT0_DpOT1_:
 1830|  9.34k|{
 1831|  9.34k|    assert(node);
 1832|      0|    auto relaxed = node->relaxed();
 1833|  9.34k|    if (relaxed) {
  ------------------
  |  Branch (1833:9): [True: 4.11k, False: 5.22k]
  ------------------
 1834|  4.11k|        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
 1835|      0|        return make_relaxed_pos(node, shift, relaxed)
 1836|  4.11k|            .visit(v, std::forward<Args>(args)...);
 1837|  5.22k|    } else {
 1838|  5.22k|        return make_regular_sub_pos(node, shift, size)
 1839|  5.22k|            .visit(v, std::forward<Args>(args)...);
 1840|  5.22k|    }
 1841|  9.34k|}
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_15get_mut_visitorISC_EEJRmRNSA_5applyIS7_E4type4editEPPSC_EEEDcT_DpOT0_:
 1805|  4.11k|    {
 1806|  4.11k|        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
 1807|  4.11k|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10towards_ohINS1_15get_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editEPPSC_EEEDcT_mjDpOT0_:
 1678|  13.8k|    {
 1679|  13.8k|        assert(offset_hint == index(idx));
 1680|  13.8k|        auto left_size = offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0;
  ------------------
  |  Branch (1680:26): [True: 3.85k, False: 9.98k]
  ------------------
 1681|  13.8k|        return towards_oh_sbh(v, idx, offset_hint, left_size, args...);
 1682|  13.8k|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE14towards_oh_sbhINS1_15get_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editERPPSC_EEEDcT_mjmDpOT0_:
 1690|  13.8k|    {
 1691|  13.8k|        return towards_sub_oh_sbh(v, idx, offset_hint, left_size_hint, args...);
 1692|  13.8k|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE18towards_sub_oh_sbhINS1_15get_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editERPPSC_EEEDcT_mjmDpOT0_:
 1709|  13.8k|    {
 1710|  13.8k|        assert(offset_hint == index(idx));
 1711|      0|        assert(left_size_hint ==
 1712|  13.8k|               (offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0));
 1713|      0|        auto child     = node_->inner()[offset_hint];
 1714|  13.8k|        auto is_leaf   = shift_ == BL;
 1715|  13.8k|        auto next_size = relaxed_->d.sizes[offset_hint] - left_size_hint;
 1716|  13.8k|        auto next_idx  = idx - left_size_hint;
 1717|  13.8k|        return is_leaf
  ------------------
  |  Branch (1717:16): [True: 2.87k, False: 10.9k]
  ------------------
 1718|  13.8k|                   ? make_leaf_sub_pos(child, next_size)
 1719|  2.87k|                         .visit(v, next_idx, args...)
 1720|  13.8k|                   : visit_maybe_relaxed_sub(
 1721|  10.9k|                         child, shift_ - B, next_size, v, next_idx, args...);
 1722|  13.8k|    }
_ZN5immer6detail4rbts12leaf_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_15get_mut_visitorISC_EEJRmRNSA_5applyIS7_E4type4editERPPSC_EEEDcT_DpOT0_:
  143|  2.87k|    {
  144|  2.87k|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  145|  2.87k|    }
_ZN5immer6detail4rbts23visit_maybe_relaxed_subINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEENS1_15get_mut_visitorISC_EEJRmRNSA_5applyIS7_E4type4editERPPSC_EEEDcPT_jmT0_DpOT1_:
 1830|  10.9k|{
 1831|  10.9k|    assert(node);
 1832|      0|    auto relaxed = node->relaxed();
 1833|  10.9k|    if (relaxed) {
  ------------------
  |  Branch (1833:9): [True: 9.71k, False: 1.24k]
  ------------------
 1834|  9.71k|        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
 1835|      0|        return make_relaxed_pos(node, shift, relaxed)
 1836|  9.71k|            .visit(v, std::forward<Args>(args)...);
 1837|  9.71k|    } else {
 1838|  1.24k|        return make_regular_sub_pos(node, shift, size)
 1839|  1.24k|            .visit(v, std::forward<Args>(args)...);
 1840|  1.24k|    }
 1841|  10.9k|}
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_15get_mut_visitorISC_EEJRmRNSA_5applyIS7_E4type4editERPPSC_EEEDcT_DpOT0_:
 1805|  9.71k|    {
 1806|  9.71k|        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
 1807|  9.71k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_15get_mut_visitorISC_EEJRmRNSA_5applyIS7_E4type4editERPPSC_EEEDcT_DpOT0_:
 1028|  1.24k|    {
 1029|  1.24k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1030|  1.24k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE13towards_oh_chINS1_15get_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editEPPSC_EEEDcT_mjjDpOT0_:
  930|  6.47k|    {
  931|  6.47k|        return towards_oh_ch_regular(
  932|  6.47k|            *this, v, idx, offset_hint, count(), args...);
  933|  6.47k|    }
_ZN5immer6detail4rbts21towards_oh_ch_regularIRNS1_15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEENS1_15get_mut_visitorISD_EEJRNSB_5applyIS8_E4type4editERPPSD_EEEDcOT_T0_mjjDpOT1_:
  630|  6.47k|{
  631|  6.47k|    constexpr auto B  = bits<Pos>;
  632|  6.47k|    constexpr auto BL = bits_leaf<Pos>;
  633|  6.47k|    assert(offset_hint == p.index(idx));
  634|      0|    assert(count_hint == p.count());
  635|      0|    auto is_leaf = p.shift() == BL;
  636|  6.47k|    auto child   = p.node()->inner()[offset_hint];
  637|  6.47k|    auto is_full = offset_hint + 1 != count_hint;
  638|  6.47k|    return is_full
  ------------------
  |  Branch (638:12): [True: 4.35k, False: 2.11k]
  ------------------
  639|  6.47k|               ? (is_leaf ? make_full_leaf_pos(child).visit(v, idx, args...)
  ------------------
  |  Branch (639:19): [True: 807, False: 3.54k]
  ------------------
  640|  4.35k|                          : make_full_pos(child, p.shift() - B)
  641|  3.54k|                                .visit(v, idx, args...))
  642|  6.47k|               : (is_leaf
  ------------------
  |  Branch (642:19): [True: 738, False: 1.38k]
  ------------------
  643|  2.11k|                      ? make_leaf_pos(child, p.size()).visit(v, idx, args...)
  644|  2.11k|                      : make_regular_pos(child, p.shift() - B, p.size())
  645|  1.38k|                            .visit(v, idx, args...));
  646|  6.47k|}
_ZN5immer6detail4rbts13full_leaf_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_15get_mut_visitorISC_EEJRmRNSA_5applyIS7_E4type4editERPPSC_EEEDcT_DpOT0_:
  205|  5.04k|    {
  206|  5.04k|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  207|  5.04k|    }
_ZN5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_15get_mut_visitorISC_EEJRmRNSA_5applyIS7_E4type4editERPPSC_EEEDcT_DpOT0_:
 1397|  6.27k|    {
 1398|  6.27k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1399|  6.27k|    }
_ZN5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE13towards_oh_chINS1_15get_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editEPPSC_EEEDcT_mjjDpOT0_:
 1321|  6.27k|    {
 1322|  6.27k|        return towards_oh(v, idx, offset_hint, args...);
 1323|  6.27k|    }
_ZN5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10towards_ohINS1_15get_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editERPPSC_EEEDcT_mjDpOT0_:
 1328|  6.27k|    {
 1329|  6.27k|        assert(offset_hint == index(idx));
 1330|      0|        auto is_leaf = shift_ == BL;
 1331|  6.27k|        auto child   = node_->inner()[offset_hint];
 1332|  6.27k|        return is_leaf
  ------------------
  |  Branch (1332:16): [True: 3.75k, False: 2.51k]
  ------------------
 1333|  6.27k|                   ? make_full_leaf_pos(child).visit(v, idx, args...)
 1334|  6.27k|                   : make_full_pos(child, shift_ - B).visit(v, idx, args...);
 1335|  6.27k|    }
_ZN5immer6detail4rbts8leaf_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_15get_mut_visitorISC_EEJRmRNSA_5applyIS7_E4type4editERPPSC_EEEDcT_DpOT0_:
  111|  1.43k|    {
  112|  1.43k|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  113|  1.43k|    }
_ZN5immer6detail4rbts11regular_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_15get_mut_visitorISC_EEJRmRNSA_5applyIS7_E4type4editERPPSC_EEEDcT_DpOT0_:
  334|  1.98k|    {
  335|  1.98k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
  336|  1.98k|    }
_ZN5immer6detail4rbts11regular_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE13towards_oh_chINS1_15get_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editEPPSC_EEEDcT_mjjDpOT0_:
  314|  1.98k|    {
  315|  1.98k|        return towards_oh_ch_regular(
  316|  1.98k|            *this, v, idx, offset_hint, count(), args...);
  317|  1.98k|    }
_ZN5immer6detail4rbts21towards_oh_ch_regularIRNS1_11regular_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEENS1_15get_mut_visitorISD_EEJRNSB_5applyIS8_E4type4editERPPSD_EEEDcOT_T0_mjjDpOT1_:
  630|  1.98k|{
  631|  1.98k|    constexpr auto B  = bits<Pos>;
  632|  1.98k|    constexpr auto BL = bits_leaf<Pos>;
  633|  1.98k|    assert(offset_hint == p.index(idx));
  634|      0|    assert(count_hint == p.count());
  635|      0|    auto is_leaf = p.shift() == BL;
  636|  1.98k|    auto child   = p.node()->inner()[offset_hint];
  637|  1.98k|    auto is_full = offset_hint + 1 != count_hint;
  638|  1.98k|    return is_full
  ------------------
  |  Branch (638:12): [True: 689, False: 1.29k]
  ------------------
  639|  1.98k|               ? (is_leaf ? make_full_leaf_pos(child).visit(v, idx, args...)
  ------------------
  |  Branch (639:19): [True: 482, False: 207]
  ------------------
  640|    689|                          : make_full_pos(child, p.shift() - B)
  641|    207|                                .visit(v, idx, args...))
  642|  1.98k|               : (is_leaf
  ------------------
  |  Branch (642:19): [True: 692, False: 601]
  ------------------
  643|  1.29k|                      ? make_leaf_pos(child, p.size()).visit(v, idx, args...)
  644|  1.29k|                      : make_regular_pos(child, p.shift() - B, p.size())
  645|    601|                            .visit(v, idx, args...));
  646|  1.98k|}
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_15get_mut_visitorISC_EEJRmRNSA_5applyIS7_E4type4editEPPSC_EEEDcT_DpOT0_:
 1028|  5.22k|    {
 1029|  5.22k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1030|  5.22k|    }
_ZN5immer6detail4rbts23visit_maybe_relaxed_subINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEENS1_23slice_right_mut_visitorISC_Lb1ELb1EEEJRmRNSA_5applyIS7_E4type4editEEEEDcPT_jmT0_DpOT1_:
 1830|  54.1k|{
 1831|  54.1k|    assert(node);
 1832|      0|    auto relaxed = node->relaxed();
 1833|  54.1k|    if (relaxed) {
  ------------------
  |  Branch (1833:9): [True: 39.6k, False: 14.5k]
  ------------------
 1834|  39.6k|        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
 1835|      0|        return make_relaxed_pos(node, shift, relaxed)
 1836|  39.6k|            .visit(v, std::forward<Args>(args)...);
 1837|  39.6k|    } else {
 1838|  14.5k|        return make_regular_sub_pos(node, shift, size)
 1839|  14.5k|            .visit(v, std::forward<Args>(args)...);
 1840|  14.5k|    }
 1841|  54.1k|}
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_23slice_right_mut_visitorISC_Lb1ELb1EEEJRmRNSA_5applyIS7_E4type4editEEEEDcT_DpOT0_:
 1805|  39.6k|    {
 1806|  39.6k|        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
 1807|  39.6k|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10towards_ohINS1_23slice_right_mut_visitorISC_Lb1ELb1EEEJRNSA_5applyIS7_E4type4editEEEEDcT_mjDpOT0_:
 1678|  22.0k|    {
 1679|  22.0k|        assert(offset_hint == index(idx));
 1680|  22.0k|        auto left_size = offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0;
  ------------------
  |  Branch (1680:26): [True: 0, False: 22.0k]
  ------------------
 1681|  22.0k|        return towards_oh_sbh(v, idx, offset_hint, left_size, args...);
 1682|  22.0k|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE14towards_oh_sbhINS1_23slice_right_mut_visitorISC_Lb1ELb1EEEJRNSA_5applyIS7_E4type4editEEEEDcT_mjmDpOT0_:
 1690|  22.0k|    {
 1691|  22.0k|        return towards_sub_oh_sbh(v, idx, offset_hint, left_size_hint, args...);
 1692|  22.0k|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE18towards_sub_oh_sbhINS1_23slice_right_mut_visitorISC_Lb1ELb1EEEJRNSA_5applyIS7_E4type4editEEEEDcT_mjmDpOT0_:
 1709|  22.0k|    {
 1710|  22.0k|        assert(offset_hint == index(idx));
 1711|      0|        assert(left_size_hint ==
 1712|  22.0k|               (offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0));
 1713|      0|        auto child     = node_->inner()[offset_hint];
 1714|  22.0k|        auto is_leaf   = shift_ == BL;
 1715|  22.0k|        auto next_size = relaxed_->d.sizes[offset_hint] - left_size_hint;
 1716|  22.0k|        auto next_idx  = idx - left_size_hint;
 1717|  22.0k|        return is_leaf
  ------------------
  |  Branch (1717:16): [True: 2.51k, False: 19.5k]
  ------------------
 1718|  22.0k|                   ? make_leaf_sub_pos(child, next_size)
 1719|  2.51k|                         .visit(v, next_idx, args...)
 1720|  22.0k|                   : visit_maybe_relaxed_sub(
 1721|  19.5k|                         child, shift_ - B, next_size, v, next_idx, args...);
 1722|  22.0k|    }
_ZN5immer6detail4rbts12leaf_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_23slice_right_mut_visitorISC_Lb1ELb1EEEJRmRNSA_5applyIS7_E4type4editEEEEDcT_DpOT0_:
  143|  2.51k|    {
  144|  2.51k|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  145|  2.51k|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10towards_ohINS1_23slice_right_mut_visitorISC_Lb1ELb0EEEJRNSA_5applyIS7_E4type4editEEEEDcT_mjDpOT0_:
 1678|  23.9k|    {
 1679|  23.9k|        assert(offset_hint == index(idx));
 1680|  23.9k|        auto left_size = offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0;
  ------------------
  |  Branch (1680:26): [True: 0, False: 23.9k]
  ------------------
 1681|  23.9k|        return towards_oh_sbh(v, idx, offset_hint, left_size, args...);
 1682|  23.9k|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE14towards_oh_sbhINS1_23slice_right_mut_visitorISC_Lb1ELb0EEEJRNSA_5applyIS7_E4type4editEEEEDcT_mjmDpOT0_:
 1690|  23.9k|    {
 1691|  23.9k|        return towards_sub_oh_sbh(v, idx, offset_hint, left_size_hint, args...);
 1692|  23.9k|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE18towards_sub_oh_sbhINS1_23slice_right_mut_visitorISC_Lb1ELb0EEEJRNSA_5applyIS7_E4type4editEEEEDcT_mjmDpOT0_:
 1709|  23.9k|    {
 1710|  23.9k|        assert(offset_hint == index(idx));
 1711|      0|        assert(left_size_hint ==
 1712|  23.9k|               (offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0));
 1713|      0|        auto child     = node_->inner()[offset_hint];
 1714|  23.9k|        auto is_leaf   = shift_ == BL;
 1715|  23.9k|        auto next_size = relaxed_->d.sizes[offset_hint] - left_size_hint;
 1716|  23.9k|        auto next_idx  = idx - left_size_hint;
 1717|  23.9k|        return is_leaf
  ------------------
  |  Branch (1717:16): [True: 1.37k, False: 22.5k]
  ------------------
 1718|  23.9k|                   ? make_leaf_sub_pos(child, next_size)
 1719|  1.37k|                         .visit(v, next_idx, args...)
 1720|  23.9k|                   : visit_maybe_relaxed_sub(
 1721|  22.5k|                         child, shift_ - B, next_size, v, next_idx, args...);
 1722|  23.9k|    }
_ZN5immer6detail4rbts12leaf_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_23slice_right_mut_visitorISC_Lb1ELb0EEEJRmRNSA_5applyIS7_E4type4editEEEEDcT_DpOT0_:
  143|  1.37k|    {
  144|  1.37k|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  145|  1.37k|    }
_ZN5immer6detail4rbts23visit_maybe_relaxed_subINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEENS1_23slice_right_mut_visitorISC_Lb1ELb0EEEJRmRNSA_5applyIS7_E4type4editEEEEDcPT_jmT0_DpOT1_:
 1830|  22.5k|{
 1831|  22.5k|    assert(node);
 1832|      0|    auto relaxed = node->relaxed();
 1833|  22.5k|    if (relaxed) {
  ------------------
  |  Branch (1833:9): [True: 21.4k, False: 1.12k]
  ------------------
 1834|  21.4k|        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
 1835|      0|        return make_relaxed_pos(node, shift, relaxed)
 1836|  21.4k|            .visit(v, std::forward<Args>(args)...);
 1837|  21.4k|    } else {
 1838|  1.12k|        return make_regular_sub_pos(node, shift, size)
 1839|  1.12k|            .visit(v, std::forward<Args>(args)...);
 1840|  1.12k|    }
 1841|  22.5k|}
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_23slice_right_mut_visitorISC_Lb1ELb0EEEJRmRNSA_5applyIS7_E4type4editEEEEDcT_DpOT0_:
 1805|  21.4k|    {
 1806|  21.4k|        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
 1807|  21.4k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_23slice_right_mut_visitorISC_Lb1ELb0EEEJRmRNSA_5applyIS7_E4type4editEEEEDcT_DpOT0_:
 1028|  1.12k|    {
 1029|  1.12k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1030|  1.12k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10towards_ohINS1_23slice_right_mut_visitorISC_Lb1ELb0EEEJRNSA_5applyIS7_E4type4editEEEEDcT_mjDpOT0_:
  919|  2.90k|    {
  920|  2.90k|        return towards_oh_ch_regular(
  921|  2.90k|            *this, v, idx, offset_hint, count(), args...);
  922|  2.90k|    }
_ZN5immer6detail4rbts21towards_oh_ch_regularIRNS1_15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEENS1_23slice_right_mut_visitorISD_Lb1ELb0EEEJRNSB_5applyIS8_E4type4editEEEEDcOT_T0_mjjDpOT1_:
  630|  2.90k|{
  631|  2.90k|    constexpr auto B  = bits<Pos>;
  632|  2.90k|    constexpr auto BL = bits_leaf<Pos>;
  633|  2.90k|    assert(offset_hint == p.index(idx));
  634|      0|    assert(count_hint == p.count());
  635|      0|    auto is_leaf = p.shift() == BL;
  636|  2.90k|    auto child   = p.node()->inner()[offset_hint];
  637|  2.90k|    auto is_full = offset_hint + 1 != count_hint;
  638|  2.90k|    return is_full
  ------------------
  |  Branch (638:12): [True: 2.22k, False: 682]
  ------------------
  639|  2.90k|               ? (is_leaf ? make_full_leaf_pos(child).visit(v, idx, args...)
  ------------------
  |  Branch (639:19): [True: 610, False: 1.61k]
  ------------------
  640|  2.22k|                          : make_full_pos(child, p.shift() - B)
  641|  1.61k|                                .visit(v, idx, args...))
  642|  2.90k|               : (is_leaf
  ------------------
  |  Branch (642:19): [True: 682, False: 0]
  ------------------
  643|    682|                      ? make_leaf_pos(child, p.size()).visit(v, idx, args...)
  644|    682|                      : make_regular_pos(child, p.shift() - B, p.size())
  645|      0|                            .visit(v, idx, args...));
  646|  2.90k|}
_ZN5immer6detail4rbts13full_leaf_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_23slice_right_mut_visitorISC_Lb1ELb0EEEJRmRNSA_5applyIS7_E4type4editEEEEDcT_DpOT0_:
  205|  1.42k|    {
  206|  1.42k|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  207|  1.42k|    }
_ZN5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_23slice_right_mut_visitorISC_Lb1ELb0EEEJRmRNSA_5applyIS7_E4type4editEEEEDcT_DpOT0_:
 1397|  1.92k|    {
 1398|  1.92k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1399|  1.92k|    }
_ZN5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10towards_ohINS1_23slice_right_mut_visitorISC_Lb1ELb0EEEJRNSA_5applyIS7_E4type4editEEEEDcT_mjDpOT0_:
 1328|  1.12k|    {
 1329|  1.12k|        assert(offset_hint == index(idx));
 1330|      0|        auto is_leaf = shift_ == BL;
 1331|  1.12k|        auto child   = node_->inner()[offset_hint];
 1332|  1.12k|        return is_leaf
  ------------------
  |  Branch (1332:16): [True: 818, False: 308]
  ------------------
 1333|  1.12k|                   ? make_full_leaf_pos(child).visit(v, idx, args...)
 1334|  1.12k|                   : make_full_pos(child, shift_ - B).visit(v, idx, args...);
 1335|  1.12k|    }
_ZN5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10towards_ohINS1_23slice_right_mut_visitorISC_Lb0ELb1EEEJRNSA_5applyIS7_E4type4editEEEEDcT_mjDpOT0_:
 1328|  1.88k|    {
 1329|  1.88k|        assert(offset_hint == index(idx));
 1330|      0|        auto is_leaf = shift_ == BL;
 1331|  1.88k|        auto child   = node_->inner()[offset_hint];
 1332|  1.88k|        return is_leaf
  ------------------
  |  Branch (1332:16): [True: 1.05k, False: 828]
  ------------------
 1333|  1.88k|                   ? make_full_leaf_pos(child).visit(v, idx, args...)
 1334|  1.88k|                   : make_full_pos(child, shift_ - B).visit(v, idx, args...);
 1335|  1.88k|    }
_ZN5immer6detail4rbts13full_leaf_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_23slice_right_mut_visitorISC_Lb0ELb1EEEJRmRNSA_5applyIS7_E4type4editEEEEDcT_DpOT0_:
  205|  2.87k|    {
  206|  2.87k|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  207|  2.87k|    }
_ZN5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_23slice_right_mut_visitorISC_Lb0ELb1EEEJRmRNSA_5applyIS7_E4type4editEEEEDcT_DpOT0_:
 1397|  2.80k|    {
 1398|  2.80k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1399|  2.80k|    }
_ZN5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_17dec_right_visitorEJjEEEDcT_DpOT0_:
 1397|  1.84k|    {
 1398|  1.84k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1399|  1.84k|    }
_ZN5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10towards_ohINS1_23slice_right_mut_visitorISC_Lb0ELb0EEEJRNSA_5applyIS7_E4type4editEEEEDcT_mjDpOT0_:
 1328|  7.17k|    {
 1329|  7.17k|        assert(offset_hint == index(idx));
 1330|      0|        auto is_leaf = shift_ == BL;
 1331|  7.17k|        auto child   = node_->inner()[offset_hint];
 1332|  7.17k|        return is_leaf
  ------------------
  |  Branch (1332:16): [True: 5.21k, False: 1.95k]
  ------------------
 1333|  7.17k|                   ? make_full_leaf_pos(child).visit(v, idx, args...)
 1334|  7.17k|                   : make_full_pos(child, shift_ - B).visit(v, idx, args...);
 1335|  7.17k|    }
_ZN5immer6detail4rbts13full_leaf_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_23slice_right_mut_visitorISC_Lb0ELb0EEEJRmRNSA_5applyIS7_E4type4editEEEEDcT_DpOT0_:
  205|  6.68k|    {
  206|  6.68k|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  207|  6.68k|    }
_ZN5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_23slice_right_mut_visitorISC_Lb0ELb0EEEJRmRNSA_5applyIS7_E4type4editEEEEDcT_DpOT0_:
 1397|  3.69k|    {
 1398|  3.69k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1399|  3.69k|    }
_ZN5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10each_rightINS1_11dec_visitorEJEEEvT_jDpOT0_:
 1302|  1.81k|    {
 1303|  1.81k|        each_i(v, start, branches<B>, args...);
 1304|  1.81k|    }
_ZN5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE6each_iINS1_11dec_visitorEJEEEvT_jjDpOT0_:
 1255|  1.81k|    {
 1256|  1.81k|        auto p = node_->inner() + i;
 1257|  1.81k|        auto e = node_->inner() + n;
 1258|  1.81k|        if (shift_ == BL) {
  ------------------
  |  Branch (1258:13): [True: 1.04k, False: 768]
  ------------------
 1259|  1.54k|            for (; p != e; ++p) {
  ------------------
  |  Branch (1259:20): [True: 496, False: 1.04k]
  ------------------
 1260|    496|                IMMER_PREFETCH(p + 1);
 1261|    496|                make_full_leaf_pos(*p).visit(v, args...);
 1262|    496|            }
 1263|  1.04k|        } else {
 1264|    768|            auto ss = shift_ - B;
 1265|  1.27k|            for (; p != e; ++p)
  ------------------
  |  Branch (1265:20): [True: 506, False: 768]
  ------------------
 1266|    506|                make_full_pos(*p, ss).visit(v, args...);
 1267|    768|        }
 1268|  1.81k|    }
_ZN5immer6detail4rbts8leaf_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_23slice_right_mut_visitorISC_Lb1ELb0EEEJRmRNSA_5applyIS7_E4type4editEEEEDcT_DpOT0_:
  111|    682|    {
  112|    682|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  113|    682|    }
_ZN5immer6detail4rbts11regular_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10towards_ohINS1_23slice_right_mut_visitorISC_Lb0ELb1EEEJRNSA_5applyIS7_E4type4editEEEEDcT_mjDpOT0_:
  303|  3.00k|    {
  304|  3.00k|        return towards_oh_ch_regular(
  305|  3.00k|            *this, v, idx, offset_hint, count(), args...);
  306|  3.00k|    }
_ZN5immer6detail4rbts21towards_oh_ch_regularIRNS1_11regular_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEENS1_23slice_right_mut_visitorISD_Lb0ELb1EEEJRNSB_5applyIS8_E4type4editEEEEDcOT_T0_mjjDpOT1_:
  630|  3.00k|{
  631|  3.00k|    constexpr auto B  = bits<Pos>;
  632|  3.00k|    constexpr auto BL = bits_leaf<Pos>;
  633|  3.00k|    assert(offset_hint == p.index(idx));
  634|      0|    assert(count_hint == p.count());
  635|      0|    auto is_leaf = p.shift() == BL;
  636|  3.00k|    auto child   = p.node()->inner()[offset_hint];
  637|  3.00k|    auto is_full = offset_hint + 1 != count_hint;
  638|  3.00k|    return is_full
  ------------------
  |  Branch (638:12): [True: 1.43k, False: 1.56k]
  ------------------
  639|  3.00k|               ? (is_leaf ? make_full_leaf_pos(child).visit(v, idx, args...)
  ------------------
  |  Branch (639:19): [True: 840, False: 599]
  ------------------
  640|  1.43k|                          : make_full_pos(child, p.shift() - B)
  641|    599|                                .visit(v, idx, args...))
  642|  3.00k|               : (is_leaf
  ------------------
  |  Branch (642:19): [True: 1.19k, False: 371]
  ------------------
  643|  1.56k|                      ? make_leaf_pos(child, p.size()).visit(v, idx, args...)
  644|  1.56k|                      : make_regular_pos(child, p.shift() - B, p.size())
  645|    371|                            .visit(v, idx, args...));
  646|  3.00k|}
_ZN5immer6detail4rbts8leaf_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_23slice_right_mut_visitorISC_Lb0ELb1EEEJRmRNSA_5applyIS7_E4type4editEEEEDcT_DpOT0_:
  111|  2.41k|    {
  112|  2.41k|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  113|  2.41k|    }
_ZN5immer6detail4rbts11regular_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_23slice_right_mut_visitorISC_Lb0ELb1EEEJRmRNSA_5applyIS7_E4type4editEEEEDcT_DpOT0_:
  334|  3.48k|    {
  335|  3.48k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
  336|  3.48k|    }
_ZN5immer6detail4rbts11regular_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_17dec_right_visitorEJjEEEDcT_DpOT0_:
  334|  1.09k|    {
  335|  1.09k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
  336|  1.09k|    }
_ZN5immer6detail4rbts11regular_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10towards_ohINS1_23slice_right_mut_visitorISC_Lb0ELb0EEEJRNSA_5applyIS7_E4type4editEEEEDcT_mjDpOT0_:
  303|  3.09k|    {
  304|  3.09k|        return towards_oh_ch_regular(
  305|  3.09k|            *this, v, idx, offset_hint, count(), args...);
  306|  3.09k|    }
_ZN5immer6detail4rbts21towards_oh_ch_regularIRNS1_11regular_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEENS1_23slice_right_mut_visitorISD_Lb0ELb0EEEJRNSB_5applyIS8_E4type4editEEEEDcOT_T0_mjjDpOT1_:
  630|  3.09k|{
  631|  3.09k|    constexpr auto B  = bits<Pos>;
  632|  3.09k|    constexpr auto BL = bits_leaf<Pos>;
  633|  3.09k|    assert(offset_hint == p.index(idx));
  634|      0|    assert(count_hint == p.count());
  635|      0|    auto is_leaf = p.shift() == BL;
  636|  3.09k|    auto child   = p.node()->inner()[offset_hint];
  637|  3.09k|    auto is_full = offset_hint + 1 != count_hint;
  638|  3.09k|    return is_full
  ------------------
  |  Branch (638:12): [True: 879, False: 2.21k]
  ------------------
  639|  3.09k|               ? (is_leaf ? make_full_leaf_pos(child).visit(v, idx, args...)
  ------------------
  |  Branch (639:19): [True: 535, False: 344]
  ------------------
  640|    879|                          : make_full_pos(child, p.shift() - B)
  641|    344|                                .visit(v, idx, args...))
  642|  3.09k|               : (is_leaf
  ------------------
  |  Branch (642:19): [True: 1.52k, False: 694]
  ------------------
  643|  2.21k|                      ? make_leaf_pos(child, p.size()).visit(v, idx, args...)
  644|  2.21k|                      : make_regular_pos(child, p.shift() - B, p.size())
  645|    694|                            .visit(v, idx, args...));
  646|  3.09k|}
_ZN5immer6detail4rbts8leaf_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_23slice_right_mut_visitorISC_Lb0ELb0EEEJRmRNSA_5applyIS7_E4type4editEEEEDcT_DpOT0_:
  111|  3.13k|    {
  112|  3.13k|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  113|  3.13k|    }
_ZN5immer6detail4rbts11regular_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_23slice_right_mut_visitorISC_Lb0ELb0EEEJRmRNSA_5applyIS7_E4type4editEEEEDcT_DpOT0_:
  334|  2.61k|    {
  335|  2.61k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
  336|  2.61k|    }
_ZN5immer6detail4rbts11regular_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10each_rightINS1_11dec_visitorEJEEEvT_jDpOT0_:
  283|  1.97k|    {
  284|  1.97k|        return each_right_regular(*this, v, start, args...);
  285|  1.97k|    }
_ZN5immer6detail4rbts18each_right_regularIRNS1_11regular_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEENS1_11dec_visitorEJEEEvOT_T0_jDpOT1_:
  595|  1.97k|{
  596|  1.97k|    constexpr auto B  = bits<Pos>;
  597|  1.97k|    constexpr auto BL = bits_leaf<Pos>;
  598|       |
  599|  1.97k|    if (p.shift() == BL) {
  ------------------
  |  Branch (599:9): [True: 1.08k, False: 885]
  ------------------
  600|  1.08k|        auto n    = p.node()->inner() + start;
  601|  1.08k|        auto last = p.count() - 1;
  602|  1.08k|        auto e    = p.node()->inner() + last;
  603|  1.08k|        if (n <= e) {
  ------------------
  |  Branch (603:13): [True: 450, False: 639]
  ------------------
  604|    644|            for (; n != e; ++n) {
  ------------------
  |  Branch (604:20): [True: 194, False: 450]
  ------------------
  605|    194|                IMMER_PREFETCH(n + 1);
  606|    194|                make_full_leaf_pos(*n).visit(v, args...);
  607|    194|            }
  608|    450|            make_leaf_pos(*n, p.size()).visit(v, args...);
  609|    450|        }
  610|  1.08k|    } else {
  611|    885|        auto n    = p.node()->inner() + start;
  612|    885|        auto last = p.count() - 1;
  613|    885|        auto e    = p.node()->inner() + last;
  614|    885|        auto ss   = p.shift() - B;
  615|    885|        if (n <= e) {
  ------------------
  |  Branch (615:13): [True: 599, False: 286]
  ------------------
  616|  1.20k|            for (; n != e; ++n)
  ------------------
  |  Branch (616:20): [True: 602, False: 599]
  ------------------
  617|    602|                make_full_pos(*n, ss).visit(v, args...);
  618|    599|            make_regular_pos(*n, ss, p.size()).visit(v, args...);
  619|    599|        }
  620|    885|    }
  621|  1.97k|}
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10towards_ohINS1_23slice_right_mut_visitorISC_Lb0ELb1EEEJRNSA_5applyIS7_E4type4editEEEEDcT_mjDpOT0_:
  919|  6.69k|    {
  920|  6.69k|        return towards_oh_ch_regular(
  921|  6.69k|            *this, v, idx, offset_hint, count(), args...);
  922|  6.69k|    }
_ZN5immer6detail4rbts21towards_oh_ch_regularIRNS1_15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEENS1_23slice_right_mut_visitorISD_Lb0ELb1EEEJRNSB_5applyIS8_E4type4editEEEEDcOT_T0_mjjDpOT1_:
  630|  6.69k|{
  631|  6.69k|    constexpr auto B  = bits<Pos>;
  632|  6.69k|    constexpr auto BL = bits_leaf<Pos>;
  633|  6.69k|    assert(offset_hint == p.index(idx));
  634|      0|    assert(count_hint == p.count());
  635|      0|    auto is_leaf = p.shift() == BL;
  636|  6.69k|    auto child   = p.node()->inner()[offset_hint];
  637|  6.69k|    auto is_full = offset_hint + 1 != count_hint;
  638|  6.69k|    return is_full
  ------------------
  |  Branch (638:12): [True: 2.35k, False: 4.33k]
  ------------------
  639|  6.69k|               ? (is_leaf ? make_full_leaf_pos(child).visit(v, idx, args...)
  ------------------
  |  Branch (639:19): [True: 978, False: 1.38k]
  ------------------
  640|  2.35k|                          : make_full_pos(child, p.shift() - B)
  641|  1.38k|                                .visit(v, idx, args...))
  642|  6.69k|               : (is_leaf
  ------------------
  |  Branch (642:19): [True: 1.22k, False: 3.10k]
  ------------------
  643|  4.33k|                      ? make_leaf_pos(child, p.size()).visit(v, idx, args...)
  644|  4.33k|                      : make_regular_pos(child, p.shift() - B, p.size())
  645|  3.10k|                            .visit(v, idx, args...));
  646|  6.69k|}
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10towards_ohINS1_23slice_right_mut_visitorISC_Lb0ELb0EEEJRNSA_5applyIS7_E4type4editEEEEDcT_mjDpOT0_:
  919|  5.85k|    {
  920|  5.85k|        return towards_oh_ch_regular(
  921|  5.85k|            *this, v, idx, offset_hint, count(), args...);
  922|  5.85k|    }
_ZN5immer6detail4rbts21towards_oh_ch_regularIRNS1_15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEENS1_23slice_right_mut_visitorISD_Lb0ELb0EEEJRNSB_5applyIS8_E4type4editEEEEDcOT_T0_mjjDpOT1_:
  630|  5.85k|{
  631|  5.85k|    constexpr auto B  = bits<Pos>;
  632|  5.85k|    constexpr auto BL = bits_leaf<Pos>;
  633|  5.85k|    assert(offset_hint == p.index(idx));
  634|      0|    assert(count_hint == p.count());
  635|      0|    auto is_leaf = p.shift() == BL;
  636|  5.85k|    auto child   = p.node()->inner()[offset_hint];
  637|  5.85k|    auto is_full = offset_hint + 1 != count_hint;
  638|  5.85k|    return is_full
  ------------------
  |  Branch (638:12): [True: 2.32k, False: 3.53k]
  ------------------
  639|  5.85k|               ? (is_leaf ? make_full_leaf_pos(child).visit(v, idx, args...)
  ------------------
  |  Branch (639:19): [True: 931, False: 1.39k]
  ------------------
  640|  2.32k|                          : make_full_pos(child, p.shift() - B)
  641|  1.39k|                                .visit(v, idx, args...))
  642|  5.85k|               : (is_leaf
  ------------------
  |  Branch (642:19): [True: 1.60k, False: 1.92k]
  ------------------
  643|  3.53k|                      ? make_leaf_pos(child, p.size()).visit(v, idx, args...)
  644|  3.53k|                      : make_regular_pos(child, p.shift() - B, p.size())
  645|  1.92k|                            .visit(v, idx, args...));
  646|  5.85k|}
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10each_rightINS1_11dec_visitorEJEEEvT_jDpOT0_:
  859|  5.02k|    {
  860|  5.02k|        return each_right_regular(*this, v, start, args...);
  861|  5.02k|    }
_ZN5immer6detail4rbts18each_right_regularIRNS1_15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEENS1_11dec_visitorEJEEEvOT_T0_jDpOT1_:
  595|  5.02k|{
  596|  5.02k|    constexpr auto B  = bits<Pos>;
  597|  5.02k|    constexpr auto BL = bits_leaf<Pos>;
  598|       |
  599|  5.02k|    if (p.shift() == BL) {
  ------------------
  |  Branch (599:9): [True: 1.73k, False: 3.28k]
  ------------------
  600|  1.73k|        auto n    = p.node()->inner() + start;
  601|  1.73k|        auto last = p.count() - 1;
  602|  1.73k|        auto e    = p.node()->inner() + last;
  603|  1.73k|        if (n <= e) {
  ------------------
  |  Branch (603:13): [True: 944, False: 790]
  ------------------
  604|  1.18k|            for (; n != e; ++n) {
  ------------------
  |  Branch (604:20): [True: 236, False: 944]
  ------------------
  605|    236|                IMMER_PREFETCH(n + 1);
  606|    236|                make_full_leaf_pos(*n).visit(v, args...);
  607|    236|            }
  608|    944|            make_leaf_pos(*n, p.size()).visit(v, args...);
  609|    944|        }
  610|  3.28k|    } else {
  611|  3.28k|        auto n    = p.node()->inner() + start;
  612|  3.28k|        auto last = p.count() - 1;
  613|  3.28k|        auto e    = p.node()->inner() + last;
  614|  3.28k|        auto ss   = p.shift() - B;
  615|  3.28k|        if (n <= e) {
  ------------------
  |  Branch (615:13): [True: 1.18k, False: 2.10k]
  ------------------
  616|  1.78k|            for (; n != e; ++n)
  ------------------
  |  Branch (616:20): [True: 602, False: 1.18k]
  ------------------
  617|    602|                make_full_pos(*n, ss).visit(v, args...);
  618|  1.18k|            make_regular_pos(*n, ss, p.size()).visit(v, args...);
  619|  1.18k|        }
  620|  3.28k|    }
  621|  5.02k|}
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_17dec_right_visitorEJjEEEDcT_DpOT0_:
 1805|  31.9k|    {
 1806|  31.9k|        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
 1807|  31.9k|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10towards_ohINS1_23slice_right_mut_visitorISC_Lb0ELb1EEEJRNSA_5applyIS7_E4type4editEEEEDcT_mjDpOT0_:
 1678|  20.3k|    {
 1679|  20.3k|        assert(offset_hint == index(idx));
 1680|  20.3k|        auto left_size = offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0;
  ------------------
  |  Branch (1680:26): [True: 15.5k, False: 4.79k]
  ------------------
 1681|  20.3k|        return towards_oh_sbh(v, idx, offset_hint, left_size, args...);
 1682|  20.3k|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE14towards_oh_sbhINS1_23slice_right_mut_visitorISC_Lb0ELb1EEEJRNSA_5applyIS7_E4type4editEEEEDcT_mjmDpOT0_:
 1690|  20.3k|    {
 1691|  20.3k|        return towards_sub_oh_sbh(v, idx, offset_hint, left_size_hint, args...);
 1692|  20.3k|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE18towards_sub_oh_sbhINS1_23slice_right_mut_visitorISC_Lb0ELb1EEEJRNSA_5applyIS7_E4type4editEEEEDcT_mjmDpOT0_:
 1709|  20.3k|    {
 1710|  20.3k|        assert(offset_hint == index(idx));
 1711|      0|        assert(left_size_hint ==
 1712|  20.3k|               (offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0));
 1713|      0|        auto child     = node_->inner()[offset_hint];
 1714|  20.3k|        auto is_leaf   = shift_ == BL;
 1715|  20.3k|        auto next_size = relaxed_->d.sizes[offset_hint] - left_size_hint;
 1716|  20.3k|        auto next_idx  = idx - left_size_hint;
 1717|  20.3k|        return is_leaf
  ------------------
  |  Branch (1717:16): [True: 4.82k, False: 15.5k]
  ------------------
 1718|  20.3k|                   ? make_leaf_sub_pos(child, next_size)
 1719|  4.82k|                         .visit(v, next_idx, args...)
 1720|  20.3k|                   : visit_maybe_relaxed_sub(
 1721|  15.5k|                         child, shift_ - B, next_size, v, next_idx, args...);
 1722|  20.3k|    }
_ZN5immer6detail4rbts12leaf_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_23slice_right_mut_visitorISC_Lb0ELb1EEEJRmRNSA_5applyIS7_E4type4editEEEEDcT_DpOT0_:
  143|  4.82k|    {
  144|  4.82k|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  145|  4.82k|    }
_ZN5immer6detail4rbts23visit_maybe_relaxed_subINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEENS1_23slice_right_mut_visitorISC_Lb0ELb1EEEJRmRNSA_5applyIS7_E4type4editEEEEDcPT_jmT0_DpOT1_:
 1830|  15.5k|{
 1831|  15.5k|    assert(node);
 1832|      0|    auto relaxed = node->relaxed();
 1833|  15.5k|    if (relaxed) {
  ------------------
  |  Branch (1833:9): [True: 13.1k, False: 2.36k]
  ------------------
 1834|  13.1k|        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
 1835|      0|        return make_relaxed_pos(node, shift, relaxed)
 1836|  13.1k|            .visit(v, std::forward<Args>(args)...);
 1837|  13.1k|    } else {
 1838|  2.36k|        return make_regular_sub_pos(node, shift, size)
 1839|  2.36k|            .visit(v, std::forward<Args>(args)...);
 1840|  2.36k|    }
 1841|  15.5k|}
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_23slice_right_mut_visitorISC_Lb0ELb1EEEJRmRNSA_5applyIS7_E4type4editEEEEDcT_DpOT0_:
 1805|  13.1k|    {
 1806|  13.1k|        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
 1807|  13.1k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_23slice_right_mut_visitorISC_Lb0ELb1EEEJRmRNSA_5applyIS7_E4type4editEEEEDcT_DpOT0_:
 1028|  2.36k|    {
 1029|  2.36k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1030|  2.36k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_17dec_right_visitorEJjEEEDcT_DpOT0_:
 1028|  9.31k|    {
 1029|  9.31k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1030|  9.31k|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10towards_ohINS1_23slice_right_mut_visitorISC_Lb0ELb0EEEJRNSA_5applyIS7_E4type4editEEEEDcT_mjDpOT0_:
 1678|  18.6k|    {
 1679|  18.6k|        assert(offset_hint == index(idx));
 1680|  18.6k|        auto left_size = offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0;
  ------------------
  |  Branch (1680:26): [True: 13.1k, False: 5.58k]
  ------------------
 1681|  18.6k|        return towards_oh_sbh(v, idx, offset_hint, left_size, args...);
 1682|  18.6k|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE14towards_oh_sbhINS1_23slice_right_mut_visitorISC_Lb0ELb0EEEJRNSA_5applyIS7_E4type4editEEEEDcT_mjmDpOT0_:
 1690|  18.6k|    {
 1691|  18.6k|        return towards_sub_oh_sbh(v, idx, offset_hint, left_size_hint, args...);
 1692|  18.6k|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE18towards_sub_oh_sbhINS1_23slice_right_mut_visitorISC_Lb0ELb0EEEJRNSA_5applyIS7_E4type4editEEEEDcT_mjmDpOT0_:
 1709|  18.6k|    {
 1710|  18.6k|        assert(offset_hint == index(idx));
 1711|      0|        assert(left_size_hint ==
 1712|  18.6k|               (offset_hint ? relaxed_->d.sizes[offset_hint - 1] : 0));
 1713|      0|        auto child     = node_->inner()[offset_hint];
 1714|  18.6k|        auto is_leaf   = shift_ == BL;
 1715|  18.6k|        auto next_size = relaxed_->d.sizes[offset_hint] - left_size_hint;
 1716|  18.6k|        auto next_idx  = idx - left_size_hint;
 1717|  18.6k|        return is_leaf
  ------------------
  |  Branch (1717:16): [True: 6.51k, False: 12.1k]
  ------------------
 1718|  18.6k|                   ? make_leaf_sub_pos(child, next_size)
 1719|  6.51k|                         .visit(v, next_idx, args...)
 1720|  18.6k|                   : visit_maybe_relaxed_sub(
 1721|  12.1k|                         child, shift_ - B, next_size, v, next_idx, args...);
 1722|  18.6k|    }
_ZN5immer6detail4rbts12leaf_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_23slice_right_mut_visitorISC_Lb0ELb0EEEJRmRNSA_5applyIS7_E4type4editEEEEDcT_DpOT0_:
  143|  6.51k|    {
  144|  6.51k|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  145|  6.51k|    }
_ZN5immer6detail4rbts23visit_maybe_relaxed_subINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEENS1_23slice_right_mut_visitorISC_Lb0ELb0EEEJRmRNSA_5applyIS7_E4type4editEEEEDcPT_jmT0_DpOT1_:
 1830|  12.1k|{
 1831|  12.1k|    assert(node);
 1832|      0|    auto relaxed = node->relaxed();
 1833|  12.1k|    if (relaxed) {
  ------------------
  |  Branch (1833:9): [True: 10.7k, False: 1.41k]
  ------------------
 1834|  10.7k|        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
 1835|      0|        return make_relaxed_pos(node, shift, relaxed)
 1836|  10.7k|            .visit(v, std::forward<Args>(args)...);
 1837|  10.7k|    } else {
 1838|  1.41k|        return make_regular_sub_pos(node, shift, size)
 1839|  1.41k|            .visit(v, std::forward<Args>(args)...);
 1840|  1.41k|    }
 1841|  12.1k|}
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_23slice_right_mut_visitorISC_Lb0ELb0EEEJRmRNSA_5applyIS7_E4type4editEEEEDcT_DpOT0_:
 1805|  10.7k|    {
 1806|  10.7k|        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
 1807|  10.7k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_23slice_right_mut_visitorISC_Lb0ELb0EEEJRmRNSA_5applyIS7_E4type4editEEEEDcT_DpOT0_:
 1028|  1.41k|    {
 1029|  1.41k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1030|  1.41k|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10each_rightINS1_11dec_visitorEJEEEvT_jDpOT0_:
 1645|  17.6k|    {
 1646|  17.6k|        assert(start > 0);
 1647|      0|        assert(start <= relaxed_->d.count);
 1648|      0|        auto s = relaxed_->d.sizes[start - 1];
 1649|  17.6k|        auto p = node_->inner();
 1650|  17.6k|        if (shift_ == BL) {
  ------------------
  |  Branch (1650:13): [True: 3.96k, False: 13.6k]
  ------------------
 1651|  8.08k|            for (auto i = start; i < relaxed_->d.count; ++i) {
  ------------------
  |  Branch (1651:34): [True: 4.12k, False: 3.96k]
  ------------------
 1652|  4.12k|                IMMER_PREFETCH(p + i + 1);
 1653|  4.12k|                make_leaf_sub_pos(p[i], relaxed_->d.sizes[i] - s)
 1654|  4.12k|                    .visit(v, args...);
 1655|  4.12k|                s = relaxed_->d.sizes[i];
 1656|  4.12k|                assert(s);
 1657|  4.12k|            }
 1658|  13.6k|        } else {
 1659|  13.6k|            auto ss = shift_ - B;
 1660|  27.1k|            for (auto i = start; i < relaxed_->d.count; ++i) {
  ------------------
  |  Branch (1660:34): [True: 13.4k, False: 13.6k]
  ------------------
 1661|  13.4k|                visit_maybe_relaxed_sub(
 1662|  13.4k|                    p[i], ss, relaxed_->d.sizes[i] - s, v, args...);
 1663|  13.4k|                s = relaxed_->d.sizes[i];
 1664|  13.4k|                assert(s);
 1665|  13.4k|            }
 1666|  13.6k|        }
 1667|  17.6k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_23slice_right_mut_visitorISC_Lb1ELb1EEEJRmRNSA_5applyIS7_E4type4editEEEEDcT_DpOT0_:
 1028|  14.5k|    {
 1029|  14.5k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1030|  14.5k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10towards_ohINS1_23slice_right_mut_visitorISC_Lb1ELb1EEEJRNSA_5applyIS7_E4type4editEEEEDcT_mjDpOT0_:
  919|  3.95k|    {
  920|  3.95k|        return towards_oh_ch_regular(
  921|  3.95k|            *this, v, idx, offset_hint, count(), args...);
  922|  3.95k|    }
_ZN5immer6detail4rbts21towards_oh_ch_regularIRNS1_15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEENS1_23slice_right_mut_visitorISD_Lb1ELb1EEEJRNSB_5applyIS8_E4type4editEEEEDcOT_T0_mjjDpOT1_:
  630|  3.95k|{
  631|  3.95k|    constexpr auto B  = bits<Pos>;
  632|  3.95k|    constexpr auto BL = bits_leaf<Pos>;
  633|  3.95k|    assert(offset_hint == p.index(idx));
  634|      0|    assert(count_hint == p.count());
  635|      0|    auto is_leaf = p.shift() == BL;
  636|  3.95k|    auto child   = p.node()->inner()[offset_hint];
  637|  3.95k|    auto is_full = offset_hint + 1 != count_hint;
  638|  3.95k|    return is_full
  ------------------
  |  Branch (638:12): [True: 3.11k, False: 844]
  ------------------
  639|  3.95k|               ? (is_leaf ? make_full_leaf_pos(child).visit(v, idx, args...)
  ------------------
  |  Branch (639:19): [True: 595, False: 2.51k]
  ------------------
  640|  3.11k|                          : make_full_pos(child, p.shift() - B)
  641|  2.51k|                                .visit(v, idx, args...))
  642|  3.95k|               : (is_leaf
  ------------------
  |  Branch (642:19): [True: 844, False: 0]
  ------------------
  643|    844|                      ? make_leaf_pos(child, p.size()).visit(v, idx, args...)
  644|    844|                      : make_regular_pos(child, p.shift() - B, p.size())
  645|      0|                            .visit(v, idx, args...));
  646|  3.95k|}
_ZN5immer6detail4rbts13full_leaf_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_23slice_right_mut_visitorISC_Lb1ELb1EEEJRmRNSA_5applyIS7_E4type4editEEEEDcT_DpOT0_:
  205|  1.35k|    {
  206|  1.35k|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  207|  1.35k|    }
_ZN5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_23slice_right_mut_visitorISC_Lb1ELb1EEEJRmRNSA_5applyIS7_E4type4editEEEEDcT_DpOT0_:
 1397|  2.89k|    {
 1398|  2.89k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1399|  2.89k|    }
_ZN5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10towards_ohINS1_23slice_right_mut_visitorISC_Lb1ELb1EEEJRNSA_5applyIS7_E4type4editEEEEDcT_mjDpOT0_:
 1328|  1.13k|    {
 1329|  1.13k|        assert(offset_hint == index(idx));
 1330|      0|        auto is_leaf = shift_ == BL;
 1331|  1.13k|        auto child   = node_->inner()[offset_hint];
 1332|  1.13k|        return is_leaf
  ------------------
  |  Branch (1332:16): [True: 761, False: 378]
  ------------------
 1333|  1.13k|                   ? make_full_leaf_pos(child).visit(v, idx, args...)
 1334|  1.13k|                   : make_full_pos(child, shift_ - B).visit(v, idx, args...);
 1335|  1.13k|    }
_ZN5immer6detail4rbts8leaf_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_23slice_right_mut_visitorISC_Lb1ELb1EEEJRmRNSA_5applyIS7_E4type4editEEEEDcT_DpOT0_:
  111|    844|    {
  112|    844|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  113|    844|    }
_ZN5immer6detail4rbts25singleton_regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_29concat_trees_left_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_NS1_14empty_leaf_posISC_EESL_RPSC_RjRmEEEDcT_DpOT0_:
  751|  7.93k|    {
  752|  7.93k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
  753|  7.93k|    }
_ZN5immer6detail4rbts23visit_maybe_relaxed_subINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEENS1_30concat_trees_right_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESJ_RNS1_25singleton_regular_sub_posISC_EERNS1_14empty_leaf_posISC_EESJ_EEEDcPT_jmT0_DpOT1_:
 1830|  7.93k|{
 1831|  7.93k|    assert(node);
 1832|      0|    auto relaxed = node->relaxed();
 1833|  7.93k|    if (relaxed) {
  ------------------
  |  Branch (1833:9): [True: 4.20k, False: 3.73k]
  ------------------
 1834|  4.20k|        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
 1835|      0|        return make_relaxed_pos(node, shift, relaxed)
 1836|  4.20k|            .visit(v, std::forward<Args>(args)...);
 1837|  4.20k|    } else {
 1838|  3.73k|        return make_regular_sub_pos(node, shift, size)
 1839|  3.73k|            .visit(v, std::forward<Args>(args)...);
 1840|  3.73k|    }
 1841|  7.93k|}
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_30concat_trees_right_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_25singleton_regular_sub_posISC_EERNS1_14empty_leaf_posISC_EESL_EEEDcT_DpOT0_:
 1805|  4.20k|    {
 1806|  4.20k|        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
 1807|  4.20k|    }
_ZNK5immer6detail4rbts12null_sub_pos4nodeEv:
  697|   156k|    auto node() const { return nullptr; }
_ZN5immer6detail4rbts25singleton_regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE13each_left_subINS1_25concat_merger_mut_visitorEJRNS1_17concat_merger_mutISC_EERNSA_5applyIS7_E4type4editEEEEvT_DpOT0_:
  738|  7.93k|    {}
_ZN5immer6detail4rbts12leaf_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_25concat_merger_mut_visitorEJRNS1_17concat_merger_mutISC_EERNSA_5applyIS7_E4type4editEEEEDcT_DpOT0_:
  143|   435k|    {
  144|   435k|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  145|   435k|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_25concat_merger_mut_visitorEJRNS1_17concat_merger_mutISC_EERNSA_5applyIS7_E4type4editEEEEDcT_DpOT0_:
 1805|  1.82M|    {
 1806|  1.82M|        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
 1807|  1.82M|    }
_ZN5immer6detail4rbts12null_sub_pos14each_right_subINS1_25concat_merger_mut_visitorEJRNS1_17concat_merger_mutINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNSD_5applyISA_E4type4editEEEEvT_DpOT0_:
  704|  96.5k|    {}
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE9first_subINS1_24concat_right_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_25singleton_regular_sub_posISC_EERNS1_14empty_leaf_posISC_EESL_EEEDcT_DpOT0_:
 1754|  14.7k|    {
 1755|  14.7k|        auto child      = node_->inner()[0];
 1756|  14.7k|        auto child_size = relaxed_->d.sizes[0];
 1757|  14.7k|        auto is_leaf    = shift_ == BL;
 1758|  14.7k|        assert(child_size);
 1759|  14.7k|        return is_leaf ? make_leaf_sub_pos(child, child_size).visit(v, args...)
  ------------------
  |  Branch (1759:16): [True: 0, False: 14.7k]
  ------------------
 1760|  14.7k|                       : visit_maybe_relaxed_sub(
 1761|  14.7k|                             child, shift_ - B, child_size, v, args...);
 1762|  14.7k|    }
_ZN5immer6detail4rbts23visit_maybe_relaxed_subINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEENS1_24concat_right_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESJ_RNS1_25singleton_regular_sub_posISC_EERNS1_14empty_leaf_posISC_EESJ_EEEDcPT_jmT0_DpOT1_:
 1830|  14.7k|{
 1831|  14.7k|    assert(node);
 1832|      0|    auto relaxed = node->relaxed();
 1833|  14.7k|    if (relaxed) {
  ------------------
  |  Branch (1833:9): [True: 14.4k, False: 278]
  ------------------
 1834|  14.4k|        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
 1835|      0|        return make_relaxed_pos(node, shift, relaxed)
 1836|  14.4k|            .visit(v, std::forward<Args>(args)...);
 1837|  14.4k|    } else {
 1838|    278|        return make_regular_sub_pos(node, shift, size)
 1839|    278|            .visit(v, std::forward<Args>(args)...);
 1840|    278|    }
 1841|  14.7k|}
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_24concat_right_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_25singleton_regular_sub_posISC_EERNS1_14empty_leaf_posISC_EESL_EEEDcT_DpOT0_:
 1805|  14.4k|    {
 1806|  14.4k|        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
 1807|  14.4k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_24concat_right_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_25singleton_regular_sub_posISC_EERNS1_14empty_leaf_posISC_EESL_EEEDcT_DpOT0_:
 1028|    278|    {
 1029|    278|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1030|    278|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE9first_subINS1_24concat_right_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_25singleton_regular_sub_posISC_EERNS1_14empty_leaf_posISC_EESL_EEEDcT_DpOT0_:
  962|    988|    {
  963|    988|        auto is_leaf = shift_ == BL;
  964|    988|        auto child   = node_->inner()[0];
  965|    988|        auto is_full = size_ >= (size_t{1} << shift_);
  966|    988|        return is_full
  ------------------
  |  Branch (966:16): [True: 988, False: 0]
  ------------------
  967|    988|                   ? (is_leaf
  ------------------
  |  Branch (967:23): [True: 0, False: 988]
  ------------------
  968|    988|                          ? make_full_leaf_pos(child).visit(v, args...)
  969|    988|                          : make_full_pos(child, shift_ - B).visit(v, args...))
  970|    988|                   : (is_leaf
  ------------------
  |  Branch (970:23): [True: 0, False: 0]
  ------------------
  971|      0|                          ? make_leaf_sub_pos(child, size_).visit(v, args...)
  972|      0|                          : make_regular_sub_pos(child, shift_ - B, size_)
  973|      0|                                .visit(v, args...));
  974|    988|    }
_ZN5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_24concat_right_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_25singleton_regular_sub_posISC_EERNS1_14empty_leaf_posISC_EESL_EEEDcT_DpOT0_:
 1397|  1.72k|    {
 1398|  1.72k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1399|  1.72k|    }
_ZN5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE9first_subINS1_24concat_right_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_25singleton_regular_sub_posISC_EERNS1_14empty_leaf_posISC_EESL_EEEDcT_DpOT0_:
 1353|    734|    {
 1354|    734|        auto is_leaf = shift_ == BL;
 1355|    734|        auto child   = node_->inner()[0];
 1356|    734|        return is_leaf ? make_full_leaf_pos(child).visit(v, args...)
  ------------------
  |  Branch (1356:16): [True: 0, False: 734]
  ------------------
 1357|    734|                       : make_full_pos(child, shift_ - B).visit(v, args...);
 1358|    734|    }
_ZN5immer6detail4rbts12null_sub_pos13each_left_subINS1_25concat_merger_mut_visitorEJRNS1_17concat_merger_mutINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNSD_5applyISA_E4type4editEEEEvT_DpOT0_:
  707|  60.4k|    {}
_ZN5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE14each_right_subINS1_25concat_merger_mut_visitorEJRNS1_17concat_merger_mutISC_EERNSA_5applyIS7_E4type4editEEEEvT_DpOT0_:
 1296|  9.46k|    {
 1297|  9.46k|        each_i(v, 1, branches<B>, args...);
 1298|  9.46k|    }
_ZN5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE6each_iINS1_25concat_merger_mut_visitorEJRNS1_17concat_merger_mutISC_EERNSA_5applyIS7_E4type4editEEEEvT_jjDpOT0_:
 1255|  9.46k|    {
 1256|  9.46k|        auto p = node_->inner() + i;
 1257|  9.46k|        auto e = node_->inner() + n;
 1258|  9.46k|        if (shift_ == BL) {
  ------------------
  |  Branch (1258:13): [True: 5.50k, False: 3.95k]
  ------------------
 1259|  22.0k|            for (; p != e; ++p) {
  ------------------
  |  Branch (1259:20): [True: 16.5k, False: 5.50k]
  ------------------
 1260|  16.5k|                IMMER_PREFETCH(p + 1);
 1261|  16.5k|                make_full_leaf_pos(*p).visit(v, args...);
 1262|  16.5k|            }
 1263|  5.50k|        } else {
 1264|  3.95k|            auto ss = shift_ - B;
 1265|  15.8k|            for (; p != e; ++p)
  ------------------
  |  Branch (1265:20): [True: 11.8k, False: 3.95k]
  ------------------
 1266|  11.8k|                make_full_pos(*p, ss).visit(v, args...);
 1267|  3.95k|        }
 1268|  9.46k|    }
_ZN5immer6detail4rbts13full_leaf_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_25concat_merger_mut_visitorEJRNS1_17concat_merger_mutISC_EERNSA_5applyIS7_E4type4editEEEEDcT_DpOT0_:
  205|  61.9k|    {
  206|  61.9k|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  207|  61.9k|    }
_ZN5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_25concat_merger_mut_visitorEJRNS1_17concat_merger_mutISC_EERNSA_5applyIS7_E4type4editEEEEDcT_DpOT0_:
 1397|   242k|    {
 1398|   242k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1399|   242k|    }
_ZN5immer6detail4rbts25singleton_regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE8last_subINS1_23concat_both_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_14empty_leaf_posISC_EESL_RNS1_8full_posISC_EEEEEDcT_DpOT0_:
  745|    988|    {
  746|    988|        return make_leaf_sub_pos(leaf_, count_).visit(v, args...);
  747|    988|    }
_ZN5immer6detail4rbts12leaf_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_23concat_both_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_14empty_leaf_posISC_EESL_RNS1_8full_posISC_EEEEEDcT_DpOT0_:
  143|    988|    {
  144|    988|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  145|    988|    }
_ZN5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE14first_sub_leafINS1_24concat_right_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_12leaf_sub_posISC_EERNS1_14empty_leaf_posISC_EESL_EEEDcT_DpOT0_:
 1362|    988|    {
 1363|    988|        assert(shift_ == BL);
 1364|      0|        auto child = node_->inner()[0];
 1365|    988|        return make_full_leaf_pos(child).visit(v, args...);
 1366|    988|    }
_ZN5immer6detail4rbts13full_leaf_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_24concat_right_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_12leaf_sub_posISC_EERNS1_14empty_leaf_posISC_EESL_EEEDcT_DpOT0_:
  205|  4.00k|    {
  206|  4.00k|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  207|  4.00k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE14each_right_subINS1_25concat_merger_mut_visitorEJRNS1_17concat_merger_mutISC_EERNSA_5applyIS7_E4type4editEEEEvT_DpOT0_:
  898|  16.2k|    {
  899|  16.2k|        if (count() > 1)
  ------------------
  |  Branch (899:13): [True: 10.2k, False: 5.95k]
  ------------------
  900|  10.2k|            each_right_sub_(v, 1, args...);
  901|  16.2k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE15each_right_sub_INS1_25concat_merger_mut_visitorEJRNS1_17concat_merger_mutISC_EERNSA_5applyIS7_E4type4editEEEEvT_jDpOT0_:
  871|  10.2k|    {
  872|  10.2k|        auto last  = count() - 1;
  873|  10.2k|        auto lsize = size_ - (last << shift_);
  874|  10.2k|        auto n     = node()->inner() + i;
  875|  10.2k|        auto e     = node()->inner() + last;
  876|  10.2k|        if (shift() == BL) {
  ------------------
  |  Branch (876:13): [True: 4.76k, False: 5.50k]
  ------------------
  877|  10.1k|            for (; n != e; ++n) {
  ------------------
  |  Branch (877:20): [True: 5.37k, False: 4.76k]
  ------------------
  878|  5.37k|                IMMER_PREFETCH(n + 1);
  879|  5.37k|                make_full_leaf_pos(*n).visit(v, args...);
  880|  5.37k|            }
  881|  4.76k|            make_leaf_sub_pos(*n, lsize).visit(v, args...);
  882|  5.50k|        } else {
  883|  5.50k|            auto ss = shift_ - B;
  884|  9.98k|            for (; n != e; ++n)
  ------------------
  |  Branch (884:20): [True: 4.47k, False: 5.50k]
  ------------------
  885|  4.47k|                make_full_pos(*n, ss).visit(v, args...);
  886|  5.50k|            make_regular_sub_pos(*n, ss, lsize).visit(v, args...);
  887|  5.50k|        }
  888|  10.2k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_25concat_merger_mut_visitorEJRNS1_17concat_merger_mutISC_EERNSA_5applyIS7_E4type4editEEEEDcT_DpOT0_:
 1028|  56.4k|    {
 1029|  56.4k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1030|  56.4k|    }
_ZN5immer6detail4rbts25singleton_regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE8last_subINS1_23concat_both_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_14empty_leaf_posISC_EESL_RNS1_15regular_sub_posISC_EEEEEDcT_DpOT0_:
  745|  3.02k|    {
  746|  3.02k|        return make_leaf_sub_pos(leaf_, count_).visit(v, args...);
  747|  3.02k|    }
_ZN5immer6detail4rbts12leaf_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_23concat_both_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_14empty_leaf_posISC_EESL_RNS1_15regular_sub_posISC_EEEEEDcT_DpOT0_:
  143|  3.02k|    {
  144|  3.02k|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  145|  3.02k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE14first_sub_leafINS1_24concat_right_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_12leaf_sub_posISC_EERNS1_14empty_leaf_posISC_EESL_EEEDcT_DpOT0_:
  978|  3.02k|    {
  979|  3.02k|        assert(shift_ == BL);
  980|      0|        auto child   = node_->inner()[0];
  981|  3.02k|        auto is_full = size_ >= branches<BL>;
  982|  3.02k|        return is_full ? make_full_leaf_pos(child).visit(v, args...)
  ------------------
  |  Branch (982:16): [True: 3.02k, False: 0]
  ------------------
  983|  3.02k|                       : make_leaf_sub_pos(child, size_).visit(v, args...);
  984|  3.02k|    }
_ZN5immer6detail4rbts12leaf_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_24concat_right_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RSD_RNS1_14empty_leaf_posISC_EESL_EEEDcT_DpOT0_:
  143|  3.92k|    {
  144|  3.92k|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  145|  3.92k|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE14each_right_subINS1_25concat_merger_mut_visitorEJRNS1_17concat_merger_mutISC_EERNSA_5applyIS7_E4type4editEEEEvT_DpOT0_:
 1639|   435k|    {
 1640|   435k|        each_right(v, 1, std::forward<Args>(args)...);
 1641|   435k|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE10each_rightINS1_25concat_merger_mut_visitorEJRNS1_17concat_merger_mutISC_EERNSA_5applyIS7_E4type4editEEEEvT_jDpOT0_:
 1645|   435k|    {
 1646|   435k|        assert(start > 0);
 1647|      0|        assert(start <= relaxed_->d.count);
 1648|      0|        auto s = relaxed_->d.sizes[start - 1];
 1649|   435k|        auto p = node_->inner();
 1650|   435k|        if (shift_ == BL) {
  ------------------
  |  Branch (1650:13): [True: 64.1k, False: 371k]
  ------------------
 1651|   202k|            for (auto i = start; i < relaxed_->d.count; ++i) {
  ------------------
  |  Branch (1651:34): [True: 138k, False: 64.1k]
  ------------------
 1652|   138k|                IMMER_PREFETCH(p + i + 1);
 1653|   138k|                make_leaf_sub_pos(p[i], relaxed_->d.sizes[i] - s)
 1654|   138k|                    .visit(v, args...);
 1655|   138k|                s = relaxed_->d.sizes[i];
 1656|   138k|                assert(s);
 1657|   138k|            }
 1658|   371k|        } else {
 1659|   371k|            auto ss = shift_ - B;
 1660|  1.10M|            for (auto i = start; i < relaxed_->d.count; ++i) {
  ------------------
  |  Branch (1660:34): [True: 733k, False: 371k]
  ------------------
 1661|   733k|                visit_maybe_relaxed_sub(
 1662|   733k|                    p[i], ss, relaxed_->d.sizes[i] - s, v, args...);
 1663|   733k|                s = relaxed_->d.sizes[i];
 1664|   733k|                assert(s);
 1665|   733k|            }
 1666|   371k|        }
 1667|   435k|    }
_ZN5immer6detail4rbts23visit_maybe_relaxed_subINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEENS1_25concat_merger_mut_visitorEJRNS1_17concat_merger_mutISC_EERNSA_5applyIS7_E4type4editEEEEDcPT_jmT0_DpOT1_:
 1830|  1.10M|{
 1831|  1.10M|    assert(node);
 1832|      0|    auto relaxed = node->relaxed();
 1833|  1.10M|    if (relaxed) {
  ------------------
  |  Branch (1833:9): [True: 1.05M, False: 50.9k]
  ------------------
 1834|  1.05M|        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
 1835|      0|        return make_relaxed_pos(node, shift, relaxed)
 1836|  1.05M|            .visit(v, std::forward<Args>(args)...);
 1837|  1.05M|    } else {
 1838|  50.9k|        return make_regular_sub_pos(node, shift, size)
 1839|  50.9k|            .visit(v, std::forward<Args>(args)...);
 1840|  50.9k|    }
 1841|  1.10M|}
_ZN5immer6detail4rbts25singleton_regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE8last_subINS1_23concat_both_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_14empty_leaf_posISC_EESL_RNS1_11relaxed_posISC_EEEEEDcT_DpOT0_:
  745|  3.92k|    {
  746|  3.92k|        return make_leaf_sub_pos(leaf_, count_).visit(v, args...);
  747|  3.92k|    }
_ZN5immer6detail4rbts12leaf_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_23concat_both_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_14empty_leaf_posISC_EESL_RNS1_11relaxed_posISC_EEEEEDcT_DpOT0_:
  143|  3.92k|    {
  144|  3.92k|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  145|  3.92k|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE14first_sub_leafINS1_24concat_right_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_12leaf_sub_posISC_EERNS1_14empty_leaf_posISC_EESL_EEEDcT_DpOT0_:
 1766|  3.92k|    {
 1767|  3.92k|        assert(shift_ == BL);
 1768|      0|        auto child      = node_->inner()[0];
 1769|  3.92k|        auto child_size = relaxed_->d.sizes[0];
 1770|  3.92k|        return make_leaf_sub_pos(child, child_size).visit(v, args...);
 1771|  3.92k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_30concat_trees_right_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_25singleton_regular_sub_posISC_EERNS1_14empty_leaf_posISC_EESL_EEEDcT_DpOT0_:
 1028|  3.73k|    {
 1029|  3.73k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1030|  3.73k|    }
_ZN5immer6detail4rbts23visit_maybe_relaxed_subINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEENS1_29concat_trees_left_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESJ_NS1_8leaf_posISC_EESJ_RPSC_RjRmEEEDcPT_jmT0_DpOT1_:
 1830|  72.4k|{
 1831|  72.4k|    assert(node);
 1832|      0|    auto relaxed = node->relaxed();
 1833|  72.4k|    if (relaxed) {
  ------------------
  |  Branch (1833:9): [True: 66.5k, False: 5.91k]
  ------------------
 1834|  66.5k|        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
 1835|      0|        return make_relaxed_pos(node, shift, relaxed)
 1836|  66.5k|            .visit(v, std::forward<Args>(args)...);
 1837|  66.5k|    } else {
 1838|  5.91k|        return make_regular_sub_pos(node, shift, size)
 1839|  5.91k|            .visit(v, std::forward<Args>(args)...);
 1840|  5.91k|    }
 1841|  72.4k|}
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_29concat_trees_left_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_NS1_8leaf_posISC_EESL_RPSC_RjRmEEEDcT_DpOT0_:
 1805|  66.5k|    {
 1806|  66.5k|        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
 1807|  66.5k|    }
_ZN5immer6detail4rbts23visit_maybe_relaxed_subINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEENS1_30concat_trees_right_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESJ_RNS1_11relaxed_posISC_EERNS1_8leaf_posISC_EESJ_EEEDcPT_jmT0_DpOT1_:
 1830|  66.5k|{
 1831|  66.5k|    assert(node);
 1832|      0|    auto relaxed = node->relaxed();
 1833|  66.5k|    if (relaxed) {
  ------------------
  |  Branch (1833:9): [True: 60.1k, False: 6.43k]
  ------------------
 1834|  60.1k|        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
 1835|      0|        return make_relaxed_pos(node, shift, relaxed)
 1836|  60.1k|            .visit(v, std::forward<Args>(args)...);
 1837|  60.1k|    } else {
 1838|  6.43k|        return make_regular_sub_pos(node, shift, size)
 1839|  6.43k|            .visit(v, std::forward<Args>(args)...);
 1840|  6.43k|    }
 1841|  66.5k|}
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_30concat_trees_right_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RSD_RNS1_8leaf_posISC_EESL_EEEDcT_DpOT0_:
 1805|  60.1k|    {
 1806|  60.1k|        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
 1807|  60.1k|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE8last_subINS1_23concat_left_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_8leaf_posISC_EESL_RSD_EEEDcT_DpOT0_:
 1742|  80.0k|    {
 1743|  80.0k|        auto offset     = relaxed_->d.count - 1;
 1744|  80.0k|        auto child      = node_->inner()[offset];
 1745|  80.0k|        auto child_size = size(offset);
 1746|  80.0k|        auto is_leaf    = shift_ == BL;
 1747|  80.0k|        return is_leaf ? make_leaf_sub_pos(child, child_size).visit(v, args...)
  ------------------
  |  Branch (1747:16): [True: 0, False: 80.0k]
  ------------------
 1748|  80.0k|                       : visit_maybe_relaxed_sub(
 1749|  80.0k|                             child, shift_ - B, child_size, v, args...);
 1750|  80.0k|    }
_ZN5immer6detail4rbts23visit_maybe_relaxed_subINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEENS1_23concat_left_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESJ_RNS1_8leaf_posISC_EESJ_RNS1_11relaxed_posISC_EEEEEDcPT_jmT0_DpOT1_:
 1830|  80.0k|{
 1831|  80.0k|    assert(node);
 1832|      0|    auto relaxed = node->relaxed();
 1833|  80.0k|    if (relaxed) {
  ------------------
  |  Branch (1833:9): [True: 78.2k, False: 1.79k]
  ------------------
 1834|  78.2k|        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
 1835|      0|        return make_relaxed_pos(node, shift, relaxed)
 1836|  78.2k|            .visit(v, std::forward<Args>(args)...);
 1837|  78.2k|    } else {
 1838|  1.79k|        return make_regular_sub_pos(node, shift, size)
 1839|  1.79k|            .visit(v, std::forward<Args>(args)...);
 1840|  1.79k|    }
 1841|  80.0k|}
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_23concat_left_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_8leaf_posISC_EESL_RSD_EEEDcT_DpOT0_:
 1805|  78.2k|    {
 1806|  78.2k|        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
 1807|  78.2k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_23concat_left_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_8leaf_posISC_EESL_RNS1_11relaxed_posISC_EEEEEDcT_DpOT0_:
 1028|  5.08k|    {
 1029|  5.08k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1030|  5.08k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE8last_subINS1_23concat_left_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_8leaf_posISC_EESL_RNS1_11relaxed_posISC_EEEEEDcT_DpOT0_:
  950|  3.29k|    {
  951|  3.29k|        auto offset  = count() - 1;
  952|  3.29k|        auto child   = node_->inner()[offset];
  953|  3.29k|        auto is_leaf = shift_ == BL;
  954|  3.29k|        auto lsize   = size_ - (size_t{offset} << shift_);
  955|  3.29k|        return is_leaf ? make_leaf_sub_pos(child, lsize).visit(v, args...)
  ------------------
  |  Branch (955:16): [True: 0, False: 3.29k]
  ------------------
  956|  3.29k|                       : make_regular_sub_pos(child, shift_ - B, lsize)
  957|  3.29k|                             .visit(v, args...);
  958|  3.29k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE13each_left_subINS1_25concat_merger_mut_visitorEJRNS1_17concat_merger_mutISC_EERNSA_5applyIS7_E4type4editEEEEvT_DpOT0_:
  905|   156k|    {
  906|   156k|        each_left(v, count() - 1, args...);
  907|   156k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE9each_leftINS1_25concat_merger_mut_visitorEJRNS1_17concat_merger_mutISC_EERNSA_5applyIS7_E4type4editEEEEvT_jDpOT0_:
  865|   156k|    {
  866|   156k|        return each_left_regular(*this, v, last, args...);
  867|   156k|    }
_ZN5immer6detail4rbts17each_left_regularIRNS1_15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEENS1_25concat_merger_mut_visitorEJRNS1_17concat_merger_mutISD_EERNSB_5applyIS8_E4type4editEEEEvOT_T0_jDpOT1_:
  573|   156k|{
  574|   156k|    constexpr auto B  = bits<Pos>;
  575|   156k|    constexpr auto BL = bits_leaf<Pos>;
  576|   156k|    assert(last < p.count());
  577|   156k|    if (p.shift() == BL) {
  ------------------
  |  Branch (577:9): [True: 35.0k, False: 121k]
  ------------------
  578|  35.0k|        auto n = p.node()->inner();
  579|  35.0k|        auto e = n + last;
  580|  75.1k|        for (; n != e; ++n) {
  ------------------
  |  Branch (580:16): [True: 40.0k, False: 35.0k]
  ------------------
  581|  40.0k|            IMMER_PREFETCH(n + 1);
  582|  40.0k|            make_full_leaf_pos(*n).visit(v, args...);
  583|  40.0k|        }
  584|   121k|    } else {
  585|   121k|        auto n  = p.node()->inner();
  586|   121k|        auto e  = n + last;
  587|   121k|        auto ss = p.shift() - B;
  588|   347k|        for (; n != e; ++n)
  ------------------
  |  Branch (588:16): [True: 225k, False: 121k]
  ------------------
  589|   225k|            make_full_pos(*n, ss).visit(v, args...);
  590|   121k|    }
  591|   156k|}
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE9first_subINS1_24concat_right_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_15regular_sub_posISC_EERNS1_8leaf_posISC_EESL_EEEDcT_DpOT0_:
 1754|   146k|    {
 1755|   146k|        auto child      = node_->inner()[0];
 1756|   146k|        auto child_size = relaxed_->d.sizes[0];
 1757|   146k|        auto is_leaf    = shift_ == BL;
 1758|   146k|        assert(child_size);
 1759|   146k|        return is_leaf ? make_leaf_sub_pos(child, child_size).visit(v, args...)
  ------------------
  |  Branch (1759:16): [True: 0, False: 146k]
  ------------------
 1760|   146k|                       : visit_maybe_relaxed_sub(
 1761|   146k|                             child, shift_ - B, child_size, v, args...);
 1762|   146k|    }
_ZN5immer6detail4rbts23visit_maybe_relaxed_subINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEENS1_24concat_right_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESJ_RNS1_15regular_sub_posISC_EERNS1_8leaf_posISC_EESJ_EEEDcPT_jmT0_DpOT1_:
 1830|   146k|{
 1831|   146k|    assert(node);
 1832|      0|    auto relaxed = node->relaxed();
 1833|   146k|    if (relaxed) {
  ------------------
  |  Branch (1833:9): [True: 144k, False: 1.89k]
  ------------------
 1834|   144k|        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
 1835|      0|        return make_relaxed_pos(node, shift, relaxed)
 1836|   144k|            .visit(v, std::forward<Args>(args)...);
 1837|   144k|    } else {
 1838|  1.89k|        return make_regular_sub_pos(node, shift, size)
 1839|  1.89k|            .visit(v, std::forward<Args>(args)...);
 1840|  1.89k|    }
 1841|   146k|}
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_24concat_right_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_15regular_sub_posISC_EERNS1_8leaf_posISC_EESL_EEEDcT_DpOT0_:
 1805|   144k|    {
 1806|   144k|        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
 1807|   144k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_24concat_right_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RSD_RNS1_8leaf_posISC_EESL_EEEDcT_DpOT0_:
 1028|  1.89k|    {
 1029|  1.89k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1030|  1.89k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE8last_subINS1_23concat_left_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_8leaf_posISC_EESL_RSD_EEEDcT_DpOT0_:
  950|  1.66k|    {
  951|  1.66k|        auto offset  = count() - 1;
  952|  1.66k|        auto child   = node_->inner()[offset];
  953|  1.66k|        auto is_leaf = shift_ == BL;
  954|  1.66k|        auto lsize   = size_ - (size_t{offset} << shift_);
  955|  1.66k|        return is_leaf ? make_leaf_sub_pos(child, lsize).visit(v, args...)
  ------------------
  |  Branch (955:16): [True: 0, False: 1.66k]
  ------------------
  956|  1.66k|                       : make_regular_sub_pos(child, shift_ - B, lsize)
  957|  1.66k|                             .visit(v, args...);
  958|  1.66k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_23concat_left_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_8leaf_posISC_EESL_RSD_EEEDcT_DpOT0_:
 1028|  2.24k|    {
 1029|  2.24k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1030|  2.24k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE9first_subINS1_24concat_right_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RSD_RNS1_8leaf_posISC_EESL_EEEDcT_DpOT0_:
  962|  2.85k|    {
  963|  2.85k|        auto is_leaf = shift_ == BL;
  964|  2.85k|        auto child   = node_->inner()[0];
  965|  2.85k|        auto is_full = size_ >= (size_t{1} << shift_);
  966|  2.85k|        return is_full
  ------------------
  |  Branch (966:16): [True: 2.85k, False: 0]
  ------------------
  967|  2.85k|                   ? (is_leaf
  ------------------
  |  Branch (967:23): [True: 0, False: 2.85k]
  ------------------
  968|  2.85k|                          ? make_full_leaf_pos(child).visit(v, args...)
  969|  2.85k|                          : make_full_pos(child, shift_ - B).visit(v, args...))
  970|  2.85k|                   : (is_leaf
  ------------------
  |  Branch (970:23): [True: 0, False: 0]
  ------------------
  971|      0|                          ? make_leaf_sub_pos(child, size_).visit(v, args...)
  972|      0|                          : make_regular_sub_pos(child, shift_ - B, size_)
  973|      0|                                .visit(v, args...));
  974|  2.85k|    }
_ZN5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_24concat_right_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_15regular_sub_posISC_EERNS1_8leaf_posISC_EESL_EEEDcT_DpOT0_:
 1397|  5.33k|    {
 1398|  5.33k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1399|  5.33k|    }
_ZN5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE9first_subINS1_24concat_right_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_15regular_sub_posISC_EERNS1_8leaf_posISC_EESL_EEEDcT_DpOT0_:
 1353|  2.47k|    {
 1354|  2.47k|        auto is_leaf = shift_ == BL;
 1355|  2.47k|        auto child   = node_->inner()[0];
 1356|  2.47k|        return is_leaf ? make_full_leaf_pos(child).visit(v, args...)
  ------------------
  |  Branch (1356:16): [True: 0, False: 2.47k]
  ------------------
 1357|  2.47k|                       : make_full_pos(child, shift_ - B).visit(v, args...);
 1358|  2.47k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE8last_subINS1_23concat_both_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_8leaf_posISC_EESL_RNS1_8full_posISC_EEEEEDcT_DpOT0_:
  950|  5.11k|    {
  951|  5.11k|        auto offset  = count() - 1;
  952|  5.11k|        auto child   = node_->inner()[offset];
  953|  5.11k|        auto is_leaf = shift_ == BL;
  954|  5.11k|        auto lsize   = size_ - (size_t{offset} << shift_);
  955|  5.11k|        return is_leaf ? make_leaf_sub_pos(child, lsize).visit(v, args...)
  ------------------
  |  Branch (955:16): [True: 3.22k, False: 1.88k]
  ------------------
  956|  5.11k|                       : make_regular_sub_pos(child, shift_ - B, lsize)
  957|  1.88k|                             .visit(v, args...);
  958|  5.11k|    }
_ZN5immer6detail4rbts12leaf_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_23concat_both_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_8leaf_posISC_EESL_RNS1_8full_posISC_EEEEEDcT_DpOT0_:
  143|  4.51k|    {
  144|  4.51k|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  145|  4.51k|    }
_ZN5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE14first_sub_leafINS1_24concat_right_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_12leaf_sub_posISC_EERNS1_8leaf_posISC_EESL_EEEDcT_DpOT0_:
 1362|  4.51k|    {
 1363|  4.51k|        assert(shift_ == BL);
 1364|      0|        auto child = node_->inner()[0];
 1365|  4.51k|        return make_full_leaf_pos(child).visit(v, args...);
 1366|  4.51k|    }
_ZN5immer6detail4rbts13full_leaf_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_24concat_right_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_12leaf_sub_posISC_EERNS1_8leaf_posISC_EESL_EEEDcT_DpOT0_:
  205|  12.2k|    {
  206|  12.2k|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  207|  12.2k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_23concat_both_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_8leaf_posISC_EESL_RNS1_8full_posISC_EEEEEDcT_DpOT0_:
 1028|  2.25k|    {
 1029|  2.25k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1030|  2.25k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE8last_subINS1_23concat_both_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_8leaf_posISC_EESL_RSD_EEEDcT_DpOT0_:
  950|  4.62k|    {
  951|  4.62k|        auto offset  = count() - 1;
  952|  4.62k|        auto child   = node_->inner()[offset];
  953|  4.62k|        auto is_leaf = shift_ == BL;
  954|  4.62k|        auto lsize   = size_ - (size_t{offset} << shift_);
  955|  4.62k|        return is_leaf ? make_leaf_sub_pos(child, lsize).visit(v, args...)
  ------------------
  |  Branch (955:16): [True: 3.48k, False: 1.14k]
  ------------------
  956|  4.62k|                       : make_regular_sub_pos(child, shift_ - B, lsize)
  957|  1.14k|                             .visit(v, args...);
  958|  4.62k|    }
_ZN5immer6detail4rbts12leaf_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_23concat_both_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_8leaf_posISC_EESL_RNS1_15regular_sub_posISC_EEEEEDcT_DpOT0_:
  143|  7.69k|    {
  144|  7.69k|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  145|  7.69k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE14first_sub_leafINS1_24concat_right_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_12leaf_sub_posISC_EERNS1_8leaf_posISC_EESL_EEEDcT_DpOT0_:
  978|  7.69k|    {
  979|  7.69k|        assert(shift_ == BL);
  980|      0|        auto child   = node_->inner()[0];
  981|  7.69k|        auto is_full = size_ >= branches<BL>;
  982|  7.69k|        return is_full ? make_full_leaf_pos(child).visit(v, args...)
  ------------------
  |  Branch (982:16): [True: 7.69k, False: 0]
  ------------------
  983|  7.69k|                       : make_leaf_sub_pos(child, size_).visit(v, args...);
  984|  7.69k|    }
_ZN5immer6detail4rbts12leaf_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_24concat_right_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RSD_RNS1_8leaf_posISC_EESL_EEEDcT_DpOT0_:
  143|  60.2k|    {
  144|  60.2k|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  145|  60.2k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_23concat_both_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_8leaf_posISC_EESL_RSD_EEEDcT_DpOT0_:
 1028|  2.45k|    {
 1029|  2.45k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1030|  2.45k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE8last_subINS1_23concat_both_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_8leaf_posISC_EESL_RNS1_11relaxed_posISC_EEEEEDcT_DpOT0_:
  950|   142k|    {
  951|   142k|        auto offset  = count() - 1;
  952|   142k|        auto child   = node_->inner()[offset];
  953|   142k|        auto is_leaf = shift_ == BL;
  954|   142k|        auto lsize   = size_ - (size_t{offset} << shift_);
  955|   142k|        return is_leaf ? make_leaf_sub_pos(child, lsize).visit(v, args...)
  ------------------
  |  Branch (955:16): [True: 28.3k, False: 113k]
  ------------------
  956|   142k|                       : make_regular_sub_pos(child, shift_ - B, lsize)
  957|   113k|                             .visit(v, args...);
  958|   142k|    }
_ZN5immer6detail4rbts12leaf_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_23concat_both_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_8leaf_posISC_EESL_RNS1_11relaxed_posISC_EEEEEDcT_DpOT0_:
  143|  60.2k|    {
  144|  60.2k|        return Visitor::visit_leaf(*this, std::forward<Args>(args)...);
  145|  60.2k|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE14first_sub_leafINS1_24concat_right_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_12leaf_sub_posISC_EERNS1_8leaf_posISC_EESL_EEEDcT_DpOT0_:
 1766|  60.2k|    {
 1767|  60.2k|        assert(shift_ == BL);
 1768|      0|        auto child      = node_->inner()[0];
 1769|  60.2k|        auto child_size = relaxed_->d.sizes[0];
 1770|  60.2k|        return make_leaf_sub_pos(child, child_size).visit(v, args...);
 1771|  60.2k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_23concat_both_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_8leaf_posISC_EESL_RNS1_11relaxed_posISC_EEEEEDcT_DpOT0_:
 1028|   138k|    {
 1029|   138k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1030|   138k|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE13each_left_subINS1_25concat_merger_mut_visitorEJRNS1_17concat_merger_mutISC_EERNSA_5applyIS7_E4type4editEEEEvT_DpOT0_:
 1609|   332k|    {
 1610|   332k|        each_left(v, relaxed_->d.count - 1, args...);
 1611|   332k|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE9each_leftINS1_25concat_merger_mut_visitorEJRNS1_17concat_merger_mutISC_EERNSA_5applyIS7_E4type4editEEEEvT_jDpOT0_:
 1615|   332k|    {
 1616|   332k|        auto p = node_->inner();
 1617|   332k|        auto s = size_t{};
 1618|   332k|        if (shift_ == BL) {
  ------------------
  |  Branch (1618:13): [True: 37.4k, False: 295k]
  ------------------
 1619|  96.5k|            for (auto i = count_t{0}; i < n; ++i) {
  ------------------
  |  Branch (1619:39): [True: 59.1k, False: 37.4k]
  ------------------
 1620|  59.1k|                IMMER_PREFETCH(p + i + 1);
 1621|  59.1k|                make_leaf_sub_pos(p[i], relaxed_->d.sizes[i] - s)
 1622|  59.1k|                    .visit(v, args...);
 1623|  59.1k|                s = relaxed_->d.sizes[i];
 1624|  59.1k|                assert(s);
 1625|  59.1k|            }
 1626|   295k|        } else {
 1627|   295k|            auto ss = shift_ - B;
 1628|   665k|            for (auto i = count_t{0}; i < n; ++i) {
  ------------------
  |  Branch (1628:39): [True: 370k, False: 295k]
  ------------------
 1629|   370k|                visit_maybe_relaxed_sub(
 1630|   370k|                    p[i], ss, relaxed_->d.sizes[i] - s, v, args...);
 1631|   370k|                s = relaxed_->d.sizes[i];
 1632|   370k|                assert(s);
 1633|   370k|            }
 1634|   295k|        }
 1635|   332k|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE9first_subINS1_24concat_right_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RSD_RNS1_8leaf_posISC_EESL_EEEDcT_DpOT0_:
 1754|   209k|    {
 1755|   209k|        auto child      = node_->inner()[0];
 1756|   209k|        auto child_size = relaxed_->d.sizes[0];
 1757|   209k|        auto is_leaf    = shift_ == BL;
 1758|   209k|        assert(child_size);
 1759|   209k|        return is_leaf ? make_leaf_sub_pos(child, child_size).visit(v, args...)
  ------------------
  |  Branch (1759:16): [True: 0, False: 209k]
  ------------------
 1760|   209k|                       : visit_maybe_relaxed_sub(
 1761|   209k|                             child, shift_ - B, child_size, v, args...);
 1762|   209k|    }
_ZN5immer6detail4rbts23visit_maybe_relaxed_subINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEENS1_24concat_right_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESJ_RNS1_11relaxed_posISC_EERNS1_8leaf_posISC_EESJ_EEEDcPT_jmT0_DpOT1_:
 1830|   209k|{
 1831|   209k|    assert(node);
 1832|      0|    auto relaxed = node->relaxed();
 1833|   209k|    if (relaxed) {
  ------------------
  |  Branch (1833:9): [True: 208k, False: 1.33k]
  ------------------
 1834|   208k|        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
 1835|      0|        return make_relaxed_pos(node, shift, relaxed)
 1836|   208k|            .visit(v, std::forward<Args>(args)...);
 1837|   208k|    } else {
 1838|  1.33k|        return make_regular_sub_pos(node, shift, size)
 1839|  1.33k|            .visit(v, std::forward<Args>(args)...);
 1840|  1.33k|    }
 1841|   209k|}
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_24concat_right_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RSD_RNS1_8leaf_posISC_EESL_EEEDcT_DpOT0_:
 1805|   208k|    {
 1806|   208k|        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
 1807|   208k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_24concat_right_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_11relaxed_posISC_EERNS1_8leaf_posISC_EESL_EEEDcT_DpOT0_:
 1028|  1.33k|    {
 1029|  1.33k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1030|  1.33k|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE8last_subINS1_23concat_left_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_8leaf_posISC_EESL_RNS1_15regular_sub_posISC_EEEEEDcT_DpOT0_:
 1742|  11.4k|    {
 1743|  11.4k|        auto offset     = relaxed_->d.count - 1;
 1744|  11.4k|        auto child      = node_->inner()[offset];
 1745|  11.4k|        auto child_size = size(offset);
 1746|  11.4k|        auto is_leaf    = shift_ == BL;
 1747|  11.4k|        return is_leaf ? make_leaf_sub_pos(child, child_size).visit(v, args...)
  ------------------
  |  Branch (1747:16): [True: 0, False: 11.4k]
  ------------------
 1748|  11.4k|                       : visit_maybe_relaxed_sub(
 1749|  11.4k|                             child, shift_ - B, child_size, v, args...);
 1750|  11.4k|    }
_ZN5immer6detail4rbts23visit_maybe_relaxed_subINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEENS1_23concat_left_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESJ_RNS1_8leaf_posISC_EESJ_RNS1_15regular_sub_posISC_EEEEEDcPT_jmT0_DpOT1_:
 1830|  11.4k|{
 1831|  11.4k|    assert(node);
 1832|      0|    auto relaxed = node->relaxed();
 1833|  11.4k|    if (relaxed) {
  ------------------
  |  Branch (1833:9): [True: 10.8k, False: 582]
  ------------------
 1834|  10.8k|        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
 1835|      0|        return make_relaxed_pos(node, shift, relaxed)
 1836|  10.8k|            .visit(v, std::forward<Args>(args)...);
 1837|  10.8k|    } else {
 1838|    582|        return make_regular_sub_pos(node, shift, size)
 1839|    582|            .visit(v, std::forward<Args>(args)...);
 1840|    582|    }
 1841|  11.4k|}
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_23concat_left_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_8leaf_posISC_EESL_RNS1_15regular_sub_posISC_EEEEEDcT_DpOT0_:
 1805|  10.8k|    {
 1806|  10.8k|        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
 1807|  10.8k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE9first_subINS1_24concat_right_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_11relaxed_posISC_EERNS1_8leaf_posISC_EESL_EEEDcT_DpOT0_:
  962|  1.66k|    {
  963|  1.66k|        auto is_leaf = shift_ == BL;
  964|  1.66k|        auto child   = node_->inner()[0];
  965|  1.66k|        auto is_full = size_ >= (size_t{1} << shift_);
  966|  1.66k|        return is_full
  ------------------
  |  Branch (966:16): [True: 1.66k, False: 0]
  ------------------
  967|  1.66k|                   ? (is_leaf
  ------------------
  |  Branch (967:23): [True: 0, False: 1.66k]
  ------------------
  968|  1.66k|                          ? make_full_leaf_pos(child).visit(v, args...)
  969|  1.66k|                          : make_full_pos(child, shift_ - B).visit(v, args...))
  970|  1.66k|                   : (is_leaf
  ------------------
  |  Branch (970:23): [True: 0, False: 0]
  ------------------
  971|      0|                          ? make_leaf_sub_pos(child, size_).visit(v, args...)
  972|      0|                          : make_regular_sub_pos(child, shift_ - B, size_)
  973|      0|                                .visit(v, args...));
  974|  1.66k|    }
_ZN5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_24concat_right_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_11relaxed_posISC_EERNS1_8leaf_posISC_EESL_EEEDcT_DpOT0_:
 1397|  2.40k|    {
 1398|  2.40k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1399|  2.40k|    }
_ZN5immer6detail4rbts8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE9first_subINS1_24concat_right_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_11relaxed_posISC_EERNS1_8leaf_posISC_EESL_EEEDcT_DpOT0_:
 1353|    742|    {
 1354|    742|        auto is_leaf = shift_ == BL;
 1355|    742|        auto child   = node_->inner()[0];
 1356|    742|        return is_leaf ? make_full_leaf_pos(child).visit(v, args...)
  ------------------
  |  Branch (1356:16): [True: 0, False: 742]
  ------------------
 1357|    742|                       : make_full_pos(child, shift_ - B).visit(v, args...);
 1358|    742|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE8last_subINS1_23concat_both_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_8leaf_posISC_EESL_RNS1_8full_posISC_EEEEEDcT_DpOT0_:
 1742|  2.17k|    {
 1743|  2.17k|        auto offset     = relaxed_->d.count - 1;
 1744|  2.17k|        auto child      = node_->inner()[offset];
 1745|  2.17k|        auto child_size = size(offset);
 1746|  2.17k|        auto is_leaf    = shift_ == BL;
 1747|  2.17k|        return is_leaf ? make_leaf_sub_pos(child, child_size).visit(v, args...)
  ------------------
  |  Branch (1747:16): [True: 1.29k, False: 885]
  ------------------
 1748|  2.17k|                       : visit_maybe_relaxed_sub(
 1749|    885|                             child, shift_ - B, child_size, v, args...);
 1750|  2.17k|    }
_ZN5immer6detail4rbts23visit_maybe_relaxed_subINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEENS1_23concat_both_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESJ_RNS1_8leaf_posISC_EESJ_RNS1_8full_posISC_EEEEEDcPT_jmT0_DpOT1_:
 1830|    885|{
 1831|    885|    assert(node);
 1832|      0|    auto relaxed = node->relaxed();
 1833|    885|    if (relaxed) {
  ------------------
  |  Branch (1833:9): [True: 517, False: 368]
  ------------------
 1834|    517|        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
 1835|      0|        return make_relaxed_pos(node, shift, relaxed)
 1836|    517|            .visit(v, std::forward<Args>(args)...);
 1837|    517|    } else {
 1838|    368|        return make_regular_sub_pos(node, shift, size)
 1839|    368|            .visit(v, std::forward<Args>(args)...);
 1840|    368|    }
 1841|    885|}
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_23concat_both_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_8leaf_posISC_EESL_RNS1_8full_posISC_EEEEEDcT_DpOT0_:
 1805|    517|    {
 1806|    517|        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
 1807|    517|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE8last_subINS1_23concat_both_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_8leaf_posISC_EESL_RNS1_15regular_sub_posISC_EEEEEDcT_DpOT0_:
 1742|  6.62k|    {
 1743|  6.62k|        auto offset     = relaxed_->d.count - 1;
 1744|  6.62k|        auto child      = node_->inner()[offset];
 1745|  6.62k|        auto child_size = size(offset);
 1746|  6.62k|        auto is_leaf    = shift_ == BL;
 1747|  6.62k|        return is_leaf ? make_leaf_sub_pos(child, child_size).visit(v, args...)
  ------------------
  |  Branch (1747:16): [True: 4.21k, False: 2.40k]
  ------------------
 1748|  6.62k|                       : visit_maybe_relaxed_sub(
 1749|  2.40k|                             child, shift_ - B, child_size, v, args...);
 1750|  6.62k|    }
_ZN5immer6detail4rbts23visit_maybe_relaxed_subINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEENS1_23concat_both_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESJ_RNS1_8leaf_posISC_EESJ_RNS1_15regular_sub_posISC_EEEEEDcPT_jmT0_DpOT1_:
 1830|  2.40k|{
 1831|  2.40k|    assert(node);
 1832|      0|    auto relaxed = node->relaxed();
 1833|  2.40k|    if (relaxed) {
  ------------------
  |  Branch (1833:9): [True: 1.09k, False: 1.31k]
  ------------------
 1834|  1.09k|        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
 1835|      0|        return make_relaxed_pos(node, shift, relaxed)
 1836|  1.09k|            .visit(v, std::forward<Args>(args)...);
 1837|  1.31k|    } else {
 1838|  1.31k|        return make_regular_sub_pos(node, shift, size)
 1839|  1.31k|            .visit(v, std::forward<Args>(args)...);
 1840|  1.31k|    }
 1841|  2.40k|}
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_23concat_both_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_8leaf_posISC_EESL_RNS1_15regular_sub_posISC_EEEEEDcT_DpOT0_:
 1805|  1.09k|    {
 1806|  1.09k|        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
 1807|  1.09k|    }
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE8last_subINS1_23concat_both_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_8leaf_posISC_EESL_RSD_EEEDcT_DpOT0_:
 1742|   232k|    {
 1743|   232k|        auto offset     = relaxed_->d.count - 1;
 1744|   232k|        auto child      = node_->inner()[offset];
 1745|   232k|        auto child_size = size(offset);
 1746|   232k|        auto is_leaf    = shift_ == BL;
 1747|   232k|        return is_leaf ? make_leaf_sub_pos(child, child_size).visit(v, args...)
  ------------------
  |  Branch (1747:16): [True: 31.9k, False: 200k]
  ------------------
 1748|   232k|                       : visit_maybe_relaxed_sub(
 1749|   200k|                             child, shift_ - B, child_size, v, args...);
 1750|   232k|    }
_ZN5immer6detail4rbts23visit_maybe_relaxed_subINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEENS1_23concat_both_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESJ_RNS1_8leaf_posISC_EESJ_RNS1_11relaxed_posISC_EEEEEDcPT_jmT0_DpOT1_:
 1830|   200k|{
 1831|   200k|    assert(node);
 1832|      0|    auto relaxed = node->relaxed();
 1833|   200k|    if (relaxed) {
  ------------------
  |  Branch (1833:9): [True: 175k, False: 25.0k]
  ------------------
 1834|   175k|        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
 1835|      0|        return make_relaxed_pos(node, shift, relaxed)
 1836|   175k|            .visit(v, std::forward<Args>(args)...);
 1837|   175k|    } else {
 1838|  25.0k|        return make_regular_sub_pos(node, shift, size)
 1839|  25.0k|            .visit(v, std::forward<Args>(args)...);
 1840|  25.0k|    }
 1841|   200k|}
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_23concat_both_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_8leaf_posISC_EESL_RSD_EEEDcT_DpOT0_:
 1805|   175k|    {
 1806|   175k|        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
 1807|   175k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_30concat_trees_right_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_11relaxed_posISC_EERNS1_8leaf_posISC_EESL_EEEDcT_DpOT0_:
 1028|  6.43k|    {
 1029|  6.43k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1030|  6.43k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_29concat_trees_left_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_NS1_8leaf_posISC_EESL_RPSC_RjRmEEEDcT_DpOT0_:
 1028|  5.91k|    {
 1029|  5.91k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1030|  5.91k|    }
_ZN5immer6detail4rbts23visit_maybe_relaxed_subINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEENS1_30concat_trees_right_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESJ_RNS1_15regular_sub_posISC_EERNS1_8leaf_posISC_EESJ_EEEDcPT_jmT0_DpOT1_:
 1830|  5.91k|{
 1831|  5.91k|    assert(node);
 1832|      0|    auto relaxed = node->relaxed();
 1833|  5.91k|    if (relaxed) {
  ------------------
  |  Branch (1833:9): [True: 3.37k, False: 2.54k]
  ------------------
 1834|  3.37k|        assert(size == relaxed->d.sizes[relaxed->d.count - 1]);
 1835|      0|        return make_relaxed_pos(node, shift, relaxed)
 1836|  3.37k|            .visit(v, std::forward<Args>(args)...);
 1837|  3.37k|    } else {
 1838|  2.54k|        return make_regular_sub_pos(node, shift, size)
 1839|  2.54k|            .visit(v, std::forward<Args>(args)...);
 1840|  2.54k|    }
 1841|  5.91k|}
_ZN5immer6detail4rbts11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_30concat_trees_right_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RNS1_15regular_sub_posISC_EERNS1_8leaf_posISC_EESL_EEEDcT_DpOT0_:
 1805|  3.37k|    {
 1806|  3.37k|        return Visitor::visit_relaxed(*this, std::forward<Args>(args)...);
 1807|  3.37k|    }
_ZN5immer6detail4rbts15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEE5visitINS1_30concat_trees_right_mut_visitorISC_EEJRNSA_5applyIS7_E4type4editESL_RSD_RNS1_8leaf_posISC_EESL_EEEDcT_DpOT0_:
 1028|  2.54k|    {
 1029|  2.54k|        return Visitor::visit_regular(*this, std::forward<Args>(args)...);
 1030|  2.54k|    }

_ZN5immer6detail4rbts7rrbtreeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEC2Ev:
  106|   379k|    {
  107|   379k|        assert(check_tree());
  108|   379k|    }
_ZN5immer6detail4rbts7rrbtreeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE10empty_rootEv:
   51|   394k|    {
   52|   394k|        static const auto empty_ = []{
   53|   394k|            constexpr auto size = node_t::sizeof_inner_n(0);
   54|   394k|            static std::aligned_storage_t<size, alignof(std::max_align_t)> storage;
   55|   394k|            return node_t::make_inner_n_into(&storage, size, 0u);
   56|   394k|        }();
   57|   394k|        return empty_->inc();
   58|   394k|    }
_ZZN5immer6detail4rbts7rrbtreeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE10empty_rootEvENKUlvE_clEv:
   52|      1|        static const auto empty_ = []{
   53|      1|            constexpr auto size = node_t::sizeof_inner_n(0);
   54|      1|            static std::aligned_storage_t<size, alignof(std::max_align_t)> storage;
   55|      1|            return node_t::make_inner_n_into(&storage, size, 0u);
   56|      1|        }();
_ZN5immer6detail4rbts7rrbtreeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE10empty_tailEv:
   61|   383k|    {
   62|   383k|        static const auto empty_ = []{
   63|   383k|            constexpr auto size = node_t::sizeof_leaf_n(0);
   64|   383k|            static std::aligned_storage_t<size, alignof(std::max_align_t)> storage;
   65|   383k|            return node_t::make_leaf_n_into(&storage, size, 0u);
   66|   383k|        }();
   67|   383k|        return empty_->inc();
   68|   383k|    }
_ZZN5immer6detail4rbts7rrbtreeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE10empty_tailEvENKUlvE_clEv:
   62|      1|        static const auto empty_ = []{
   63|      1|            constexpr auto size = node_t::sizeof_leaf_n(0);
   64|      1|            static std::aligned_storage_t<size, alignof(std::max_align_t)> storage;
   65|      1|            return node_t::make_leaf_n_into(&storage, size, 0u);
   66|      1|        }();
_ZNK5immer6detail4rbts7rrbtreeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE10check_treeEv:
 1341|   867k|    {
 1342|   867k|        assert(shift <= sizeof(size_t) * 8 - BL);
 1343|      0|        assert(shift >= BL);
 1344|      0|        assert(tail_offset() <= size);
 1345|      0|        assert(tail_size() <= branches<BL>);
 1346|       |#if IMMER_DEBUG_DEEP_CHECK
 1347|       |        assert(check_root());
 1348|       |        assert(check_tail());
 1349|       |#endif
 1350|      0|        return true;
 1351|   867k|    }
_ZNK5immer6detail4rbts7rrbtreeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE11tail_offsetEv:
  166|  7.77M|    {
  167|  7.77M|        auto r = root->relaxed();
  168|  7.77M|        assert(r == nullptr || r->d.count);
  169|  7.77M|        return r      ? r->d.sizes[r->d.count - 1]
  ------------------
  |  Branch (169:16): [True: 2.40M, False: 5.36M]
  ------------------
  170|  7.77M|               : size ? (size - 1) & ~mask<BL>
  ------------------
  |  Branch (170:18): [True: 4.17M, False: 1.18M]
  ------------------
  171|       |                      /* otherwise */
  172|  5.36M|                      : 0;
  173|  7.77M|    }
_ZNK5immer6detail4rbts7rrbtreeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE9tail_sizeEv:
  163|   990k|    auto tail_size() const { return size - tail_offset(); }
_ZN5immer6detail4rbts7rrbtreeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EED2Ev:
  153|   692k|    ~rrbtree() { dec(); }
_ZNK5immer6detail4rbts7rrbtreeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE3decEv:
  161|   692k|    void dec() const { traverse(dec_visitor()); }
_ZNK5immer6detail4rbts7rrbtreeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE8traverseINS1_11dec_visitorEJEEEvT_DpOT0_:
  177|   692k|    {
  178|   692k|        auto tail_off  = tail_offset();
  179|   692k|        auto tail_size = size - tail_off;
  180|       |
  181|   692k|        if (tail_off)
  ------------------
  |  Branch (181:13): [True: 251k, False: 440k]
  ------------------
  182|   251k|            visit_maybe_relaxed_sub(root, shift, tail_off, v, args...);
  183|   440k|        else
  184|   440k|            make_empty_regular_pos(root).visit(v, args...);
  185|       |
  186|   692k|        if (tail_size)
  ------------------
  |  Branch (186:13): [True: 304k, False: 388k]
  ------------------
  187|   304k|            make_leaf_sub_pos(tail, tail_size).visit(v, args...);
  188|   388k|        else
  189|   388k|            make_empty_leaf_pos(tail).visit(v, args...);
  190|   692k|    }
_ZN5immer6detail4rbts7rrbtreeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEC2ERKSB_:
  121|   129k|    {
  122|   129k|        inc();
  123|   129k|    }
_ZN5immer6detail4rbts7rrbtreeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEC2EmjPNS1_4nodeIiSA_Lj2ELj2EEESE_:
  115|   312k|    {
  116|   312k|        assert(check_tree());
  117|   312k|    }
_ZNK5immer6detail4rbts7rrbtreeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE3incEv:
  156|   129k|    {
  157|   129k|        root->inc();
  158|   129k|        tail->inc();
  159|   129k|    }
_ZN5immer6detail4rbts7rrbtreeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEC2EOSB_:
  127|   299k|    {
  128|   299k|        swap(*this, other);
  129|   299k|    }
_ZN5immer6detail4rbts4swapERNS1_7rrbtreeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEESC_:
  145|   623k|    {
  146|   623k|        using std::swap;
  147|   623k|        swap(x.size, y.size);
  148|   623k|        swap(x.shift, y.shift);
  149|   623k|        swap(x.root, y.root);
  150|   623k|        swap(x.tail, y.tail);
  151|   623k|    }
_ZN5immer6detail4rbts7rrbtreeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEaSEOSB_:
  139|   316k|    {
  140|   316k|        swap(*this, other);
  141|   316k|        return *this;
  142|   316k|    }
_ZNK5immer6detail4rbts7rrbtreeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE9push_backEi:
  469|  74.8k|    {
  470|  74.8k|        auto ts = tail_size();
  471|  74.8k|        if (ts < branches<BL>) {
  ------------------
  |  Branch (471:13): [True: 55.5k, False: 19.2k]
  ------------------
  472|  55.5k|            auto new_tail =
  473|  55.5k|                node_t::copy_leaf_emplace(tail, ts, std::move(value));
  474|  55.5k|            return {size + 1, shift, root->inc(), new_tail};
  475|  55.5k|        } else {
  476|  19.2k|            using std::get;
  477|  19.2k|            auto new_tail = node_t::make_leaf_n(1u, std::move(value));
  478|  19.2k|            auto tail_off = tail_offset();
  479|  19.2k|            IMMER_TRY {
  ------------------
  |  |   41|  19.2k|#define IMMER_TRY try
  ------------------
  480|  19.2k|                auto new_root =
  481|  19.2k|                    push_tail(root, shift, tail_off, tail, size - tail_off);
  482|  19.2k|                tail->inc();
  483|  19.2k|                return {size + 1, get<0>(new_root), get<1>(new_root), new_tail};
  484|  19.2k|            }
  485|  19.2k|            IMMER_CATCH (...) {
  486|      0|                node_t::delete_leaf(new_tail, 1u);
  487|      0|                IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
  488|      0|            }
  489|  19.2k|        }
  490|  74.8k|    }
_ZNK5immer6detail4rbts7rrbtreeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE9push_tailEPNS1_4nodeIiSA_Lj2ELj2EEEjmSE_j:
  338|  26.8k|    {
  339|  26.8k|        if (auto r = root->relaxed()) {
  ------------------
  |  Branch (339:18): [True: 15.4k, False: 11.3k]
  ------------------
  340|  15.4k|            auto new_root =
  341|  15.4k|                make_relaxed_pos(root, shift, r)
  342|  15.4k|                    .visit(push_tail_visitor<node_t>{}, tail, tail_size);
  343|  15.4k|            if (new_root)
  ------------------
  |  Branch (343:17): [True: 14.8k, False: 669]
  ------------------
  344|  14.8k|                return std::make_tuple(shift, new_root);
  345|    669|            else {
  346|    669|                auto new_root = node_t::make_inner_r_n(2);
  347|    669|                IMMER_TRY {
  ------------------
  |  |   41|    669|#define IMMER_TRY try
  ------------------
  348|    669|                    auto new_path        = node_t::make_path(shift, tail);
  349|    669|                    new_root->inner()[0] = root->inc();
  350|    669|                    new_root->inner()[1] = new_path;
  351|    669|                    new_root->relaxed()->d.sizes[0] = size;
  352|    669|                    new_root->relaxed()->d.sizes[1] = size + tail_size;
  353|    669|                    assert(size);
  354|      0|                    assert(tail_size);
  355|      0|                    new_root->relaxed()->d.count = 2u;
  356|    669|                }
  357|    669|                IMMER_CATCH (...) {
  358|      0|                    node_t::delete_inner_r(new_root, 2);
  359|      0|                    IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
  360|      0|                }
  361|    669|                return std::make_tuple(shift + B, new_root);
  362|    669|            }
  363|  15.4k|        } else if (size == size_t{branches<B>} << shift) {
  ------------------
  |  Branch (363:20): [True: 955, False: 10.3k]
  ------------------
  364|    955|            auto new_root = node_t::make_inner_n(2);
  365|    955|            IMMER_TRY {
  ------------------
  |  |   41|    955|#define IMMER_TRY try
  ------------------
  366|    955|                auto new_path        = node_t::make_path(shift, tail);
  367|    955|                new_root->inner()[0] = root->inc();
  368|    955|                new_root->inner()[1] = new_path;
  369|    955|            }
  370|    955|            IMMER_CATCH (...) {
  371|      0|                node_t::delete_inner(new_root, 2);
  372|      0|                IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
  373|      0|            }
  374|    955|            return std::make_tuple(shift + B, new_root);
  375|  10.3k|        } else if (size) {
  ------------------
  |  Branch (375:20): [True: 3.84k, False: 6.51k]
  ------------------
  376|  3.84k|            auto new_root = make_regular_sub_pos(root, shift, size)
  377|  3.84k|                                .visit(push_tail_visitor<node_t>{}, tail);
  378|  3.84k|            return std::make_tuple(shift, new_root);
  379|  6.51k|        } else {
  380|  6.51k|            return std::make_tuple(shift, node_t::make_path(shift, tail));
  381|  6.51k|        }
  382|  26.8k|    }
flex-vector-gc.cpp:_ZNK5immer6detail4rbts7rrbtreeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE6updateIZZ22LLVMFuzzerTestOneInputENK3$_5clI12fuzzer_inputEEDaRT_EUlSG_E_EESB_mOSG_:
  549|  8.03k|    {
  550|  8.03k|        auto tail_off = tail_offset();
  551|  8.03k|        if (idx >= tail_off) {
  ------------------
  |  Branch (551:13): [True: 629, False: 7.40k]
  ------------------
  552|    629|            auto tail_size = size - tail_off;
  553|    629|            auto new_tail =
  554|    629|                make_leaf_sub_pos(tail, tail_size)
  555|    629|                    .visit(update_visitor<node_t>{}, idx - tail_off, fn);
  556|    629|            return {size, shift, root->inc(), new_tail};
  557|  7.40k|        } else {
  558|  7.40k|            auto new_root = visit_maybe_relaxed_sub(
  559|  7.40k|                root, shift, tail_off, update_visitor<node_t>{}, idx, fn);
  560|  7.40k|            return {size, shift, new_root, tail->inc()};
  561|  7.40k|        }
  562|  8.03k|    }
_ZNK5immer6detail4rbts7rrbtreeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE4takeEm:
  616|  11.8k|    {
  617|  11.8k|        auto tail_off = tail_offset();
  618|  11.8k|        if (new_size == 0) {
  ------------------
  |  Branch (618:13): [True: 1.23k, False: 10.6k]
  ------------------
  619|  1.23k|            return {};
  620|  10.6k|        } else if (new_size >= size) {
  ------------------
  |  Branch (620:20): [True: 216, False: 10.3k]
  ------------------
  621|    216|            return *this;
  622|  10.3k|        } else if (new_size > tail_off) {
  ------------------
  |  Branch (622:20): [True: 387, False: 10.0k]
  ------------------
  623|    387|            auto new_tail = node_t::copy_leaf(tail, new_size - tail_off);
  624|    387|            return {new_size, shift, root->inc(), new_tail};
  625|  10.0k|        } else {
  626|  10.0k|            using std::get;
  627|  10.0k|            auto l = new_size - 1;
  628|  10.0k|            auto v = slice_right_visitor<node_t>();
  629|  10.0k|            auto r = visit_maybe_relaxed_sub(root, shift, tail_off, v, l);
  630|  10.0k|            auto new_shift = get<0>(r);
  631|  10.0k|            auto new_root  = get<1>(r);
  632|  10.0k|            auto new_tail  = get<3>(r);
  633|  10.0k|            if (new_root) {
  ------------------
  |  Branch (633:17): [True: 7.73k, False: 2.27k]
  ------------------
  634|  7.73k|                IMMER_ASSERT_TAGGED(new_root->compute_shift() == get<0>(r));
  ------------------
  |  |   60|  7.73k|#define IMMER_ASSERT_TAGGED(assertion) assert(assertion)
  ------------------
  635|      0|                assert(new_root->check(new_shift, new_size - get<2>(r)));
  636|      0|                return {new_size, new_shift, new_root, new_tail};
  637|  7.73k|            } else {
  638|  2.27k|                return {new_size, BL, empty_root(), new_tail};
  639|  2.27k|            }
  640|  10.0k|        }
  641|  11.8k|    }
_ZNK5immer6detail4rbts7rrbtreeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE4dropEm:
  680|  26.8k|    {
  681|  26.8k|        if (elems == 0) {
  ------------------
  |  Branch (681:13): [True: 1.99k, False: 24.8k]
  ------------------
  682|  1.99k|            return *this;
  683|  24.8k|        } else if (elems >= size) {
  ------------------
  |  Branch (683:20): [True: 232, False: 24.6k]
  ------------------
  684|    232|            return {};
  685|  24.6k|        } else if (elems == tail_offset()) {
  ------------------
  |  Branch (685:20): [True: 209, False: 24.4k]
  ------------------
  686|    209|            return {size - elems, BL, empty_root(), tail->inc()};
  687|  24.4k|        } else if (elems > tail_offset()) {
  ------------------
  |  Branch (687:20): [True: 751, False: 23.6k]
  ------------------
  688|    751|            auto tail_off = tail_offset();
  689|    751|            auto new_tail =
  690|    751|                node_t::copy_leaf(tail, elems - tail_off, size - tail_off);
  691|    751|            return {size - elems, BL, empty_root(), new_tail};
  692|  23.6k|        } else {
  693|  23.6k|            using std::get;
  694|  23.6k|            auto v = slice_left_visitor<node_t>();
  695|  23.6k|            auto r =
  696|  23.6k|                visit_maybe_relaxed_sub(root, shift, tail_offset(), v, elems);
  697|  23.6k|            auto new_root  = get<1>(r);
  698|  23.6k|            auto new_shift = get<0>(r);
  699|  23.6k|            return {size - elems, new_shift, new_root, tail->inc()};
  700|  23.6k|        }
  701|  26.8k|    }
_ZN5immer6detail4rbts7rrbtreeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE8max_sizeEv:
   44|  2.44M|    {
   45|  2.44M|        auto S = sizeof(size_t) * 8;
   46|  2.44M|        return ((size_t{1} << BL) - std::min(size_t{BL}, size_t{2})) *
   47|  2.44M|               ipow((size_t{1} << B) - 2, (S - BL) / B);
   48|  2.44M|    }
_ZNK5immer6detail4rbts7rrbtreeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE6concatERKSB_:
  704|  58.7k|    {
  705|  58.7k|        assert(r.size + size <= max_size());
  706|      0|        using std::get;
  707|  58.7k|        if (size == 0)
  ------------------
  |  Branch (707:13): [True: 768, False: 58.0k]
  ------------------
  708|    768|            return r;
  709|  58.0k|        else if (r.size == 0)
  ------------------
  |  Branch (709:18): [True: 283, False: 57.7k]
  ------------------
  710|    283|            return *this;
  711|  57.7k|        else if (r.tail_offset() == 0) {
  ------------------
  |  Branch (711:18): [True: 6.77k, False: 50.9k]
  ------------------
  712|       |            // just concat the tail, similar to push_back
  713|  6.77k|            auto tail_offst = tail_offset();
  714|  6.77k|            auto tail_size  = size - tail_offst;
  715|  6.77k|            if (tail_size == branches<BL>) {
  ------------------
  |  Branch (715:17): [True: 2.41k, False: 4.35k]
  ------------------
  716|  2.41k|                auto new_root =
  717|  2.41k|                    push_tail(root, shift, tail_offst, tail, tail_size);
  718|  2.41k|                tail->inc();
  719|  2.41k|                return {size + r.size,
  720|  2.41k|                        get<0>(new_root),
  721|  2.41k|                        get<1>(new_root),
  722|  2.41k|                        r.tail->inc()};
  723|  4.35k|            } else if (tail_size + r.size <= branches<BL>) {
  ------------------
  |  Branch (723:24): [True: 2.73k, False: 1.62k]
  ------------------
  724|  2.73k|                auto new_tail =
  725|  2.73k|                    node_t::copy_leaf(tail, tail_size, r.tail, r.size);
  726|  2.73k|                return {size + r.size, shift, root->inc(), new_tail};
  727|  2.73k|            } else {
  728|  1.62k|                auto remaining = branches<BL> - tail_size;
  729|  1.62k|                auto add_tail =
  730|  1.62k|                    node_t::copy_leaf(tail, tail_size, r.tail, remaining);
  731|  1.62k|                IMMER_TRY {
  ------------------
  |  |   41|  1.62k|#define IMMER_TRY try
  ------------------
  732|  1.62k|                    auto new_tail =
  733|  1.62k|                        node_t::copy_leaf(r.tail, remaining, r.size);
  734|  1.62k|                    IMMER_TRY {
  ------------------
  |  |   41|  1.62k|#define IMMER_TRY try
  ------------------
  735|  1.62k|                        auto new_root = push_tail(
  736|  1.62k|                            root, shift, tail_offst, add_tail, branches<BL>);
  737|  1.62k|                        return {size + r.size,
  738|  1.62k|                                get<0>(new_root),
  739|  1.62k|                                get<1>(new_root),
  740|  1.62k|                                new_tail};
  741|  1.62k|                    }
  742|  1.62k|                    IMMER_CATCH (...) {
  743|      0|                        node_t::delete_leaf(new_tail, r.size - remaining);
  744|      0|                        IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
  745|      0|                    }
  746|  1.62k|                }
  747|  1.62k|                IMMER_CATCH (...) {
  748|      0|                    node_t::delete_leaf(add_tail, branches<BL>);
  749|      0|                    IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
  750|      0|                }
  751|  1.62k|            }
  752|  50.9k|        } else if (tail_offset() == 0) {
  ------------------
  |  Branch (752:20): [True: 2.75k, False: 48.1k]
  ------------------
  753|  2.75k|            auto tail_offst = tail_offset();
  754|  2.75k|            auto tail_size  = size - tail_offst;
  755|  2.75k|            auto concated =
  756|  2.75k|                concat_trees(tail, tail_size, r.root, r.shift, r.tail_offset());
  757|  2.75k|            auto new_shift = concated.shift();
  758|  2.75k|            auto new_root  = concated.node();
  759|  2.75k|            IMMER_ASSERT_TAGGED(new_shift == new_root->compute_shift());
  ------------------
  |  |   60|  2.75k|#define IMMER_ASSERT_TAGGED(assertion) assert(assertion)
  ------------------
  760|      0|            assert(new_root->check(new_shift, size + r.tail_offset()));
  761|      0|            return {size + r.size, new_shift, new_root, r.tail->inc()};
  762|  48.1k|        } else {
  763|  48.1k|            auto tail_offst = tail_offset();
  764|  48.1k|            auto tail_size  = size - tail_offst;
  765|  48.1k|            auto concated   = concat_trees(root,
  766|  48.1k|                                         shift,
  767|  48.1k|                                         tail_offst,
  768|  48.1k|                                         tail,
  769|  48.1k|                                         tail_size,
  770|  48.1k|                                         r.root,
  771|  48.1k|                                         r.shift,
  772|  48.1k|                                         r.tail_offset());
  773|  48.1k|            auto new_shift  = concated.shift();
  774|  48.1k|            auto new_root   = concated.node();
  775|  48.1k|            IMMER_ASSERT_TAGGED(new_shift == new_root->compute_shift());
  ------------------
  |  |   60|  48.1k|#define IMMER_ASSERT_TAGGED(assertion) assert(assertion)
  ------------------
  776|      0|            assert(new_root->check(new_shift, size + r.tail_offset()));
  777|      0|            return {size + r.size, new_shift, new_root, r.tail->inc()};
  778|  48.1k|        }
  779|  58.7k|    }
_ZN5immer6detail4rbts7rrbtreeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE13push_back_mutENS9_5applyIS6_E4type4editEi:
  447|  47.4k|    {
  448|  47.4k|        auto ts = tail_size();
  449|  47.4k|        if (ts < branches<BL>) {
  ------------------
  |  Branch (449:13): [True: 30.5k, False: 16.8k]
  ------------------
  450|  30.5k|            ensure_mutable_tail(e, ts);
  451|  30.5k|            new (&tail->leaf()[ts]) T{std::move(value)};
  452|  30.5k|        } else {
  453|  16.8k|            using std::get;
  454|  16.8k|            auto new_tail = node_t::make_leaf_e(e, std::move(value));
  455|  16.8k|            auto tail_off = tail_offset();
  456|  16.8k|            IMMER_TRY {
  ------------------
  |  |   41|  16.8k|#define IMMER_TRY try
  ------------------
  457|  16.8k|                push_tail_mut(e, tail_off, tail, ts);
  458|  16.8k|                tail = new_tail;
  459|  16.8k|            }
  460|  16.8k|            IMMER_CATCH (...) {
  461|      0|                node_t::delete_leaf(new_tail, 1u);
  462|      0|                IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
  463|      0|            }
  464|  16.8k|        }
  465|  47.4k|        ++size;
  466|  47.4k|    }
_ZN5immer6detail4rbts7rrbtreeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE19ensure_mutable_tailENS9_5applyIS6_E4type4editEj:
  438|  1.34M|    {
  439|  1.34M|        if (!tail->can_mutate(e)) {
  ------------------
  |  Branch (439:13): [True: 20.7k, False: 1.32M]
  ------------------
  440|  20.7k|            auto new_tail = node_t::copy_leaf_e(e, tail, n);
  441|  20.7k|            dec_leaf(tail, n);
  442|  20.7k|            tail = new_tail;
  443|  20.7k|        }
  444|  1.34M|    }
_ZN5immer6detail4rbts7rrbtreeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE13push_tail_mutENS9_5applyIS6_E4type4editEmPNS1_4nodeIiSA_Lj2ELj2EEEj:
  386|  2.23M|    {
  387|  2.23M|        if (auto r = root->relaxed()) {
  ------------------
  |  Branch (387:18): [True: 767k, False: 1.46M]
  ------------------
  388|   767k|            auto new_root =
  389|   767k|                make_relaxed_pos(root, shift, r)
  390|   767k|                    .visit(push_tail_mut_visitor<node_t>{}, e, tail, tail_size);
  391|   767k|            if (new_root) {
  ------------------
  |  Branch (391:17): [True: 765k, False: 1.59k]
  ------------------
  392|   765k|                root = new_root;
  393|   765k|            } else {
  394|  1.59k|                auto new_root = node_t::make_inner_r_e(e);
  395|  1.59k|                IMMER_TRY {
  ------------------
  |  |   41|  1.59k|#define IMMER_TRY try
  ------------------
  396|  1.59k|                    auto new_path        = node_t::make_path_e(e, shift, tail);
  397|  1.59k|                    new_root->inner()[0] = root;
  398|  1.59k|                    new_root->inner()[1] = new_path;
  399|  1.59k|                    new_root->relaxed()->d.sizes[0] = tail_off;
  400|  1.59k|                    new_root->relaxed()->d.sizes[1] = tail_off + tail_size;
  401|  1.59k|                    assert(tail_off);
  402|      0|                    assert(tail_size);
  403|      0|                    new_root->relaxed()->d.count = 2u;
  404|  1.59k|                    root                         = new_root;
  405|  1.59k|                    shift += B;
  406|  1.59k|                }
  407|  1.59k|                IMMER_CATCH (...) {
  408|      0|                    node_t::delete_inner_r_e(new_root);
  409|      0|                    IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
  410|      0|                }
  411|  1.59k|            }
  412|  1.46M|        } else if (tail_off == size_t{branches<B>} << shift) {
  ------------------
  |  Branch (412:20): [True: 5.73k, False: 1.45M]
  ------------------
  413|  5.73k|            auto new_root = node_t::make_inner_e(e);
  414|  5.73k|            IMMER_TRY {
  ------------------
  |  |   41|  5.73k|#define IMMER_TRY try
  ------------------
  415|  5.73k|                auto new_path        = node_t::make_path_e(e, shift, tail);
  416|  5.73k|                new_root->inner()[0] = root;
  417|  5.73k|                new_root->inner()[1] = new_path;
  418|  5.73k|                root                 = new_root;
  419|  5.73k|                shift += B;
  420|  5.73k|            }
  421|  5.73k|            IMMER_CATCH (...) {
  422|      0|                node_t::delete_inner_e(new_root);
  423|      0|                IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
  424|      0|            }
  425|  1.45M|        } else if (tail_off) {
  ------------------
  |  Branch (425:20): [True: 1.45M, False: 5.33k]
  ------------------
  426|  1.45M|            auto new_root =
  427|  1.45M|                make_regular_sub_pos(root, shift, tail_off)
  428|  1.45M|                    .visit(push_tail_mut_visitor<node_t>{}, e, tail);
  429|  1.45M|            root = new_root;
  430|  1.45M|        } else {
  431|  5.33k|            auto new_root = node_t::make_path_e(e, shift, tail);
  432|  5.33k|            dec_empty_regular(root);
  433|  5.33k|            root = new_root;
  434|  5.33k|        }
  435|  2.23M|    }
flex-vector-gc.cpp:_ZN5immer6detail4rbts7rrbtreeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE10update_mutIZZ22LLVMFuzzerTestOneInputENK3$_5clI12fuzzer_inputEEDaRT_EUlSG_E0_EEvNS9_5applyIS6_E4type4editEmOSG_:
  542|  10.1k|    {
  543|  10.1k|        auto& elem = get_mut(e, idx);
  544|  10.1k|        elem       = std::forward<FnT>(fn)(std::move(elem));
  545|  10.1k|    }
_ZN5immer6detail4rbts7rrbtreeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE7get_mutENS9_5applyIS6_E4type4editEm:
  508|  10.1k|    {
  509|  10.1k|        auto tail_off = tail_offset();
  510|  10.1k|        if (idx >= tail_off) {
  ------------------
  |  Branch (510:13): [True: 815, False: 9.34k]
  ------------------
  511|    815|            ensure_mutable_tail(e, size - tail_off);
  512|    815|            return tail->leaf()[(idx - tail_off) & mask<BL>];
  513|  9.34k|        } else {
  514|  9.34k|            return visit_maybe_relaxed_sub(root,
  515|  9.34k|                                           shift,
  516|  9.34k|                                           tail_off,
  517|  9.34k|                                           get_mut_visitor<node_t>{},
  518|  9.34k|                                           idx,
  519|  9.34k|                                           e,
  520|  9.34k|                                           &root);
  521|  9.34k|        }
  522|  10.1k|    }
_ZN5immer6detail4rbts7rrbtreeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE8take_mutENS9_5applyIS6_E4type4editEm:
  575|  39.3k|    {
  576|  39.3k|        auto tail_off = tail_offset();
  577|  39.3k|        if (new_size == 0) {
  ------------------
  |  Branch (577:13): [True: 1.06k, False: 38.2k]
  ------------------
  578|  1.06k|            *this = {};
  579|  38.2k|        } else if (new_size >= size) {
  ------------------
  |  Branch (579:20): [True: 2.84k, False: 35.4k]
  ------------------
  580|  2.84k|            return;
  581|  35.4k|        } else if (new_size > tail_off) {
  ------------------
  |  Branch (581:20): [True: 780, False: 34.6k]
  ------------------
  582|    780|            auto ts    = size - tail_off;
  583|    780|            auto newts = new_size - tail_off;
  584|    780|            if (tail->can_mutate(e)) {
  ------------------
  |  Branch (584:17): [True: 503, False: 277]
  ------------------
  585|    503|                detail::destroy_n(tail->leaf() + newts, ts - newts);
  586|    503|            } else {
  587|    277|                auto new_tail = node_t::copy_leaf_e(e, tail, newts);
  588|    277|                dec_leaf(tail, ts);
  589|    277|                tail = new_tail;
  590|    277|            }
  591|    780|            size = new_size;
  592|    780|            return;
  593|  34.6k|        } else {
  594|  34.6k|            using std::get;
  595|  34.6k|            auto l = new_size - 1;
  596|  34.6k|            auto v = slice_right_mut_visitor<node_t>();
  597|  34.6k|            auto r = visit_maybe_relaxed_sub(root, shift, tail_off, v, l, e);
  598|  34.6k|            auto new_shift = get<0>(r);
  599|  34.6k|            auto new_root  = get<1>(r);
  600|  34.6k|            auto new_tail  = get<3>(r);
  601|  34.6k|            if (new_root) {
  ------------------
  |  Branch (601:17): [True: 26.4k, False: 8.19k]
  ------------------
  602|  26.4k|                root  = new_root;
  603|  26.4k|                shift = new_shift;
  604|  26.4k|            } else {
  605|  8.19k|                root  = empty_root();
  606|  8.19k|                shift = BL;
  607|  8.19k|            }
  608|  34.6k|            dec_leaf(tail, size - tail_off);
  609|  34.6k|            size = new_size;
  610|  34.6k|            tail = new_tail;
  611|  34.6k|            return;
  612|  34.6k|        }
  613|  39.3k|    }
_ZN5immer6detail4rbts12concat_mut_rERKNS1_7rrbtreeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEERSB_NS9_5applyIS6_E4type4editE:
  911|  34.8k|    {
  912|  34.8k|        assert(&l != &r);
  913|      0|        assert(r.size < (std::numeric_limits<size_t>::max() - l.size));
  914|      0|        using std::get;
  915|  34.8k|        if (r.size == 0)
  ------------------
  |  Branch (915:13): [True: 3.49k, False: 31.3k]
  ------------------
  916|  3.49k|            r = std::move(l);
  917|  31.3k|        else if (l.size == 0)
  ------------------
  |  Branch (917:18): [True: 472, False: 30.8k]
  ------------------
  918|    472|            return;
  919|  30.8k|        else if (r.tail_offset() == 0) {
  ------------------
  |  Branch (919:18): [True: 6.05k, False: 24.8k]
  ------------------
  920|       |            // just concat the tail, similar to push_back
  921|  6.05k|            auto tail_offst = l.tail_offset();
  922|  6.05k|            auto tail_size  = l.size - tail_offst;
  923|  6.05k|            if (tail_size == branches<BL>) {
  ------------------
  |  Branch (923:17): [True: 941, False: 5.11k]
  ------------------
  924|       |                // this could be improved by making sure that the
  925|       |                // newly created nodes as part of the `push_tail()`
  926|       |                // are tagged with `er`
  927|    941|                auto res =
  928|    941|                    l.push_tail(l.root, l.shift, tail_offst, l.tail, tail_size);
  929|    941|                l.tail->inc(); // note: leak if mutably concatenated
  930|       |                               // with itself, but this is forbidden
  931|       |                               // by the interface
  932|    941|                r = {l.size + r.size, get<0>(res), get<1>(res), r.tail->inc()};
  933|    941|                return;
  934|  5.11k|            } else if (tail_size + r.size <= branches<BL>) {
  ------------------
  |  Branch (934:24): [True: 3.13k, False: 1.97k]
  ------------------
  935|       |                // doing this in a exception way mutating way is very
  936|       |                // tricky while potential performance gains are
  937|       |                // minimal (we need to move every element of the right
  938|       |                // tail anyways to make space for the left tail)
  939|       |                //
  940|       |                // we could however improve this by at least moving the
  941|       |                // elements of the right tail...
  942|  3.13k|                auto new_tail =
  943|  3.13k|                    node_t::copy_leaf(l.tail, tail_size, r.tail, r.size);
  944|  3.13k|                r = {l.size + r.size, l.shift, l.root->inc(), new_tail};
  945|  3.13k|                return;
  946|  3.13k|            } else {
  947|       |                // like the immutable version
  948|  1.97k|                auto remaining = branches<BL> - tail_size;
  949|  1.97k|                auto add_tail  = node_t::copy_leaf_e(
  950|  1.97k|                    er, l.tail, tail_size, r.tail, remaining);
  951|  1.97k|                IMMER_TRY {
  ------------------
  |  |   41|  1.97k|#define IMMER_TRY try
  ------------------
  952|  1.97k|                    auto new_tail =
  953|  1.97k|                        node_t::copy_leaf_e(er, r.tail, remaining, r.size);
  954|  1.97k|                    IMMER_TRY {
  ------------------
  |  |   41|  1.97k|#define IMMER_TRY try
  ------------------
  955|       |                        // this could be improved by making sure that the
  956|       |                        // newly created nodes as part of the `push_tail()`
  957|       |                        // are tagged with `er`
  958|  1.97k|                        auto new_root = l.push_tail(l.root,
  959|  1.97k|                                                    l.shift,
  960|  1.97k|                                                    tail_offst,
  961|  1.97k|                                                    add_tail,
  962|  1.97k|                                                    branches<BL>);
  963|  1.97k|                        r             = {l.size + r.size,
  964|  1.97k|                             get<0>(new_root),
  965|  1.97k|                             get<1>(new_root),
  966|  1.97k|                             new_tail};
  967|  1.97k|                        return;
  968|  1.97k|                    }
  969|  1.97k|                    IMMER_CATCH (...) {
  970|      0|                        node_t::delete_leaf(new_tail, r.size - remaining);
  971|      0|                        IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
  972|      0|                    }
  973|  1.97k|                }
  974|  1.97k|                IMMER_CATCH (...) {
  975|      0|                    node_t::delete_leaf(add_tail, branches<BL>);
  976|      0|                    IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
  977|      0|                }
  978|  1.97k|            }
  979|  24.8k|        } else if (l.tail_offset() == 0) {
  ------------------
  |  Branch (979:20): [True: 2.48k, False: 22.3k]
  ------------------
  980|  2.48k|            if (supports_transient_concat) {
  ------------------
  |  Branch (980:17): [Folded - Ignored]
  ------------------
  981|  2.48k|                auto tail_offst = l.tail_offset();
  982|  2.48k|                auto tail_size  = l.size - tail_offst;
  983|  2.48k|                auto concated =
  984|  2.48k|                    concat_trees_mut(er,
  985|  2.48k|                                     MemoryPolicy::transience_t::noone,
  986|  2.48k|                                     l.tail,
  987|  2.48k|                                     tail_size,
  988|  2.48k|                                     er,
  989|  2.48k|                                     r.root,
  990|  2.48k|                                     r.shift,
  991|  2.48k|                                     r.tail_offset());
  992|  2.48k|                IMMER_ASSERT_TAGGED(concated.shift() ==
  ------------------
  |  |   60|  2.48k|#define IMMER_ASSERT_TAGGED(assertion) assert(assertion)
  ------------------
  993|      0|                                    concated.node()->compute_shift());
  994|      0|                r.size += l.size;
  995|  2.48k|                r.shift = concated.shift();
  996|  2.48k|                r.root  = concated.node();
  997|  2.48k|                assert(r.check_tree());
  998|  2.48k|            } else {
  999|      0|                auto tail_offst = l.tail_offset();
 1000|      0|                auto tail_size  = l.size - tail_offst;
 1001|      0|                auto concated   = concat_trees(
 1002|      0|                    l.tail, tail_size, r.root, r.shift, r.tail_offset());
 1003|      0|                r = {l.size + r.size,
 1004|      0|                     concated.shift(),
 1005|      0|                     concated.node(),
 1006|      0|                     r.tail->inc()};
 1007|      0|                return;
 1008|      0|            }
 1009|  22.3k|        } else {
 1010|  22.3k|            if (supports_transient_concat) {
  ------------------
  |  Branch (1010:17): [Folded - Ignored]
  ------------------
 1011|  22.3k|                auto tail_offst = l.tail_offset();
 1012|  22.3k|                auto tail_size  = l.size - tail_offst;
 1013|  22.3k|                auto concated =
 1014|  22.3k|                    concat_trees_mut(er,
 1015|  22.3k|                                     MemoryPolicy::transience_t::noone,
 1016|  22.3k|                                     l.root,
 1017|  22.3k|                                     l.shift,
 1018|  22.3k|                                     tail_offst,
 1019|  22.3k|                                     l.tail,
 1020|  22.3k|                                     tail_size,
 1021|  22.3k|                                     er,
 1022|  22.3k|                                     r.root,
 1023|  22.3k|                                     r.shift,
 1024|  22.3k|                                     r.tail_offset());
 1025|  22.3k|                IMMER_ASSERT_TAGGED(concated.shift() ==
  ------------------
  |  |   60|  22.3k|#define IMMER_ASSERT_TAGGED(assertion) assert(assertion)
  ------------------
 1026|      0|                                    concated.node()->compute_shift());
 1027|      0|                r.size += l.size;
 1028|  22.3k|                r.shift = concated.shift();
 1029|  22.3k|                r.root  = concated.node();
 1030|  22.3k|                assert(r.check_tree());
 1031|      0|                return;
 1032|  22.3k|            } else {
 1033|      0|                auto tail_offst = l.tail_offset();
 1034|      0|                auto tail_size  = l.size - tail_offst;
 1035|      0|                auto concated   = concat_trees(l.root,
 1036|      0|                                             l.shift,
 1037|      0|                                             tail_offst,
 1038|      0|                                             l.tail,
 1039|      0|                                             tail_size,
 1040|      0|                                             r.root,
 1041|      0|                                             r.shift,
 1042|      0|                                             r.tail_offset());
 1043|      0|                r               = {l.size + r.size,
 1044|      0|                     concated.shift(),
 1045|      0|                     concated.node(),
 1046|      0|                     r.tail->inc()};
 1047|      0|                return;
 1048|      0|            }
 1049|  22.3k|        }
 1050|  34.8k|    }
_ZN5immer6detail4rbts7rrbtreeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEaSERKSB_:
  132|  7.48k|    {
  133|  7.48k|        auto next{other};
  134|  7.48k|        swap(*this, next);
  135|  7.48k|        return *this;
  136|  7.48k|    }
_ZN5immer6detail4rbts15concat_mut_lr_rERNS1_7rrbtreeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEENS9_5applyIS6_E4type4editESC_SG_:
 1189|  3.49k|    {
 1190|  3.49k|        assert(&l != &r);
 1191|      0|        assert(r.size < (std::numeric_limits<size_t>::max() - l.size));
 1192|      0|        using std::get;
 1193|  3.49k|        if (r.size == 0)
  ------------------
  |  Branch (1193:13): [True: 279, False: 3.22k]
  ------------------
 1194|    279|            r = l;
 1195|  3.22k|        else if (l.size == 0)
  ------------------
  |  Branch (1195:18): [True: 251, False: 2.96k]
  ------------------
 1196|    251|            return;
 1197|  2.96k|        else if (r.tail_offset() == 0) {
  ------------------
  |  Branch (1197:18): [True: 1.13k, False: 1.83k]
  ------------------
 1198|       |            // just concat the tail, similar to push_back
 1199|  1.13k|            auto tail_offst = l.tail_offset();
 1200|  1.13k|            auto tail_size  = l.size - tail_offst;
 1201|  1.13k|            if (tail_size == branches<BL>) {
  ------------------
  |  Branch (1201:17): [True: 317, False: 816]
  ------------------
 1202|       |                // this could be improved by making sure that the
 1203|       |                // newly created nodes as part of the `push_tail()`
 1204|       |                // are tagged with `er`
 1205|    317|                auto res =
 1206|    317|                    l.push_tail(l.root, l.shift, tail_offst, l.tail, tail_size);
 1207|    317|                r = {l.size + r.size, get<0>(res), get<1>(res), r.tail->inc()};
 1208|    317|                return;
 1209|    816|            } else if (tail_size + r.size <= branches<BL>) {
  ------------------
  |  Branch (1209:24): [True: 573, False: 243]
  ------------------
 1210|       |                // doing this in a exception way mutating way is very
 1211|       |                // tricky while potential performance gains are
 1212|       |                // minimal (we need to move every element of the right
 1213|       |                // tail anyways to make space for the left tail)
 1214|       |                //
 1215|       |                // we could however improve this by at least moving the
 1216|       |                // elements of the mutable tails...
 1217|    573|                auto new_tail =
 1218|    573|                    node_t::copy_leaf(l.tail, tail_size, r.tail, r.size);
 1219|    573|                r = {l.size + r.size, l.shift, l.root->inc(), new_tail};
 1220|    573|                return;
 1221|    573|            } else {
 1222|       |                // like the immutable version.
 1223|       |                // we could improve this also by moving elements
 1224|       |                // instead of just copying them
 1225|    243|                auto remaining = branches<BL> - tail_size;
 1226|    243|                auto add_tail  = node_t::copy_leaf_e(
 1227|    243|                    er, l.tail, tail_size, r.tail, remaining);
 1228|    243|                IMMER_TRY {
  ------------------
  |  |   41|    243|#define IMMER_TRY try
  ------------------
 1229|    243|                    auto new_tail =
 1230|    243|                        node_t::copy_leaf_e(er, r.tail, remaining, r.size);
 1231|    243|                    IMMER_TRY {
  ------------------
  |  |   41|    243|#define IMMER_TRY try
  ------------------
 1232|       |                        // this could be improved by making sure that the
 1233|       |                        // newly created nodes as part of the `push_tail()`
 1234|       |                        // are tagged with `er`
 1235|    243|                        auto new_root = l.push_tail(l.root,
 1236|    243|                                                    l.shift,
 1237|    243|                                                    tail_offst,
 1238|    243|                                                    add_tail,
 1239|    243|                                                    branches<BL>);
 1240|    243|                        r             = {l.size + r.size,
 1241|    243|                             get<0>(new_root),
 1242|    243|                             get<1>(new_root),
 1243|    243|                             new_tail};
 1244|    243|                        return;
 1245|    243|                    }
 1246|    243|                    IMMER_CATCH (...) {
 1247|      0|                        node_t::delete_leaf(new_tail, r.size - remaining);
 1248|      0|                        IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1249|      0|                    }
 1250|    243|                }
 1251|    243|                IMMER_CATCH (...) {
 1252|      0|                    node_t::delete_leaf(add_tail, branches<BL>);
 1253|      0|                    IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1254|      0|                }
 1255|    243|            }
 1256|  1.83k|        } else if (l.tail_offset() == 0) {
  ------------------
  |  Branch (1256:20): [True: 675, False: 1.16k]
  ------------------
 1257|    675|            if (supports_transient_concat) {
  ------------------
  |  Branch (1257:17): [Folded - Ignored]
  ------------------
 1258|    675|                auto tail_offst = l.tail_offset();
 1259|    675|                auto tail_size  = l.size - tail_offst;
 1260|    675|                auto concated   = concat_trees_mut(er,
 1261|    675|                                                 el,
 1262|    675|                                                 l.tail,
 1263|    675|                                                 tail_size,
 1264|    675|                                                 er,
 1265|    675|                                                 r.root,
 1266|    675|                                                 r.shift,
 1267|    675|                                                 r.tail_offset());
 1268|    675|                IMMER_ASSERT_TAGGED(concated.shift() ==
  ------------------
  |  |   60|    675|#define IMMER_ASSERT_TAGGED(assertion) assert(assertion)
  ------------------
 1269|      0|                                    concated.node()->compute_shift());
 1270|      0|                assert(concated.node()->check(concated.shift(),
 1271|    675|                                              l.size + r.tail_offset()));
 1272|      0|                r.size += l.size;
 1273|    675|                r.shift = concated.shift();
 1274|    675|                r.root  = concated.node();
 1275|    675|                assert(r.check_tree());
 1276|      0|                l.hard_reset();
 1277|    675|            } else {
 1278|      0|                auto tail_offst = l.tail_offset();
 1279|      0|                auto tail_size  = l.size - tail_offst;
 1280|      0|                auto concated   = concat_trees(
 1281|      0|                    l.tail, tail_size, r.root, r.shift, r.tail_offset());
 1282|      0|                r = {l.size + r.size,
 1283|      0|                     concated.shift(),
 1284|      0|                     concated.node(),
 1285|      0|                     r.tail->inc()};
 1286|      0|                return;
 1287|      0|            }
 1288|  1.16k|        } else {
 1289|  1.16k|            if (supports_transient_concat) {
  ------------------
  |  Branch (1289:17): [Folded - Ignored]
  ------------------
 1290|  1.16k|                auto tail_offst = l.tail_offset();
 1291|  1.16k|                auto tail_size  = l.size - tail_offst;
 1292|  1.16k|                auto concated   = concat_trees_mut(er,
 1293|  1.16k|                                                 el,
 1294|  1.16k|                                                 l.root,
 1295|  1.16k|                                                 l.shift,
 1296|  1.16k|                                                 tail_offst,
 1297|  1.16k|                                                 l.tail,
 1298|  1.16k|                                                 tail_size,
 1299|  1.16k|                                                 er,
 1300|  1.16k|                                                 r.root,
 1301|  1.16k|                                                 r.shift,
 1302|  1.16k|                                                 r.tail_offset());
 1303|  1.16k|                IMMER_ASSERT_TAGGED(concated.shift() ==
  ------------------
  |  |   60|  1.16k|#define IMMER_ASSERT_TAGGED(assertion) assert(assertion)
  ------------------
 1304|      0|                                    concated.node()->compute_shift());
 1305|      0|                assert(concated.node()->check(concated.shift(),
 1306|  1.16k|                                              l.size + r.tail_offset()));
 1307|      0|                r.size += l.size;
 1308|  1.16k|                r.shift = concated.shift();
 1309|  1.16k|                r.root  = concated.node();
 1310|  1.16k|                assert(r.check_tree());
 1311|      0|                l.hard_reset();
 1312|  1.16k|            } else {
 1313|      0|                auto tail_offst = l.tail_offset();
 1314|      0|                auto tail_size  = l.size - tail_offst;
 1315|      0|                auto concated   = concat_trees(l.root,
 1316|      0|                                             l.shift,
 1317|      0|                                             tail_offst,
 1318|      0|                                             l.tail,
 1319|      0|                                             tail_size,
 1320|      0|                                             r.root,
 1321|      0|                                             r.shift,
 1322|      0|                                             r.tail_offset());
 1323|      0|                r               = {l.size + r.size,
 1324|      0|                     concated.shift(),
 1325|      0|                     concated.node(),
 1326|      0|                     r.tail->inc()};
 1327|      0|            }
 1328|  1.16k|        }
 1329|  3.49k|    }
_ZN5immer6detail4rbts7rrbtreeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE10hard_resetEv:
 1332|  3.79k|    {
 1333|  3.79k|        assert(supports_transient_concat);
 1334|      0|        size  = 0;
 1335|  3.79k|        shift = BL;
 1336|  3.79k|        root  = empty_root();
 1337|  3.79k|        tail  = empty_tail();
 1338|  3.79k|    }
_ZN5immer6detail4rbts12concat_mut_lERNS1_7rrbtreeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEENS9_5applyIS6_E4type4editERKSB_:
  785|  2.27M|    {
  786|  2.27M|        assert(&l != &r);
  787|      0|        assert(r.size < (std::numeric_limits<size_t>::max() - l.size));
  788|      0|        using std::get;
  789|  2.27M|        if (l.size == 0)
  ------------------
  |  Branch (789:13): [True: 3.10k, False: 2.27M]
  ------------------
  790|  3.10k|            l = r;
  791|  2.27M|        else if (r.size == 0)
  ------------------
  |  Branch (791:18): [True: 2.96k, False: 2.26M]
  ------------------
  792|  2.96k|            return;
  793|  2.26M|        else if (r.tail_offset() == 0) {
  ------------------
  |  Branch (793:18): [True: 2.21M, False: 51.7k]
  ------------------
  794|       |            // just concat the tail, similar to push_back
  795|  2.21M|            auto tail_offst = l.tail_offset();
  796|  2.21M|            auto tail_size  = l.size - tail_offst;
  797|  2.21M|            if (tail_size == branches<BL>) {
  ------------------
  |  Branch (797:17): [True: 906k, False: 1.30M]
  ------------------
  798|   906k|                l.push_tail_mut(el, tail_offst, l.tail, tail_size);
  799|   906k|                l.tail = r.tail->inc();
  800|   906k|                l.size += r.size;
  801|   906k|                return;
  802|  1.30M|            } else if (tail_size + r.size <= branches<BL>) {
  ------------------
  |  Branch (802:24): [True: 2.24k, False: 1.30M]
  ------------------
  803|  2.24k|                l.ensure_mutable_tail(el, tail_size);
  804|  2.24k|                detail::uninitialized_copy(r.tail->leaf(),
  805|  2.24k|                                           r.tail->leaf() + r.size,
  806|  2.24k|                                           l.tail->leaf() + tail_size);
  807|  2.24k|                l.size += r.size;
  808|  2.24k|                return;
  809|  1.30M|            } else {
  810|  1.30M|                auto remaining = branches<BL> - tail_size;
  811|  1.30M|                l.ensure_mutable_tail(el, tail_size);
  812|  1.30M|                detail::uninitialized_copy(r.tail->leaf(),
  813|  1.30M|                                           r.tail->leaf() + remaining,
  814|  1.30M|                                           l.tail->leaf() + tail_size);
  815|  1.30M|                IMMER_TRY {
  ------------------
  |  |   41|  1.30M|#define IMMER_TRY try
  ------------------
  816|  1.30M|                    auto new_tail =
  817|  1.30M|                        node_t::copy_leaf_e(el, r.tail, remaining, r.size);
  818|  1.30M|                    IMMER_TRY {
  ------------------
  |  |   41|  1.30M|#define IMMER_TRY try
  ------------------
  819|  1.30M|                        l.push_tail_mut(el, tail_offst, l.tail, branches<BL>);
  820|  1.30M|                        l.tail = new_tail;
  821|  1.30M|                        l.size += r.size;
  822|  1.30M|                        return;
  823|  1.30M|                    }
  824|  1.30M|                    IMMER_CATCH (...) {
  825|      0|                        node_t::delete_leaf(new_tail, r.size - remaining);
  826|      0|                        IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
  827|      0|                    }
  828|  1.30M|                }
  829|  1.30M|                IMMER_CATCH (...) {
  830|      0|                    detail::destroy_n(r.tail->leaf() + tail_size, remaining);
  831|      0|                    IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
  832|      0|                }
  833|  1.30M|            }
  834|  2.21M|        } else if (l.tail_offset() == 0) {
  ------------------
  |  Branch (834:20): [True: 4.13k, False: 47.6k]
  ------------------
  835|  4.13k|            if (supports_transient_concat) {
  ------------------
  |  Branch (835:17): [Folded - Ignored]
  ------------------
  836|  4.13k|                auto tail_offst = l.tail_offset();
  837|  4.13k|                auto tail_size  = l.size - tail_offst;
  838|  4.13k|                auto concated =
  839|  4.13k|                    concat_trees_mut(el,
  840|  4.13k|                                     el,
  841|  4.13k|                                     l.tail,
  842|  4.13k|                                     tail_size,
  843|  4.13k|                                     MemoryPolicy::transience_t::noone,
  844|  4.13k|                                     r.root,
  845|  4.13k|                                     r.shift,
  846|  4.13k|                                     r.tail_offset());
  847|  4.13k|                IMMER_ASSERT_TAGGED(concated.shift() ==
  ------------------
  |  |   60|  4.13k|#define IMMER_ASSERT_TAGGED(assertion) assert(assertion)
  ------------------
  848|      0|                                    concated.node()->compute_shift());
  849|      0|                l.size += r.size;
  850|  4.13k|                l.shift = concated.shift();
  851|  4.13k|                l.root  = concated.node();
  852|  4.13k|                l.tail  = r.tail;
  853|  4.13k|                assert(l.check_tree());
  854|  4.13k|            } else {
  855|      0|                auto tail_offst = l.tail_offset();
  856|      0|                auto tail_size  = l.size - tail_offst;
  857|      0|                auto concated   = concat_trees(
  858|      0|                    l.tail, tail_size, r.root, r.shift, r.tail_offset());
  859|      0|                l = {l.size + r.size,
  860|      0|                     concated.shift(),
  861|      0|                     concated.node(),
  862|      0|                     r.tail->inc()};
  863|      0|                assert(l.check_tree());
  864|      0|                return;
  865|      0|            }
  866|  47.6k|        } else {
  867|  47.6k|            if (supports_transient_concat) {
  ------------------
  |  Branch (867:17): [Folded - Ignored]
  ------------------
  868|  47.6k|                auto tail_offst = l.tail_offset();
  869|  47.6k|                auto tail_size  = l.size - tail_offst;
  870|  47.6k|                assert(l.check_tree());
  871|      0|                assert(r.check_tree());
  872|      0|                auto concated =
  873|  47.6k|                    concat_trees_mut(el,
  874|  47.6k|                                     el,
  875|  47.6k|                                     l.root,
  876|  47.6k|                                     l.shift,
  877|  47.6k|                                     tail_offst,
  878|  47.6k|                                     l.tail,
  879|  47.6k|                                     tail_size,
  880|  47.6k|                                     MemoryPolicy::transience_t::noone,
  881|  47.6k|                                     r.root,
  882|  47.6k|                                     r.shift,
  883|  47.6k|                                     r.tail_offset());
  884|  47.6k|                IMMER_ASSERT_TAGGED(concated.shift() ==
  ------------------
  |  |   60|  47.6k|#define IMMER_ASSERT_TAGGED(assertion) assert(assertion)
  ------------------
  885|      0|                                    concated.node()->compute_shift());
  886|      0|                l.size += r.size;
  887|  47.6k|                l.shift = concated.shift();
  888|  47.6k|                l.root  = concated.node();
  889|  47.6k|                l.tail  = r.tail;
  890|  47.6k|                assert(l.check_tree());
  891|  47.6k|            } else {
  892|      0|                auto tail_offst = l.tail_offset();
  893|      0|                auto tail_size  = l.size - tail_offst;
  894|      0|                auto concated   = concat_trees(l.root,
  895|      0|                                             l.shift,
  896|      0|                                             tail_offst,
  897|      0|                                             l.tail,
  898|      0|                                             tail_size,
  899|      0|                                             r.root,
  900|      0|                                             r.shift,
  901|      0|                                             r.tail_offset());
  902|      0|                l               = {l.size + r.size,
  903|      0|                     concated.shift(),
  904|      0|                     concated.node(),
  905|      0|                     r.tail->inc()};
  906|      0|            }
  907|  47.6k|        }
  908|  2.27M|    }
_ZN5immer6detail4rbts15concat_mut_lr_lERNS1_7rrbtreeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEENS9_5applyIS6_E4type4editESC_SG_:
 1053|  5.49k|    {
 1054|  5.49k|        assert(&l != &r);
 1055|      0|        assert(r.size < (std::numeric_limits<size_t>::max() - l.size));
 1056|      0|        using std::get;
 1057|  5.49k|        if (l.size == 0)
  ------------------
  |  Branch (1057:13): [True: 602, False: 4.89k]
  ------------------
 1058|    602|            l = r;
 1059|  4.89k|        else if (r.size == 0)
  ------------------
  |  Branch (1059:18): [True: 348, False: 4.54k]
  ------------------
 1060|    348|            return;
 1061|  4.54k|        else if (r.tail_offset() == 0) {
  ------------------
  |  Branch (1061:18): [True: 2.59k, False: 1.95k]
  ------------------
 1062|       |            // just concat the tail, similar to push_back
 1063|  2.59k|            auto tail_offst = l.tail_offset();
 1064|  2.59k|            auto tail_size  = l.size - tail_offst;
 1065|  2.59k|            if (tail_size == branches<BL>) {
  ------------------
  |  Branch (1065:17): [True: 487, False: 2.10k]
  ------------------
 1066|    487|                l.push_tail_mut(el, tail_offst, l.tail, tail_size);
 1067|    487|                l.tail = r.tail->inc();
 1068|    487|                l.size += r.size;
 1069|    487|                return;
 1070|  2.10k|            } else if (tail_size + r.size <= branches<BL>) {
  ------------------
  |  Branch (1070:24): [True: 1.20k, False: 895]
  ------------------
 1071|  1.20k|                l.ensure_mutable_tail(el, tail_size);
 1072|  1.20k|                if (r.tail->can_mutate(er))
  ------------------
  |  Branch (1072:21): [True: 813, False: 395]
  ------------------
 1073|    813|                    detail::uninitialized_move(r.tail->leaf(),
 1074|    813|                                               r.tail->leaf() + r.size,
 1075|    813|                                               l.tail->leaf() + tail_size);
 1076|    395|                else
 1077|    395|                    detail::uninitialized_copy(r.tail->leaf(),
 1078|    395|                                               r.tail->leaf() + r.size,
 1079|    395|                                               l.tail->leaf() + tail_size);
 1080|  1.20k|                l.size += r.size;
 1081|  1.20k|                return;
 1082|  1.20k|            } else {
 1083|    895|                auto remaining = branches<BL> - tail_size;
 1084|    895|                l.ensure_mutable_tail(el, tail_size);
 1085|    895|                if (r.tail->can_mutate(er))
  ------------------
  |  Branch (1085:21): [True: 303, False: 592]
  ------------------
 1086|    303|                    detail::uninitialized_move(r.tail->leaf(),
 1087|    303|                                               r.tail->leaf() + remaining,
 1088|    303|                                               l.tail->leaf() + tail_size);
 1089|    592|                else
 1090|    592|                    detail::uninitialized_copy(r.tail->leaf(),
 1091|    592|                                               r.tail->leaf() + remaining,
 1092|    592|                                               l.tail->leaf() + tail_size);
 1093|    895|                IMMER_TRY {
  ------------------
  |  |   41|    895|#define IMMER_TRY try
  ------------------
 1094|    895|                    auto new_tail =
 1095|    895|                        node_t::copy_leaf_e(el, r.tail, remaining, r.size);
 1096|    895|                    IMMER_TRY {
  ------------------
  |  |   41|    895|#define IMMER_TRY try
  ------------------
 1097|    895|                        l.push_tail_mut(el, tail_offst, l.tail, branches<BL>);
 1098|    895|                        l.tail = new_tail;
 1099|    895|                        l.size += r.size;
 1100|    895|                        return;
 1101|    895|                    }
 1102|    895|                    IMMER_CATCH (...) {
 1103|      0|                        node_t::delete_leaf(new_tail, r.size - remaining);
 1104|      0|                        IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1105|      0|                    }
 1106|    895|                }
 1107|    895|                IMMER_CATCH (...) {
 1108|      0|                    detail::destroy_n(r.tail->leaf() + tail_size, remaining);
 1109|      0|                    IMMER_RETHROW;
  ------------------
  |  |   44|      0|#define IMMER_RETHROW throw
  ------------------
 1110|      0|                }
 1111|    895|            }
 1112|  2.59k|        } else if (l.tail_offset() == 0) {
  ------------------
  |  Branch (1112:20): [True: 645, False: 1.30k]
  ------------------
 1113|    645|            if (supports_transient_concat) {
  ------------------
  |  Branch (1113:17): [Folded - Ignored]
  ------------------
 1114|    645|                auto tail_offst = l.tail_offset();
 1115|    645|                auto tail_size  = l.size - tail_offst;
 1116|    645|                auto concated   = concat_trees_mut(el,
 1117|    645|                                                 el,
 1118|    645|                                                 l.tail,
 1119|    645|                                                 tail_size,
 1120|    645|                                                 er,
 1121|    645|                                                 r.root,
 1122|    645|                                                 r.shift,
 1123|    645|                                                 r.tail_offset());
 1124|    645|                IMMER_ASSERT_TAGGED(concated.shift() ==
  ------------------
  |  |   60|    645|#define IMMER_ASSERT_TAGGED(assertion) assert(assertion)
  ------------------
 1125|      0|                                    concated.node()->compute_shift());
 1126|      0|                l.size += r.size;
 1127|    645|                l.shift = concated.shift();
 1128|    645|                l.root  = concated.node();
 1129|    645|                l.tail  = r.tail;
 1130|    645|                assert(l.check_tree());
 1131|      0|                r.hard_reset();
 1132|    645|                return;
 1133|    645|            } else {
 1134|      0|                auto tail_offst = l.tail_offset();
 1135|      0|                auto tail_size  = l.size - tail_offst;
 1136|      0|                auto concated   = concat_trees(
 1137|      0|                    l.tail, tail_size, r.root, r.shift, r.tail_offset());
 1138|      0|                l = {l.size + r.size,
 1139|      0|                     concated.shift(),
 1140|      0|                     concated.node(),
 1141|      0|                     r.tail->inc()};
 1142|      0|                return;
 1143|      0|            }
 1144|  1.30k|        } else {
 1145|  1.30k|            if (supports_transient_concat) {
  ------------------
  |  Branch (1145:17): [Folded - Ignored]
  ------------------
 1146|  1.30k|                auto tail_offst = l.tail_offset();
 1147|  1.30k|                auto tail_size  = l.size - tail_offst;
 1148|  1.30k|                auto concated   = concat_trees_mut(el,
 1149|  1.30k|                                                 el,
 1150|  1.30k|                                                 l.root,
 1151|  1.30k|                                                 l.shift,
 1152|  1.30k|                                                 tail_offst,
 1153|  1.30k|                                                 l.tail,
 1154|  1.30k|                                                 tail_size,
 1155|  1.30k|                                                 er,
 1156|  1.30k|                                                 r.root,
 1157|  1.30k|                                                 r.shift,
 1158|  1.30k|                                                 r.tail_offset());
 1159|  1.30k|                IMMER_ASSERT_TAGGED(concated.shift() ==
  ------------------
  |  |   60|  1.30k|#define IMMER_ASSERT_TAGGED(assertion) assert(assertion)
  ------------------
 1160|      0|                                    concated.node()->compute_shift());
 1161|      0|                l.size += r.size;
 1162|  1.30k|                l.shift = concated.shift();
 1163|  1.30k|                l.root  = concated.node();
 1164|  1.30k|                l.tail  = r.tail;
 1165|  1.30k|                assert(l.check_tree());
 1166|      0|                r.hard_reset();
 1167|  1.30k|                return;
 1168|  1.30k|            } else {
 1169|      0|                auto tail_offst = l.tail_offset();
 1170|      0|                auto tail_size  = l.size - tail_offst;
 1171|      0|                auto concated   = concat_trees(l.root,
 1172|      0|                                             l.shift,
 1173|      0|                                             tail_offst,
 1174|      0|                                             l.tail,
 1175|      0|                                             tail_size,
 1176|      0|                                             r.root,
 1177|      0|                                             r.shift,
 1178|      0|                                             r.tail_offset());
 1179|      0|                l               = {l.size + r.size,
 1180|      0|                     concated.shift(),
 1181|      0|                     concated.node(),
 1182|      0|                     r.tail->inc()};
 1183|      0|                return;
 1184|      0|            }
 1185|  1.30k|        }
 1186|  5.49k|    }

_ZN5immer6detail4rbts12visitor_baseINS1_18slice_left_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb1EEEE13visit_relaxedIJRNS1_11relaxed_posISD_EERmEEEDcDpOT_:
   31|  22.3k|    {
   32|  22.3k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   33|  22.3k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_18slice_left_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb0EEEE13visit_relaxedIJRNS1_11relaxed_posISD_EERmEEEDcDpOT_:
   31|   142k|    {
   32|   142k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   33|   142k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_18slice_left_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb0EEEE13visit_regularIJRNS1_15regular_sub_posISD_EERmEEEDcDpOT_:
   37|  1.63k|    {
   38|  1.63k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   39|  1.63k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_18slice_left_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb0EEEE13visit_regularIJRNS1_8full_posISD_EEmEEEDcDpOT_:
   37|  4.19k|    {
   38|  4.19k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   39|  4.19k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_18slice_left_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb1EEEE13visit_regularIJRNS1_15regular_sub_posISD_EERmEEEDcDpOT_:
   37|  2.90k|    {
   38|  2.90k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   39|  2.90k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_18slice_left_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb1EEEE13visit_regularIJRNS1_8full_posISD_EEmEEEDcDpOT_:
   37|  1.20k|    {
   38|  1.20k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   39|  1.20k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_18slice_left_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEELb1EEEE13visit_regularIJRNS1_15regular_sub_posISD_EEmEEEDcDpOT_:
   37|    425|    {
   38|    425|        return Deriv::visit_inner(std::forward<Args>(args)...);
   39|    425|    }
_ZN5immer6detail4rbts12visitor_baseINS1_25concat_trees_left_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_regularIJRNS1_25singleton_regular_sub_posISD_EENS1_14empty_leaf_posISD_EERPSD_RjRmEEEDcDpOT_:
   37|  2.75k|    {
   38|  2.75k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   39|  2.75k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_25concat_trees_left_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE11visit_innerIJRNS1_25singleton_regular_sub_posISD_EENS1_14empty_leaf_posISD_EERPSD_RjRmEEEDcDpOT_:
   43|  2.75k|    {
   44|  2.75k|        return Deriv::visit_node(std::forward<Args>(args)...);
   45|  2.75k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_26concat_trees_right_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_relaxedIJRNS1_11relaxed_posISD_EERNS1_25singleton_regular_sub_posISD_EERNS1_14empty_leaf_posISD_EEEEEDcDpOT_:
   31|  1.16k|    {
   32|  1.16k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   33|  1.16k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_26concat_trees_right_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE11visit_innerIJRNS1_11relaxed_posISD_EERNS1_25singleton_regular_sub_posISD_EERNS1_14empty_leaf_posISD_EEEEEDcDpOT_:
   43|  1.16k|    {
   44|  1.16k|        return Deriv::visit_node(std::forward<Args>(args)...);
   45|  1.16k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_34concat_rebalance_plan_fill_visitorEE10visit_leafIJRNS1_12leaf_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_21concat_rebalance_planILj2ELj2EEEEEEDcDpOT_:
   49|   778k|    {
   50|   778k|        return Deriv::visit_node(std::forward<Args>(args)...);
   51|   778k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_34concat_rebalance_plan_fill_visitorEE13visit_relaxedIJRNS1_11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_21concat_rebalance_planILj2ELj2EEEEEEDcDpOT_:
   31|  3.26M|    {
   32|  3.26M|        return Deriv::visit_inner(std::forward<Args>(args)...);
   33|  3.26M|    }
_ZN5immer6detail4rbts12visitor_baseINS1_34concat_rebalance_plan_fill_visitorEE11visit_innerIJRNS1_11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_21concat_rebalance_planILj2ELj2EEEEEEDcDpOT_:
   43|  3.26M|    {
   44|  3.26M|        return Deriv::visit_node(std::forward<Args>(args)...);
   45|  3.26M|    }
_ZN5immer6detail4rbts12visitor_baseINS1_21concat_merger_visitorEE13visit_relaxedIJRNS1_11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_13concat_mergerISG_EEEEEDcDpOT_:
   31|  1.43M|    {
   32|  1.43M|        return Deriv::visit_inner(std::forward<Args>(args)...);
   33|  1.43M|    }
_ZN5immer6detail4rbts12visitor_baseINS1_20concat_right_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_relaxedIJRNS1_11relaxed_posISD_EERNS1_25singleton_regular_sub_posISD_EERNS1_14empty_leaf_posISD_EEEEEDcDpOT_:
   31|  2.51k|    {
   32|  2.51k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   33|  2.51k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_20concat_right_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_regularIJRNS1_15regular_sub_posISD_EERNS1_25singleton_regular_sub_posISD_EERNS1_14empty_leaf_posISD_EEEEEDcDpOT_:
   37|    198|    {
   38|    198|        return Deriv::visit_inner(std::forward<Args>(args)...);
   39|    198|    }
_ZN5immer6detail4rbts12visitor_baseINS1_20concat_right_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_regularIJRNS1_8full_posISD_EERNS1_25singleton_regular_sub_posISD_EERNS1_14empty_leaf_posISD_EEEEEDcDpOT_:
   37|  1.28k|    {
   38|  1.28k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   39|  1.28k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_34concat_rebalance_plan_fill_visitorEE10visit_leafIJRNS1_13full_leaf_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_21concat_rebalance_planILj2ELj2EEEEEEDcDpOT_:
   49|  80.9k|    {
   50|  80.9k|        return Deriv::visit_node(std::forward<Args>(args)...);
   51|  80.9k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_34concat_rebalance_plan_fill_visitorEE13visit_regularIJRNS1_8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_21concat_rebalance_planILj2ELj2EEEEEEDcDpOT_:
   37|   260k|    {
   38|   260k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   39|   260k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_34concat_rebalance_plan_fill_visitorEE11visit_innerIJRNS1_8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_21concat_rebalance_planILj2ELj2EEEEEEDcDpOT_:
   43|   260k|    {
   44|   260k|        return Deriv::visit_node(std::forward<Args>(args)...);
   45|   260k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_21concat_merger_visitorEE13visit_regularIJRNS1_8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_13concat_mergerISG_EEEEEDcDpOT_:
   37|  18.2k|    {
   38|  18.2k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   39|  18.2k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_34concat_rebalance_plan_fill_visitorEE13visit_regularIJRNS1_15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_21concat_rebalance_planILj2ELj2EEEEEEDcDpOT_:
   37|  63.6k|    {
   38|  63.6k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   39|  63.6k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_34concat_rebalance_plan_fill_visitorEE11visit_innerIJRNS1_15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_21concat_rebalance_planILj2ELj2EEEEEEDcDpOT_:
   43|  63.6k|    {
   44|  63.6k|        return Deriv::visit_node(std::forward<Args>(args)...);
   45|  63.6k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_21concat_merger_visitorEE13visit_regularIJRNS1_15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_13concat_mergerISG_EEEEEDcDpOT_:
   37|  7.22k|    {
   38|  7.22k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   39|  7.22k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_26concat_trees_right_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_regularIJRNS1_15regular_sub_posISD_EERNS1_25singleton_regular_sub_posISD_EERNS1_14empty_leaf_posISD_EEEEEDcDpOT_:
   37|  1.58k|    {
   38|  1.58k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   39|  1.58k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_26concat_trees_right_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE11visit_innerIJRNS1_15regular_sub_posISD_EERNS1_25singleton_regular_sub_posISD_EERNS1_14empty_leaf_posISD_EEEEEDcDpOT_:
   43|  1.58k|    {
   44|  1.58k|        return Deriv::visit_node(std::forward<Args>(args)...);
   45|  1.58k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_25concat_trees_left_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_relaxedIJRNS1_11relaxed_posISD_EENS1_8leaf_posISD_EERPSD_RjRmEEEDcDpOT_:
   31|  42.8k|    {
   32|  42.8k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   33|  42.8k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_25concat_trees_left_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE11visit_innerIJRNS1_11relaxed_posISD_EENS1_8leaf_posISD_EERPSD_RjRmEEEDcDpOT_:
   43|  42.8k|    {
   44|  42.8k|        return Deriv::visit_node(std::forward<Args>(args)...);
   45|  42.8k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_26concat_trees_right_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_relaxedIJRNS1_11relaxed_posISD_EESJ_RNS1_8leaf_posISD_EEEEEDcDpOT_:
   31|  39.7k|    {
   32|  39.7k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   33|  39.7k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_26concat_trees_right_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE11visit_innerIJRNS1_11relaxed_posISD_EESJ_RNS1_8leaf_posISD_EEEEEDcDpOT_:
   43|  39.7k|    {
   44|  39.7k|        return Deriv::visit_node(std::forward<Args>(args)...);
   45|  39.7k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_19concat_left_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_relaxedIJRNS1_11relaxed_posISD_EERNS1_8leaf_posISD_EESJ_EEEDcDpOT_:
   31|  2.88k|    {
   32|  2.88k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   33|  2.88k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_19concat_left_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_regularIJRNS1_15regular_sub_posISD_EERNS1_8leaf_posISD_EERNS1_11relaxed_posISD_EEEEEDcDpOT_:
   37|    832|    {
   38|    832|        return Deriv::visit_inner(std::forward<Args>(args)...);
   39|    832|    }
_ZN5immer6detail4rbts12visitor_baseINS1_20concat_right_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_relaxedIJRNS1_11relaxed_posISD_EERNS1_15regular_sub_posISD_EERNS1_8leaf_posISD_EEEEEDcDpOT_:
   31|  8.88k|    {
   32|  8.88k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   33|  8.88k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_20concat_right_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_regularIJRNS1_15regular_sub_posISD_EESJ_RNS1_8leaf_posISD_EEEEEDcDpOT_:
   37|    389|    {
   38|    389|        return Deriv::visit_inner(std::forward<Args>(args)...);
   39|    389|    }
_ZN5immer6detail4rbts12visitor_baseINS1_19concat_left_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_regularIJRNS1_15regular_sub_posISD_EERNS1_8leaf_posISD_EESJ_EEEDcDpOT_:
   37|  1.54k|    {
   38|  1.54k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   39|  1.54k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_20concat_right_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_regularIJRNS1_8full_posISD_EERNS1_15regular_sub_posISD_EERNS1_8leaf_posISD_EEEEEDcDpOT_:
   37|  2.98k|    {
   38|  2.98k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   39|  2.98k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_19concat_both_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_regularIJRNS1_15regular_sub_posISD_EERNS1_8leaf_posISD_EERNS1_8full_posISD_EEEEEDcDpOT_:
   37|  1.27k|    {
   38|  1.27k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   39|  1.27k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_19concat_both_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_regularIJRNS1_15regular_sub_posISD_EERNS1_8leaf_posISD_EESJ_EEEDcDpOT_:
   37|    963|    {
   38|    963|        return Deriv::visit_inner(std::forward<Args>(args)...);
   39|    963|    }
_ZN5immer6detail4rbts12visitor_baseINS1_19concat_both_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_regularIJRNS1_15regular_sub_posISD_EERNS1_8leaf_posISD_EERNS1_11relaxed_posISD_EEEEEDcDpOT_:
   37|  8.37k|    {
   38|  8.37k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   39|  8.37k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_20concat_right_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_relaxedIJRNS1_11relaxed_posISD_EESJ_RNS1_8leaf_posISD_EEEEEDcDpOT_:
   31|   184k|    {
   32|   184k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   33|   184k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_20concat_right_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_regularIJRNS1_15regular_sub_posISD_EERNS1_11relaxed_posISD_EERNS1_8leaf_posISD_EEEEEDcDpOT_:
   37|    212|    {
   38|    212|        return Deriv::visit_inner(std::forward<Args>(args)...);
   39|    212|    }
_ZN5immer6detail4rbts12visitor_baseINS1_19concat_left_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_relaxedIJRNS1_11relaxed_posISD_EERNS1_8leaf_posISD_EERNS1_15regular_sub_posISD_EEEEEDcDpOT_:
   31|  2.01k|    {
   32|  2.01k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   33|  2.01k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_20concat_right_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_regularIJRNS1_8full_posISD_EERNS1_11relaxed_posISD_EERNS1_8leaf_posISD_EEEEEDcDpOT_:
   37|  1.80k|    {
   38|  1.80k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   39|  1.80k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_19concat_both_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_relaxedIJRNS1_11relaxed_posISD_EERNS1_8leaf_posISD_EERNS1_8full_posISD_EEEEEDcDpOT_:
   31|    329|    {
   32|    329|        return Deriv::visit_inner(std::forward<Args>(args)...);
   33|    329|    }
_ZN5immer6detail4rbts12visitor_baseINS1_19concat_both_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_relaxedIJRNS1_11relaxed_posISD_EERNS1_8leaf_posISD_EERNS1_15regular_sub_posISD_EEEEEDcDpOT_:
   31|    589|    {
   32|    589|        return Deriv::visit_inner(std::forward<Args>(args)...);
   33|    589|    }
_ZN5immer6detail4rbts12visitor_baseINS1_19concat_both_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_relaxedIJRNS1_11relaxed_posISD_EERNS1_8leaf_posISD_EESJ_EEEDcDpOT_:
   31|   182k|    {
   32|   182k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   33|   182k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_26concat_trees_right_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_regularIJRNS1_15regular_sub_posISD_EERNS1_11relaxed_posISD_EERNS1_8leaf_posISD_EEEEEDcDpOT_:
   37|  3.11k|    {
   38|  3.11k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   39|  3.11k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_26concat_trees_right_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE11visit_innerIJRNS1_15regular_sub_posISD_EERNS1_11relaxed_posISD_EERNS1_8leaf_posISD_EEEEEDcDpOT_:
   43|  3.11k|    {
   44|  3.11k|        return Deriv::visit_node(std::forward<Args>(args)...);
   45|  3.11k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_25concat_trees_left_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_regularIJRNS1_15regular_sub_posISD_EENS1_8leaf_posISD_EERPSD_RjRmEEEDcDpOT_:
   37|  5.32k|    {
   38|  5.32k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   39|  5.32k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_25concat_trees_left_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE11visit_innerIJRNS1_15regular_sub_posISD_EENS1_8leaf_posISD_EERPSD_RjRmEEEDcDpOT_:
   43|  5.32k|    {
   44|  5.32k|        return Deriv::visit_node(std::forward<Args>(args)...);
   45|  5.32k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_26concat_trees_right_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_relaxedIJRNS1_11relaxed_posISD_EERNS1_15regular_sub_posISD_EERNS1_8leaf_posISD_EEEEEDcDpOT_:
   31|    647|    {
   32|    647|        return Deriv::visit_inner(std::forward<Args>(args)...);
   33|    647|    }
_ZN5immer6detail4rbts12visitor_baseINS1_26concat_trees_right_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE11visit_innerIJRNS1_11relaxed_posISD_EERNS1_15regular_sub_posISD_EERNS1_8leaf_posISD_EEEEEDcDpOT_:
   43|    647|    {
   44|    647|        return Deriv::visit_node(std::forward<Args>(args)...);
   45|    647|    }
_ZN5immer6detail4rbts12visitor_baseINS1_26concat_trees_right_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_regularIJRNS1_15regular_sub_posISD_EESJ_RNS1_8leaf_posISD_EEEEEDcDpOT_:
   37|  4.67k|    {
   38|  4.67k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   39|  4.67k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_26concat_trees_right_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE11visit_innerIJRNS1_15regular_sub_posISD_EESJ_RNS1_8leaf_posISD_EEEEEDcDpOT_:
   43|  4.67k|    {
   44|  4.67k|        return Deriv::visit_node(std::forward<Args>(args)...);
   45|  4.67k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_29concat_trees_left_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_regularIJRNS1_25singleton_regular_sub_posISD_EERNSB_5applyIS8_E4type4editESO_NS1_14empty_leaf_posISD_EESO_RPSD_RjRmEEEDcDpOT_:
   37|  7.93k|    {
   38|  7.93k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   39|  7.93k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_29concat_trees_left_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE11visit_innerIJRNS1_25singleton_regular_sub_posISD_EERNSB_5applyIS8_E4type4editESO_NS1_14empty_leaf_posISD_EESO_RPSD_RjRmEEEDcDpOT_:
   43|  7.93k|    {
   44|  7.93k|        return Deriv::visit_node(std::forward<Args>(args)...);
   45|  7.93k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_30concat_trees_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_relaxedIJRNS1_11relaxed_posISD_EERNSB_5applyIS8_E4type4editESO_RNS1_25singleton_regular_sub_posISD_EERNS1_14empty_leaf_posISD_EESO_EEEDcDpOT_:
   31|  4.20k|    {
   32|  4.20k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   33|  4.20k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_30concat_trees_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE11visit_innerIJRNS1_11relaxed_posISD_EERNSB_5applyIS8_E4type4editESO_RNS1_25singleton_regular_sub_posISD_EERNS1_14empty_leaf_posISD_EESO_EEEDcDpOT_:
   43|  4.20k|    {
   44|  4.20k|        return Deriv::visit_node(std::forward<Args>(args)...);
   45|  4.20k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_25concat_merger_mut_visitorEE13visit_relaxedIJRNS1_11relaxed_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_17concat_merger_mutISG_EERNSE_5applyISB_E4type4editEEEEDcDpOT_:
   31|  1.82M|    {
   32|  1.82M|        return Deriv::visit_inner(std::forward<Args>(args)...);
   33|  1.82M|    }
_ZN5immer6detail4rbts12visitor_baseINS1_24concat_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_relaxedIJRNS1_11relaxed_posISD_EERNSB_5applyIS8_E4type4editESO_RNS1_25singleton_regular_sub_posISD_EERNS1_14empty_leaf_posISD_EESO_EEEDcDpOT_:
   31|  14.4k|    {
   32|  14.4k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   33|  14.4k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_24concat_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_regularIJRNS1_15regular_sub_posISD_EERNSB_5applyIS8_E4type4editESO_RNS1_25singleton_regular_sub_posISD_EERNS1_14empty_leaf_posISD_EESO_EEEDcDpOT_:
   37|    278|    {
   38|    278|        return Deriv::visit_inner(std::forward<Args>(args)...);
   39|    278|    }
_ZN5immer6detail4rbts12visitor_baseINS1_24concat_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_regularIJRNS1_8full_posISD_EERNSB_5applyIS8_E4type4editESO_RNS1_25singleton_regular_sub_posISD_EERNS1_14empty_leaf_posISD_EESO_EEEDcDpOT_:
   37|  1.72k|    {
   38|  1.72k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   39|  1.72k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_25concat_merger_mut_visitorEE13visit_regularIJRNS1_8full_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_17concat_merger_mutISG_EERNSE_5applyISB_E4type4editEEEEDcDpOT_:
   37|   242k|    {
   38|   242k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   39|   242k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_25concat_merger_mut_visitorEE13visit_regularIJRNS1_15regular_sub_posINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEERNS1_17concat_merger_mutISG_EERNSE_5applyISB_E4type4editEEEEDcDpOT_:
   37|  56.4k|    {
   38|  56.4k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   39|  56.4k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_30concat_trees_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_regularIJRNS1_15regular_sub_posISD_EERNSB_5applyIS8_E4type4editESO_RNS1_25singleton_regular_sub_posISD_EERNS1_14empty_leaf_posISD_EESO_EEEDcDpOT_:
   37|  3.73k|    {
   38|  3.73k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   39|  3.73k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_30concat_trees_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE11visit_innerIJRNS1_15regular_sub_posISD_EERNSB_5applyIS8_E4type4editESO_RNS1_25singleton_regular_sub_posISD_EERNS1_14empty_leaf_posISD_EESO_EEEDcDpOT_:
   43|  3.73k|    {
   44|  3.73k|        return Deriv::visit_node(std::forward<Args>(args)...);
   45|  3.73k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_29concat_trees_left_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_relaxedIJRNS1_11relaxed_posISD_EERNSB_5applyIS8_E4type4editESO_NS1_8leaf_posISD_EESO_RPSD_RjRmEEEDcDpOT_:
   31|  66.5k|    {
   32|  66.5k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   33|  66.5k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_29concat_trees_left_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE11visit_innerIJRNS1_11relaxed_posISD_EERNSB_5applyIS8_E4type4editESO_NS1_8leaf_posISD_EESO_RPSD_RjRmEEEDcDpOT_:
   43|  66.5k|    {
   44|  66.5k|        return Deriv::visit_node(std::forward<Args>(args)...);
   45|  66.5k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_30concat_trees_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_relaxedIJRNS1_11relaxed_posISD_EERNSB_5applyIS8_E4type4editESO_SJ_RNS1_8leaf_posISD_EESO_EEEDcDpOT_:
   31|  60.1k|    {
   32|  60.1k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   33|  60.1k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_30concat_trees_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE11visit_innerIJRNS1_11relaxed_posISD_EERNSB_5applyIS8_E4type4editESO_SJ_RNS1_8leaf_posISD_EESO_EEEDcDpOT_:
   43|  60.1k|    {
   44|  60.1k|        return Deriv::visit_node(std::forward<Args>(args)...);
   45|  60.1k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_23concat_left_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_relaxedIJRNS1_11relaxed_posISD_EERNSB_5applyIS8_E4type4editESO_RNS1_8leaf_posISD_EESO_SJ_EEEDcDpOT_:
   31|  78.2k|    {
   32|  78.2k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   33|  78.2k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_23concat_left_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_regularIJRNS1_15regular_sub_posISD_EERNSB_5applyIS8_E4type4editESO_RNS1_8leaf_posISD_EESO_RNS1_11relaxed_posISD_EEEEEDcDpOT_:
   37|  5.08k|    {
   38|  5.08k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   39|  5.08k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_24concat_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_relaxedIJRNS1_11relaxed_posISD_EERNSB_5applyIS8_E4type4editESO_RNS1_15regular_sub_posISD_EERNS1_8leaf_posISD_EESO_EEEDcDpOT_:
   31|   144k|    {
   32|   144k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   33|   144k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_24concat_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_regularIJRNS1_15regular_sub_posISD_EERNSB_5applyIS8_E4type4editESO_SJ_RNS1_8leaf_posISD_EESO_EEEDcDpOT_:
   37|  1.89k|    {
   38|  1.89k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   39|  1.89k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_23concat_left_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_regularIJRNS1_15regular_sub_posISD_EERNSB_5applyIS8_E4type4editESO_RNS1_8leaf_posISD_EESO_SJ_EEEDcDpOT_:
   37|  2.24k|    {
   38|  2.24k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   39|  2.24k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_24concat_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_regularIJRNS1_8full_posISD_EERNSB_5applyIS8_E4type4editESO_RNS1_15regular_sub_posISD_EERNS1_8leaf_posISD_EESO_EEEDcDpOT_:
   37|  5.33k|    {
   38|  5.33k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   39|  5.33k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_23concat_both_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_regularIJRNS1_15regular_sub_posISD_EERNSB_5applyIS8_E4type4editESO_RNS1_8leaf_posISD_EESO_RNS1_8full_posISD_EEEEEDcDpOT_:
   37|  2.25k|    {
   38|  2.25k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   39|  2.25k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_23concat_both_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_regularIJRNS1_15regular_sub_posISD_EERNSB_5applyIS8_E4type4editESO_RNS1_8leaf_posISD_EESO_SJ_EEEDcDpOT_:
   37|  2.45k|    {
   38|  2.45k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   39|  2.45k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_23concat_both_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_regularIJRNS1_15regular_sub_posISD_EERNSB_5applyIS8_E4type4editESO_RNS1_8leaf_posISD_EESO_RNS1_11relaxed_posISD_EEEEEDcDpOT_:
   37|   138k|    {
   38|   138k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   39|   138k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_24concat_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_relaxedIJRNS1_11relaxed_posISD_EERNSB_5applyIS8_E4type4editESO_SJ_RNS1_8leaf_posISD_EESO_EEEDcDpOT_:
   31|   208k|    {
   32|   208k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   33|   208k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_24concat_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_regularIJRNS1_15regular_sub_posISD_EERNSB_5applyIS8_E4type4editESO_RNS1_11relaxed_posISD_EERNS1_8leaf_posISD_EESO_EEEDcDpOT_:
   37|  1.33k|    {
   38|  1.33k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   39|  1.33k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_23concat_left_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_relaxedIJRNS1_11relaxed_posISD_EERNSB_5applyIS8_E4type4editESO_RNS1_8leaf_posISD_EESO_RNS1_15regular_sub_posISD_EEEEEDcDpOT_:
   31|  10.8k|    {
   32|  10.8k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   33|  10.8k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_24concat_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_regularIJRNS1_8full_posISD_EERNSB_5applyIS8_E4type4editESO_RNS1_11relaxed_posISD_EERNS1_8leaf_posISD_EESO_EEEDcDpOT_:
   37|  2.40k|    {
   38|  2.40k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   39|  2.40k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_23concat_both_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_relaxedIJRNS1_11relaxed_posISD_EERNSB_5applyIS8_E4type4editESO_RNS1_8leaf_posISD_EESO_RNS1_8full_posISD_EEEEEDcDpOT_:
   31|    517|    {
   32|    517|        return Deriv::visit_inner(std::forward<Args>(args)...);
   33|    517|    }
_ZN5immer6detail4rbts12visitor_baseINS1_23concat_both_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_relaxedIJRNS1_11relaxed_posISD_EERNSB_5applyIS8_E4type4editESO_RNS1_8leaf_posISD_EESO_RNS1_15regular_sub_posISD_EEEEEDcDpOT_:
   31|  1.09k|    {
   32|  1.09k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   33|  1.09k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_23concat_both_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_relaxedIJRNS1_11relaxed_posISD_EERNSB_5applyIS8_E4type4editESO_RNS1_8leaf_posISD_EESO_SJ_EEEDcDpOT_:
   31|   175k|    {
   32|   175k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   33|   175k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_30concat_trees_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_regularIJRNS1_15regular_sub_posISD_EERNSB_5applyIS8_E4type4editESO_RNS1_11relaxed_posISD_EERNS1_8leaf_posISD_EESO_EEEDcDpOT_:
   37|  6.43k|    {
   38|  6.43k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   39|  6.43k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_30concat_trees_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE11visit_innerIJRNS1_15regular_sub_posISD_EERNSB_5applyIS8_E4type4editESO_RNS1_11relaxed_posISD_EERNS1_8leaf_posISD_EESO_EEEDcDpOT_:
   43|  6.43k|    {
   44|  6.43k|        return Deriv::visit_node(std::forward<Args>(args)...);
   45|  6.43k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_29concat_trees_left_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_regularIJRNS1_15regular_sub_posISD_EERNSB_5applyIS8_E4type4editESO_NS1_8leaf_posISD_EESO_RPSD_RjRmEEEDcDpOT_:
   37|  5.91k|    {
   38|  5.91k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   39|  5.91k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_29concat_trees_left_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE11visit_innerIJRNS1_15regular_sub_posISD_EERNSB_5applyIS8_E4type4editESO_NS1_8leaf_posISD_EESO_RPSD_RjRmEEEDcDpOT_:
   43|  5.91k|    {
   44|  5.91k|        return Deriv::visit_node(std::forward<Args>(args)...);
   45|  5.91k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_30concat_trees_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_relaxedIJRNS1_11relaxed_posISD_EERNSB_5applyIS8_E4type4editESO_RNS1_15regular_sub_posISD_EERNS1_8leaf_posISD_EESO_EEEDcDpOT_:
   31|  3.37k|    {
   32|  3.37k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   33|  3.37k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_30concat_trees_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE11visit_innerIJRNS1_11relaxed_posISD_EERNSB_5applyIS8_E4type4editESO_RNS1_15regular_sub_posISD_EERNS1_8leaf_posISD_EESO_EEEDcDpOT_:
   43|  3.37k|    {
   44|  3.37k|        return Deriv::visit_node(std::forward<Args>(args)...);
   45|  3.37k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_30concat_trees_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE13visit_regularIJRNS1_15regular_sub_posISD_EERNSB_5applyIS8_E4type4editESO_SJ_RNS1_8leaf_posISD_EESO_EEEDcDpOT_:
   37|  2.54k|    {
   38|  2.54k|        return Deriv::visit_inner(std::forward<Args>(args)...);
   39|  2.54k|    }
_ZN5immer6detail4rbts12visitor_baseINS1_30concat_trees_right_mut_visitorINS1_4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEEEE11visit_innerIJRNS1_15regular_sub_posISD_EERNSB_5applyIS8_E4type4editESO_SJ_RNS1_8leaf_posISD_EESO_EEEDcDpOT_:
   43|  2.54k|    {
   44|  2.54k|        return Deriv::visit_node(std::forward<Args>(args)...);
   45|  2.54k|    }

_ZN5immer6detail15auto_const_castINS_18no_refcount_policyEEERT_RKS3_:
   45|  25.5M|{
   46|  25.5M|    return const_cast<T&>(x);
   47|  25.5M|}
_ZN5immer6detail9destroy_nIPijEENSt3__19enable_ifIX20can_trivially_detroyIT_EES5_E4typeES5_T0_:
   90|  3.32k|{
   91|  3.32k|    return first + n;
   92|  3.32k|}
_ZN5immer6detail18uninitialized_copyIPiS2_S2_EENSt3__19enable_ifIX18can_trivially_copyIT_T1_EES6_E4typeES5_T0_S6_:
  138|  2.88M|{
  139|  2.88M|    return std::copy(first, last, out);
  140|  2.88M|}
_ZN5immer6detail9static_ifILb0EPNS0_4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEZNSC_15make_inner_sr_nEjPNS0_3csl10member_twoINSC_14relaxed_data_tENSE_7inheritIS8_NSE_6memberINSA_5applyIS7_E4type5owneeEvE4typeEE4typeEE4typeEEUlT_E_ZNSC_15make_inner_sr_nEjST_EUlSU_E0_EENSt3__19enable_ifIXntT_ET0_E4typeEOT1_OT2_:
  245|  41.4k|{
  246|  41.4k|    return std::forward<F2>(f2)(empty_t{});
  247|  41.4k|}
_ZN5immer6detail4ipowImEET_S2_j:
  225|  78.1M|{
  226|  78.1M|    return pow == 0 ? 1 : num * ipow(num, pow - 1);
  ------------------
  |  Branch (226:12): [True: 2.44M, False: 75.7M]
  ------------------
  227|  78.1M|}
_ZN5immer6detail9static_ifILb0EPNS0_3csl10member_twoINS0_4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE14relaxed_data_tENS2_7inheritISA_NS2_6memberINSC_5applyIS9_E4type5owneeEvE4typeEE4typeEE4typeEZNSE_24ensure_mutable_relaxed_nENSK_4editEjEUlT_E_ZNSE_24ensure_mutable_relaxed_nEST_jEUlSU_E0_EENSt3__19enable_ifIXntT_ET0_E4typeEOT1_OT2_:
  245|  1.05M|{
  246|  1.05M|    return std::forward<F2>(f2)(empty_t{});
  247|  1.05M|}
_ZN5immer6detail9static_ifILb1EZNS0_4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE14make_inner_r_eENSA_5applyIS7_E4type4editEEUlT_E_EENSt3__19enable_ifIXT_EvE4typeEOT0_:
  231|   794k|{
  232|   794k|    std::forward<F>(f)(empty_t{});
  233|   794k|}
_ZN5immer6detail9static_ifILb0EPNS0_4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEEZNSC_15make_inner_sr_eENSA_5applyIS7_E4type4editEPNS0_3csl10member_twoINSC_14relaxed_data_tENSI_7inheritIS8_NSI_6memberINSG_5owneeEvE4typeEE4typeEE4typeEEUlT_E_ZNSC_15make_inner_sr_eESH_SU_EUlSV_E0_EENSt3__19enable_ifIXntT_ET0_E4typeEOT1_OT2_:
  245|  10.2k|{
  246|  10.2k|    return std::forward<F2>(f2)(empty_t{});
  247|  10.2k|}
_ZN5immer6detail9destroy_nIPimEENSt3__19enable_ifIX20can_trivially_detroyIT_EES5_E4typeES5_T0_:
   90|    503|{
   91|    503|    return first + n;
   92|    503|}
_ZN5immer6detail9static_ifILb0EPNS0_3csl10member_twoINS0_4rbts4nodeIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE14relaxed_data_tENS2_7inheritISA_NS2_6memberINSC_5applyIS9_E4type5owneeEvE4typeEE4typeEE4typeEZNSE_24ensure_mutable_relaxed_eENSK_4editEST_EUlT_E_ZNSE_24ensure_mutable_relaxed_eEST_ST_EUlSU_E0_EENSt3__19enable_ifIXntT_ET0_E4typeEOT1_OT2_:
  245|   186k|{
  246|   186k|    return std::forward<F2>(f2)(empty_t{});
  247|   186k|}
_ZN5immer6detail18uninitialized_moveIPiS2_EENSt3__19enable_ifIX18can_trivially_copyIT_T0_EES6_E4typeES5_S5_S6_:
  112|  2.06k|{
  113|  2.06k|    return std::copy(first, last, out);
  114|  2.06k|}

_ZN5immer11flex_vectorIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEC2Ev:
   96|  34.3k|    flex_vector() = default;
_ZNKR5immer11flex_vectorIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE9transientEv:
  503|  91.9k|    IMMER_NODISCARD transient_type transient() const& { return impl_; }
_ZN5immer11flex_vectorIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEC2ENS_6detail4rbts7rrbtreeIiS8_Lj2ELj2EEE:
  532|   207k|    {
  533|       |#if IMMER_DEBUG_PRINT
  534|       |        // force the compiler to generate debug_print, so we can call
  535|       |        // it from a debugger
  536|       |        [](volatile auto) {}(&flex_vector::debug_print);
  537|       |#endif
  538|   207k|    }
_ZNKR5immer11flex_vectorIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE9push_backEi:
  242|  74.8k|    {
  243|  74.8k|        return impl_.push_back(std::move(value));
  244|  74.8k|    }
_ZNK5immer11flex_vectorIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE4sizeEv:
  177|   170k|    IMMER_NODISCARD size_type size() const { return impl_.size; }
flex-vector-gc.cpp:_ZNKR5immer11flex_vectorIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE6updateIZZ22LLVMFuzzerTestOneInputENK3$_5clI12fuzzer_inputEEDaRT_EUlSE_E_EES9_mOSE_:
  319|  8.03k|    {
  320|  8.03k|        return impl_.update(index, std::forward<FnT>(fn));
  321|  8.03k|    }
_ZNKR5immer11flex_vectorIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE4takeEm:
  346|  11.8k|    {
  347|  11.8k|        return impl_.take(elems);
  348|  11.8k|    }
_ZNKR5immer11flex_vectorIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE4dropEm:
  372|  26.8k|    {
  373|  26.8k|        return impl_.drop(elems);
  374|  26.8k|    }
_ZN5immer11flex_vectorIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE8max_sizeEv:
   90|  2.38M|    constexpr static size_type max_size() { return impl_t::max_size(); }
_ZN5immerplERKNS_11flex_vectorIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEESB_:
  399|  58.7k|    {
  400|  58.7k|        return l.impl_.concat(r.impl_);
  401|  58.7k|    }

_ZN5immer21flex_vector_transientIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEC2Ev:
   71|  43.3k|    flex_vector_transient() = default;
_ZN5immer21flex_vector_transientIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EEC2ENS_6detail4rbts7rrbtreeIiS8_Lj2ELj2EEE:
  243|  91.9k|    {}
_ZNR5immer21flex_vector_transientIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE10persistentEv:
  232|  27.2k|    {
  233|  27.2k|        this->owner_t::operator=(owner_t{});
  234|  27.2k|        return impl_;
  235|  27.2k|    }
_ZN5immer21flex_vector_transientIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE9push_backEi:
  155|  47.4k|    {
  156|  47.4k|        impl_.push_back_mut(*this, std::move(value));
  157|  47.4k|    }
_ZNK5immer21flex_vector_transientIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE4sizeEv:
  126|  4.73M|    IMMER_NODISCARD size_type size() const { return impl_.size; }
flex-vector-gc.cpp:_ZN5immer21flex_vector_transientIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE6updateIZZ22LLVMFuzzerTestOneInputENK3$_5clI12fuzzer_inputEEDaRT_EUlSE_E0_EEvmOSE_:
  179|  10.1k|    {
  180|  10.1k|        impl_.update_mut(*this, index, std::forward<FnT>(fn));
  181|  10.1k|    }
_ZN5immer21flex_vector_transientIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE4takeEm:
  188|  39.3k|    void take(size_type elems) { impl_.take_mut(*this, elems); }
_ZN5immer21flex_vector_transientIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE7prependERS9_:
  218|  34.8k|    {
  219|  34.8k|        l.owner_t::operator=(owner_t{});
  220|  34.8k|        concat_mut_r(l.impl_, impl_, *this);
  221|  34.8k|    }
_ZN5immer21flex_vector_transientIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE7prependEOS9_:
  223|  3.49k|    {
  224|  3.49k|        concat_mut_lr_r(l.impl_, l, impl_, *this);
  225|  3.49k|    }
_ZN5immer21flex_vector_transientIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE6appendERS9_:
  203|  2.27M|    {
  204|  2.27M|        r.owner_t::operator=(owner_t{});
  205|  2.27M|        concat_mut_l(impl_, *this, r.impl_);
  206|  2.27M|    }
_ZN5immer21flex_vector_transientIiNS_13memory_policyINS_11heap_policyINS_7gc_heapEEENS_18no_refcount_policyENS_15spinlock_policyENS_20gc_transience_policyELb0ELb0EEELj2ELj2EE6appendEOS9_:
  208|  5.49k|    {
  209|  5.49k|        concat_mut_lr_l(impl_, *this, r.impl_, r);
  210|  5.49k|    }

_ZN5immer7gc_heap8allocateEmNS_10norefs_tagE:
  115|  4.01M|    {
  116|  4.01M|        IMMER_GC_INIT_GUARD_;
  117|  4.01M|        auto p = GC_malloc_atomic(n);
  118|  4.01M|        if (IMMER_UNLIKELY(!p))
  ------------------
  |  |  108|  4.01M|#define IMMER_UNLIKELY(cond) __builtin_expect(!!(cond), 0)
  |  |  ------------------
  |  |  |  Branch (108:30): [True: 0, False: 4.01M]
  |  |  ------------------
  ------------------
  119|      0|            IMMER_THROW(std::bad_alloc{});
  ------------------
  |  |   43|      0|#define IMMER_THROW(expr) throw expr
  ------------------
  120|  4.01M|        return p;
  121|  4.01M|    }
_ZN5immer7gc_heap8allocateEm:
  106|  4.04M|    {
  107|  4.04M|        IMMER_GC_INIT_GUARD_;
  108|  4.04M|        auto p = GC_malloc(n);
  109|  4.04M|        if (IMMER_UNLIKELY(!p))
  ------------------
  |  |  108|  4.04M|#define IMMER_UNLIKELY(cond) __builtin_expect(!!(cond), 0)
  |  |  ------------------
  |  |  |  Branch (108:30): [True: 0, False: 4.04M]
  |  |  ------------------
  ------------------
  110|      0|            IMMER_THROW(std::bad_alloc{});
  ------------------
  |  |   43|      0|#define IMMER_THROW(expr) throw expr
  ------------------
  111|  4.04M|        return p;
  112|  4.04M|    }

_ZN5immer18no_refcount_policyC2Ev:
   22|  5.59M|    no_refcount_policy(){};
_ZN5immer18no_refcount_policy3incEv:
   25|  4.83M|    void inc() {}
_ZN5immer18no_refcount_policy3decEv:
   26|  2.13M|    bool dec() { return false; }
_ZN5immer18no_refcount_policy6uniqueEv:
   27|  18.5M|    bool unique() { return false; }

_ZN5immer20gc_transience_policy5applyINS_11heap_policyINS_7gc_heapEEEE4type4editC2EPv:
   45|  12.6M|                {}
_ZN5immer20gc_transience_policy5applyINS_11heap_policyINS_7gc_heapEEEE4type5ownerC2Ev:
   64|  2.47M|                {}
_ZN5immer20gc_transience_policy5applyINS_11heap_policyINS_7gc_heapEEEE4type5owner11make_token_Ev:
   54|  2.47M|                {
   55|  2.47M|                    return heap_::allocate(1, norefs_tag{});
   56|  2.47M|                };
_ZNK5immer20gc_transience_policy5applyINS_11heap_policyINS_7gc_heapEEEE4type4editneES7_:
   48|  4.03M|                bool operator!=(edit x) const { return v != x.v; }
_ZN5immer20gc_transience_policy5applyINS_11heap_policyINS_7gc_heapEEEE4type5owneraSEOS7_:
   80|  2.43M|                {
   81|  2.43M|                    token_ = o.token_.load();
   82|  2.43M|                    return *this;
   83|  2.43M|                }
_ZNK5immer20gc_transience_policy5applyINS_11heap_policyINS_7gc_heapEEEE4type5ownee10can_mutateENS6_4editE:
  100|  18.5M|                bool can_mutate(edit t) const { return token_ == t; }
_ZNK5immer20gc_transience_policy5applyINS_11heap_policyINS_7gc_heapEEEE4type4editeqES7_:
   47|  18.5M|                bool operator==(edit x) const { return v == x.v; }
_ZN5immer20gc_transience_policy5applyINS_11heap_policyINS_7gc_heapEEEE4type5owneeaSENS6_4editE:
   91|  4.03M|                {
   92|  4.03M|                    assert(e != noone);
   93|       |                    // This would be a nice safety plug but it sadly
   94|       |                    // does not hold during transient concatenation.
   95|       |                    // assert(token_ == e || token_ == edit{nullptr});
   96|      0|                    token_ = e;
   97|  4.03M|                    return *this;
   98|  4.03M|                }
_ZN5immer20gc_transience_policy5applyINS_11heap_policyINS_7gc_heapEEEE4type5ownercvNS6_4editEEv:
   60|  7.09M|                operator edit() { return {token_}; }

