LLVMFuzzerTestOneInput:
   13|    394|{
   14|    394|    std::string input(reinterpret_cast<const char*>(data), size);
   15|    394|    std::istringstream is(input);
   16|    394|    try {
   17|    394|       json j2 = ubjson::decode_ubjson<json>(is);
   18|    394|    }
   19|    394|    catch(const jsoncons::ser_error&) {}
   20|       |
   21|    394|    return 0;
   22|    394|}

_ZNK8jsoncons16allocator_holderINSt3__19allocatorIcEEE13get_allocatorEv:
   31|  24.2M|    {
   32|  24.2M|        return alloc_;
   33|  24.2M|    }
_ZN8jsoncons16allocator_holderINSt3__19allocatorIcEEEC2ERKS3_:
   27|  16.1M|        {}

_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEED2Ev:
 3796|   166M|        {
 3797|   166M|             destroy();
 3798|   166M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE7destroyEv:
 2215|   180M|        {
 2216|   180M|            switch (storage_kind())
 2217|   180M|            {
 2218|  1.51k|                case json_storage_kind::long_string_value:
  ------------------
  |  Branch (2218:17): [True: 1.51k, False: 180M]
  ------------------
 2219|  1.51k|                    destroy_var<long_string_storage>();
 2220|  1.51k|                    break;
 2221|      0|                case json_storage_kind::byte_string_value:
  ------------------
  |  Branch (2221:17): [True: 0, False: 180M]
  ------------------
 2222|      0|                    destroy_var<byte_string_storage>();
 2223|      0|                    break;
 2224|  3.47M|                case json_storage_kind::array_value:
  ------------------
  |  Branch (2224:17): [True: 3.47M, False: 176M]
  ------------------
 2225|  3.47M|                    destroy_var<array_storage>();
 2226|  3.47M|                    break;
 2227|  4.62M|                case json_storage_kind::object_value:
  ------------------
  |  Branch (2227:17): [True: 4.62M, False: 175M]
  ------------------
 2228|  4.62M|                    destroy_var<object_storage>();
 2229|  4.62M|                    break;
 2230|   172M|                default:
  ------------------
  |  Branch (2230:17): [True: 172M, False: 8.09M]
  ------------------
 2231|   172M|                    break;
 2232|   180M|            }
 2233|   180M|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE12storage_kindEv:
 2839|   479M|        {
 2840|       |            // It is legal to access 'common_stor_.storage_kind_' even though 
 2841|       |            // common_stor_ is not the active member of the union because 'storage_kind_' 
 2842|       |            // is a part of the common initial sequence of all union members
 2843|       |            // as defined in 11.4-25 of the Standard.
 2844|   479M|            return static_cast<json_storage_kind>(common_stor_.storage_kind_);
 2845|   479M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE11destroy_varINS5_19long_string_storageEEEvv:
 2243|  1.51k|        {
 2244|  1.51k|            cast<T>().~T();
 2245|  1.51k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_19long_string_storageEEERT_v:
 2252|  9.26k|        {
 2253|  9.26k|            return cast(identity<T>());
 2254|  9.26k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_19long_string_storageEEE:
 2343|  9.26k|        {
 2344|  9.26k|            return long_string_stor_;
 2345|  9.26k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19long_string_storageD2Ev:
  733|  1.51k|            {
  734|  1.51k|                heap_string_factory_type::destroy(ptr_);
  735|  1.51k|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE11destroy_varINS5_13array_storageEEEvv:
 2243|  3.47M|        {
 2244|  3.47M|            cast<T>().~T();
 2245|  3.47M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_13array_storageEEERT_v:
 2252|  41.9M|        {
 2253|  41.9M|            return cast(identity<T>());
 2254|  41.9M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_13array_storageEEE:
 2373|  41.9M|        {
 2374|  41.9M|            return array_stor_;
 2375|  41.9M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE13array_storageD2Ev:
  990|  3.47M|            {
  991|  3.47M|                if (ptr_ != nullptr)
  ------------------
  |  Branch (991:21): [True: 3.47M, False: 37]
  ------------------
  992|  3.47M|                {
  993|  3.47M|                    destroy();
  994|  3.47M|                }
  995|  3.47M|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE13array_storage7destroyEv:
  924|  3.47M|            {
  925|  3.47M|                array_allocator alloc(ptr_->get_allocator());
  926|  3.47M|                std::allocator_traits<array_allocator>::destroy(alloc, extension_traits::to_plain_pointer(ptr_));
  927|  3.47M|                std::allocator_traits<array_allocator>::deallocate(alloc, ptr_,1);
  928|  3.47M|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEC2EOS5_:
 3497|   119M|        {
 3498|   119M|            uninitialized_move(std::move(other));
 3499|   119M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE18uninitialized_moveEOS5_:
 2537|   120M|        {
 2538|   120M|            switch (other.storage_kind())
 2539|   120M|            {
 2540|  83.2M|                case json_storage_kind::null_value:
  ------------------
  |  Branch (2540:17): [True: 83.2M, False: 36.7M]
  ------------------
 2541|  83.2M|                case json_storage_kind::empty_object_value:
  ------------------
  |  Branch (2541:17): [True: 0, False: 120M]
  ------------------
 2542|  83.2M|                case json_storage_kind::half_value:
  ------------------
  |  Branch (2542:17): [True: 0, False: 120M]
  ------------------
 2543|  83.5M|                case json_storage_kind::double_value:
  ------------------
  |  Branch (2543:17): [True: 278k, False: 119M]
  ------------------
 2544|  87.5M|                case json_storage_kind::int64_value:
  ------------------
  |  Branch (2544:17): [True: 3.98M, False: 116M]
  ------------------
 2545|  92.4M|                case json_storage_kind::uint64_value:
  ------------------
  |  Branch (2545:17): [True: 4.98M, False: 115M]
  ------------------
 2546|   101M|                case json_storage_kind::bool_value:
  ------------------
  |  Branch (2546:17): [True: 8.94M, False: 111M]
  ------------------
 2547|   105M|                case json_storage_kind::short_string_value:
  ------------------
  |  Branch (2547:17): [True: 4.10M, False: 115M]
  ------------------
 2548|   105M|                case json_storage_kind::json_const_pointer:
  ------------------
  |  Branch (2548:17): [True: 0, False: 120M]
  ------------------
 2549|   105M|                    uninitialized_copy(other);
 2550|   105M|                    break;
 2551|       |                    
 2552|  3.12k|                case json_storage_kind::long_string_value:
  ------------------
  |  Branch (2552:17): [True: 3.12k, False: 120M]
  ------------------
 2553|  3.12k|                    construct<long_string_storage>(std::move(other.cast<long_string_storage>()));
 2554|  3.12k|                    break;
 2555|      0|                case json_storage_kind::byte_string_value:
  ------------------
  |  Branch (2555:17): [True: 0, False: 120M]
  ------------------
 2556|      0|                    construct<byte_string_storage>(std::move(other.cast<byte_string_storage>()));
 2557|      0|                    break;
 2558|  6.29M|                case json_storage_kind::array_value:
  ------------------
  |  Branch (2558:17): [True: 6.29M, False: 113M]
  ------------------
 2559|  6.29M|                    construct<array_storage>(std::move(other.cast<array_storage>()));
 2560|  6.29M|                    break;
 2561|  8.18M|                case json_storage_kind::object_value:
  ------------------
  |  Branch (2561:17): [True: 8.18M, False: 111M]
  ------------------
 2562|  8.18M|                    construct<object_storage>(std::move(other.cast<object_storage>()));
 2563|  8.18M|                    break;
 2564|       |                    
 2565|      0|                default:
  ------------------
  |  Branch (2565:17): [True: 0, False: 120M]
  ------------------
 2566|      0|                    JSONCONS_UNREACHABLE();
  ------------------
  |  |   46|      0|#define JSONCONS_UNREACHABLE() __builtin_unreachable()
  ------------------
 2567|      0|                    break;
 2568|   120M|            }
 2569|   120M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE18uninitialized_copyERKS5_:
 2455|   119M|        {
 2456|   119M|            switch (other.storage_kind())
 2457|   119M|            {
 2458|  97.3M|                case json_storage_kind::null_value:
  ------------------
  |  Branch (2458:17): [True: 97.3M, False: 22.3M]
  ------------------
 2459|  97.3M|                    construct<null_storage>(other.cast<null_storage>());
 2460|  97.3M|                    break;
 2461|      0|                case json_storage_kind::empty_object_value:
  ------------------
  |  Branch (2461:17): [True: 0, False: 119M]
  ------------------
 2462|      0|                    construct<empty_object_storage>(other.cast<empty_object_storage>());
 2463|      0|                    break;
 2464|  8.95M|                case json_storage_kind::bool_value:
  ------------------
  |  Branch (2464:17): [True: 8.95M, False: 110M]
  ------------------
 2465|  8.95M|                    construct<bool_storage>(other.cast<bool_storage>());
 2466|  8.95M|                    break;
 2467|  4.01M|                case json_storage_kind::int64_value:
  ------------------
  |  Branch (2467:17): [True: 4.01M, False: 115M]
  ------------------
 2468|  4.01M|                    construct<int64_storage>(other.cast<int64_storage>());
 2469|  4.01M|                    break;
 2470|  4.99M|                case json_storage_kind::uint64_value:
  ------------------
  |  Branch (2470:17): [True: 4.99M, False: 114M]
  ------------------
 2471|  4.99M|                    construct<uint64_storage>(other.cast<uint64_storage>());
 2472|  4.99M|                    break;
 2473|      0|                case json_storage_kind::half_value:
  ------------------
  |  Branch (2473:17): [True: 0, False: 119M]
  ------------------
 2474|      0|                    construct<half_storage>(other.cast<half_storage>());
 2475|      0|                    break;
 2476|   280k|                case json_storage_kind::double_value:
  ------------------
  |  Branch (2476:17): [True: 280k, False: 119M]
  ------------------
 2477|   280k|                    construct<double_storage>(other.cast<double_storage>());
 2478|   280k|                    break;
 2479|  4.10M|                case json_storage_kind::short_string_value:
  ------------------
  |  Branch (2479:17): [True: 4.10M, False: 115M]
  ------------------
 2480|  4.10M|                    construct<short_string_storage>(other.cast<short_string_storage>());
 2481|  4.10M|                    break;
 2482|      0|                case json_storage_kind::long_string_value:
  ------------------
  |  Branch (2482:17): [True: 0, False: 119M]
  ------------------
 2483|      0|                    construct<long_string_storage>(other.cast<long_string_storage>());
 2484|      0|                    break;
 2485|      0|                case json_storage_kind::byte_string_value:
  ------------------
  |  Branch (2485:17): [True: 0, False: 119M]
  ------------------
 2486|      0|                    construct<byte_string_storage>(other.cast<byte_string_storage>());
 2487|      0|                    break;
 2488|      0|                case json_storage_kind::object_value:
  ------------------
  |  Branch (2488:17): [True: 0, False: 119M]
  ------------------
 2489|      0|                    construct<object_storage>(other.cast<object_storage>());
 2490|      0|                    break;
 2491|      0|                case json_storage_kind::array_value:
  ------------------
  |  Branch (2491:17): [True: 0, False: 119M]
  ------------------
 2492|      0|                    construct<array_storage>(other.cast<array_storage>());
 2493|      0|                    break;
 2494|      0|                case json_storage_kind::json_const_pointer:
  ------------------
  |  Branch (2494:17): [True: 0, False: 119M]
  ------------------
 2495|      0|                    construct<json_const_pointer_storage>(other.cast<json_const_pointer_storage>());
 2496|      0|                    break;
 2497|      0|                default:
  ------------------
  |  Branch (2497:17): [True: 0, False: 119M]
  ------------------
 2498|      0|                    JSONCONS_UNREACHABLE();
  ------------------
  |  |   46|      0|#define JSONCONS_UNREACHABLE() __builtin_unreachable()
  ------------------
 2499|      0|                    break;
 2500|   119M|            }
 2501|   119M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_12null_storageEJRKS7_EEEvDpOT0_:
 2237|  97.3M|        {
 2238|  97.3M|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  97.3M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_12null_storageEEERT_v:
 2252|   124M|        {
 2253|   124M|            return cast(identity<T>());
 2254|   124M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_12null_storageEEE:
 2263|   124M|        {
 2264|   124M|            return null_stor_;
 2265|   124M|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_12null_storageEEERKT_v:
 2258|  97.3M|        {
 2259|  97.3M|            return cast(identity<T>());
 2260|  97.3M|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_12null_storageEEE:
 2268|  97.3M|        {
 2269|  97.3M|            return null_stor_;
 2270|  97.3M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_20empty_object_storageEEERT_v:
 2252|    602|        {
 2253|    602|            return cast(identity<T>());
 2254|    602|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_20empty_object_storageEEE:
 2273|    602|        {
 2274|    602|            return empty_object_stor_;
 2275|    602|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_12bool_storageEJRKS7_EEEvDpOT0_:
 2237|  8.95M|        {
 2238|  8.95M|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  8.95M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_12bool_storageEEERT_v:
 2252|  12.3M|        {
 2253|  12.3M|            return cast(identity<T>());
 2254|  12.3M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_12bool_storageEEE:
 2283|  12.3M|        {
 2284|  12.3M|            return bool_stor_;
 2285|  12.3M|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_12bool_storageEEERKT_v:
 2258|  8.95M|        {
 2259|  8.95M|            return cast(identity<T>());
 2260|  8.95M|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_12bool_storageEEE:
 2288|  8.95M|        {
 2289|  8.95M|            return bool_stor_;
 2290|  8.95M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_13int64_storageEJRKS7_EEEvDpOT0_:
 2237|  4.01M|        {
 2238|  4.01M|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  4.01M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_13int64_storageEEERT_v:
 2252|  6.05M|        {
 2253|  6.05M|            return cast(identity<T>());
 2254|  6.05M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_13int64_storageEEE:
 2293|  6.05M|        {
 2294|  6.05M|            return int64_stor_;
 2295|  6.05M|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_13int64_storageEEERKT_v:
 2258|  4.01M|        {
 2259|  4.01M|            return cast(identity<T>());
 2260|  4.01M|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_13int64_storageEEE:
 2298|  4.01M|        {
 2299|  4.01M|            return int64_stor_;
 2300|  4.01M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_14uint64_storageEJRKS7_EEEvDpOT0_:
 2237|  4.99M|        {
 2238|  4.99M|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  4.99M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_14uint64_storageEEERT_v:
 2252|  7.53M|        {
 2253|  7.53M|            return cast(identity<T>());
 2254|  7.53M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_14uint64_storageEEE:
 2303|  7.53M|        {
 2304|  7.53M|            return uint64_stor_;
 2305|  7.53M|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_14uint64_storageEEERKT_v:
 2258|  4.99M|        {
 2259|  4.99M|            return cast(identity<T>());
 2260|  4.99M|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_14uint64_storageEEE:
 2308|  4.99M|        {
 2309|  4.99M|            return uint64_stor_;
 2310|  4.99M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_14double_storageEJRKS7_EEEvDpOT0_:
 2237|   280k|        {
 2238|   280k|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|   280k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_14double_storageEEERT_v:
 2252|   428k|        {
 2253|   428k|            return cast(identity<T>());
 2254|   428k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_14double_storageEEE:
 2323|   428k|        {
 2324|   428k|            return double_stor_;
 2325|   428k|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_14double_storageEEERKT_v:
 2258|   280k|        {
 2259|   280k|            return cast(identity<T>());
 2260|   280k|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_14double_storageEEE:
 2328|   280k|        {
 2329|   280k|            return double_stor_;
 2330|   280k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_20short_string_storageEJRKS7_EEEvDpOT0_:
 2237|  4.10M|        {
 2238|  4.10M|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  4.10M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_20short_string_storageEEERT_v:
 2252|  7.01M|        {
 2253|  7.01M|            return cast(identity<T>());
 2254|  7.01M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_20short_string_storageEEE:
 2333|  7.01M|        {
 2334|  7.01M|            return short_string_stor_;
 2335|  7.01M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE20short_string_storageC2ERKS6_:
  621|  4.10M|            {
  622|  4.10M|                std::memcpy(data_,other.data_,other.small_string_length_*sizeof(char_type));
  623|  4.10M|                data_[small_string_length_] = 0;
  624|  4.10M|            }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_20short_string_storageEEERKT_v:
 2258|  4.10M|        {
 2259|  4.10M|            return cast(identity<T>());
 2260|  4.10M|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_20short_string_storageEEE:
 2338|  4.10M|        {
 2339|  4.10M|            return short_string_stor_;
 2340|  4.10M|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_14object_storageEEERKT_v:
 2258|  2.33k|        {
 2259|  2.33k|            return cast(identity<T>());
 2260|  2.33k|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_14object_storageEEE:
 2368|  2.33k|        {
 2369|  2.33k|            return object_stor_;
 2370|  2.33k|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_13array_storageEEERKT_v:
 2258|  15.3k|        {
 2259|  15.3k|            return cast(identity<T>());
 2260|  15.3k|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_13array_storageEEE:
 2378|  15.3k|        {
 2379|  15.3k|            return array_stor_;
 2380|  15.3k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_19long_string_storageEJS7_EEEvDpOT0_:
 2237|  3.12k|        {
 2238|  3.12k|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  3.12k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19long_string_storageC2EOS6_:
  684|  3.12k|            {
  685|  3.12k|                ptr_ = other.ptr_;
  686|  3.12k|                other.ptr_ = nullptr;
  687|  3.12k|                other.tag_ = semantic_tag::none;
  688|  3.12k|                other.storage_kind_ = static_cast<uint8_t>(json_storage_kind::null_value);
  689|  3.12k|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_13array_storageEJS7_EEEvDpOT0_:
 2237|  6.29M|        {
 2238|  6.29M|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  6.29M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE13array_storageC2EOS6_:
  957|  6.29M|            {
  958|  6.29M|                std::swap(other.ptr_, ptr_);
  959|       |
  960|  6.29M|                other.storage_kind_ = static_cast<uint8_t>(json_storage_kind::null_value);
  961|  6.29M|                other.small_string_length_ = 0;
  962|  6.29M|                other.tag_ = semantic_tag::none;
  963|  6.29M|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_14object_storageEJS7_EEEvDpOT0_:
 2237|  8.18M|        {
 2238|  8.18M|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  8.18M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE14object_storageC2EOS6_:
 1110|  8.18M|            {
 1111|  8.18M|                ptr_ = other.ptr_;
 1112|  8.18M|                other.ptr_ = nullptr;
 1113|  8.18M|                other.storage_kind_ = static_cast<uint8_t>(json_storage_kind::null_value);
 1114|  8.18M|                other.small_string_length_ = 0;
 1115|  8.18M|                other.tag_ = semantic_tag::none;
 1116|  8.18M|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_14object_storageEEERT_v:
 2252|  25.6M|        {
 2253|  25.6M|            return cast(identity<T>());
 2254|  25.6M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_14object_storageEEE:
 2363|  25.6M|        {
 2364|  25.6M|            return object_stor_;
 2365|  25.6M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE11array_rangeEv:
 5930|  13.8k|        {
 5931|  13.8k|            switch (storage_kind())
 5932|  13.8k|            {
 5933|  13.8k|                case json_storage_kind::array_value:
  ------------------
  |  Branch (5933:17): [True: 13.8k, False: 0]
  ------------------
 5934|  13.8k|                    return range<array_iterator, const_array_iterator>(cast<array_storage>().value().begin(),
 5935|  13.8k|                        cast<array_storage>().value().end());
 5936|      0|                default:
  ------------------
  |  Branch (5936:17): [True: 0, False: 13.8k]
  ------------------
 5937|      0|                    JSONCONS_THROW(json_runtime_error<std::domain_error>("Not an array"));
  ------------------
  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  ------------------
 5938|  13.8k|            }
 5939|  13.8k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE13array_storage5valueEv:
 1039|  22.4M|            {
 1040|  22.4M|                return *ptr_;
 1041|  22.4M|            }
_ZN8jsoncons5rangeINSt3__111__wrap_iterIPNS_10basic_jsonIcNS_13sorted_policyENS1_9allocatorIcEEEEEENS2_IPKS7_EEEC2ERKS9_SF_:
  346|  13.8k|        {
  347|  13.8k|        }
_ZN8jsoncons5rangeINSt3__111__wrap_iterIPNS_10basic_jsonIcNS_13sorted_policyENS1_9allocatorIcEEEEEENS2_IPKS7_EEE5beginEv:
  350|  13.8k|        {
  351|  13.8k|            return first_;
  352|  13.8k|        }
_ZN8jsoncons5rangeINSt3__111__wrap_iterIPNS_10basic_jsonIcNS_13sorted_policyENS1_9allocatorIcEEEEEENS2_IPKS7_EEE3endEv:
  354|  13.8k|        {
  355|  13.8k|            return last_;
  356|  13.8k|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4sizeEv:
 2897|  16.9M|        {
 2898|  16.9M|            switch (storage_kind())
 2899|  16.9M|            {
 2900|  11.3k|                case json_storage_kind::array_value:
  ------------------
  |  Branch (2900:17): [True: 11.3k, False: 16.9M]
  ------------------
 2901|  11.3k|                    return cast<array_storage>().value().size();
 2902|      0|                case json_storage_kind::empty_object_value:
  ------------------
  |  Branch (2902:17): [True: 0, False: 16.9M]
  ------------------
 2903|      0|                    return 0;
 2904|  1.77k|                case json_storage_kind::object_value:
  ------------------
  |  Branch (2904:17): [True: 1.77k, False: 16.9M]
  ------------------
 2905|  1.77k|                    return cast<object_storage>().value().size();
 2906|      0|                case json_storage_kind::json_const_pointer:
  ------------------
  |  Branch (2906:17): [True: 0, False: 16.9M]
  ------------------
 2907|      0|                    return cast<json_const_pointer_storage>().value()->size();
 2908|  16.9M|                default:
  ------------------
  |  Branch (2908:17): [True: 16.9M, False: 13.1k]
  ------------------
 2909|  16.9M|                    return 0;
 2910|  16.9M|            }
 2911|  16.9M|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE13array_storage5valueEv:
 1044|  15.3k|            {
 1045|  15.3k|                return *ptr_;
 1046|  15.3k|            }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE14object_storage5valueEv:
 1185|  2.33k|            {
 1186|  2.33k|                return *ptr_;
 1187|  2.33k|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE5clearEv:
 4926|  17.8k|        {
 4927|  17.8k|            switch (storage_kind())
 4928|  17.8k|            {
 4929|  13.8k|            case json_storage_kind::array_value:
  ------------------
  |  Branch (4929:13): [True: 13.8k, False: 4.02k]
  ------------------
 4930|  13.8k|                cast<array_storage>().value().clear();
 4931|  13.8k|                break;
 4932|  4.02k|            case json_storage_kind::object_value:
  ------------------
  |  Branch (4932:13): [True: 4.02k, False: 13.8k]
  ------------------
 4933|  4.02k|                cast<object_storage>().value().clear();
 4934|  4.02k|                break;
 4935|      0|            default:
  ------------------
  |  Branch (4935:13): [True: 0, False: 17.8k]
  ------------------
 4936|      0|                break;
 4937|  17.8k|            }
 4938|  17.8k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE14object_storage5valueEv:
 1180|  19.4k|            {
 1181|  19.4k|                return *ptr_;
 1182|  19.4k|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE12object_rangeEv:
 5900|  4.02k|        {
 5901|  4.02k|            switch (storage_kind())
 5902|  4.02k|            {
 5903|      0|            case json_storage_kind::empty_object_value:
  ------------------
  |  Branch (5903:13): [True: 0, False: 4.02k]
  ------------------
 5904|      0|                return range<object_iterator, const_object_iterator>(object_iterator(), object_iterator());
 5905|  4.02k|            case json_storage_kind::object_value:
  ------------------
  |  Branch (5905:13): [True: 4.02k, False: 0]
  ------------------
 5906|  4.02k|                return range<object_iterator, const_object_iterator>(object_iterator(cast<object_storage>().value().begin()),
 5907|  4.02k|                                              object_iterator(cast<object_storage>().value().end()));
 5908|      0|            default:
  ------------------
  |  Branch (5908:13): [True: 0, False: 4.02k]
  ------------------
 5909|      0|                JSONCONS_THROW(json_runtime_error<std::domain_error>("Not an object"));
  ------------------
  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  ------------------
 5910|  4.02k|            }
 5911|  4.02k|        }
_ZN8jsoncons5rangeINS_6detail30random_access_iterator_wrapperINSt3__111__wrap_iterIPNS_9key_valueINS3_12basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyESA_EEEEEEvEENS2_INS4_IPKSF_EEvEEEC2ERKSI_SP_:
  346|  4.02k|        {
  347|  4.02k|        }
_ZN8jsoncons6detail30random_access_iterator_wrapperINSt3__111__wrap_iterIPNS_9key_valueINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES9_EEEEEEvEC2ESG_:
  111|  8.04k|            {
  112|  8.04k|            }
_ZN8jsoncons5rangeINS_6detail30random_access_iterator_wrapperINSt3__111__wrap_iterIPNS_9key_valueINS3_12basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyESA_EEEEEEvEENS2_INS4_IPKSF_EEvEEE5beginEv:
  350|  4.02k|        {
  351|  4.02k|            return first_;
  352|  4.02k|        }
_ZN8jsoncons5rangeINS_6detail30random_access_iterator_wrapperINSt3__111__wrap_iterIPNS_9key_valueINS3_12basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyESA_EEEEEEvEENS2_INS4_IPKSF_EEvEEE3endEv:
  354|  4.02k|        {
  355|  4.02k|            return last_;
  356|  4.02k|        }
_ZNK8jsoncons6detail30random_access_iterator_wrapperINSt3__111__wrap_iterIPNS_9key_valueINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES9_EEEEEEvEneERKSH_:
  213|  8.89k|            {
  214|  8.89k|                return !(*this == rhs);
  215|  8.89k|            }
_ZNK8jsoncons6detail30random_access_iterator_wrapperINSt3__111__wrap_iterIPNS_9key_valueINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES9_EEEEEEvEeqERKSH_:
  201|  8.89k|            {
  202|  8.89k|                if (!has_value_ || !rhs.has_value_)
  ------------------
  |  Branch (202:21): [True: 0, False: 8.89k]
  |  Branch (202:36): [True: 0, False: 8.89k]
  ------------------
  203|      0|                {
  204|      0|                    return has_value_ == rhs.has_value_ ? true : false;
  ------------------
  |  Branch (204:28): [True: 0, False: 0]
  ------------------
  205|      0|                }
  206|  8.89k|                else
  207|  8.89k|                {
  208|  8.89k|                    return it_ == rhs.it_;
  209|  8.89k|                }
  210|  8.89k|            }
_ZNK8jsoncons6detail30random_access_iterator_wrapperINSt3__111__wrap_iterIPNS_9key_valueINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES9_EEEEEEvEdeEv:
  132|  4.87k|            {
  133|  4.87k|                return *it_;
  134|  4.87k|            }
_ZN8jsoncons6detail30random_access_iterator_wrapperINSt3__111__wrap_iterIPNS_9key_valueINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES9_EEEEEEvEppEv:
  142|  4.87k|            {
  143|  4.87k|                ++it_;
  144|  4.87k|                return *this;
  145|  4.87k|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE11destroy_varINS5_14object_storageEEEvv:
 2243|  4.62M|        {
 2244|  4.62M|            cast<T>().~T();
 2245|  4.62M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE14object_storageD2Ev:
 1136|  4.62M|            {
 1137|  4.62M|                if (ptr_ != nullptr)
  ------------------
  |  Branch (1137:21): [True: 4.62M, False: 67]
  ------------------
 1138|  4.62M|                {
 1139|  4.62M|                    destroy();
 1140|  4.62M|                }
 1141|  4.62M|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE14object_storage7destroyEv:
 1196|  4.62M|            {
 1197|  4.62M|                object_allocator alloc(ptr_->get_allocator());
 1198|  4.62M|                std::allocator_traits<object_allocator>::destroy(alloc, extension_traits::to_plain_pointer(ptr_));
 1199|  4.62M|                std::allocator_traits<object_allocator>::deallocate(alloc, ptr_,1);
 1200|  4.62M|            }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE5emptyEv:
 4346|  4.57k|        {
 4347|  4.57k|            switch (storage_kind())
 4348|  4.57k|            {
 4349|      0|                case json_storage_kind::byte_string_value:
  ------------------
  |  Branch (4349:17): [True: 0, False: 4.57k]
  ------------------
 4350|      0|                    return cast<byte_string_storage>().length() == 0;
 4351|      0|                    break;
 4352|      0|                case json_storage_kind::short_string_value:
  ------------------
  |  Branch (4352:17): [True: 0, False: 4.57k]
  ------------------
 4353|      0|                    return cast<short_string_storage>().length() == 0;
 4354|      0|                case json_storage_kind::long_string_value:
  ------------------
  |  Branch (4354:17): [True: 0, False: 4.57k]
  ------------------
 4355|      0|                    return cast<long_string_storage>().length() == 0;
 4356|  4.02k|                case json_storage_kind::array_value:
  ------------------
  |  Branch (4356:17): [True: 4.02k, False: 552]
  ------------------
 4357|  4.02k|                    return cast<array_storage>().value().empty();
 4358|      0|                case json_storage_kind::empty_object_value:
  ------------------
  |  Branch (4358:17): [True: 0, False: 4.57k]
  ------------------
 4359|      0|                    return true;
 4360|    552|                case json_storage_kind::object_value:
  ------------------
  |  Branch (4360:17): [True: 552, False: 4.02k]
  ------------------
 4361|    552|                    return cast<object_storage>().value().empty();
 4362|      0|                case json_storage_kind::json_const_pointer:
  ------------------
  |  Branch (4362:17): [True: 0, False: 4.57k]
  ------------------
 4363|      0|                    return cast<json_const_pointer_storage>().value()->empty();
 4364|      0|                default:
  ------------------
  |  Branch (4364:17): [True: 0, False: 4.57k]
  ------------------
 4365|      0|                    return false;
 4366|  4.57k|            }
 4367|  4.57k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEC2Ev:
 3472|    394|        {
 3473|    394|            construct<empty_object_storage>(semantic_tag::none);
 3474|    394|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_20empty_object_storageEJNS_12semantic_tagEEEEvDpOT0_:
 2237|    394|        {
 2238|    394|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|    394|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE20empty_object_storageC2ENS_12semantic_tagE:
  486|    394|            {
  487|    394|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEC2ENS_17json_object_arg_tENS_12semantic_tagERKS4_:
 3510|  4.62M|        {
 3511|  4.62M|            construct<object_storage>(object(alloc), tag);
 3512|  4.62M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_14object_storageEJNS_18sorted_json_objectINS2_12basic_stringIcNS2_11char_traitsIcEES4_EES5_NS2_6vectorEEERNS_12semantic_tagEEEEvDpOT0_:
 2237|  4.62M|        {
 2238|  4.62M|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  4.62M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE14object_storageC2EONS_18sorted_json_objectINS2_12basic_stringIcNS2_11char_traitsIcEES4_EES5_NS2_6vectorEEENS_12semantic_tagE:
 1091|  4.62M|            {
 1092|  4.62M|                create(val.get_allocator(), std::move(val));
 1093|  4.62M|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE14object_storage6createIJNS_18sorted_json_objectINS2_12basic_stringIcNS2_11char_traitsIcEES4_EES5_NS2_6vectorEEEEEEvNS3_ISE_EEDpOT_:
 1064|  4.62M|            {
 1065|  4.62M|                ptr_ = std::allocator_traits<object_allocator>::allocate(alloc, 1);
 1066|  4.62M|                JSONCONS_TRY
  ------------------
  |  |  239|  4.62M|    #define JSONCONS_TRY try
  ------------------
 1067|  4.62M|                {
 1068|  4.62M|                    std::allocator_traits<object_allocator>::construct(alloc, extension_traits::to_plain_pointer(ptr_), std::forward<Args>(args)...);
 1069|  4.62M|                }
 1070|  4.62M|                JSONCONS_CATCH(...)
 1071|  4.62M|                {
 1072|      0|                    std::allocator_traits<object_allocator>::deallocate(alloc, ptr_,1);
 1073|      0|                    JSONCONS_RETHROW;
  ------------------
  |  |  238|      0|    #define JSONCONS_RETHROW throw
  ------------------
 1074|      0|                }
 1075|  4.62M|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEaSEOS5_:
 2830|  14.2M|        {
 2831|  14.2M|            if (this != &other)
  ------------------
  |  Branch (2831:17): [True: 14.2M, False: 0]
  ------------------
 2832|  14.2M|            {
 2833|  14.2M|                move_assignment(std::move(other));
 2834|  14.2M|            }
 2835|  14.2M|            return *this;
 2836|  14.2M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE15move_assignmentEOS5_:
 2760|  14.2M|        {
 2761|  14.2M|            switch (other.storage_kind())
 2762|  14.2M|            {
 2763|  14.1M|                case json_storage_kind::null_value:
  ------------------
  |  Branch (2763:17): [True: 14.1M, False: 143k]
  ------------------
 2764|  14.1M|                case json_storage_kind::empty_object_value:
  ------------------
  |  Branch (2764:17): [True: 0, False: 14.2M]
  ------------------
 2765|  14.1M|                case json_storage_kind::bool_value:
  ------------------
  |  Branch (2765:17): [True: 8.12k, False: 14.2M]
  ------------------
 2766|  14.1M|                case json_storage_kind::int64_value:
  ------------------
  |  Branch (2766:17): [True: 32.3k, False: 14.2M]
  ------------------
 2767|  14.1M|                case json_storage_kind::uint64_value:
  ------------------
  |  Branch (2767:17): [True: 6.38k, False: 14.2M]
  ------------------
 2768|  14.1M|                case json_storage_kind::half_value:
  ------------------
  |  Branch (2768:17): [True: 0, False: 14.2M]
  ------------------
 2769|  14.1M|                case json_storage_kind::double_value:
  ------------------
  |  Branch (2769:17): [True: 1.59k, False: 14.2M]
  ------------------
 2770|  14.1M|                case json_storage_kind::short_string_value:
  ------------------
  |  Branch (2770:17): [True: 5.31k, False: 14.2M]
  ------------------
 2771|  14.1M|                case json_storage_kind::json_const_pointer:
  ------------------
  |  Branch (2771:17): [True: 0, False: 14.2M]
  ------------------
 2772|  14.1M|                    destroy();
 2773|  14.1M|                    uninitialized_copy(std::move(other));
 2774|  14.1M|                    break;
 2775|    508|                case json_storage_kind::long_string_value:
  ------------------
  |  Branch (2775:17): [True: 508, False: 14.2M]
  ------------------
 2776|    508|                    move_assignment_r<long_string_storage>(std::move(other));
 2777|    508|                    break;
 2778|      0|                case json_storage_kind::byte_string_value:
  ------------------
  |  Branch (2778:17): [True: 0, False: 14.2M]
  ------------------
 2779|      0|                    move_assignment_r<byte_string_storage>(std::move(other));
 2780|      0|                    break;
 2781|  88.2k|                case json_storage_kind::array_value:
  ------------------
  |  Branch (2781:17): [True: 88.2k, False: 14.1M]
  ------------------
 2782|  88.2k|                    move_assignment_r<array_storage>(std::move(other));
 2783|  88.2k|                    break;
 2784|    559|                case json_storage_kind::object_value:
  ------------------
  |  Branch (2784:17): [True: 559, False: 14.2M]
  ------------------
 2785|    559|                    move_assignment_r<object_storage>(std::move(other));
 2786|    559|                    break;
 2787|      0|                default:
  ------------------
  |  Branch (2787:17): [True: 0, False: 14.2M]
  ------------------
 2788|      0|                    JSONCONS_UNREACHABLE();
  ------------------
  |  |   46|      0|#define JSONCONS_UNREACHABLE() __builtin_unreachable()
  ------------------
 2789|      0|                    break;
 2790|  14.2M|            }
 2791|  14.2M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE17move_assignment_rINS5_19long_string_storageEEEvOS5_:
 2737|    508|        {
 2738|    508|            switch (storage_kind())
 2739|    508|            {
 2740|    294|                case json_storage_kind::null_value:          move_assignment_l_r<null_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2740:17): [True: 294, False: 214]
  ------------------
 2741|      6|                case json_storage_kind::empty_object_value:  move_assignment_l_r<empty_object_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2741:17): [True: 6, False: 502]
  ------------------
 2742|     43|                case json_storage_kind::bool_value:          move_assignment_l_r<bool_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2742:17): [True: 43, False: 465]
  ------------------
 2743|      0|                case json_storage_kind::int64_value:         move_assignment_l_r<int64_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2743:17): [True: 0, False: 508]
  ------------------
 2744|      2|                case json_storage_kind::uint64_value:        move_assignment_l_r<uint64_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2744:17): [True: 2, False: 506]
  ------------------
 2745|      0|                case json_storage_kind::half_value:          move_assignment_l_r<half_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2745:17): [True: 0, False: 508]
  ------------------
 2746|      0|                case json_storage_kind::double_value:        move_assignment_l_r<double_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2746:17): [True: 0, False: 508]
  ------------------
 2747|    163|                case json_storage_kind::short_string_value:  move_assignment_l_r<short_string_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2747:17): [True: 163, False: 345]
  ------------------
 2748|      0|                case json_storage_kind::json_const_pointer:  move_assignment_l_r<json_const_pointer_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2748:17): [True: 0, False: 508]
  ------------------
 2749|      0|                case json_storage_kind::long_string_value:   move_assignment_l_r<long_string_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2749:17): [True: 0, False: 508]
  ------------------
 2750|      0|                case json_storage_kind::byte_string_value:   move_assignment_l_r<byte_string_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2750:17): [True: 0, False: 508]
  ------------------
 2751|      0|                case json_storage_kind::array_value:         move_assignment_l_r<array_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2751:17): [True: 0, False: 508]
  ------------------
 2752|      0|                case json_storage_kind::object_value:        move_assignment_l_r<object_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2752:17): [True: 0, False: 508]
  ------------------
 2753|      0|                default:
  ------------------
  |  Branch (2753:17): [True: 0, False: 508]
  ------------------
 2754|      0|                    JSONCONS_UNREACHABLE();
  ------------------
  |  |   46|      0|#define JSONCONS_UNREACHABLE() __builtin_unreachable()
  ------------------
 2755|      0|                    break;
 2756|    508|            }
 2757|    508|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_12null_storageENS5_19long_string_storageEEEvOS5_:
 2704|    294|        {
 2705|    294|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|    294|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_12null_storageENS5_19long_string_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|    294|        {
 2711|    294|            destroy();
 2712|    294|            uninitialized_move(std::move(other));
 2713|    294|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_20empty_object_storageENS5_19long_string_storageEEEvOS5_:
 2704|      6|        {
 2705|      6|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|      6|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_20empty_object_storageENS5_19long_string_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|      6|        {
 2711|      6|            destroy();
 2712|      6|            uninitialized_move(std::move(other));
 2713|      6|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_12bool_storageENS5_19long_string_storageEEEvOS5_:
 2704|     43|        {
 2705|     43|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|     43|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_12bool_storageENS5_19long_string_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|     43|        {
 2711|     43|            destroy();
 2712|     43|            uninitialized_move(std::move(other));
 2713|     43|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_14uint64_storageENS5_19long_string_storageEEEvOS5_:
 2704|      2|        {
 2705|      2|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|      2|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_14uint64_storageENS5_19long_string_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|      2|        {
 2711|      2|            destroy();
 2712|      2|            uninitialized_move(std::move(other));
 2713|      2|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_20short_string_storageENS5_19long_string_storageEEEvOS5_:
 2704|    163|        {
 2705|    163|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|    163|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_20short_string_storageENS5_19long_string_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|    163|        {
 2711|    163|            destroy();
 2712|    163|            uninitialized_move(std::move(other));
 2713|    163|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE17move_assignment_rINS5_13array_storageEEEvOS5_:
 2737|  88.2k|        {
 2738|  88.2k|            switch (storage_kind())
 2739|  88.2k|            {
 2740|  81.0k|                case json_storage_kind::null_value:          move_assignment_l_r<null_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2740:17): [True: 81.0k, False: 7.16k]
  ------------------
 2741|      0|                case json_storage_kind::empty_object_value:  move_assignment_l_r<empty_object_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2741:17): [True: 0, False: 88.2k]
  ------------------
 2742|  2.32k|                case json_storage_kind::bool_value:          move_assignment_l_r<bool_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2742:17): [True: 2.32k, False: 85.8k]
  ------------------
 2743|    718|                case json_storage_kind::int64_value:         move_assignment_l_r<int64_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2743:17): [True: 718, False: 87.4k]
  ------------------
 2744|  3.21k|                case json_storage_kind::uint64_value:        move_assignment_l_r<uint64_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2744:17): [True: 3.21k, False: 84.9k]
  ------------------
 2745|      0|                case json_storage_kind::half_value:          move_assignment_l_r<half_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2745:17): [True: 0, False: 88.2k]
  ------------------
 2746|    312|                case json_storage_kind::double_value:        move_assignment_l_r<double_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2746:17): [True: 312, False: 87.8k]
  ------------------
 2747|    597|                case json_storage_kind::short_string_value:  move_assignment_l_r<short_string_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2747:17): [True: 597, False: 87.6k]
  ------------------
 2748|      0|                case json_storage_kind::json_const_pointer:  move_assignment_l_r<json_const_pointer_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2748:17): [True: 0, False: 88.2k]
  ------------------
 2749|      0|                case json_storage_kind::long_string_value:   move_assignment_l_r<long_string_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2749:17): [True: 0, False: 88.2k]
  ------------------
 2750|      0|                case json_storage_kind::byte_string_value:   move_assignment_l_r<byte_string_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2750:17): [True: 0, False: 88.2k]
  ------------------
 2751|      0|                case json_storage_kind::array_value:         move_assignment_l_r<array_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2751:17): [True: 0, False: 88.2k]
  ------------------
 2752|      0|                case json_storage_kind::object_value:        move_assignment_l_r<object_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2752:17): [True: 0, False: 88.2k]
  ------------------
 2753|      0|                default:
  ------------------
  |  Branch (2753:17): [True: 0, False: 88.2k]
  ------------------
 2754|      0|                    JSONCONS_UNREACHABLE();
  ------------------
  |  |   46|      0|#define JSONCONS_UNREACHABLE() __builtin_unreachable()
  ------------------
 2755|      0|                    break;
 2756|  88.2k|            }
 2757|  88.2k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_12null_storageENS5_13array_storageEEEvOS5_:
 2704|  81.0k|        {
 2705|  81.0k|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|  81.0k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_12null_storageENS5_13array_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|  81.0k|        {
 2711|  81.0k|            destroy();
 2712|  81.0k|            uninitialized_move(std::move(other));
 2713|  81.0k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_12bool_storageENS5_13array_storageEEEvOS5_:
 2704|  2.32k|        {
 2705|  2.32k|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|  2.32k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_12bool_storageENS5_13array_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|  2.32k|        {
 2711|  2.32k|            destroy();
 2712|  2.32k|            uninitialized_move(std::move(other));
 2713|  2.32k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_13int64_storageENS5_13array_storageEEEvOS5_:
 2704|    718|        {
 2705|    718|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|    718|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_13int64_storageENS5_13array_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|    718|        {
 2711|    718|            destroy();
 2712|    718|            uninitialized_move(std::move(other));
 2713|    718|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_14uint64_storageENS5_13array_storageEEEvOS5_:
 2704|  3.21k|        {
 2705|  3.21k|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|  3.21k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_14uint64_storageENS5_13array_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|  3.21k|        {
 2711|  3.21k|            destroy();
 2712|  3.21k|            uninitialized_move(std::move(other));
 2713|  3.21k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_14double_storageENS5_13array_storageEEEvOS5_:
 2704|    312|        {
 2705|    312|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|    312|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_14double_storageENS5_13array_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|    312|        {
 2711|    312|            destroy();
 2712|    312|            uninitialized_move(std::move(other));
 2713|    312|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_20short_string_storageENS5_13array_storageEEEvOS5_:
 2704|    597|        {
 2705|    597|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|    597|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_20short_string_storageENS5_13array_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|    597|        {
 2711|    597|            destroy();
 2712|    597|            uninitialized_move(std::move(other));
 2713|    597|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE17move_assignment_rINS5_14object_storageEEEvOS5_:
 2737|    559|        {
 2738|    559|            switch (storage_kind())
 2739|    559|            {
 2740|    425|                case json_storage_kind::null_value:          move_assignment_l_r<null_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2740:17): [True: 425, False: 134]
  ------------------
 2741|      0|                case json_storage_kind::empty_object_value:  move_assignment_l_r<empty_object_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2741:17): [True: 0, False: 559]
  ------------------
 2742|     92|                case json_storage_kind::bool_value:          move_assignment_l_r<bool_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2742:17): [True: 92, False: 467]
  ------------------
 2743|     21|                case json_storage_kind::int64_value:         move_assignment_l_r<int64_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2743:17): [True: 21, False: 538]
  ------------------
 2744|      8|                case json_storage_kind::uint64_value:        move_assignment_l_r<uint64_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2744:17): [True: 8, False: 551]
  ------------------
 2745|      0|                case json_storage_kind::half_value:          move_assignment_l_r<half_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2745:17): [True: 0, False: 559]
  ------------------
 2746|      3|                case json_storage_kind::double_value:        move_assignment_l_r<double_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2746:17): [True: 3, False: 556]
  ------------------
 2747|     10|                case json_storage_kind::short_string_value:  move_assignment_l_r<short_string_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2747:17): [True: 10, False: 549]
  ------------------
 2748|      0|                case json_storage_kind::json_const_pointer:  move_assignment_l_r<json_const_pointer_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2748:17): [True: 0, False: 559]
  ------------------
 2749|      0|                case json_storage_kind::long_string_value:   move_assignment_l_r<long_string_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2749:17): [True: 0, False: 559]
  ------------------
 2750|      0|                case json_storage_kind::byte_string_value:   move_assignment_l_r<byte_string_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2750:17): [True: 0, False: 559]
  ------------------
 2751|      0|                case json_storage_kind::array_value:         move_assignment_l_r<array_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2751:17): [True: 0, False: 559]
  ------------------
 2752|      0|                case json_storage_kind::object_value:        move_assignment_l_r<object_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2752:17): [True: 0, False: 559]
  ------------------
 2753|      0|                default:
  ------------------
  |  Branch (2753:17): [True: 0, False: 559]
  ------------------
 2754|      0|                    JSONCONS_UNREACHABLE();
  ------------------
  |  |   46|      0|#define JSONCONS_UNREACHABLE() __builtin_unreachable()
  ------------------
 2755|      0|                    break;
 2756|    559|            }
 2757|    559|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_12null_storageENS5_14object_storageEEEvOS5_:
 2704|    425|        {
 2705|    425|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|    425|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_12null_storageENS5_14object_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|    425|        {
 2711|    425|            destroy();
 2712|    425|            uninitialized_move(std::move(other));
 2713|    425|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_12bool_storageENS5_14object_storageEEEvOS5_:
 2704|     92|        {
 2705|     92|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|     92|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_12bool_storageENS5_14object_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|     92|        {
 2711|     92|            destroy();
 2712|     92|            uninitialized_move(std::move(other));
 2713|     92|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_13int64_storageENS5_14object_storageEEEvOS5_:
 2704|     21|        {
 2705|     21|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|     21|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_13int64_storageENS5_14object_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|     21|        {
 2711|     21|            destroy();
 2712|     21|            uninitialized_move(std::move(other));
 2713|     21|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_14uint64_storageENS5_14object_storageEEEvOS5_:
 2704|      8|        {
 2705|      8|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|      8|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_14uint64_storageENS5_14object_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|      8|        {
 2711|      8|            destroy();
 2712|      8|            uninitialized_move(std::move(other));
 2713|      8|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_14double_storageENS5_14object_storageEEEvOS5_:
 2704|      3|        {
 2705|      3|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|      3|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_14double_storageENS5_14object_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|      3|        {
 2711|      3|            destroy();
 2712|      3|            uninitialized_move(std::move(other));
 2713|      3|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_20short_string_storageENS5_14object_storageEEEvOS5_:
 2704|     10|        {
 2705|     10|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|     10|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_20short_string_storageENS5_14object_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|     10|        {
 2711|     10|            destroy();
 2712|     10|            uninitialized_move(std::move(other));
 2713|     10|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4swapERS5_:
 3157|    104|        {
 3158|    104|            if (this == &other)
  ------------------
  |  Branch (3158:17): [True: 0, False: 104]
  ------------------
 3159|      0|            {
 3160|      0|                return;
 3161|      0|            }
 3162|       |
 3163|    104|            switch (storage_kind())
 3164|    104|            {
 3165|      0|                case json_storage_kind::null_value: swap_l<null_storage>(other); break;
  ------------------
  |  Branch (3165:17): [True: 0, False: 104]
  ------------------
 3166|    104|                case json_storage_kind::empty_object_value : swap_l<empty_object_storage>(other); break;
  ------------------
  |  Branch (3166:17): [True: 104, False: 0]
  ------------------
 3167|      0|                case json_storage_kind::bool_value: swap_l<bool_storage>(other); break;
  ------------------
  |  Branch (3167:17): [True: 0, False: 104]
  ------------------
 3168|      0|                case json_storage_kind::int64_value: swap_l<int64_storage>(other); break;
  ------------------
  |  Branch (3168:17): [True: 0, False: 104]
  ------------------
 3169|      0|                case json_storage_kind::uint64_value: swap_l<uint64_storage>(other); break;
  ------------------
  |  Branch (3169:17): [True: 0, False: 104]
  ------------------
 3170|      0|                case json_storage_kind::half_value: swap_l<half_storage>(other); break;
  ------------------
  |  Branch (3170:17): [True: 0, False: 104]
  ------------------
 3171|      0|                case json_storage_kind::double_value: swap_l<double_storage>(other); break;
  ------------------
  |  Branch (3171:17): [True: 0, False: 104]
  ------------------
 3172|      0|                case json_storage_kind::short_string_value: swap_l<short_string_storage>(other); break;
  ------------------
  |  Branch (3172:17): [True: 0, False: 104]
  ------------------
 3173|      0|                case json_storage_kind::long_string_value: swap_l<long_string_storage>(other); break;
  ------------------
  |  Branch (3173:17): [True: 0, False: 104]
  ------------------
 3174|      0|                case json_storage_kind::byte_string_value: swap_l<byte_string_storage>(other); break;
  ------------------
  |  Branch (3174:17): [True: 0, False: 104]
  ------------------
 3175|      0|                case json_storage_kind::array_value: swap_l<array_storage>(other); break;
  ------------------
  |  Branch (3175:17): [True: 0, False: 104]
  ------------------
 3176|      0|                case json_storage_kind::object_value: swap_l<object_storage>(other); break;
  ------------------
  |  Branch (3176:17): [True: 0, False: 104]
  ------------------
 3177|      0|                case json_storage_kind::json_const_pointer: swap_l<json_const_pointer_storage>(other); break;
  ------------------
  |  Branch (3177:17): [True: 0, False: 104]
  ------------------
 3178|      0|                default:
  ------------------
  |  Branch (3178:17): [True: 0, False: 104]
  ------------------
 3179|      0|                    JSONCONS_UNREACHABLE();
  ------------------
  |  |   46|      0|#define JSONCONS_UNREACHABLE() __builtin_unreachable()
  ------------------
 3180|      0|                    break;
 3181|    104|            }
 3182|    104|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_20empty_object_storageEJS7_EEEvDpOT0_:
 2237|    104|        {
 2238|    104|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|    104|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE6swap_lINS5_20empty_object_storageEEEvRS5_:
 2432|    104|        {
 2433|    104|            switch (other.storage_kind())
 2434|    104|            {
 2435|      0|                case json_storage_kind::null_value         : swap_l_r<TypeL, null_storage>(other); break;
  ------------------
  |  Branch (2435:17): [True: 0, False: 104]
  ------------------
 2436|      0|                case json_storage_kind::empty_object_value : swap_l_r<TypeL, empty_object_storage>(other); break;
  ------------------
  |  Branch (2436:17): [True: 0, False: 104]
  ------------------
 2437|      0|                case json_storage_kind::bool_value         : swap_l_r<TypeL, bool_storage>(other); break;
  ------------------
  |  Branch (2437:17): [True: 0, False: 104]
  ------------------
 2438|      0|                case json_storage_kind::int64_value        : swap_l_r<TypeL, int64_storage>(other); break;
  ------------------
  |  Branch (2438:17): [True: 0, False: 104]
  ------------------
 2439|      0|                case json_storage_kind::uint64_value       : swap_l_r<TypeL, uint64_storage>(other); break;
  ------------------
  |  Branch (2439:17): [True: 0, False: 104]
  ------------------
 2440|      0|                case json_storage_kind::half_value         : swap_l_r<TypeL, half_storage>(other); break;
  ------------------
  |  Branch (2440:17): [True: 0, False: 104]
  ------------------
 2441|      0|                case json_storage_kind::double_value       : swap_l_r<TypeL, double_storage>(other); break;
  ------------------
  |  Branch (2441:17): [True: 0, False: 104]
  ------------------
 2442|      0|                case json_storage_kind::short_string_value : swap_l_r<TypeL, short_string_storage>(other); break;
  ------------------
  |  Branch (2442:17): [True: 0, False: 104]
  ------------------
 2443|      0|                case json_storage_kind::long_string_value  : swap_l_r<TypeL, long_string_storage>(other); break;
  ------------------
  |  Branch (2443:17): [True: 0, False: 104]
  ------------------
 2444|      0|                case json_storage_kind::byte_string_value  : swap_l_r<TypeL, byte_string_storage>(other); break;
  ------------------
  |  Branch (2444:17): [True: 0, False: 104]
  ------------------
 2445|     37|                case json_storage_kind::array_value        : swap_l_r<TypeL, array_storage>(other); break;
  ------------------
  |  Branch (2445:17): [True: 37, False: 67]
  ------------------
 2446|     67|                case json_storage_kind::object_value       : swap_l_r<TypeL, object_storage>(other); break;
  ------------------
  |  Branch (2446:17): [True: 67, False: 37]
  ------------------
 2447|      0|                case json_storage_kind::json_const_pointer : swap_l_r<TypeL, json_const_pointer_storage>(other); break;
  ------------------
  |  Branch (2447:17): [True: 0, False: 104]
  ------------------
 2448|      0|                default:
  ------------------
  |  Branch (2448:17): [True: 0, False: 104]
  ------------------
 2449|      0|                    JSONCONS_UNREACHABLE();
  ------------------
  |  |   46|      0|#define JSONCONS_UNREACHABLE() __builtin_unreachable()
  ------------------
 2450|      0|                    break;
 2451|    104|            }
 2452|    104|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE8swap_l_rINS5_20empty_object_storageENS5_13array_storageEEEvRS5_:
 2394|     37|        {
 2395|     37|            swap_l_r(identity<TypeL>(), identity<TypeR>(), other);
 2396|     37|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE8swap_l_rINS5_20empty_object_storageENS5_13array_storageEEEvNS5_8identityIT_EENS9_IT0_EERS5_:
 2400|     37|        {
 2401|     37|            TypeR tmpR(std::move(other.cast<TypeR>())); 
 2402|       |
 2403|     37|            other.destroy();
 2404|     37|            other.construct<TypeL>(std::move(cast<TypeL>()));
 2405|       |
 2406|     37|            destroy();
 2407|     37|            construct<TypeR>(std::move(tmpR));
 2408|     37|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE8swap_l_rINS5_20empty_object_storageENS5_14object_storageEEEvRS5_:
 2394|     67|        {
 2395|     67|            swap_l_r(identity<TypeL>(), identity<TypeR>(), other);
 2396|     67|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE8swap_l_rINS5_20empty_object_storageENS5_14object_storageEEEvNS5_8identityIT_EENS9_IT0_EERS5_:
 2400|     67|        {
 2401|     67|            TypeR tmpR(std::move(other.cast<TypeR>())); 
 2402|       |
 2403|     67|            other.destroy();
 2404|     67|            other.construct<TypeL>(std::move(cast<TypeL>()));
 2405|       |
 2406|     67|            destroy();
 2407|     67|            construct<TypeR>(std::move(tmpR));
 2408|     67|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEC2ENS_16json_array_arg_tENS_12semantic_tagERKS4_:
 3544|  3.47M|        {
 3545|  3.47M|            construct<array_storage>(array(alloc), tag);
 3546|  3.47M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_13array_storageEJNS_10json_arrayIS5_NS2_6vectorEEERNS_12semantic_tagEEEEvDpOT0_:
 2237|  3.47M|        {
 2238|  3.47M|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  3.47M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE13array_storageC2EONS_10json_arrayIS5_NS2_6vectorEEENS_12semantic_tagE:
  938|  3.47M|            {
  939|  3.47M|                create(val.get_allocator(), std::move(val));
  940|  3.47M|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE13array_storage6createIJNS_10json_arrayIS5_NS2_6vectorEEEEEEvNS3_ISA_EEDpOT_:
  909|  3.47M|            {
  910|  3.47M|                ptr_ = std::allocator_traits<array_allocator>::allocate(alloc, 1);
  911|  3.47M|                JSONCONS_TRY
  ------------------
  |  |  239|  3.47M|    #define JSONCONS_TRY try
  ------------------
  912|  3.47M|                {
  913|  3.47M|                    std::allocator_traits<array_allocator>::construct(alloc, extension_traits::to_plain_pointer(ptr_), 
  914|  3.47M|                        std::forward<Args>(args)...);
  915|  3.47M|                }
  916|  3.47M|                JSONCONS_CATCH(...)
  917|  3.47M|                {
  918|      0|                    std::allocator_traits<array_allocator>::deallocate(alloc, ptr_,1);
  919|      0|                    JSONCONS_RETHROW;
  ------------------
  |  |  238|      0|    #define JSONCONS_RETHROW throw
  ------------------
  920|      0|                }
  921|  3.47M|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE7reserveEm:
 4401|  32.8k|        {
 4402|  32.8k|            if (n > 0)
  ------------------
  |  Branch (4402:17): [True: 32.8k, False: 0]
  ------------------
 4403|  32.8k|            {
 4404|  32.8k|                switch (storage_kind())
 4405|  32.8k|                {
 4406|  32.8k|                    case json_storage_kind::array_value:
  ------------------
  |  Branch (4406:21): [True: 32.8k, False: 0]
  ------------------
 4407|  32.8k|                        cast<array_storage>().value().reserve(n);
 4408|  32.8k|                        break;
 4409|      0|                    case json_storage_kind::empty_object_value:
  ------------------
  |  Branch (4409:21): [True: 0, False: 32.8k]
  ------------------
 4410|      0|                    {
 4411|      0|                        create_object_implicitly();
 4412|      0|                        cast<object_storage>().value().reserve(n);
 4413|      0|                    }
 4414|      0|                    break;
 4415|      0|                    case json_storage_kind::object_value:
  ------------------
  |  Branch (4415:21): [True: 0, False: 32.8k]
  ------------------
 4416|      0|                    {
 4417|      0|                        cast<object_storage>().value().reserve(n);
 4418|      0|                    }
 4419|      0|                        break;
 4420|      0|                    default:
  ------------------
  |  Branch (4420:21): [True: 0, False: 32.8k]
  ------------------
 4421|      0|                        break;
 4422|  32.8k|                }
 4423|  32.8k|            }
 4424|  32.8k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9push_backEOS5_:
 5316|  22.3M|        {
 5317|  22.3M|            switch (storage_kind())
 5318|  22.3M|            {
 5319|  22.3M|            case json_storage_kind::array_value:
  ------------------
  |  Branch (5319:13): [True: 22.3M, False: 0]
  ------------------
 5320|  22.3M|                cast<array_storage>().value().push_back(std::move(val));
 5321|  22.3M|                break;
 5322|      0|            default:
  ------------------
  |  Branch (5322:13): [True: 0, False: 22.3M]
  ------------------
 5323|      0|                JSONCONS_THROW(json_runtime_error<std::domain_error>("Attempting to insert into a value that is not an array"));
  ------------------
  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  ------------------
 5324|  22.3M|            }
 5325|  22.3M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEC2ENS_9null_typeENS_12semantic_tagE:
 3751|  27.0M|        {
 3752|  27.0M|            construct<null_storage>(tag);
 3753|  27.0M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_12null_storageEJRNS_12semantic_tagEEEEvDpOT0_:
 2237|  27.0M|        {
 2238|  27.0M|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  27.0M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE12null_storageC2ENS_12semantic_tagE:
  473|  27.0M|            {
  474|  27.0M|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEC2EbNS_12semantic_tagE:
 3761|  3.34M|        {
 3762|  3.34M|            construct<bool_storage>(val,tag);
 3763|  3.34M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_12bool_storageEJRbRNS_12semantic_tagEEEEvDpOT0_:
 2237|  3.34M|        {
 2238|  3.34M|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  3.34M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE12bool_storageC2EbNS_12semantic_tagE:
  502|  3.34M|            {
  503|  3.34M|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEC2ERKNS_6detail17basic_string_viewIcNS2_11char_traitsIcEEEENS_12semantic_tagERKS4_:
 3772|  2.91M|        {
 3773|  2.91M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEC2EPKcmNS_12semantic_tagERKS4_:
 3659|  2.91M|        {
 3660|  2.91M|            if (length <= short_string_storage::max_length)
  ------------------
  |  Branch (3660:17): [True: 2.91M, False: 1.51k]
  ------------------
 3661|  2.91M|            {
 3662|  2.91M|                construct<short_string_storage>(tag, s, static_cast<uint8_t>(length));
 3663|  2.91M|            }
 3664|  1.51k|            else
 3665|  1.51k|            {
 3666|  1.51k|                construct<long_string_storage>(tag, s, length, alloc);
 3667|  1.51k|            }
 3668|  2.91M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_20short_string_storageEJRNS_12semantic_tagERPKchEEEvDpOT0_:
 2237|  2.91M|        {
 2238|  2.91M|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  2.91M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE20short_string_storageC2ENS_12semantic_tagEPKch:
  613|  2.91M|            {
  614|  2.91M|                JSONCONS_ASSERT(length <= max_length);
  ------------------
  |  |  378|  2.91M|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 2.91M]
  |  |  ------------------
  |  |  379|      0|    JSONCONS_THROW(jsoncons::assertion_error("assertion '" #x "' failed at  <> :" \
  |  |  ------------------
  |  |  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  |  |  ------------------
  |  |  380|      0|            JSONCONS_STR( 0 ))); }
  ------------------
  615|  2.91M|                std::memcpy(data_,p,length*sizeof(char_type));
  616|  2.91M|                data_[length] = 0;
  617|  2.91M|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_19long_string_storageEJRNS_12semantic_tagERPKcRmRKS4_EEEvDpOT0_:
 2237|  1.51k|        {
 2238|  1.51k|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  1.51k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19long_string_storageC2ENS_12semantic_tagEPKcmRKS4_:
  660|  1.51k|            {
  661|  1.51k|                ptr_ = heap_string_factory_type::create(data, length, null_type(), alloc);
  662|  1.51k|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEC2ImEET_NS_12semantic_tagENS2_9enable_ifIXaasr16extension_traits19is_unsigned_integerIS7_EE5valuelestS7_Lm8EEiE4typeE:
 3693|  2.53M|        {
 3694|  2.53M|            construct<uint64_storage>(val, tag);
 3695|  2.53M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_14uint64_storageEJRmRNS_12semantic_tagEEEEvDpOT0_:
 2237|  2.53M|        {
 2238|  2.53M|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  2.53M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE14uint64_storageC2EmNS_12semantic_tagE:
  547|  2.53M|            {
  548|  2.53M|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEC2IlEET_NS_12semantic_tagENS2_9enable_ifIXaasr16extension_traits17is_signed_integerIS7_EE5valuelestS7_Lm8EEiE4typeE:
 3723|  2.03M|        {
 3724|  2.03M|            construct<int64_storage>(val, tag);
 3725|  2.03M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_13int64_storageEJRlRNS_12semantic_tagEEEEvDpOT0_:
 2237|  2.03M|        {
 2238|  2.03M|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  2.03M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE13int64_storageC2ElNS_12semantic_tagE:
  525|  2.03M|            {
  526|  2.03M|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEC2EdNS_12semantic_tagE:
 3681|   148k|        {
 3682|   148k|            construct<double_storage>(val, tag);
 3683|   148k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_14double_storageEJRdRNS_12semantic_tagEEEEvDpOT0_:
 2237|   148k|        {
 2238|   148k|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|   148k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE14double_storageC2EdNS_12semantic_tagE:
  590|   148k|            {
  591|   148k|            }

_ZN8jsoncons6binary9byte_swapIaEENSt3__19enable_ifIXaasr3std11is_integralIT_EE5valueeqstS4_Lm1EES4_E4typeES4_:
  139|  2.00M|    {
  140|  2.00M|        return val;
  141|  2.00M|    }
_ZN8jsoncons6binary9byte_swapIsEENSt3__19enable_ifIXaasr3std11is_integralIT_EE5valueeqstS4_Lm2EES4_E4typeES4_:
  146|  39.9k|    {
  147|  39.9k|    #if defined(JSONCONS_BYTE_SWAP_16)
  148|  39.9k|        return JSONCONS_BYTE_SWAP_16(val);
  ------------------
  |  |   35|  39.9k|#      define JSONCONS_BYTE_SWAP_16    __builtin_bswap16
  ------------------
  149|       |    #else
  150|       |        return (static_cast<uint16_t>(val) >> 8) | (static_cast<uint16_t>(val) << 8);
  151|       |    #endif
  152|  39.9k|    }
_ZN8jsoncons6binary9byte_swapIiEENSt3__19enable_ifIXaasr3std11is_integralIT_EE5valueeqstS4_Lm4EES4_E4typeES4_:
  157|  14.5k|    {
  158|  14.5k|    #if defined(JSONCONS_BYTE_SWAP_32)
  159|  14.5k|        return JSONCONS_BYTE_SWAP_32(val);
  ------------------
  |  |   31|  14.5k|#  define JSONCONS_BYTE_SWAP_32 __builtin_bswap32
  ------------------
  160|       |    #else
  161|       |        uint32_t tmp = ((static_cast<uint32_t>(val) << 8) & 0xff00ff00) | ((static_cast<uint32_t>(val) >> 8) & 0xff00ff);
  162|       |        return (tmp << 16) | (tmp >> 16);
  163|       |    #endif
  164|  14.5k|    }
_ZN8jsoncons6binary9byte_swapIlEENSt3__19enable_ifIXaasr3std11is_integralIT_EE5valueeqstS4_Lm8EES4_E4typeES4_:
  169|  1.07k|    {
  170|  1.07k|    #if defined(JSONCONS_BYTE_SWAP_64)
  171|  1.07k|        return JSONCONS_BYTE_SWAP_64(val);
  ------------------
  |  |   30|  1.07k|#  define JSONCONS_BYTE_SWAP_64 __builtin_bswap64
  ------------------
  172|       |    #else
  173|       |        uint64_t tmp = ((static_cast<uint64_t>(val) & 0x00000000ffffffffull) << 32) | ((static_cast<uint64_t>(val) & 0xffffffff00000000ull) >> 32);
  174|       |        tmp = ((tmp & 0x0000ffff0000ffffull) << 16) | ((tmp & 0xffff0000ffff0000ull) >> 16);
  175|       |        return ((tmp & 0x00ff00ff00ff00ffull) << 8)  | ((tmp & 0xff00ff00ff00ff00ull) >> 8);
  176|       |    #endif
  177|  1.07k|    }
_ZN8jsoncons6binary9byte_swapIfEENSt3__19enable_ifIXaasr3std17is_floating_pointIT_EE5valueeqstS4_Lm4EES4_E4typeES4_:
  182|   144k|    {
  183|   144k|        uint32_t x;
  184|   144k|        std::memcpy(&x,&val,sizeof(uint32_t));
  185|   144k|        uint32_t y = byte_swap(x);
  186|   144k|        T val2;
  187|   144k|        std::memcpy(&val2,&y,sizeof(uint32_t));
  188|   144k|        return val2;
  189|   144k|    }
_ZN8jsoncons6binary9byte_swapIjEENSt3__19enable_ifIXaasr3std11is_integralIT_EE5valueeqstS4_Lm4EES4_E4typeES4_:
  157|   144k|    {
  158|   144k|    #if defined(JSONCONS_BYTE_SWAP_32)
  159|   144k|        return JSONCONS_BYTE_SWAP_32(val);
  ------------------
  |  |   31|   144k|#  define JSONCONS_BYTE_SWAP_32 __builtin_bswap32
  ------------------
  160|       |    #else
  161|       |        uint32_t tmp = ((static_cast<uint32_t>(val) << 8) & 0xff00ff00) | ((static_cast<uint32_t>(val) >> 8) & 0xff00ff);
  162|       |        return (tmp << 16) | (tmp >> 16);
  163|       |    #endif
  164|   144k|    }
_ZN8jsoncons6binary9byte_swapIdEENSt3__19enable_ifIXaasr3std17is_floating_pointIT_EE5valueeqstS4_Lm8EES4_E4typeES4_:
  194|  4.28k|    {
  195|  4.28k|        uint64_t x;
  196|  4.28k|        std::memcpy(&x,&val,sizeof(uint64_t));
  197|  4.28k|        uint64_t y = byte_swap(x);
  198|  4.28k|        T val2;
  199|  4.28k|        std::memcpy(&val2,&y,sizeof(uint64_t));
  200|  4.28k|        return val2;
  201|  4.28k|    }
_ZN8jsoncons6binary9byte_swapImEENSt3__19enable_ifIXaasr3std11is_integralIT_EE5valueeqstS4_Lm8EES4_E4typeES4_:
  169|  4.28k|    {
  170|  4.28k|    #if defined(JSONCONS_BYTE_SWAP_64)
  171|  4.28k|        return JSONCONS_BYTE_SWAP_64(val);
  ------------------
  |  |   30|  4.28k|#  define JSONCONS_BYTE_SWAP_64 __builtin_bswap64
  ------------------
  172|       |    #else
  173|       |        uint64_t tmp = ((static_cast<uint64_t>(val) & 0x00000000ffffffffull) << 32) | ((static_cast<uint64_t>(val) & 0xffffffff00000000ull) >> 32);
  174|       |        tmp = ((tmp & 0x0000ffff0000ffffull) << 16) | ((tmp & 0xffff0000ffff0000ull) >> 16);
  175|       |        return ((tmp & 0x00ff00ff00ff00ffull) << 8)  | ((tmp & 0xff00ff00ff00ff00ull) >> 8);
  176|       |    #endif
  177|  4.28k|    }

_ZN8jsoncons6binary13big_to_nativeIaNS_6detail6endianEEENSt3__19enable_ifIXeqsrT0_6nativesrS6_6littleET_E4typeEPKhm:
  204|  2.00M|    {
  205|  2.00M|        if (sizeof(T) > count)
  ------------------
  |  Branch (205:13): [True: 0, False: 2.00M]
  ------------------
  206|      0|        {
  207|      0|            return T{};
  208|      0|        }
  209|  2.00M|        T val;
  210|  2.00M|        std::memcpy(&val,first,sizeof(T));
  211|  2.00M|        return byte_swap(val);
  212|  2.00M|    }
_ZN8jsoncons6binary13big_to_nativeIsNS_6detail6endianEEENSt3__19enable_ifIXeqsrT0_6nativesrS6_6littleET_E4typeEPKhm:
  204|  39.9k|    {
  205|  39.9k|        if (sizeof(T) > count)
  ------------------
  |  Branch (205:13): [True: 0, False: 39.9k]
  ------------------
  206|      0|        {
  207|      0|            return T{};
  208|      0|        }
  209|  39.9k|        T val;
  210|  39.9k|        std::memcpy(&val,first,sizeof(T));
  211|  39.9k|        return byte_swap(val);
  212|  39.9k|    }
_ZN8jsoncons6binary13big_to_nativeIiNS_6detail6endianEEENSt3__19enable_ifIXeqsrT0_6nativesrS6_6littleET_E4typeEPKhm:
  204|  14.5k|    {
  205|  14.5k|        if (sizeof(T) > count)
  ------------------
  |  Branch (205:13): [True: 0, False: 14.5k]
  ------------------
  206|      0|        {
  207|      0|            return T{};
  208|      0|        }
  209|  14.5k|        T val;
  210|  14.5k|        std::memcpy(&val,first,sizeof(T));
  211|  14.5k|        return byte_swap(val);
  212|  14.5k|    }
_ZN8jsoncons6binary13big_to_nativeIlNS_6detail6endianEEENSt3__19enable_ifIXeqsrT0_6nativesrS6_6littleET_E4typeEPKhm:
  204|  1.07k|    {
  205|  1.07k|        if (sizeof(T) > count)
  ------------------
  |  Branch (205:13): [True: 0, False: 1.07k]
  ------------------
  206|      0|        {
  207|      0|            return T{};
  208|      0|        }
  209|  1.07k|        T val;
  210|  1.07k|        std::memcpy(&val,first,sizeof(T));
  211|  1.07k|        return byte_swap(val);
  212|  1.07k|    }
_ZN8jsoncons6binary13big_to_nativeIfNS_6detail6endianEEENSt3__19enable_ifIXeqsrT0_6nativesrS6_6littleET_E4typeEPKhm:
  204|   144k|    {
  205|   144k|        if (sizeof(T) > count)
  ------------------
  |  Branch (205:13): [True: 0, False: 144k]
  ------------------
  206|      0|        {
  207|      0|            return T{};
  208|      0|        }
  209|   144k|        T val;
  210|   144k|        std::memcpy(&val,first,sizeof(T));
  211|   144k|        return byte_swap(val);
  212|   144k|    }
_ZN8jsoncons6binary13big_to_nativeIdNS_6detail6endianEEENSt3__19enable_ifIXeqsrT0_6nativesrS6_6littleET_E4typeEPKhm:
  204|  4.28k|    {
  205|  4.28k|        if (sizeof(T) > count)
  ------------------
  |  Branch (205:13): [True: 0, False: 4.28k]
  ------------------
  206|      0|        {
  207|      0|            return T{};
  208|      0|        }
  209|  4.28k|        T val;
  210|  4.28k|        std::memcpy(&val,first,sizeof(T));
  211|  4.28k|        return byte_swap(val);
  212|  4.28k|    }

_ZN8jsoncons6detail19heap_string_factoryIcNS_9null_typeENSt3__19allocatorIcEEE7destroyEPNS0_11heap_stringIcS2_S5_EE:
  147|  1.51k|        {
  148|  1.51k|            if (ptr != nullptr)
  ------------------
  |  Branch (148:17): [True: 1.51k, False: 0]
  ------------------
  149|  1.51k|            {
  150|  1.51k|                heap_string_type* rawp = extension_traits::to_plain_pointer(ptr);
  151|       |
  152|  1.51k|                char* p = launder_cast<char*>(rawp);
  153|       |
  154|  1.51k|                std::size_t mem_size = aligned_size(ptr->length_*sizeof(char_type));
  155|  1.51k|                byte_allocator_type byte_alloc(ptr->get_allocator());
  156|  1.51k|                byte_alloc.deallocate(p,mem_size);
  157|  1.51k|            }
  158|  1.51k|        }
_ZN8jsoncons6detail12launder_castIPcNS0_11heap_stringIcNS_9null_typeENSt3__19allocatorIcEEEEEET_PT0_:
   85|  1.51k|    {
   86|       |    #if defined(__cpp_lib_launder) && __cpp_lib_launder >= 201606
   87|       |        return std::launder(reinterpret_cast<T>(u));
   88|       |    #elif defined(__GNUC__) &&  (__GNUC__ * 100 + __GNUC_MINOR__) > 800
   89|       |        return __builtin_launder(reinterpret_cast<T>(u));
   90|       |    #else
   91|  1.51k|        return reinterpret_cast<T>(u);
   92|  1.51k|    #endif
   93|  1.51k|    }
_ZN8jsoncons6detail19heap_string_factoryIcNS_9null_typeENSt3__19allocatorIcEEE12aligned_sizeEm:
  120|  3.02k|        {
  121|  3.02k|            return sizeof(json_storage_kind) + n;
  122|  3.02k|        }
_ZN8jsoncons6detail16heap_string_baseINS_9null_typeENSt3__19allocatorIcEEE13get_allocatorEv:
   28|  1.51k|        {
   29|  1.51k|            return alloc_;
   30|  1.51k|        }
_ZN8jsoncons6detail19heap_string_factoryIcNS_9null_typeENSt3__19allocatorIcEEE6createEPKcmS2_RKS5_:
  127|  1.51k|        {
  128|  1.51k|            std::size_t mem_size = aligned_size(length*sizeof(char_type));
  129|       |
  130|  1.51k|            byte_allocator_type byte_alloc(alloc);
  131|  1.51k|            byte_pointer ptr = byte_alloc.allocate(mem_size);
  132|       |
  133|  1.51k|            char* storage = extension_traits::to_plain_pointer(ptr);
  134|  1.51k|            heap_string_type* ps = new(storage)heap_string_type(extra, byte_alloc);
  135|       |
  136|  1.51k|            auto psa = launder_cast<storage_t*>(storage); 
  137|       |
  138|  1.51k|            CharT* p = new(&psa->c)char_type[length + 1];
  139|  1.51k|            std::memcpy(p, s, length*sizeof(char_type));
  140|  1.51k|            p[length] = 0;
  141|  1.51k|            ps->p_ = std::pointer_traits<typename heap_string_type::pointer>::pointer_to(*p);
  142|  1.51k|            ps->length_ = length;
  143|  1.51k|            return std::pointer_traits<pointer>::pointer_to(*ps);
  144|  1.51k|        }
_ZN8jsoncons6detail11heap_stringIcNS_9null_typeENSt3__19allocatorIcEEEC2ES2_RKS5_:
   65|  1.51k|        {
   66|  1.51k|        }
_ZN8jsoncons6detail16heap_string_baseINS_9null_typeENSt3__19allocatorIcEEEC2ERKS2_RKS5_:
   39|  1.51k|        {
   40|  1.51k|        }
_ZN8jsoncons6detail12launder_castIPNS0_19heap_string_factoryIcNS_9null_typeENSt3__19allocatorIcEEE9storage_tEcEET_PT0_:
   85|  1.51k|    {
   86|       |    #if defined(__cpp_lib_launder) && __cpp_lib_launder >= 201606
   87|       |        return std::launder(reinterpret_cast<T>(u));
   88|       |    #elif defined(__GNUC__) &&  (__GNUC__ * 100 + __GNUC_MINOR__) > 800
   89|       |        return __builtin_launder(reinterpret_cast<T>(u));
   90|       |    #else
   91|  1.51k|        return reinterpret_cast<T>(u);
   92|  1.51k|    #endif
   93|  1.51k|    }

_ZN8jsoncons6detail9is_base10IcEEbPKT_m:
  109|    908|{
  110|    908|    integer_chars_state state = integer_chars_state::initial;
  111|       |
  112|    908|    const CharT* end = s + length; 
  113|  1.92k|    for (;s < end; ++s)
  ------------------
  |  Branch (113:11): [True: 1.87k, False: 48]
  ------------------
  114|  1.87k|    {
  115|  1.87k|        switch(state)
  116|  1.87k|        {
  117|    895|            case integer_chars_state::initial:
  ------------------
  |  Branch (117:13): [True: 895, False: 983]
  ------------------
  118|    895|            {
  119|    895|                switch(*s)
  120|    895|                {
  121|    129|                    case '0':case '1':case '2':case '3':case '4':case '5':case '6':case '7':case '8': case '9':
  ------------------
  |  Branch (121:21): [True: 4, False: 891]
  |  Branch (121:30): [True: 5, False: 890]
  |  Branch (121:39): [True: 33, False: 862]
  |  Branch (121:48): [True: 41, False: 854]
  |  Branch (121:57): [True: 31, False: 864]
  |  Branch (121:66): [True: 0, False: 895]
  |  Branch (121:75): [True: 2, False: 893]
  |  Branch (121:84): [True: 13, False: 882]
  |  Branch (121:93): [True: 0, False: 895]
  |  Branch (121:103): [True: 0, False: 895]
  ------------------
  122|    129|                        state = integer_chars_state::decimal;
  123|    129|                        break;
  124|     17|                    case '-':
  ------------------
  |  Branch (124:21): [True: 17, False: 878]
  ------------------
  125|     17|                        state = integer_chars_state::minus;
  126|     17|                        break;
  127|    749|                    default:
  ------------------
  |  Branch (127:21): [True: 749, False: 146]
  ------------------
  128|    749|                        return false;
  129|    895|                }
  130|    146|                break;
  131|    895|            }
  132|    146|            case integer_chars_state::minus:
  ------------------
  |  Branch (132:13): [True: 17, False: 1.86k]
  ------------------
  133|     17|            {
  134|     17|                switch(*s)
  135|     17|                {
  136|     12|                    case '0':case '1':case '2':case '3':case '4':case '5':case '6':case '7':case '8': case '9':
  ------------------
  |  Branch (136:21): [True: 8, False: 9]
  |  Branch (136:30): [True: 1, False: 16]
  |  Branch (136:39): [True: 3, False: 14]
  |  Branch (136:48): [True: 0, False: 17]
  |  Branch (136:57): [True: 0, False: 17]
  |  Branch (136:66): [True: 0, False: 17]
  |  Branch (136:75): [True: 0, False: 17]
  |  Branch (136:84): [True: 0, False: 17]
  |  Branch (136:93): [True: 0, False: 17]
  |  Branch (136:103): [True: 0, False: 17]
  ------------------
  137|     12|                        state = integer_chars_state::decimal;
  138|     12|                        break;
  139|      5|                    default:
  ------------------
  |  Branch (139:21): [True: 5, False: 12]
  ------------------
  140|      5|                        return false;
  141|     17|                }
  142|     12|                break;
  143|     17|            }
  144|    966|            case integer_chars_state::decimal:
  ------------------
  |  Branch (144:13): [True: 966, False: 912]
  ------------------
  145|    966|            {
  146|    966|                switch(*s)
  147|    966|                {
  148|    860|                    case '0':case '1':case '2':case '3':case '4':case '5':case '6':case '7':case '8': case '9':
  ------------------
  |  Branch (148:21): [True: 4, False: 962]
  |  Branch (148:30): [True: 2, False: 964]
  |  Branch (148:39): [True: 171, False: 795]
  |  Branch (148:48): [True: 1, False: 965]
  |  Branch (148:57): [True: 400, False: 566]
  |  Branch (148:66): [True: 5, False: 961]
  |  Branch (148:75): [True: 18, False: 948]
  |  Branch (148:84): [True: 1, False: 965]
  |  Branch (148:93): [True: 248, False: 718]
  |  Branch (148:103): [True: 10, False: 956]
  ------------------
  149|    860|                        break;
  150|    106|                    default:
  ------------------
  |  Branch (150:21): [True: 106, False: 860]
  ------------------
  151|    106|                        return false;
  152|    966|                }
  153|    860|                break;
  154|    966|            }
  155|    860|            default:
  ------------------
  |  Branch (155:13): [True: 0, False: 1.87k]
  ------------------
  156|      0|                break;
  157|  1.87k|        }
  158|  1.87k|    }
  159|     48|    return state == integer_chars_state::decimal ? true : false;
  ------------------
  |  Branch (159:12): [True: 35, False: 13]
  ------------------
  160|    908|}

_ZNK8jsoncons6detail17basic_string_viewIcNSt3__111char_traitsIcEEE4dataEv:
  157|  13.2M|        {
  158|  13.2M|            return data_;
  159|  13.2M|        }
_ZNK8jsoncons6detail17basic_string_viewIcNSt3__111char_traitsIcEEE6lengthEv:
  119|  6.63M|        {
  120|  6.63M|            return length_;
  121|  6.63M|        }
_ZNK8jsoncons6detail17basic_string_viewIcNSt3__111char_traitsIcEEE4sizeEv:
  114|  6.63M|        {
  115|  6.63M|            return length_;
  116|  6.63M|        }
_ZN8jsoncons6detail17basic_string_viewIcNSt3__111char_traitsIcEEEC2EPKcm:
   48|  10.3M|        {
   49|  10.3M|        }
_ZN8jsoncons6detail17basic_string_viewIcNSt3__111char_traitsIcEEEC2IS4_NS2_9allocatorIcEEEERKNS2_12basic_stringIcT_T0_EE:
   60|  2.91M|        {
   61|  2.91M|        }

_ZN8jsoncons16extension_traits16to_plain_pointerINS_6detail11heap_stringIcNS_9null_typeENSt3__19allocatorIcEEEEEEPT_SA_:
  238|  1.51k|    {       
  239|  1.51k|        return (ptr);
  240|  1.51k|    }  
_ZN8jsoncons16extension_traits16to_plain_pointerIcEEPT_S3_:
  238|  1.51k|    {       
  239|  1.51k|        return (ptr);
  240|  1.51k|    }  
_ZN8jsoncons16extension_traits16to_plain_pointerINS_18sorted_json_objectINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES8_EENS3_6vectorEEEEEPT_SG_:
  238|  9.24M|    {       
  239|  9.24M|        return (ptr);
  240|  9.24M|    }  
_ZN8jsoncons16extension_traits16to_plain_pointerINS_10json_arrayINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEENS5_6vectorEEEEEPT_SC_:
  238|  6.94M|    {       
  239|  6.94M|        return (ptr);
  240|  6.94M|    }  

_ZN8jsoncons10json_arrayINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEENS3_6vectorEED2Ev:
  108|  6.95M|        {
  109|  6.95M|            flatten_and_destroy();
  110|  6.95M|        }
_ZN8jsoncons10json_arrayINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEENS3_6vectorEE19flatten_and_destroyEv:
  285|  6.95M|        {
  286|  12.4M|            while (!elements_.empty())
  ------------------
  |  Branch (286:20): [True: 5.45M, False: 6.95M]
  ------------------
  287|  5.45M|            {
  288|  5.45M|                value_type current = std::move(elements_.back());
  289|  5.45M|                elements_.pop_back();
  290|  5.45M|                switch (current.storage_kind())
  291|  5.45M|                {
  292|  13.8k|                    case json_storage_kind::array_value:
  ------------------
  |  Branch (292:21): [True: 13.8k, False: 5.43M]
  ------------------
  293|  13.8k|                    {
  294|  13.8k|                        for (auto&& item : current.array_range())
  ------------------
  |  Branch (294:42): [True: 16.9M, False: 13.8k]
  ------------------
  295|  16.9M|                        {
  296|  16.9M|                            if (item.size() > 0) // non-empty object or array
  ------------------
  |  Branch (296:33): [True: 10.8k, False: 16.9M]
  ------------------
  297|  10.8k|                            {
  298|  10.8k|                                elements_.push_back(std::move(item));
  299|  10.8k|                            }
  300|  16.9M|                        }
  301|  13.8k|                        current.clear();                           
  302|  13.8k|                        break;
  303|      0|                    }
  304|  4.02k|                    case json_storage_kind::object_value:
  ------------------
  |  Branch (304:21): [True: 4.02k, False: 5.44M]
  ------------------
  305|  4.02k|                    {
  306|  4.02k|                        for (auto&& kv : current.object_range())
  ------------------
  |  Branch (306:40): [True: 4.87k, False: 4.02k]
  ------------------
  307|  4.87k|                        {
  308|  4.87k|                            if (kv.value().size() > 0) // non-empty object or array
  ------------------
  |  Branch (308:33): [True: 82, False: 4.78k]
  ------------------
  309|     82|                            {
  310|     82|                                elements_.push_back(std::move(kv.value()));
  311|     82|                            }
  312|  4.87k|                        }
  313|  4.02k|                        current.clear();                           
  314|  4.02k|                        break;
  315|      0|                    }
  316|  5.43M|                    default:
  ------------------
  |  Branch (316:21): [True: 5.43M, False: 17.8k]
  ------------------
  317|  5.43M|                        break;
  318|  5.45M|                }
  319|  5.45M|            }
  320|  6.95M|        }
_ZN8jsoncons10json_arrayINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEENS3_6vectorEE5beginEv:
  263|  13.8k|        iterator begin() {return elements_.begin();}
_ZN8jsoncons10json_arrayINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEENS3_6vectorEE3endEv:
  265|  13.8k|        iterator end() {return elements_.end();}
_ZNK8jsoncons10json_arrayINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEENS3_6vectorEE4sizeEv:
  137|  11.3k|        std::size_t size() const {return elements_.size();}
_ZN8jsoncons10json_arrayINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEENS3_6vectorEE5clearEv:
  141|  13.8k|        void clear() {elements_.clear();}
_ZN8jsoncons10json_arrayINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEENS3_6vectorEEC2ERKS5_:
   54|  3.47M|        {
   55|  3.47M|        }
_ZNK8jsoncons10json_arrayINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEENS3_6vectorEE5emptyEv:
  128|  4.02k|        {
  129|  4.02k|            return elements_.empty();
  130|  4.02k|        }
_ZN8jsoncons10json_arrayINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEENS3_6vectorEE12emplace_backIJS6_EEERS6_DpOT_:
  258|  1.01k|        {
  259|  1.01k|            elements_.emplace_back(std::forward<Args>(args)...);
  260|  1.01k|            return elements_.back();
  261|  1.01k|        }
_ZN8jsoncons10json_arrayINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEENS3_6vectorEEC2EOS8_:
   93|  3.47M|        {
   94|  3.47M|        }
_ZN8jsoncons10json_arrayINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEENS3_6vectorEE7reserveEm:
  152|  32.8k|        void reserve(std::size_t n) {elements_.reserve(n);}
_ZN8jsoncons10json_arrayINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEENS3_6vectorEE9push_backIS6_S5_EENS3_9enable_ifIXsr16extension_traits12is_statelessIT0_EE5valueEvE4typeEOT_:
  198|  22.3M|        {
  199|  22.3M|            elements_.emplace_back(std::forward<T>(value));
  200|  22.3M|        }

_ZN8jsoncons12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES5_EC2ERKS5_S9_:
   77|    394|    {
   78|    394|        item_stack_.reserve(1000);
   79|    394|        structure_stack_.reserve(100);
   80|    394|        structure_stack_.emplace_back(structure_type::root_t, 0);
   81|    394|    }
_ZN8jsoncons12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES5_E14structure_infoC2ENS7_14structure_typeEm:
   48|  8.09M|        {
   49|  8.09M|        }
_ZN8jsoncons12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES5_E18visit_begin_objectENS_12semantic_tagERKNS_11ser_contextERNS3_10error_codeE:
  142|  4.62M|    {
  143|  4.62M|        if (structure_stack_.back().type_ == structure_type::root_t)
  ------------------
  |  Branch (143:13): [True: 122, False: 4.62M]
  ------------------
  144|    122|        {
  145|    122|            index_ = 0;
  146|    122|            item_stack_.clear();
  147|    122|            is_valid_ = false;
  148|    122|        }
  149|  4.62M|        item_stack_.emplace_back(std::move(name_), index_++, json_object_arg, tag);
  150|  4.62M|        structure_stack_.emplace_back(structure_type::object_t, item_stack_.size()-1);
  151|  4.62M|        return true;
  152|  4.62M|    }
_ZN8jsoncons12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES5_E16visit_end_objectERKNS_11ser_contextERNS3_10error_codeE:
  155|  4.62M|    {
  156|  4.62M|        JSONCONS_ASSERT(structure_stack_.size() > 0);
  ------------------
  |  |  378|  4.62M|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 4.62M]
  |  |  ------------------
  |  |  379|      0|    JSONCONS_THROW(jsoncons::assertion_error("assertion '" #x "' failed at  <> :" \
  |  |  ------------------
  |  |  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  |  |  ------------------
  |  |  380|      0|            JSONCONS_STR( 0 ))); }
  ------------------
  157|  4.62M|        JSONCONS_ASSERT(structure_stack_.back().type_ == structure_type::object_t);
  ------------------
  |  |  378|  4.62M|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 4.62M]
  |  |  ------------------
  |  |  379|      0|    JSONCONS_THROW(jsoncons::assertion_error("assertion '" #x "' failed at  <> :" \
  |  |  ------------------
  |  |  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  |  |  ------------------
  |  |  380|      0|            JSONCONS_STR( 0 ))); }
  ------------------
  158|  4.62M|        const size_t structure_index = structure_stack_.back().container_index_;
  159|  4.62M|        JSONCONS_ASSERT(item_stack_.size() > structure_index);
  ------------------
  |  |  378|  4.62M|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 4.62M]
  |  |  ------------------
  |  |  379|      0|    JSONCONS_THROW(jsoncons::assertion_error("assertion '" #x "' failed at  <> :" \
  |  |  ------------------
  |  |  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  |  |  ------------------
  |  |  380|      0|            JSONCONS_STR( 0 ))); }
  ------------------
  160|  4.62M|        const size_t count = item_stack_.size() - (structure_index + 1);
  161|  4.62M|        auto first = item_stack_.begin() + (structure_index+1);
  162|       |
  163|  4.62M|        if (count > 0)
  ------------------
  |  Branch (163:13): [True: 7.33k, False: 4.61M]
  ------------------
  164|  7.33k|        {
  165|  7.33k|            item_stack_[structure_index].value.template cast<typename Json::object_storage>().value().uninitialized_init(
  166|  7.33k|                &item_stack_[structure_index+1], count);
  167|  7.33k|        }
  168|       |
  169|  4.62M|        item_stack_.erase(first, item_stack_.end());
  170|  4.62M|        structure_stack_.pop_back();
  171|  4.62M|        if (structure_stack_.back().type_ == structure_type::root_t)
  ------------------
  |  Branch (171:13): [True: 67, False: 4.62M]
  ------------------
  172|     67|        {
  173|     67|            result_.swap(item_stack_.front().value);
  174|     67|            item_stack_.pop_back();
  175|     67|            is_valid_ = true;
  176|     67|            return false;
  177|     67|        }
  178|  4.62M|        return true;
  179|  4.62M|    }
_ZN8jsoncons12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES5_E17visit_begin_arrayENS_12semantic_tagERKNS_11ser_contextERNS3_10error_codeE:
  182|  3.47M|    {
  183|  3.47M|        if (structure_stack_.back().type_ == structure_type::root_t)
  ------------------
  |  Branch (183:13): [True: 238, False: 3.47M]
  ------------------
  184|    238|        {
  185|    238|            index_ = 0;
  186|    238|            item_stack_.clear();
  187|    238|            is_valid_ = false;
  188|    238|        }
  189|  3.47M|        item_stack_.emplace_back(std::move(name_), index_++, json_array_arg, tag);
  190|  3.47M|        structure_stack_.emplace_back(structure_type::array_t, item_stack_.size()-1);
  191|  3.47M|        return true;
  192|  3.47M|    }
_ZN8jsoncons12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES5_E15visit_end_arrayERKNS_11ser_contextERNS3_10error_codeE:
  195|  3.45M|    {
  196|  3.45M|        JSONCONS_ASSERT(structure_stack_.size() > 1);
  ------------------
  |  |  378|  3.45M|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 3.45M]
  |  |  ------------------
  |  |  379|      0|    JSONCONS_THROW(jsoncons::assertion_error("assertion '" #x "' failed at  <> :" \
  |  |  ------------------
  |  |  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  |  |  ------------------
  |  |  380|      0|            JSONCONS_STR( 0 ))); }
  ------------------
  197|  3.45M|        JSONCONS_ASSERT(structure_stack_.back().type_ == structure_type::array_t);
  ------------------
  |  |  378|  3.45M|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 3.45M]
  |  |  ------------------
  |  |  379|      0|    JSONCONS_THROW(jsoncons::assertion_error("assertion '" #x "' failed at  <> :" \
  |  |  ------------------
  |  |  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  |  |  ------------------
  |  |  380|      0|            JSONCONS_STR( 0 ))); }
  ------------------
  198|  3.45M|        const size_t container_index = structure_stack_.back().container_index_;
  199|  3.45M|        JSONCONS_ASSERT(item_stack_.size() > container_index);
  ------------------
  |  |  378|  3.45M|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 3.45M]
  |  |  ------------------
  |  |  379|      0|    JSONCONS_THROW(jsoncons::assertion_error("assertion '" #x "' failed at  <> :" \
  |  |  ------------------
  |  |  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  |  |  ------------------
  |  |  380|      0|            JSONCONS_STR( 0 ))); }
  ------------------
  200|       |
  201|  3.45M|        auto& container = item_stack_[container_index].value;
  202|       |
  203|  3.45M|        const size_t size = item_stack_.size() - (container_index + 1);
  204|       |        //std::cout << "size on item stack: " << size << "\n";
  205|       |
  206|  3.45M|        if (size > 0)
  ------------------
  |  Branch (206:13): [True: 32.8k, False: 3.42M]
  ------------------
  207|  32.8k|        {
  208|  32.8k|            container.reserve(size);
  209|  32.8k|            auto first = item_stack_.begin() + (container_index+1);
  210|  32.8k|            auto last = first + size;
  211|  22.4M|            for (auto it = first; it != last; ++it)
  ------------------
  |  Branch (211:35): [True: 22.3M, False: 32.8k]
  ------------------
  212|  22.3M|            {
  213|  22.3M|                container.push_back(std::move(it->value));
  214|  22.3M|            }
  215|  32.8k|            item_stack_.erase(first, item_stack_.end());
  216|  32.8k|        }
  217|       |
  218|  3.45M|        structure_stack_.pop_back();
  219|  3.45M|        if (structure_stack_.back().type_ == structure_type::root_t)
  ------------------
  |  Branch (219:13): [True: 37, False: 3.45M]
  ------------------
  220|     37|        {
  221|     37|            result_.swap(item_stack_.front().value);
  222|     37|            item_stack_.pop_back();
  223|     37|            is_valid_ = true;
  224|     37|            return false;
  225|     37|        }
  226|  3.45M|        return true;
  227|  3.45M|    }
_ZN8jsoncons12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES5_E9visit_keyERKNS_6detail17basic_string_viewIcNS3_11char_traitsIcEEEERKNS_11ser_contextERNS3_10error_codeE:
  230|  3.71M|    {
  231|  3.71M|        name_ = key_type(name.data(),name.length(),allocator_);
  232|  3.71M|        return true;
  233|  3.71M|    }
_ZN8jsoncons12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES5_E10visit_nullENS_12semantic_tagERKNS_11ser_contextERNS3_10error_codeE:
  382|  27.0M|    {
  383|  27.0M|        switch (structure_stack_.back().type_)
  ------------------
  |  Branch (383:17): [True: 0, False: 27.0M]
  ------------------
  384|  27.0M|        {
  385|  3.66M|            case structure_type::object_t:
  ------------------
  |  Branch (385:13): [True: 3.66M, False: 23.3M]
  ------------------
  386|  27.0M|            case structure_type::array_t:
  ------------------
  |  Branch (386:13): [True: 23.3M, False: 3.66M]
  ------------------
  387|  27.0M|                item_stack_.emplace_back(std::move(name_), index_++, null_type(), tag);
  388|  27.0M|                break;
  389|      0|            case structure_type::root_t:
  ------------------
  |  Branch (389:13): [True: 0, False: 27.0M]
  ------------------
  390|      0|                result_ = Json(null_type(), tag);
  391|      0|                is_valid_ = true;
  392|      0|                return false;
  393|  27.0M|        }
  394|  27.0M|        return true;
  395|  27.0M|    }
_ZN8jsoncons12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES5_E10visit_boolEbNS_12semantic_tagERKNS_11ser_contextERNS3_10error_codeE:
  366|  3.34M|    {
  367|  3.34M|        switch (structure_stack_.back().type_)
  ------------------
  |  Branch (367:17): [True: 0, False: 3.34M]
  ------------------
  368|  3.34M|        {
  369|  11.4k|            case structure_type::object_t:
  ------------------
  |  Branch (369:13): [True: 11.4k, False: 3.33M]
  ------------------
  370|  3.34M|            case structure_type::array_t:
  ------------------
  |  Branch (370:13): [True: 3.33M, False: 11.4k]
  ------------------
  371|  3.34M|                item_stack_.emplace_back(std::move(name_), index_++, value, tag);
  372|  3.34M|                break;
  373|      0|            case structure_type::root_t:
  ------------------
  |  Branch (373:13): [True: 0, False: 3.34M]
  ------------------
  374|      0|                result_ = Json(value, tag);
  375|      0|                is_valid_ = true;
  376|      0|                return false;
  377|  3.34M|        }
  378|  3.34M|        return true;
  379|  3.34M|    }
_ZN8jsoncons12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES5_E12visit_stringERKNS_6detail17basic_string_viewIcNS3_11char_traitsIcEEEENS_12semantic_tagERKNS_11ser_contextERNS3_10error_codeE:
  236|  2.91M|    {
  237|  2.91M|        switch (structure_stack_.back().type_)
  ------------------
  |  Branch (237:17): [True: 0, False: 2.91M]
  ------------------
  238|  2.91M|        {
  239|  2.96k|            case structure_type::object_t:
  ------------------
  |  Branch (239:13): [True: 2.96k, False: 2.91M]
  ------------------
  240|  2.91M|            case structure_type::array_t:
  ------------------
  |  Branch (240:13): [True: 2.91M, False: 2.97k]
  ------------------
  241|  2.91M|                item_stack_.emplace_back(std::move(name_), index_++, sv, tag);
  242|  2.91M|                break;
  243|      7|            case structure_type::root_t:
  ------------------
  |  Branch (243:13): [True: 7, False: 2.91M]
  ------------------
  244|      7|                result_ = Json(sv, tag, allocator_);
  245|      7|                is_valid_ = true;
  246|      7|                return false;
  247|  2.91M|        }
  248|  2.91M|        return true;
  249|  2.91M|    }
_ZN8jsoncons12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES5_E12visit_uint64EmNS_12semantic_tagERKNS_11ser_contextERNS3_10error_codeE:
  312|  2.53M|    {
  313|  2.53M|        switch (structure_stack_.back().type_)
  ------------------
  |  Branch (313:17): [True: 0, False: 2.53M]
  ------------------
  314|  2.53M|        {
  315|  5.44k|            case structure_type::object_t:
  ------------------
  |  Branch (315:13): [True: 5.44k, False: 2.53M]
  ------------------
  316|  2.53M|            case structure_type::array_t:
  ------------------
  |  Branch (316:13): [True: 2.53M, False: 5.44k]
  ------------------
  317|  2.53M|                item_stack_.emplace_back(std::move(name_), index_++, value, tag);
  318|  2.53M|                break;
  319|      0|            case structure_type::root_t:
  ------------------
  |  Branch (319:13): [True: 0, False: 2.53M]
  ------------------
  320|      0|                result_ = Json(value,tag);
  321|      0|                is_valid_ = true;
  322|      0|                return false;
  323|  2.53M|        }
  324|  2.53M|        return true;
  325|  2.53M|    }
_ZN8jsoncons12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES5_E11visit_int64ElNS_12semantic_tagERKNS_11ser_contextERNS3_10error_codeE:
  293|  2.03M|    {
  294|  2.03M|        switch (structure_stack_.back().type_)
  ------------------
  |  Branch (294:17): [True: 0, False: 2.03M]
  ------------------
  295|  2.03M|        {
  296|  6.96k|            case structure_type::object_t:
  ------------------
  |  Branch (296:13): [True: 6.96k, False: 2.02M]
  ------------------
  297|  2.03M|            case structure_type::array_t:
  ------------------
  |  Branch (297:13): [True: 2.02M, False: 6.96k]
  ------------------
  298|  2.03M|                item_stack_.emplace_back(std::move(name_), index_++, value, tag);
  299|  2.03M|                break;
  300|      0|            case structure_type::root_t:
  ------------------
  |  Branch (300:13): [True: 0, False: 2.03M]
  ------------------
  301|      0|                result_ = Json(value,tag);
  302|      0|                is_valid_ = true;
  303|      0|                return false;
  304|  2.03M|        }
  305|  2.03M|        return true;
  306|  2.03M|    }
_ZN8jsoncons12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES5_E12visit_doubleEdNS_12semantic_tagERKNS_11ser_contextERNS3_10error_codeE:
  350|   148k|    {
  351|   148k|        switch (structure_stack_.back().type_)
  ------------------
  |  Branch (351:17): [True: 0, False: 148k]
  ------------------
  352|   148k|        {
  353|    891|            case structure_type::object_t:
  ------------------
  |  Branch (353:13): [True: 891, False: 147k]
  ------------------
  354|   148k|            case structure_type::array_t:
  ------------------
  |  Branch (354:13): [True: 147k, False: 891]
  ------------------
  355|   148k|                item_stack_.emplace_back(std::move(name_), index_++, value, tag);
  356|   148k|                break;
  357|      0|            case structure_type::root_t:
  ------------------
  |  Branch (357:13): [True: 0, False: 148k]
  ------------------
  358|      0|                result_ = Json(value, tag);
  359|      0|                is_valid_ = true;
  360|      0|                return false;
  361|   148k|        }
  362|   148k|        return true;
  363|   148k|    }
_ZNK8jsoncons12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES5_E8is_validEv:
  116|    111|    {
  117|    111|        return is_valid_;
  118|    111|    }
_ZN8jsoncons12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES5_E10get_resultEv:
  121|    111|    {
  122|    111|        JSONCONS_ASSERT(is_valid_);
  ------------------
  |  |  378|    111|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 111]
  |  |  ------------------
  |  |  379|      0|    JSONCONS_THROW(jsoncons::assertion_error("assertion '" #x "' failed at  <> :" \
  |  |  ------------------
  |  |  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  |  |  ------------------
  |  |  380|      0|            JSONCONS_STR( 0 ))); }
  ------------------
  123|    111|        is_valid_ = false;
  124|    111|        return std::move(result_);
  125|    111|    }

_ZN8jsoncons14json_exceptionD2Ev:
   24|    283|        virtual ~json_exception() noexcept = default;
_ZN8jsoncons9ser_errorC1ENSt3__110error_codeEmm:
  168|    283|        {
  169|    283|        }

_ZN8jsoncons25make_json_visitor_adaptorINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEEENS_20json_visitor_adaptorIT_T0_vEERSD_:
  631|    394|{
  632|    394|    return json_visitor_adaptor<From, To>(to);
  633|    394|}
_ZN8jsoncons20json_visitor_adaptorINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEvEC2ERSA_:
  550|    394|    {
  551|    394|    }
_ZN8jsoncons25json_visitor_adaptor_baseINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEEC2ERSA_:
  318|    394|    {
  319|    394|    }
_ZN8jsoncons25json_visitor_adaptor_baseINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEE18visit_begin_objectENS_12semantic_tagERKNS_11ser_contextERNS6_10error_codeE:
  339|  4.61M|    {
  340|  4.61M|        return destination_->begin_object(tag, context, ec);
  341|  4.61M|    }
_ZN8jsoncons25json_visitor_adaptor_baseINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEE18visit_begin_objectEmNS_12semantic_tagERKNS_11ser_contextERNS6_10error_codeE:
  347|  8.79k|    {
  348|  8.79k|        return destination_->begin_object(length, tag, context, ec);
  349|  8.79k|    }
_ZN8jsoncons25json_visitor_adaptor_baseINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEE16visit_end_objectERKNS_11ser_contextERNS6_10error_codeE:
  352|  4.62M|    {
  353|  4.62M|        return destination_->end_object(context, ec);
  354|  4.62M|    }
_ZN8jsoncons25json_visitor_adaptor_baseINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEE17visit_begin_arrayENS_12semantic_tagERKNS_11ser_contextERNS6_10error_codeE:
  359|  3.46M|    {
  360|  3.46M|        return destination_->begin_array(tag, context, ec);
  361|  3.46M|    }
_ZN8jsoncons25json_visitor_adaptor_baseINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEE17visit_begin_arrayEmNS_12semantic_tagERKNS_11ser_contextERNS6_10error_codeE:
  367|  4.72k|    {
  368|  4.72k|        return destination_->begin_array(length, tag, context, ec);
  369|  4.72k|    }
_ZN8jsoncons25json_visitor_adaptor_baseINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEE15visit_end_arrayERKNS_11ser_contextERNS6_10error_codeE:
  372|  3.45M|    {
  373|  3.45M|        return destination_->end_array(context, ec);
  374|  3.45M|    }
_ZN8jsoncons20json_visitor_adaptorINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEvE9visit_keyERKNS_6detail17basic_string_viewIcNS6_11char_traitsIcEEEERKNS_11ser_contextERNS6_10error_codeE:
  562|  3.71M|    {
  563|  3.71M|        return destination().key(string_view_type(reinterpret_cast<const to_char_type*>(key.data()),key.size()), context, ec);
  564|  3.71M|    }
_ZN8jsoncons25json_visitor_adaptor_baseINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEE11destinationEv:
  326|  6.63M|    {
  327|  6.63M|        return *destination_;
  328|  6.63M|    }
_ZN8jsoncons25json_visitor_adaptor_baseINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEE10visit_nullENS_12semantic_tagERKNS_11ser_contextERNS6_10error_codeE:
  418|  27.0M|    {
  419|  27.0M|        return destination_->null_value(tag, context, ec);
  420|  27.0M|    }
_ZN8jsoncons25json_visitor_adaptor_baseINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEE10visit_boolEbNS_12semantic_tagERKNS_11ser_contextERNS6_10error_codeE:
  413|  3.34M|    {
  414|  3.34M|        return destination_->bool_value(value, tag, context, ec);
  415|  3.34M|    }
_ZN8jsoncons20json_visitor_adaptorINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEvE12visit_stringERKNS_6detail17basic_string_viewIcNS6_11char_traitsIcEEEENS_12semantic_tagERKNS_11ser_contextERNS6_10error_codeE:
  570|  2.91M|    {
  571|  2.91M|        return destination().string_value(string_view_type(reinterpret_cast<const to_char_type*>(value.data()),value.size()), tag, context, ec);
  572|  2.91M|    }
_ZN8jsoncons25json_visitor_adaptor_baseINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEE12visit_uint64EmNS_12semantic_tagERKNS_11ser_contextERNS6_10error_codeE:
  408|  2.53M|    {
  409|  2.53M|        return destination_->uint64_value(value, tag, context, ec);
  410|  2.53M|    }
_ZN8jsoncons25json_visitor_adaptor_baseINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEE11visit_int64ElNS_12semantic_tagERKNS_11ser_contextERNS6_10error_codeE:
  403|  2.03M|    {
  404|  2.03M|        return destination_->int64_value(value, tag, context, ec);
  405|  2.03M|    }
_ZN8jsoncons25json_visitor_adaptor_baseINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEE12visit_doubleEdNS_12semantic_tagERKNS_11ser_contextERNS6_10error_codeE:
  398|   148k|    {
  399|   148k|        return destination_->double_value(value, tag, context, ec);
  400|   148k|    }

_ZNK8jsoncons18sorted_json_objectINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES6_EENS1_6vectorEE4sizeEv:
  464|  1.77k|        std::size_t size() const {return members_.size();}
_ZN8jsoncons18sorted_json_objectINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES6_EENS1_6vectorEE5clearEv:
  468|  4.02k|        void clear() {members_.clear();}
_ZN8jsoncons18sorted_json_objectINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES6_EENS1_6vectorEE5beginEv:
  445|  4.02k|        {
  446|  4.02k|            return members_.begin();
  447|  4.02k|        }
_ZN8jsoncons18sorted_json_objectINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES6_EENS1_6vectorEE3endEv:
  450|  4.02k|        {
  451|  4.02k|            return members_.end();
  452|  4.02k|        }
_ZN8jsoncons9key_valueINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES6_EEE5valueEv:
  172|  26.3k|        {
  173|  26.3k|            return value_;
  174|  26.3k|        }
_ZN8jsoncons18sorted_json_objectINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES6_EENS1_6vectorEED2Ev:
  430|  9.24M|        {
  431|  9.24M|            flatten_and_destroy();
  432|  9.24M|        }
_ZN8jsoncons18sorted_json_objectINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES6_EENS1_6vectorEE19flatten_and_destroyEv:
 1008|  9.24M|        {
 1009|  9.24M|            if (!members_.empty())
  ------------------
  |  Branch (1009:17): [True: 5.08k, False: 9.24M]
  ------------------
 1010|  5.08k|            {
 1011|  5.08k|                json_array<Json> temp(get_allocator());
 1012|       |
 1013|  5.08k|                for (auto& kv : members_)
  ------------------
  |  Branch (1013:31): [True: 15.8k, False: 5.08k]
  ------------------
 1014|  15.8k|                {
 1015|  15.8k|                    switch (kv.value().storage_kind())
 1016|  15.8k|                    {
 1017|  4.02k|                        case json_storage_kind::array_value:
  ------------------
  |  Branch (1017:25): [True: 4.02k, False: 11.7k]
  ------------------
 1018|  4.57k|                        case json_storage_kind::object_value:
  ------------------
  |  Branch (1018:25): [True: 552, False: 15.2k]
  ------------------
 1019|  4.57k|                            if (!kv.value().empty())
  ------------------
  |  Branch (1019:33): [True: 1.01k, False: 3.56k]
  ------------------
 1020|  1.01k|                            {
 1021|  1.01k|                                temp.emplace_back(std::move(kv.value()));
 1022|  1.01k|                            }
 1023|  4.57k|                            break;
 1024|  11.2k|                        default:
  ------------------
  |  Branch (1024:25): [True: 11.2k, False: 4.57k]
  ------------------
 1025|  11.2k|                            break;
 1026|  15.8k|                    }
 1027|  15.8k|                }
 1028|  5.08k|            }
 1029|  9.24M|        }
_ZNK8jsoncons18sorted_json_objectINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES6_EENS1_6vectorEE5emptyEv:
  435|    552|        {
  436|    552|            return members_.empty();
  437|    552|        }
_ZN8jsoncons15key_index_valueINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEEEC2EOS7_:
   47|  87.7M|        key_index_value(key_index_value&&) = default;
_ZN8jsoncons15key_index_valueINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEEEC2IJRKNS_17json_object_arg_tERNS_12semantic_tagEEEEONS3_12basic_stringIcNS3_11char_traitsIcEES5_EEmDpOT_:
   42|  4.62M|        {
   43|  4.62M|        }
_ZN8jsoncons18sorted_json_objectINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES6_EENS1_6vectorEEC2EOSC_:
  361|  4.62M|        {
  362|  4.62M|        }
_ZN8jsoncons18sorted_json_objectINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES6_EENS1_6vectorEEC2ERKS6_:
  343|  4.62M|        {
  344|  4.62M|        }
_ZN8jsoncons18sorted_json_objectINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES6_EENS1_6vectorEE18uninitialized_initEPNS_15key_index_valueISA_EEm:
  553|  7.33k|        {
  554|  7.33k|            auto first = items;
  555|  7.33k|            if (count > 0)
  ------------------
  |  Branch (555:17): [True: 7.33k, False: 0]
  ------------------
  556|  7.33k|            {
  557|  7.33k|                members_.reserve(count);
  558|       |
  559|  7.33k|                auto last = first + count;
  560|       |
  561|  7.33k|                std::sort(first, last, compare);
  562|  7.33k|                members_.emplace_back(first->name, std::move(first->value));
  563|  7.33k|                auto prev_it = first;
  564|  3.62M|                for (auto it = first+1; it != last; ++it)
  ------------------
  |  Branch (564:41): [True: 3.61M, False: 7.33k]
  ------------------
  565|  3.61M|                {
  566|  3.61M|                    if (it->name.compare(prev_it->name) != 0)
  ------------------
  |  Branch (566:25): [True: 13.3k, False: 3.60M]
  ------------------
  567|  13.3k|                    {
  568|  13.3k|                        members_.emplace_back(it->name, std::move(it->value));
  569|  13.3k|                    }
  570|  3.61M|                    ++prev_it;
  571|  3.61M|                }
  572|  7.33k|            }
  573|  7.33k|        }
_ZN8jsoncons15key_index_valueINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEEEaSEOS7_:
   58|  14.2M|        key_index_value& operator=(key_index_value&&) = default;
_ZN8jsoncons18sorted_json_objectINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES6_EENS1_6vectorEE7compareERKNS_15key_index_valueISA_EESG_:
  544|  65.0M|        {
  545|  65.0M|            int comp = item1.name.compare(item2.name); 
  546|  65.0M|            if (comp < 0) return true;
  ------------------
  |  Branch (546:17): [True: 113k, False: 64.9M]
  ------------------
  547|  64.9M|            if (comp == 0) return item1.index < item2.index;
  ------------------
  |  Branch (547:17): [True: 64.8M, False: 84.7k]
  ------------------
  548|       |
  549|  84.7k|            return false;
  550|  64.9M|        }
_ZN8jsoncons9key_valueINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES6_EEEC2IJSA_EEERKS7_DpOT_:
   99|  20.6k|        {
  100|  20.6k|        }
_ZN8jsoncons15key_index_valueINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEEEC2IJRKNS_16json_array_arg_tERNS_12semantic_tagEEEEONS3_12basic_stringIcNS3_11char_traitsIcEES5_EEmDpOT_:
   42|  3.47M|        {
   43|  3.47M|        }
_ZN8jsoncons15key_index_valueINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEEEC2IJNS_9null_typeERNS_12semantic_tagEEEEONS3_12basic_stringIcNS3_11char_traitsIcEES5_EEmDpOT_:
   42|  27.0M|        {
   43|  27.0M|        }
_ZN8jsoncons15key_index_valueINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEEEC2IJRbRNS_12semantic_tagEEEEONS3_12basic_stringIcNS3_11char_traitsIcEES5_EEmDpOT_:
   42|  3.34M|        {
   43|  3.34M|        }
_ZN8jsoncons15key_index_valueINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEEEC2IJRKNS_6detail17basic_string_viewIcNS3_11char_traitsIcEEEERNS_12semantic_tagEEEEONS3_12basic_stringIcSC_S5_EEmDpOT_:
   42|  2.91M|        {
   43|  2.91M|        }
_ZN8jsoncons15key_index_valueINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEEEC2IJRmRNS_12semantic_tagEEEEONS3_12basic_stringIcNS3_11char_traitsIcEES5_EEmDpOT_:
   42|  2.53M|        {
   43|  2.53M|        }
_ZN8jsoncons15key_index_valueINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEEEC2IJRlRNS_12semantic_tagEEEEONS3_12basic_stringIcNS3_11char_traitsIcEES5_EEmDpOT_:
   42|  2.03M|        {
   43|  2.03M|        }
_ZN8jsoncons15key_index_valueINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEEEC2IJRdRNS_12semantic_tagEEEEONS3_12basic_stringIcNS3_11char_traitsIcEES5_EEmDpOT_:
   42|   148k|        {
   43|   148k|        }

_ZN8jsoncons18basic_json_visitorIcEC2Ev:
   36|    788|        basic_json_visitor() = default;
_ZN8jsoncons18basic_json_visitorIcED2Ev:
   38|    788|        virtual ~basic_json_visitor() noexcept = default;
_ZN8jsoncons18basic_json_visitorIcE18visit_begin_objectEmNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  625|  8.79k|        {
  626|  8.79k|            return visit_begin_object(tag, context, ec);
  627|  8.79k|        }
_ZN8jsoncons18basic_json_visitorIcE17visit_begin_arrayEmNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  640|  4.72k|        {
  641|  4.72k|            return visit_begin_array(tag, context, ec);
  642|  4.72k|        }
_ZN8jsoncons18basic_json_visitorIcE11begin_arrayEmNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  274|  9.45k|        {
  275|  9.45k|            return visit_begin_array(length, tag, context, ec);
  276|  9.45k|        }
_ZN8jsoncons18basic_json_visitorIcE12uint64_valueEmNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  335|  5.07M|        {
  336|  5.07M|            return visit_uint64(value, tag, context, ec);
  337|  5.07M|        }
_ZN8jsoncons18basic_json_visitorIcE9end_arrayERKNS_11ser_contextERNSt3__110error_codeE:
  279|  6.90M|        {
  280|  6.90M|            return visit_end_array(context, ec);
  281|  6.90M|        }
_ZN8jsoncons18basic_json_visitorIcE11int64_valueElNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  343|  4.06M|        {
  344|  4.06M|            return visit_int64(value, tag, context, ec);
  345|  4.06M|        }
_ZN8jsoncons18basic_json_visitorIcE12double_valueEdNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  359|   297k|        {
  360|   297k|            return visit_double(value, tag, context, ec);
  361|   297k|        }
_ZN8jsoncons18basic_json_visitorIcE12begin_objectENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  251|  9.23M|        {
  252|  9.23M|            return visit_begin_object(tag, context, ec);
  253|  9.23M|        }
_ZN8jsoncons18basic_json_visitorIcE12begin_objectEmNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  259|  17.5k|        {
  260|  17.5k|            return visit_begin_object(length, tag, context, ec);
  261|  17.5k|        }
_ZN8jsoncons18basic_json_visitorIcE10end_objectERKNS_11ser_contextERNSt3__110error_codeE:
  264|  9.24M|        {
  265|  9.24M|            return visit_end_object(context, ec);
  266|  9.24M|        }
_ZN8jsoncons18basic_json_visitorIcE11begin_arrayENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  269|  6.93M|        {
  270|  6.93M|            return visit_begin_array(tag, context, ec);
  271|  6.93M|        }
_ZN8jsoncons18basic_json_visitorIcE3keyERKNS_6detail17basic_string_viewIcNSt3__111char_traitsIcEEEERKNS_11ser_contextERNS4_10error_codeE:
  284|  7.43M|        {
  285|  7.43M|            return visit_key(name, context, ec);
  286|  7.43M|        }
_ZN8jsoncons18basic_json_visitorIcE10null_valueENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  291|  54.0M|        {
  292|  54.0M|            return visit_null(tag, context, ec);
  293|  54.0M|        }
_ZN8jsoncons18basic_json_visitorIcE10bool_valueEbNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  299|  6.68M|        {
  300|  6.68M|            return visit_bool(value, tag, context, ec);
  301|  6.68M|        }
_ZN8jsoncons18basic_json_visitorIcE12string_valueERKNS_6detail17basic_string_viewIcNSt3__111char_traitsIcEEEENS_12semantic_tagERKNS_11ser_contextERNS4_10error_codeE:
  307|  5.82M|        {
  308|  5.82M|            return visit_string(value, tag, context, ec);
  309|  5.82M|        }

_ZN8jsoncons11ser_contextD2Ev:
   15|    394|    virtual ~ser_context() noexcept = default;

_ZN8jsoncons13stream_sourceIhEC2ERNSt3__113basic_istreamIcNS2_11char_traitsIcEEEEm:
  101|    394|        {
  102|    394|        }
_ZN8jsoncons18basic_null_istreamIcEC1Ev:
   48|    394|        {
   49|    394|        }
_ZN8jsoncons18basic_null_istreamIcE11null_bufferC2Ev:
   36|    394|            null_buffer() = default;
_ZN8jsoncons13stream_sourceIhED2Ev:
  121|    394|        {
  122|    394|        }
_ZNK8jsoncons13stream_sourceIhE8positionEv:
  158|    283|        {
  159|    283|            return position_;
  160|    283|        }
_ZNK8jsoncons13stream_sourceIhE8is_errorEv:
  153|  13.5M|        {
  154|  13.5M|            return stream_ptr_->bad();  
  155|  13.5M|        }
_ZN8jsoncons13stream_sourceIhE4readEPhm:
  220|  44.3M|        {
  221|  44.3M|            std::size_t len = 0;
  222|  44.3M|            if (buffer_length_ > 0)
  ------------------
  |  Branch (222:17): [True: 44.3M, False: 2.30k]
  ------------------
  223|  44.3M|            {
  224|  44.3M|                len = (std::min)(buffer_length_, length);
  225|  44.3M|                std::memcpy(p, buffer_data_, len*sizeof(value_type));
  226|  44.3M|                buffer_data_ += len;
  227|  44.3M|                buffer_length_ -= len;
  228|  44.3M|                position_ += len;
  229|  44.3M|            }
  230|  44.3M|            if (length - len == 0)
  ------------------
  |  Branch (230:17): [True: 44.3M, False: 2.31k]
  ------------------
  231|  44.3M|            {
  232|  44.3M|                return len;
  233|  44.3M|            }
  234|  2.31k|            else if (length - len < buffer_.size())
  ------------------
  |  Branch (234:22): [True: 2.31k, False: 0]
  ------------------
  235|  2.31k|            {
  236|  2.31k|                fill_buffer();
  237|  2.31k|                if (buffer_length_ > 0)
  ------------------
  |  Branch (237:21): [True: 2.22k, False: 90]
  ------------------
  238|  2.22k|                {
  239|  2.22k|                    std::size_t len2 = (std::min)(buffer_length_, length-len);
  240|  2.22k|                    std::memcpy(p+len, buffer_data_, len2*sizeof(value_type));
  241|  2.22k|                    buffer_data_ += len2;
  242|  2.22k|                    buffer_length_ -= len2;
  243|  2.22k|                    position_ += len2;
  244|  2.22k|                    len += len2;
  245|  2.22k|                }
  246|  2.31k|                return len;
  247|  2.31k|            }
  248|      0|            else
  249|      0|            {
  250|      0|                if (stream_ptr_->eof())
  ------------------
  |  Branch (250:21): [True: 0, False: 0]
  ------------------
  251|      0|                {
  252|      0|                    buffer_length_ = 0;
  253|      0|                    return 0;
  254|      0|                }
  255|      0|                JSONCONS_TRY
  ------------------
  |  |  239|      0|    #define JSONCONS_TRY try
  ------------------
  256|      0|                {
  257|      0|                    std::streamsize count = sbuf_->sgetn(reinterpret_cast<char_type*>(p+len), length-len);
  258|      0|                    std::size_t len2 = static_cast<std::size_t>(count);
  259|      0|                    if (len2 < length-len)
  ------------------
  |  Branch (259:25): [True: 0, False: 0]
  ------------------
  260|      0|                    {
  261|      0|                        stream_ptr_->clear(stream_ptr_->rdstate() | std::ios::eofbit);
  262|      0|                    }
  263|      0|                    len += len2;
  264|      0|                    position_ += len2;
  265|      0|                    return len;
  266|      0|                }
  267|      0|                JSONCONS_CATCH(const std::exception&)     
  268|      0|                {
  269|      0|                    stream_ptr_->clear(stream_ptr_->rdstate() | std::ios::badbit | std::ios::eofbit);
  270|      0|                    return 0;
  271|      0|                }
  272|      0|            }
  273|  44.3M|        }
_ZN8jsoncons13stream_sourceIhE11fill_bufferEv:
  276|  3.67k|        {
  277|  3.67k|            if (stream_ptr_->eof())
  ------------------
  |  Branch (277:17): [True: 161, False: 3.51k]
  ------------------
  278|    161|            {
  279|    161|                buffer_length_ = 0;
  280|    161|                return;
  281|    161|            }
  282|       |
  283|  3.51k|            buffer_data_ = buffer_.data();
  284|  3.51k|            JSONCONS_TRY
  ------------------
  |  |  239|  3.51k|    #define JSONCONS_TRY try
  ------------------
  285|  3.51k|            {
  286|  3.51k|                std::streamsize count = sbuf_->sgetn(reinterpret_cast<char_type*>(buffer_.data()), buffer_.size());
  287|  3.51k|                buffer_length_ = static_cast<std::size_t>(count);
  288|       |
  289|  3.51k|                if (buffer_length_ < buffer_.size())
  ------------------
  |  Branch (289:21): [True: 381, False: 3.13k]
  ------------------
  290|    381|                {
  291|    381|                    stream_ptr_->clear(stream_ptr_->rdstate() | std::ios::eofbit);
  292|    381|                }
  293|  3.51k|            }
  294|  3.51k|            JSONCONS_CATCH(const std::exception&)     
  295|  3.51k|            {
  296|      0|                stream_ptr_->clear(stream_ptr_->rdstate() | std::ios::badbit | std::ios::eofbit);
  297|      0|                buffer_length_ = 0;
  298|      0|            }
  299|  3.51k|        }
_ZN8jsoncons13source_readerINS_13stream_sourceIhEEE4readINSt3__112basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEEENS5_9enable_ifIXaaaasr3std14is_convertibleIhNT_10value_typeEEE5valuesr16extension_traits11has_reserveISD_EE5valuentsr16extension_traits14has_data_exactIPhSD_EE5valueEmE4typeERS2_RSD_m:
  759|  6.63M|        {
  760|  6.63M|            std::size_t unread = length;
  761|       |
  762|  6.63M|            std::size_t n = (std::min)(max_buffer_length, unread);
  763|  9.59M|            while (n > 0 && !source.eof())
  ------------------
  |  Branch (763:20): [True: 2.95M, False: 6.63M]
  |  Branch (763:29): [True: 2.95M, False: 51]
  ------------------
  764|  2.95M|            {
  765|  2.95M|                v.reserve(v.size()+n);
  766|  2.95M|                std::size_t actual = 0;
  767|  21.5M|                while (actual < n)
  ------------------
  |  Branch (767:24): [True: 18.5M, False: 2.95M]
  ------------------
  768|  18.5M|                {
  769|  18.5M|                    typename Source::value_type c;
  770|  18.5M|                    if (source.read(&c,1) != 1)
  ------------------
  |  Branch (770:25): [True: 37, False: 18.5M]
  ------------------
  771|     37|                    {
  772|     37|                        break;
  773|     37|                    }
  774|  18.5M|                    v.push_back(c);
  775|  18.5M|                    ++actual;
  776|  18.5M|                }
  777|  2.95M|                unread -= actual;
  778|  2.95M|                n = (std::min)(max_buffer_length, unread);
  779|  2.95M|            }
  780|       |
  781|  6.63M|            return length - unread;
  782|  6.63M|        }
_ZNK8jsoncons13stream_sourceIhE3eofEv:
  148|  2.95M|        {
  149|  2.95M|            return buffer_length_ == 0 && stream_ptr_->eof();
  ------------------
  |  Branch (149:20): [True: 225, False: 2.95M]
  |  Branch (149:43): [True: 51, False: 174]
  ------------------
  150|  2.95M|        }
_ZN8jsoncons13stream_sourceIhE4peekEv:
  188|  34.3M|        {
  189|  34.3M|            if (buffer_length_ == 0)
  ------------------
  |  Branch (189:17): [True: 1.36k, False: 34.3M]
  ------------------
  190|  1.36k|            {
  191|  1.36k|                fill_buffer();
  192|  1.36k|            }
  193|  34.3M|            if (buffer_length_ > 0)
  ------------------
  |  Branch (193:17): [True: 34.3M, False: 88]
  ------------------
  194|  34.3M|            {
  195|  34.3M|                value_type c = *buffer_data_;
  196|  34.3M|                return char_result<value_type>{c, false};
  197|  34.3M|            }
  198|     88|            else
  199|     88|            {
  200|     88|                return char_result<value_type>{0, true};
  201|     88|            }
  202|  34.3M|        }
_ZN8jsoncons13stream_sourceIhE6ignoreEm:
  163|  8.08M|        {
  164|  8.08M|            std::size_t len = 0;
  165|  8.08M|            if (buffer_length_ > 0)
  ------------------
  |  Branch (165:17): [True: 8.08M, False: 0]
  ------------------
  166|  8.08M|            {
  167|  8.08M|                len = (std::min)(buffer_length_, length);
  168|  8.08M|                position_ += len;
  169|  8.08M|                buffer_data_ += len;
  170|  8.08M|                buffer_length_ -= len;
  171|  8.08M|            }
  172|  8.08M|            while (len < length)
  ------------------
  |  Branch (172:20): [True: 0, False: 8.08M]
  ------------------
  173|      0|            {
  174|      0|                fill_buffer();
  175|      0|                if (buffer_length_ == 0)
  ------------------
  |  Branch (175:21): [True: 0, False: 0]
  ------------------
  176|      0|                {
  177|      0|                    break;
  178|      0|                }
  179|      0|                std::size_t len2 = (std::min)(buffer_length_, length-len);
  180|      0|                position_ += len2;
  181|      0|                buffer_data_ += len2;
  182|      0|                buffer_length_ -= len2;
  183|      0|                len += len2;
  184|      0|            }
  185|  8.08M|        }

_ZN8jsoncons14unicode_traits8validateIcEENSt3__19enable_ifIXsr16extension_traits8is_char8IT_EE5valueENS0_14convert_resultIS4_EEE4typeEPKS4_m:
 1130|  6.63M|    {
 1131|  6.63M|        conv_errc  result = conv_errc();
 1132|  6.63M|        const CharT* last = data + length;
 1133|  15.5M|        while (data != last) 
  ------------------
  |  Branch (1133:16): [True: 8.92M, False: 6.63M]
  ------------------
 1134|  8.92M|        {
 1135|  8.92M|            std::size_t len = static_cast<std::size_t>(trailing_bytes_for_utf8[static_cast<uint8_t>(*data)]) + 1;
 1136|  8.92M|            if (len > (std::size_t)(last - data))
  ------------------
  |  Branch (1136:17): [True: 0, False: 8.92M]
  ------------------
 1137|      0|            {
 1138|      0|                return convert_result<CharT>{data, conv_errc::source_exhausted};
 1139|      0|            }
 1140|  8.92M|            if ((result=is_legal_utf8(data, len)) != conv_errc())
  ------------------
  |  Branch (1140:17): [True: 21, False: 8.92M]
  ------------------
 1141|     21|            {
 1142|     21|                return convert_result<CharT>{data,result} ;
 1143|     21|            }
 1144|  8.92M|            data += len;
 1145|  8.92M|        }
 1146|  6.63M|        return convert_result<CharT>{data,result} ;
 1147|  6.63M|    }
_ZN8jsoncons14unicode_traits13is_legal_utf8IcEENSt3__19enable_ifIXsr16extension_traits8is_char8IT_EE5valueENS0_9conv_errcEE4typeEPKS4_m:
  299|  8.92M|    {
  300|  8.92M|        uint8_t a;
  301|  8.92M|        const CharT* srcptr = first+length;
  302|  8.92M|        switch (length) {
  303|      5|        default:
  ------------------
  |  Branch (303:9): [True: 5, False: 8.92M]
  ------------------
  304|      5|            return conv_errc::over_long_utf8_sequence;
  305|    145|        case 4:
  ------------------
  |  Branch (305:9): [True: 145, False: 8.92M]
  ------------------
  306|    145|            if (((a = (*--srcptr))& 0xC0) != 0x80)
  ------------------
  |  Branch (306:17): [True: 3, False: 142]
  ------------------
  307|      3|                return conv_errc::expected_continuation_byte;
  308|    145|            JSONCONS_FALLTHROUGH;
  ------------------
  |  |   34|    142|#  define JSONCONS_FALLTHROUGH [[clang::fallthrough]]
  ------------------
  309|    234|        case 3:
  ------------------
  |  Branch (309:9): [True: 92, False: 8.92M]
  ------------------
  310|    234|            if (((a = (*--srcptr))& 0xC0) != 0x80)
  ------------------
  |  Branch (310:17): [True: 4, False: 230]
  ------------------
  311|      4|                return conv_errc::expected_continuation_byte;
  312|    234|            JSONCONS_FALLTHROUGH;
  ------------------
  |  |   34|    230|#  define JSONCONS_FALLTHROUGH [[clang::fallthrough]]
  ------------------
  313|    300|        case 2:
  ------------------
  |  Branch (313:9): [True: 70, False: 8.92M]
  ------------------
  314|    300|            if (((a = (*--srcptr))& 0xC0) != 0x80)
  ------------------
  |  Branch (314:17): [True: 4, False: 296]
  ------------------
  315|      4|                return conv_errc::expected_continuation_byte;
  316|       |
  317|    296|            switch (static_cast<uint8_t>(*first)) 
  318|    296|            {
  319|       |                // no fall-through in this inner switch
  320|     12|                case 0xE0: if (a < 0xA0) return conv_errc::source_illegal; break;
  ------------------
  |  Branch (320:17): [True: 12, False: 284]
  |  Branch (320:32): [True: 0, False: 12]
  ------------------
  321|     12|                case 0xED: if (a > 0x9F) return conv_errc::source_illegal; break;
  ------------------
  |  Branch (321:17): [True: 10, False: 286]
  |  Branch (321:32): [True: 0, False: 10]
  ------------------
  322|     10|                case 0xF0: if (a < 0x90) return conv_errc::source_illegal; break;
  ------------------
  |  Branch (322:17): [True: 0, False: 296]
  |  Branch (322:32): [True: 0, False: 0]
  ------------------
  323|      0|                case 0xF4: if (a > 0x8F) return conv_errc::source_illegal; break;
  ------------------
  |  Branch (323:17): [True: 0, False: 296]
  |  Branch (323:32): [True: 0, False: 0]
  ------------------
  324|    274|                default:   if (a < 0x80) return conv_errc::source_illegal;
  ------------------
  |  Branch (324:17): [True: 274, False: 22]
  |  Branch (324:32): [True: 0, False: 274]
  ------------------
  325|    296|            }
  326|       |
  327|    296|            JSONCONS_FALLTHROUGH;
  ------------------
  |  |   34|    296|#  define JSONCONS_FALLTHROUGH [[clang::fallthrough]]
  ------------------
  328|  8.92M|        case 1:
  ------------------
  |  Branch (328:9): [True: 8.92M, False: 312]
  ------------------
  329|  8.92M|            if (static_cast<uint8_t>(*first) >= 0x80 && static_cast<uint8_t>(*first) < 0xC2)
  ------------------
  |  Branch (329:17): [True: 301, False: 8.92M]
  |  Branch (329:57): [True: 5, False: 296]
  ------------------
  330|      5|                return conv_errc::source_illegal;
  331|  8.92M|            break;
  332|  8.92M|        }
  333|  8.92M|        if (static_cast<uint8_t>(*first) > 0xF4) 
  ------------------
  |  Branch (333:13): [True: 0, False: 8.92M]
  ------------------
  334|      0|            return conv_errc::source_illegal;
  335|       |
  336|  8.92M|        return conv_errc();
  337|  8.92M|    }

_ZN8jsoncons6ubjson13decode_ubjsonINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEEEENS4_9enable_ifIXsr16extension_traits13is_basic_jsonIT_EE5valueES9_E4typeERNS4_13basic_istreamIcNS4_11char_traitsIcEEEERKNS0_21ubjson_decode_optionsE:
   63|    394|    {
   64|    394|        jsoncons::json_decoder<T> decoder;
   65|    394|        auto adaptor = make_json_visitor_adaptor<json_visitor>(decoder);
   66|    394|        ubjson_stream_reader reader(is, adaptor, options);
   67|    394|        reader.read();
   68|    394|        if (!decoder.is_valid())
  ------------------
  |  Branch (68:13): [True: 0, False: 394]
  ------------------
   69|      0|        {
   70|      0|            JSONCONS_THROW(ser_error(conv_errc::conversion_failed, reader.line(), reader.column()));
  ------------------
  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  ------------------
   71|      0|        }
   72|    394|        return decoder.get_result();
   73|    394|    }

_ZN8jsoncons6ubjson15make_error_codeENS0_11ubjson_errcE:
   86|    304|{
   87|    304|    return std::error_code(static_cast<int>(e),ubjson_error_category());
   88|    304|}
_ZN8jsoncons6ubjson21ubjson_error_categoryEv:
   79|    304|{
   80|    304|  static ubjson_error_category_impl instance;
   81|    304|  return instance;
   82|    304|}
_ZNK8jsoncons6ubjson26ubjson_error_category_impl7messageEi:
   42|    283|    {
   43|    283|        switch (static_cast<ubjson_errc>(ev))
   44|    283|        {
   45|    193|            case ubjson_errc::unexpected_eof:
  ------------------
  |  Branch (45:13): [True: 193, False: 90]
  ------------------
   46|    193|                return "Unexpected end of file";
   47|      0|            case ubjson_errc::source_error:
  ------------------
  |  Branch (47:13): [True: 0, False: 283]
  ------------------
   48|      0|                return "Source error";
   49|      1|            case ubjson_errc::count_required_after_type:
  ------------------
  |  Branch (49:13): [True: 1, False: 282]
  ------------------
   50|      1|                return "Type is specified for container, but count is not specified";
   51|      0|            case ubjson_errc::length_is_negative:
  ------------------
  |  Branch (51:13): [True: 0, False: 283]
  ------------------
   52|      0|                return "Request for the length of an array, map or string returned a negative result";
   53|      4|            case ubjson_errc::length_must_be_integer:
  ------------------
  |  Branch (53:13): [True: 4, False: 279]
  ------------------
   54|      4|                return "Length must be a integer numeric type (int8, uint8, int16, int32, int64)";
   55|     39|            case ubjson_errc::unknown_type:
  ------------------
  |  Branch (55:13): [True: 39, False: 244]
  ------------------
   56|     39|                return "Unknown type";
   57|     21|            case ubjson_errc::invalid_utf8_text_string:
  ------------------
  |  Branch (57:13): [True: 21, False: 262]
  ------------------
   58|     21|                return "Illegal UTF-8 encoding in text string";
   59|      0|            case ubjson_errc::too_many_items:
  ------------------
  |  Branch (59:13): [True: 0, False: 283]
  ------------------
   60|      0|                return "Too many items were added to a UBJSON object or array of known length";
   61|      0|            case ubjson_errc::too_few_items:
  ------------------
  |  Branch (61:13): [True: 0, False: 283]
  ------------------
   62|      0|                return "Too few items were added to a UBJSON object or array of known length";
   63|      0|            case ubjson_errc::number_too_large:
  ------------------
  |  Branch (63:13): [True: 0, False: 283]
  ------------------
   64|      0|                return "Number exceeds implementation limits";
   65|      0|            case ubjson_errc::max_nesting_depth_exceeded:
  ------------------
  |  Branch (65:13): [True: 0, False: 283]
  ------------------
   66|      0|                return "Data item nesting exceeds limit in options";
   67|     21|            case ubjson_errc::key_expected:
  ------------------
  |  Branch (67:13): [True: 21, False: 262]
  ------------------
   68|     21|                return "Text string key in a map expected";
   69|      4|            case ubjson_errc::max_items_exceeded:
  ------------------
  |  Branch (69:13): [True: 4, False: 279]
  ------------------
   70|      4|                return "Number of items in UBJSON object or array exceeds limit set in options";
   71|      0|            default:
  ------------------
  |  Branch (71:13): [True: 0, False: 283]
  ------------------
   72|      0|                return "Unknown UBJSON parser error";
   73|    283|        }
   74|    283|    }

_ZN8jsoncons6ubjson21ubjson_decode_optionsC1Ev:
   50|    394|    {
   51|    394|    }
_ZN8jsoncons6ubjson21ubjson_options_commonC2Ev:
   29|    394|    {
   30|    394|    }
_ZN8jsoncons6ubjson21ubjson_options_commonD2Ev:
   25|    788|    virtual ~ubjson_options_common() = default;
_ZN8jsoncons6ubjson21ubjson_options_commonC2ERKS1_:
   32|    394|    ubjson_options_common(const ubjson_options_common&) = default;
_ZNK8jsoncons6ubjson21ubjson_options_common17max_nesting_depthEv:
   38|  8.09M|    {
   39|  8.09M|        return max_nesting_depth_;
   40|  8.09M|    }
_ZNK8jsoncons6ubjson21ubjson_decode_options9max_itemsEv:
   54|  13.5M|    {
   55|  13.5M|        return max_items_;
   56|  13.5M|    }

_ZN8jsoncons6ubjson19basic_ubjson_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEEC2IRNS4_13basic_istreamIcNS4_11char_traitsIcEEEEEEOT_RKNS0_21ubjson_decode_optionsERKS6_:
   70|    394|    {
   71|    394|        state_stack_.emplace_back(parse_mode::root,0);
   72|    394|    }
_ZN8jsoncons6ubjson11parse_stateC2ENS0_10parse_modeEmh:
   34|  8.09M|    {
   35|  8.09M|    }
_ZNK8jsoncons6ubjson19basic_ubjson_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE4lineEv:
  107|    283|    {
  108|    283|        return 0;
  109|    283|    }
_ZNK8jsoncons6ubjson19basic_ubjson_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE6columnEv:
  112|    283|    {
  113|    283|        return source_.position();
  114|    283|    }
_ZN8jsoncons6ubjson19basic_ubjson_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE5resetEv:
   80|    394|    {
   81|    394|        more_ = true;
   82|    394|        done_ = false;
   83|    394|        text_buffer_.clear();
   84|    394|        state_stack_.clear();
   85|    394|        state_stack_.emplace_back(parse_mode::root,0,uint8_t(0));
   86|    394|        nesting_depth_ = 0;
   87|    394|    }
_ZN8jsoncons6ubjson19basic_ubjson_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE5parseERNS_18basic_json_visitorIcEERNS4_10error_codeE:
  117|    394|    {
  118|  57.9M|        while (!done_ && more_)
  ------------------
  |  Branch (118:16): [True: 57.9M, False: 0]
  |  Branch (118:26): [True: 57.9M, False: 111]
  ------------------
  119|  57.9M|        {
  120|  57.9M|            switch (state_stack_.back().mode)
  ------------------
  |  Branch (120:21): [True: 0, False: 57.9M]
  ------------------
  121|  57.9M|            {
  122|  25.0k|                case parse_mode::array:
  ------------------
  |  Branch (122:17): [True: 25.0k, False: 57.9M]
  ------------------
  123|  25.0k|                {
  124|  25.0k|                    if (state_stack_.back().index < state_stack_.back().length)
  ------------------
  |  Branch (124:25): [True: 23.2k, False: 1.84k]
  ------------------
  125|  23.2k|                    {
  126|  23.2k|                        ++state_stack_.back().index;
  127|  23.2k|                        read_type_and_value(visitor, ec);
  128|  23.2k|                        if (ec)
  ------------------
  |  Branch (128:29): [True: 0, False: 23.2k]
  ------------------
  129|      0|                        {
  130|      0|                            return;
  131|      0|                        }
  132|  23.2k|                    }
  133|  1.84k|                    else
  134|  1.84k|                    {
  135|  1.84k|                        end_array(visitor, ec);
  136|  1.84k|                    }
  137|  25.0k|                    break;
  138|  25.0k|                }
  139|  32.5M|                case parse_mode::strongly_typed_array:
  ------------------
  |  Branch (139:17): [True: 32.5M, False: 25.3M]
  ------------------
  140|  32.5M|                {
  141|  32.5M|                    if (state_stack_.back().index < state_stack_.back().length)
  ------------------
  |  Branch (141:25): [True: 32.5M, False: 140]
  ------------------
  142|  32.5M|                    {
  143|  32.5M|                        ++state_stack_.back().index;
  144|  32.5M|                        read_value(visitor, state_stack_.back().type, ec);
  145|  32.5M|                        if (ec)
  ------------------
  |  Branch (145:29): [True: 95, False: 32.5M]
  ------------------
  146|     95|                        {
  147|     95|                            return;
  148|     95|                        }
  149|  32.5M|                    }
  150|    140|                    else
  151|    140|                    {
  152|    140|                        end_array(visitor, ec);
  153|    140|                    }
  154|  32.5M|                    break;
  155|  32.5M|                }
  156|  32.5M|                case parse_mode::indefinite_array:
  ------------------
  |  Branch (156:17): [True: 13.3M, False: 44.6M]
  ------------------
  157|  13.3M|                {
  158|  13.3M|                    auto c = source_.peek();
  159|  13.3M|                    if (c.eof)
  ------------------
  |  Branch (159:25): [True: 35, False: 13.3M]
  ------------------
  160|     35|                    {
  161|     35|                        ec = ubjson_errc::unexpected_eof;
  162|     35|                        more_ = false;
  163|     35|                        return;
  164|     35|                    }
  165|  13.3M|                    if (c.value == jsoncons::ubjson::ubjson_type::end_array_marker)
  ------------------
  |  Branch (165:25): [True: 3.45M, False: 9.85M]
  ------------------
  166|  3.45M|                    {
  167|  3.45M|                        source_.ignore(1);
  168|  3.45M|                        end_array(visitor, ec);
  169|  3.45M|                        if (ec)
  ------------------
  |  Branch (169:29): [True: 0, False: 3.45M]
  ------------------
  170|      0|                        {
  171|      0|                            return;
  172|      0|                        }
  173|  3.45M|                    }
  174|  9.85M|                    else
  175|  9.85M|                    {
  176|  9.85M|                        if (++state_stack_.back().index > options_.max_items())
  ------------------
  |  Branch (176:29): [True: 0, False: 9.85M]
  ------------------
  177|      0|                        {
  178|      0|                            ec = ubjson_errc::max_items_exceeded;
  179|      0|                            more_ = false;
  180|      0|                            return;
  181|      0|                        }
  182|  9.85M|                        read_type_and_value(visitor, ec);
  183|  9.85M|                        if (ec)
  ------------------
  |  Branch (183:29): [True: 45, False: 9.85M]
  ------------------
  184|     45|                        {
  185|     45|                            return;
  186|     45|                        }
  187|  9.85M|                    }
  188|  13.3M|                    break;
  189|  13.3M|                }
  190|  13.3M|                case parse_mode::map_key:
  ------------------
  |  Branch (190:17): [True: 13.0k, False: 57.9M]
  ------------------
  191|  13.0k|                {
  192|  13.0k|                    if (state_stack_.back().index < state_stack_.back().length)
  ------------------
  |  Branch (192:25): [True: 10.1k, False: 2.93k]
  ------------------
  193|  10.1k|                    {
  194|  10.1k|                        ++state_stack_.back().index;
  195|  10.1k|                        read_key(visitor, ec);
  196|  10.1k|                        if (ec)
  ------------------
  |  Branch (196:29): [True: 1, False: 10.1k]
  ------------------
  197|      1|                        {
  198|      1|                            return;
  199|      1|                        }
  200|  10.1k|                        state_stack_.back().mode = parse_mode::map_value;
  201|  10.1k|                    }
  202|  2.93k|                    else
  203|  2.93k|                    {
  204|  2.93k|                        end_object(visitor, ec);
  205|  2.93k|                    }
  206|  13.0k|                    break;
  207|  13.0k|                }
  208|  13.0k|                case parse_mode::map_value:
  ------------------
  |  Branch (208:17): [True: 10.1k, False: 57.9M]
  ------------------
  209|  10.1k|                {
  210|  10.1k|                    state_stack_.back().mode = parse_mode::map_key;
  211|  10.1k|                    read_type_and_value(visitor, ec);
  212|  10.1k|                    if (ec)
  ------------------
  |  Branch (212:25): [True: 2, False: 10.1k]
  ------------------
  213|      2|                    {
  214|      2|                        return;
  215|      2|                    }
  216|  10.1k|                    break;
  217|  10.1k|                }
  218|  13.6k|                case parse_mode::strongly_typed_map_key:
  ------------------
  |  Branch (218:17): [True: 13.6k, False: 57.9M]
  ------------------
  219|  13.6k|                {
  220|  13.6k|                    if (state_stack_.back().index < state_stack_.back().length)
  ------------------
  |  Branch (220:25): [True: 8.24k, False: 5.43k]
  ------------------
  221|  8.24k|                    {
  222|  8.24k|                        ++state_stack_.back().index;
  223|  8.24k|                        read_key(visitor, ec);
  224|  8.24k|                        if (ec)
  ------------------
  |  Branch (224:29): [True: 4, False: 8.24k]
  ------------------
  225|      4|                        {
  226|      4|                            return;
  227|      4|                        }
  228|  8.24k|                        state_stack_.back().mode = parse_mode::strongly_typed_map_value;
  229|  8.24k|                    }
  230|  5.43k|                    else
  231|  5.43k|                    {
  232|  5.43k|                        end_object(visitor, ec);
  233|  5.43k|                    }
  234|  13.6k|                    break;
  235|  13.6k|                }
  236|  13.6k|                case parse_mode::strongly_typed_map_value:
  ------------------
  |  Branch (236:17): [True: 8.24k, False: 57.9M]
  ------------------
  237|  8.24k|                {
  238|  8.24k|                    state_stack_.back().mode = parse_mode::strongly_typed_map_key;
  239|  8.24k|                    read_value(visitor, state_stack_.back().type, ec);
  240|  8.24k|                    if (ec)
  ------------------
  |  Branch (240:25): [True: 0, False: 8.24k]
  ------------------
  241|      0|                    {
  242|      0|                        return;
  243|      0|                    }
  244|  8.24k|                    break;
  245|  8.24k|                }
  246|  8.31M|                case parse_mode::indefinite_map_key:
  ------------------
  |  Branch (246:17): [True: 8.31M, False: 49.6M]
  ------------------
  247|  8.31M|                {
  248|  8.31M|                    auto c = source_.peek();
  249|  8.31M|                    if (c.eof)
  ------------------
  |  Branch (249:25): [True: 8, False: 8.31M]
  ------------------
  250|      8|                    {
  251|      8|                        ec = ubjson_errc::unexpected_eof;
  252|      8|                        more_ = false;
  253|      8|                        return;
  254|      8|                    }
  255|  8.31M|                    if (c.value == jsoncons::ubjson::ubjson_type::end_object_marker)
  ------------------
  |  Branch (255:25): [True: 4.61M, False: 3.69M]
  ------------------
  256|  4.61M|                    {
  257|  4.61M|                        source_.ignore(1);
  258|  4.61M|                        end_object(visitor, ec);
  259|  4.61M|                        if (ec)
  ------------------
  |  Branch (259:29): [True: 0, False: 4.61M]
  ------------------
  260|      0|                        {
  261|      0|                            return;
  262|      0|                        }
  263|  4.61M|                    }
  264|  3.69M|                    else
  265|  3.69M|                    {
  266|  3.69M|                        if (++state_stack_.back().index > options_.max_items())
  ------------------
  |  Branch (266:29): [True: 0, False: 3.69M]
  ------------------
  267|      0|                        {
  268|      0|                            ec = ubjson_errc::max_items_exceeded;
  269|      0|                            more_ = false;
  270|      0|                            return;
  271|      0|                        }
  272|  3.69M|                        read_key(visitor, ec);
  273|  3.69M|                        if (ec)
  ------------------
  |  Branch (273:29): [True: 47, False: 3.69M]
  ------------------
  274|     47|                        {
  275|     47|                            return;
  276|     47|                        }
  277|  3.69M|                        state_stack_.back().mode = parse_mode::indefinite_map_value;
  278|  3.69M|                    }
  279|  8.31M|                    break;
  280|  8.31M|                }
  281|  8.31M|                case parse_mode::indefinite_map_value:
  ------------------
  |  Branch (281:17): [True: 3.69M, False: 54.2M]
  ------------------
  282|  3.69M|                {
  283|  3.69M|                    state_stack_.back().mode = parse_mode::indefinite_map_key;
  284|  3.69M|                    read_type_and_value(visitor, ec);
  285|  3.69M|                    if (ec)
  ------------------
  |  Branch (285:25): [True: 19, False: 3.69M]
  ------------------
  286|     19|                    {
  287|     19|                        return;
  288|     19|                    }
  289|  3.69M|                    break;
  290|  3.69M|                }
  291|  3.69M|                case parse_mode::root:
  ------------------
  |  Branch (291:17): [True: 394, False: 57.9M]
  ------------------
  292|    394|                {
  293|    394|                    state_stack_.back().mode = parse_mode::accept;
  294|    394|                    read_type_and_value(visitor, ec);
  295|    394|                    if (ec)
  ------------------
  |  Branch (295:25): [True: 27, False: 367]
  ------------------
  296|     27|                    {
  297|     27|                        return;
  298|     27|                    }
  299|    367|                    break;
  300|    394|                }
  301|    367|                case parse_mode::accept:
  ------------------
  |  Branch (301:17): [True: 0, False: 57.9M]
  ------------------
  302|      0|                {
  303|      0|                    JSONCONS_ASSERT(state_stack_.size() == 1);
  ------------------
  |  |  378|      0|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 0]
  |  |  ------------------
  |  |  379|      0|    JSONCONS_THROW(jsoncons::assertion_error("assertion '" #x "' failed at  <> :" \
  |  |  ------------------
  |  |  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  |  |  ------------------
  |  |  380|      0|            JSONCONS_STR( 0 ))); }
  ------------------
  304|      0|                    state_stack_.clear();
  305|      0|                    more_ = false;
  306|      0|                    done_ = true;
  307|      0|                    visitor.flush();
  308|      0|                    break;
  309|      0|                }
  310|  57.9M|            }
  311|  57.9M|        }
  312|    394|    }
_ZN8jsoncons6ubjson19basic_ubjson_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE19read_type_and_valueERNS_18basic_json_visitorIcEERNS4_10error_codeE:
  315|  13.5M|    {
  316|  13.5M|        if (source_.is_error())
  ------------------
  |  Branch (316:13): [True: 0, False: 13.5M]
  ------------------
  317|      0|        {
  318|      0|            ec = ubjson_errc::source_error;
  319|      0|            more_ = false;
  320|      0|            return;
  321|      0|        }   
  322|       |
  323|  13.5M|        uint8_t b;
  324|  13.5M|        if (source_.read(&b, 1) == 0)
  ------------------
  |  Branch (324:13): [True: 6, False: 13.5M]
  ------------------
  325|      6|        {
  326|      6|            ec = ubjson_errc::unexpected_eof;
  327|      6|            more_ = false;
  328|      6|            return;
  329|      6|        }
  330|  13.5M|        read_value(visitor, b, ec);
  331|  13.5M|    }
_ZN8jsoncons6ubjson19basic_ubjson_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE9end_arrayERNS_18basic_json_visitorIcEERNS4_10error_codeE:
  617|  3.45M|    {
  618|  3.45M|        --nesting_depth_;
  619|       |
  620|  3.45M|        more_ = visitor.end_array(*this, ec);
  621|  3.45M|        state_stack_.pop_back();
  622|  3.45M|    }
_ZN8jsoncons6ubjson19basic_ubjson_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE10read_valueERNS_18basic_json_visitorIcEEhRNS4_10error_codeE:
  334|  46.1M|    {
  335|  46.1M|        switch (type)
  336|  46.1M|        {
  337|  27.0M|            case jsoncons::ubjson::ubjson_type::null_type: 
  ------------------
  |  Branch (337:13): [True: 27.0M, False: 19.1M]
  ------------------
  338|  27.0M|            {
  339|  27.0M|                more_ = visitor.null_value(semantic_tag::none, *this, ec);
  340|  27.0M|                break;
  341|      0|            }
  342|  73.7k|            case jsoncons::ubjson::ubjson_type::no_op_type: 
  ------------------
  |  Branch (342:13): [True: 73.7k, False: 46.0M]
  ------------------
  343|  73.7k|            {
  344|  73.7k|                break;
  345|      0|            }
  346|   634k|            case jsoncons::ubjson::ubjson_type::true_type:
  ------------------
  |  Branch (346:13): [True: 634k, False: 45.5M]
  ------------------
  347|   634k|            {
  348|   634k|                more_ = visitor.bool_value(true, semantic_tag::none, *this, ec);
  349|   634k|                break;
  350|      0|            }
  351|  2.70M|            case jsoncons::ubjson::ubjson_type::false_type:
  ------------------
  |  Branch (351:13): [True: 2.70M, False: 43.4M]
  ------------------
  352|  2.70M|            {
  353|  2.70M|                more_ = visitor.bool_value(false, semantic_tag::none, *this, ec);
  354|  2.70M|                break;
  355|      0|            }
  356|  1.97M|            case jsoncons::ubjson::ubjson_type::int8_type: 
  ------------------
  |  Branch (356:13): [True: 1.97M, False: 44.1M]
  ------------------
  357|  1.97M|            {
  358|  1.97M|                uint8_t buf[sizeof(int8_t)];
  359|  1.97M|                if (source_.read(buf, sizeof(int8_t)) != sizeof(int8_t))
  ------------------
  |  Branch (359:21): [True: 13, False: 1.97M]
  ------------------
  360|     13|                {
  361|     13|                    ec = ubjson_errc::unexpected_eof;
  362|     13|                    more_ = false;
  363|     13|                    return;
  364|     13|                }
  365|  1.97M|                int8_t val = binary::big_to_native<int8_t>(buf, sizeof(buf));
  366|  1.97M|                more_ = visitor.int64_value(val, semantic_tag::none, *this, ec);
  367|  1.97M|                break;
  368|  1.97M|            }
  369|  2.53M|            case jsoncons::ubjson::ubjson_type::uint8_type: 
  ------------------
  |  Branch (369:13): [True: 2.53M, False: 43.6M]
  ------------------
  370|  2.53M|            {
  371|  2.53M|                uint8_t b;
  372|  2.53M|                if (source_.read(&b, 1) == 0)
  ------------------
  |  Branch (372:21): [True: 12, False: 2.53M]
  ------------------
  373|     12|                {
  374|     12|                    ec = ubjson_errc::unexpected_eof;
  375|     12|                    more_ = false;
  376|     12|                    return;
  377|     12|                }
  378|  2.53M|                more_ = visitor.uint64_value(b, semantic_tag::none, *this, ec);
  379|  2.53M|                break;
  380|  2.53M|            }
  381|  39.7k|            case jsoncons::ubjson::ubjson_type::int16_type: 
  ------------------
  |  Branch (381:13): [True: 39.7k, False: 46.1M]
  ------------------
  382|  39.7k|            {
  383|  39.7k|                uint8_t buf[sizeof(int16_t)];
  384|  39.7k|                if (source_.read(buf, sizeof(int16_t)) != sizeof(int16_t))
  ------------------
  |  Branch (384:21): [True: 1, False: 39.7k]
  ------------------
  385|      1|                {
  386|      1|                    ec = ubjson_errc::unexpected_eof;
  387|      1|                    more_ = false;
  388|      1|                    return;
  389|      1|                }
  390|  39.7k|                int16_t val = binary::big_to_native<int16_t>(buf, sizeof(buf));
  391|  39.7k|                more_ = visitor.int64_value(val, semantic_tag::none, *this, ec);
  392|  39.7k|                break;
  393|  39.7k|            }
  394|  14.1k|            case jsoncons::ubjson::ubjson_type::int32_type: 
  ------------------
  |  Branch (394:13): [True: 14.1k, False: 46.1M]
  ------------------
  395|  14.1k|            {
  396|  14.1k|                uint8_t buf[sizeof(int32_t)];
  397|  14.1k|                if (source_.read(buf, sizeof(int32_t)) != sizeof(int32_t))
  ------------------
  |  Branch (397:21): [True: 1, False: 14.1k]
  ------------------
  398|      1|                {
  399|      1|                    ec = ubjson_errc::unexpected_eof;
  400|      1|                    more_ = false;
  401|      1|                    return;
  402|      1|                }
  403|  14.1k|                int32_t val = binary::big_to_native<int32_t>(buf, sizeof(buf));
  404|  14.1k|                more_ = visitor.int64_value(val, semantic_tag::none, *this, ec);
  405|  14.1k|                break;
  406|  14.1k|            }
  407|  1.01k|            case jsoncons::ubjson::ubjson_type::int64_type: 
  ------------------
  |  Branch (407:13): [True: 1.01k, False: 46.1M]
  ------------------
  408|  1.01k|            {
  409|  1.01k|                uint8_t buf[sizeof(int64_t)];
  410|  1.01k|                if (source_.read(buf, sizeof(int64_t)) != sizeof(int64_t))
  ------------------
  |  Branch (410:21): [True: 0, False: 1.01k]
  ------------------
  411|      0|                {
  412|      0|                    ec = ubjson_errc::unexpected_eof;
  413|      0|                    more_ = false;
  414|      0|                    return;
  415|      0|                }
  416|  1.01k|                int64_t val = binary::big_to_native<int64_t>(buf, sizeof(buf));
  417|  1.01k|                more_ = visitor.int64_value(val, semantic_tag::none, *this, ec);
  418|  1.01k|                break;
  419|  1.01k|            }
  420|   144k|            case jsoncons::ubjson::ubjson_type::float32_type: 
  ------------------
  |  Branch (420:13): [True: 144k, False: 46.0M]
  ------------------
  421|   144k|            {
  422|   144k|                uint8_t buf[sizeof(float)];
  423|   144k|                if (source_.read(buf, sizeof(float)) != sizeof(float))
  ------------------
  |  Branch (423:21): [True: 3, False: 144k]
  ------------------
  424|      3|                {
  425|      3|                    ec = ubjson_errc::unexpected_eof;
  426|      3|                    more_ = false;
  427|      3|                    return;
  428|      3|                }
  429|   144k|                float val = binary::big_to_native<float>(buf, sizeof(buf));
  430|   144k|                more_ = visitor.double_value(val, semantic_tag::none, *this, ec);
  431|   144k|                break;
  432|   144k|            }
  433|  4.28k|            case jsoncons::ubjson::ubjson_type::float64_type: 
  ------------------
  |  Branch (433:13): [True: 4.28k, False: 46.1M]
  ------------------
  434|  4.28k|            {
  435|  4.28k|                uint8_t buf[sizeof(double)];
  436|  4.28k|                if (source_.read(buf, sizeof(double)) != sizeof(double))
  ------------------
  |  Branch (436:21): [True: 1, False: 4.28k]
  ------------------
  437|      1|                {
  438|      1|                    ec = ubjson_errc::unexpected_eof;
  439|      1|                    more_ = false;
  440|      1|                    return;
  441|      1|                }
  442|  4.28k|                double val = binary::big_to_native<double>(buf, sizeof(buf));
  443|  4.28k|                more_ = visitor.double_value(val, semantic_tag::none, *this, ec);
  444|  4.28k|                break;
  445|  4.28k|            }
  446|  2.91M|            case jsoncons::ubjson::ubjson_type::char_type: 
  ------------------
  |  Branch (446:13): [True: 2.91M, False: 43.2M]
  ------------------
  447|  2.91M|            {
  448|  2.91M|                text_buffer_.clear();
  449|  2.91M|                if (source_reader<Source>::read(source_,text_buffer_,1) != 1)
  ------------------
  |  Branch (449:21): [True: 19, False: 2.91M]
  ------------------
  450|     19|                {
  451|     19|                    ec = ubjson_errc::unexpected_eof;
  452|     19|                    more_ = false;
  453|     19|                    return;
  454|     19|                }
  455|  2.91M|                auto result = unicode_traits::validate(text_buffer_.data(),text_buffer_.size());
  456|  2.91M|                if (result.ec != unicode_traits::conv_errc())
  ------------------
  |  Branch (456:21): [True: 1, False: 2.91M]
  ------------------
  457|      1|                {
  458|      1|                    ec = ubjson_errc::invalid_utf8_text_string;
  459|      1|                    more_ = false;
  460|      1|                    return;
  461|      1|                }
  462|  2.91M|                more_ = visitor.string_value(text_buffer_, semantic_tag::none, *this, ec);
  463|  2.91M|                break;
  464|  2.91M|            }
  465|    665|            case jsoncons::ubjson::ubjson_type::string_type: 
  ------------------
  |  Branch (465:13): [True: 665, False: 46.1M]
  ------------------
  466|    665|            {
  467|    665|                std::size_t length = get_length(ec);
  468|    665|                if (ec)
  ------------------
  |  Branch (468:21): [True: 1, False: 664]
  ------------------
  469|      1|                {
  470|      1|                    return;
  471|      1|                }
  472|    664|                text_buffer_.clear();
  473|    664|                if (source_reader<Source>::read(source_,text_buffer_,length) != length)
  ------------------
  |  Branch (473:21): [True: 5, False: 659]
  ------------------
  474|      5|                {
  475|      5|                    ec = ubjson_errc::unexpected_eof;
  476|      5|                    more_ = false;
  477|      5|                    return;
  478|      5|                }
  479|    659|                auto result = unicode_traits::validate(text_buffer_.data(),text_buffer_.size());
  480|    659|                if (result.ec != unicode_traits::conv_errc())
  ------------------
  |  Branch (480:21): [True: 9, False: 650]
  ------------------
  481|      9|                {
  482|      9|                    ec = ubjson_errc::invalid_utf8_text_string;
  483|      9|                    more_ = false;
  484|      9|                    return;
  485|      9|                }
  486|    650|                more_ = visitor.string_value(jsoncons::basic_string_view<char>(text_buffer_.data(),text_buffer_.length()), semantic_tag::none, *this, ec);
  487|    650|                break;
  488|    659|            }
  489|    917|            case jsoncons::ubjson::ubjson_type::high_precision_number_type: 
  ------------------
  |  Branch (489:13): [True: 917, False: 46.1M]
  ------------------
  490|    917|            {
  491|    917|                std::size_t length = get_length(ec);
  492|    917|                if (ec)
  ------------------
  |  Branch (492:21): [True: 2, False: 915]
  ------------------
  493|      2|                {
  494|      2|                    return;
  495|      2|                }
  496|    915|                text_buffer_.clear();
  497|    915|                if (source_reader<Source>::read(source_,text_buffer_,length) != length)
  ------------------
  |  Branch (497:21): [True: 7, False: 908]
  ------------------
  498|      7|                {
  499|      7|                    ec = ubjson_errc::unexpected_eof;
  500|      7|                    more_ = false;
  501|      7|                    return;
  502|      7|                }
  503|    908|                if (jsoncons::detail::is_base10(text_buffer_.data(),text_buffer_.length()))
  ------------------
  |  Branch (503:21): [True: 35, False: 873]
  ------------------
  504|     35|                {
  505|     35|                    more_ = visitor.string_value(jsoncons::basic_string_view<char>(text_buffer_.data(),text_buffer_.length()), semantic_tag::bigint, *this, ec);
  506|     35|                }
  507|    873|                else
  508|    873|                {
  509|    873|                    more_ = visitor.string_value(jsoncons::basic_string_view<char>(text_buffer_.data(),text_buffer_.length()), semantic_tag::bigdec, *this, ec);
  510|    873|                }
  511|    908|                break;
  512|    915|            }
  513|  3.47M|            case jsoncons::ubjson::ubjson_type::start_array_marker: 
  ------------------
  |  Branch (513:13): [True: 3.47M, False: 42.6M]
  ------------------
  514|  3.47M|            {
  515|  3.47M|                begin_array(visitor,ec);
  516|  3.47M|                break;
  517|    915|            }
  518|  4.62M|            case jsoncons::ubjson::ubjson_type::start_object_marker: 
  ------------------
  |  Branch (518:13): [True: 4.62M, False: 41.5M]
  ------------------
  519|  4.62M|            {
  520|  4.62M|                begin_object(visitor, ec);
  521|  4.62M|                break;
  522|    915|            }
  523|     39|            default:
  ------------------
  |  Branch (523:13): [True: 39, False: 46.1M]
  ------------------
  524|     39|            {
  525|     39|                ec = ubjson_errc::unknown_type;
  526|     39|                break;
  527|    915|            }
  528|  46.1M|        }
  529|  46.1M|        if (ec)
  ------------------
  |  Branch (529:13): [True: 107, False: 46.1M]
  ------------------
  530|    107|        {
  531|    107|            more_ = false;
  532|    107|        }
  533|  46.1M|    }
_ZN8jsoncons6ubjson19basic_ubjson_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE10get_lengthERNS4_10error_codeE:
  723|  3.73M|    {
  724|  3.73M|        std::size_t length = 0;
  725|  3.73M|        uint8_t type;
  726|  3.73M|        if (source_.read(&type, 1) == 0)
  ------------------
  |  Branch (726:13): [True: 10, False: 3.73M]
  ------------------
  727|     10|        {
  728|     10|            ec = ubjson_errc::unexpected_eof;
  729|     10|            more_ = false;
  730|     10|            return length;
  731|     10|        }
  732|  3.73M|        switch (type)
  733|  3.73M|        {
  734|  22.2k|            case jsoncons::ubjson::ubjson_type::int8_type: 
  ------------------
  |  Branch (734:13): [True: 22.2k, False: 3.71M]
  ------------------
  735|  22.2k|            {
  736|  22.2k|                uint8_t buf[sizeof(int8_t)];
  737|  22.2k|                if (source_.read(buf, sizeof(int8_t)) != sizeof(int8_t))
  ------------------
  |  Branch (737:21): [True: 0, False: 22.2k]
  ------------------
  738|      0|                {
  739|      0|                    ec = ubjson_errc::unexpected_eof;
  740|      0|                    more_ = false;
  741|      0|                    return length;
  742|      0|                }
  743|  22.2k|                int8_t val = binary::big_to_native<int8_t>(buf, sizeof(buf));
  744|  22.2k|                if (val >= 0)
  ------------------
  |  Branch (744:21): [True: 22.2k, False: 0]
  ------------------
  745|  22.2k|                {
  746|  22.2k|                    length = val;
  747|  22.2k|                }
  748|      0|                else
  749|      0|                {
  750|      0|                    ec = ubjson_errc::length_is_negative;
  751|      0|                    more_ = false;
  752|      0|                    return length;
  753|      0|                }
  754|  22.2k|                break;
  755|  22.2k|            }
  756|  3.70M|            case jsoncons::ubjson::ubjson_type::uint8_type: 
  ------------------
  |  Branch (756:13): [True: 3.70M, False: 22.9k]
  ------------------
  757|  3.70M|            {
  758|  3.70M|                uint8_t b;
  759|  3.70M|                if (source_.read(&b, 1) == 0)
  ------------------
  |  Branch (759:21): [True: 0, False: 3.70M]
  ------------------
  760|      0|                {
  761|      0|                    ec = ubjson_errc::unexpected_eof;
  762|      0|                    more_ = false;
  763|      0|                    return length;
  764|      0|                }
  765|  3.70M|                length = b;
  766|  3.70M|                break;
  767|  3.70M|            }
  768|    108|            case jsoncons::ubjson::ubjson_type::int16_type: 
  ------------------
  |  Branch (768:13): [True: 108, False: 3.73M]
  ------------------
  769|    108|            {
  770|    108|                uint8_t buf[sizeof(int16_t)];
  771|    108|                if (source_.read(buf, sizeof(int16_t)) != sizeof(int16_t))
  ------------------
  |  Branch (771:21): [True: 1, False: 107]
  ------------------
  772|      1|                {
  773|      1|                    ec = ubjson_errc::unexpected_eof;
  774|      1|                    more_ = false;
  775|      1|                    return length;
  776|      1|                }
  777|    107|                int16_t val = binary::big_to_native<int16_t>(buf, sizeof(buf));
  778|    107|                if (val >= 0)
  ------------------
  |  Branch (778:21): [True: 107, False: 0]
  ------------------
  779|    107|                {
  780|    107|                    length = val;
  781|    107|                }
  782|      0|                else
  783|      0|                {
  784|      0|                    ec = ubjson_errc::length_is_negative;
  785|      0|                    more_ = false;
  786|      0|                    return length;
  787|      0|                }
  788|    107|                break;
  789|    107|            }
  790|    416|            case jsoncons::ubjson::ubjson_type::int32_type: 
  ------------------
  |  Branch (790:13): [True: 416, False: 3.73M]
  ------------------
  791|    416|            {
  792|    416|                uint8_t buf[sizeof(int32_t)];
  793|    416|                if (source_.read(buf, sizeof(int32_t)) != sizeof(int32_t))
  ------------------
  |  Branch (793:21): [True: 0, False: 416]
  ------------------
  794|      0|                {
  795|      0|                    ec = ubjson_errc::unexpected_eof;
  796|      0|                    more_ = false;
  797|      0|                    return length;
  798|      0|                }
  799|    416|                int32_t val = binary::big_to_native<int32_t>(buf, sizeof(buf));
  800|    416|                if (val >= 0)
  ------------------
  |  Branch (800:21): [True: 416, False: 0]
  ------------------
  801|    416|                {
  802|    416|                    length = static_cast<std::size_t>(val);
  803|    416|                }
  804|      0|                else
  805|      0|                {
  806|      0|                    ec = ubjson_errc::length_is_negative;
  807|      0|                    more_ = false;
  808|      0|                    return length;
  809|      0|                }
  810|    416|                break;
  811|    416|            }
  812|    416|            case jsoncons::ubjson::ubjson_type::int64_type: 
  ------------------
  |  Branch (812:13): [True: 65, False: 3.73M]
  ------------------
  813|     65|            {
  814|     65|                uint8_t buf[sizeof(int64_t)];
  815|     65|                if (source_.read(buf, sizeof(int64_t)) != sizeof(int64_t))
  ------------------
  |  Branch (815:21): [True: 0, False: 65]
  ------------------
  816|      0|                {
  817|      0|                    ec = ubjson_errc::unexpected_eof;
  818|      0|                    more_ = false;
  819|      0|                    return length;
  820|      0|                }
  821|     65|                int64_t val = binary::big_to_native<int64_t>(buf, sizeof(buf));
  822|     65|                if (val >= 0)
  ------------------
  |  Branch (822:21): [True: 65, False: 0]
  ------------------
  823|     65|                {
  824|     65|                    length = (std::size_t)val;
  825|     65|                    if (length != (uint64_t)val)
  ------------------
  |  Branch (825:25): [True: 0, False: 65]
  ------------------
  826|      0|                    {
  827|      0|                        ec = ubjson_errc::number_too_large;
  828|      0|                        more_ = false;
  829|      0|                        return length;
  830|      0|                    }
  831|     65|                }
  832|      0|                else
  833|      0|                {
  834|      0|                    ec = ubjson_errc::length_is_negative;
  835|      0|                    more_ = false;
  836|      0|                    return length;
  837|      0|                }
  838|     65|                break;
  839|     65|            }
  840|     65|            default:
  ------------------
  |  Branch (840:13): [True: 24, False: 3.73M]
  ------------------
  841|     24|            {
  842|     24|                ec = ubjson_errc::length_must_be_integer;
  843|     24|                more_ = false;
  844|     24|                return length;
  845|     65|            }
  846|  3.73M|        }
  847|  3.73M|        return length;
  848|  3.73M|    }
_ZN8jsoncons6ubjson19basic_ubjson_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE11begin_arrayERNS_18basic_json_visitorIcEERNS4_10error_codeE:
  536|  3.47M|    {
  537|  3.47M|        if (JSONCONS_UNLIKELY(++nesting_depth_ > options_.max_nesting_depth()))
  ------------------
  |  |   45|  3.47M|#define JSONCONS_UNLIKELY(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (45:30): [True: 0, False: 3.47M]
  |  |  ------------------
  ------------------
  538|      0|        {
  539|      0|            ec = ubjson_errc::max_nesting_depth_exceeded;
  540|      0|            more_ = false;
  541|      0|            return;
  542|      0|        } 
  543|       |
  544|  3.47M|        auto c = source_.peek();
  545|  3.47M|        if (c.eof)
  ------------------
  |  Branch (545:13): [True: 16, False: 3.47M]
  ------------------
  546|     16|        {
  547|     16|            ec = ubjson_errc::unexpected_eof;
  548|     16|            more_ = false;
  549|     16|            return;
  550|     16|        }
  551|  3.47M|        if (c.value == jsoncons::ubjson::ubjson_type::type_marker)
  ------------------
  |  Branch (551:13): [True: 2.83k, False: 3.46M]
  ------------------
  552|  2.83k|        {
  553|  2.83k|            source_.ignore(1);
  554|  2.83k|            uint8_t b;
  555|  2.83k|            if (source_.read(&b, 1) == 0)
  ------------------
  |  Branch (555:17): [True: 4, False: 2.83k]
  ------------------
  556|      4|            {
  557|      4|                ec = ubjson_errc::unexpected_eof;
  558|      4|                more_ = false;
  559|      4|                return;
  560|      4|            }
  561|  2.83k|            c = source_.peek();
  562|  2.83k|            if (c.eof)
  ------------------
  |  Branch (562:17): [True: 3, False: 2.82k]
  ------------------
  563|      3|            {
  564|      3|                ec = ubjson_errc::unexpected_eof;
  565|      3|                more_ = false;
  566|      3|                return;
  567|      3|            }
  568|  2.82k|            if (c.value == jsoncons::ubjson::ubjson_type::count_marker)
  ------------------
  |  Branch (568:17): [True: 2.82k, False: 0]
  ------------------
  569|  2.82k|            {
  570|  2.82k|                source_.ignore(1);
  571|  2.82k|                std::size_t length = get_length(ec);
  572|  2.82k|                if (ec)
  ------------------
  |  Branch (572:21): [True: 2, False: 2.82k]
  ------------------
  573|      2|                {
  574|      2|                    return;
  575|      2|                }
  576|  2.82k|                if (length > options_.max_items())
  ------------------
  |  Branch (576:21): [True: 0, False: 2.82k]
  ------------------
  577|      0|                {
  578|      0|                    ec = ubjson_errc::max_items_exceeded;
  579|      0|                    more_ = false;
  580|      0|                    return;
  581|      0|                }
  582|  2.82k|                state_stack_.emplace_back(parse_mode::strongly_typed_array,length,b);
  583|  2.82k|                more_ = visitor.begin_array(length, semantic_tag::none, *this, ec);
  584|  2.82k|            }
  585|      0|            else
  586|      0|            {
  587|      0|                ec = ubjson_errc::count_required_after_type;
  588|      0|                more_ = false;
  589|      0|                return;
  590|      0|            }
  591|  2.82k|        }
  592|  3.46M|        else if (c.value == jsoncons::ubjson::ubjson_type::count_marker)
  ------------------
  |  Branch (592:18): [True: 1.90k, False: 3.46M]
  ------------------
  593|  1.90k|        {
  594|  1.90k|            source_.ignore(1);
  595|  1.90k|            std::size_t length = get_length(ec);
  596|  1.90k|            if (ec)
  ------------------
  |  Branch (596:17): [True: 4, False: 1.90k]
  ------------------
  597|      4|            {
  598|      4|                return;
  599|      4|            }
  600|  1.90k|            if (length > options_.max_items())
  ------------------
  |  Branch (600:17): [True: 2, False: 1.89k]
  ------------------
  601|      2|            {
  602|      2|                ec = ubjson_errc::max_items_exceeded;
  603|      2|                more_ = false;
  604|      2|                return;
  605|      2|            }
  606|  1.89k|            state_stack_.emplace_back(parse_mode::array,length);
  607|  1.89k|            more_ = visitor.begin_array(length, semantic_tag::none, *this, ec);
  608|  1.89k|        }
  609|  3.46M|        else
  610|  3.46M|        {
  611|  3.46M|            state_stack_.emplace_back(parse_mode::indefinite_array,0);
  612|  3.46M|            more_ = visitor.begin_array(semantic_tag::none, *this, ec);
  613|  3.46M|        }
  614|  3.47M|    }
_ZN8jsoncons6ubjson19basic_ubjson_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE12begin_objectERNS_18basic_json_visitorIcEERNS4_10error_codeE:
  625|  4.62M|    {
  626|  4.62M|        if (JSONCONS_UNLIKELY(++nesting_depth_ > options_.max_nesting_depth()))
  ------------------
  |  |   45|  4.62M|#define JSONCONS_UNLIKELY(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (45:30): [True: 0, False: 4.62M]
  |  |  ------------------
  ------------------
  627|      0|        {
  628|      0|            ec = ubjson_errc::max_nesting_depth_exceeded;
  629|      0|            more_ = false;
  630|      0|            return;
  631|      0|        } 
  632|       |
  633|  4.62M|        auto c = source_.peek();
  634|  4.62M|        if (c.eof)
  ------------------
  |  Branch (634:13): [True: 23, False: 4.62M]
  ------------------
  635|     23|        {
  636|     23|            ec = ubjson_errc::unexpected_eof;
  637|     23|            more_ = false;
  638|     23|            return;
  639|     23|        }
  640|  4.62M|        if (c.value == jsoncons::ubjson::ubjson_type::type_marker)
  ------------------
  |  Branch (640:13): [True: 5.44k, False: 4.61M]
  ------------------
  641|  5.44k|        {
  642|  5.44k|            source_.ignore(1);
  643|  5.44k|            uint8_t b;
  644|  5.44k|            if (source_.read(&b, 1) == 0)
  ------------------
  |  Branch (644:17): [True: 3, False: 5.44k]
  ------------------
  645|      3|            {
  646|      3|                ec = ubjson_errc::unexpected_eof;
  647|      3|                more_ = false;
  648|      3|                return;
  649|      3|            }
  650|  5.44k|            c = source_.peek();
  651|  5.44k|            if (c.eof)
  ------------------
  |  Branch (651:17): [True: 3, False: 5.43k]
  ------------------
  652|      3|            {
  653|      3|                ec = ubjson_errc::unexpected_eof;
  654|      3|                more_ = false;
  655|      3|                return;
  656|      3|            }
  657|  5.43k|            if (c.value == jsoncons::ubjson::ubjson_type::count_marker)
  ------------------
  |  Branch (657:17): [True: 5.43k, False: 1]
  ------------------
  658|  5.43k|            {
  659|  5.43k|                source_.ignore(1);
  660|  5.43k|                std::size_t length = get_length(ec);
  661|  5.43k|                if (ec)
  ------------------
  |  Branch (661:21): [True: 1, False: 5.43k]
  ------------------
  662|      1|                {
  663|      1|                    return;
  664|      1|                }
  665|  5.43k|                if (length > options_.max_items())
  ------------------
  |  Branch (665:21): [True: 0, False: 5.43k]
  ------------------
  666|      0|                {
  667|      0|                    ec = ubjson_errc::max_items_exceeded;
  668|      0|                    more_ = false;
  669|      0|                    return;
  670|      0|                }
  671|  5.43k|                state_stack_.emplace_back(parse_mode::strongly_typed_map_key,length,b);
  672|  5.43k|                more_ = visitor.begin_object(length, semantic_tag::none, *this, ec);
  673|  5.43k|            }
  674|      1|            else
  675|      1|            {
  676|      1|                ec = ubjson_errc::count_required_after_type;
  677|      1|                more_ = false;
  678|      1|                return;
  679|      1|            }
  680|  5.43k|        }
  681|  4.61M|        else
  682|  4.61M|        {
  683|  4.61M|            c = source_.peek();
  684|  4.61M|            if (c.eof)
  ------------------
  |  Branch (684:17): [True: 0, False: 4.61M]
  ------------------
  685|      0|            {
  686|      0|                ec = ubjson_errc::unexpected_eof;
  687|      0|                more_ = false;
  688|      0|                return;
  689|      0|            }
  690|  4.61M|            if (c.value == jsoncons::ubjson::ubjson_type::count_marker)
  ------------------
  |  Branch (690:17): [True: 3.36k, False: 4.61M]
  ------------------
  691|  3.36k|            {
  692|  3.36k|                source_.ignore(1);
  693|  3.36k|                std::size_t length = get_length(ec);
  694|  3.36k|                if (ec)
  ------------------
  |  Branch (694:21): [True: 4, False: 3.36k]
  ------------------
  695|      4|                {
  696|      4|                    return;
  697|      4|                }
  698|  3.36k|                if (length > options_.max_items())
  ------------------
  |  Branch (698:21): [True: 2, False: 3.36k]
  ------------------
  699|      2|                {
  700|      2|                    ec = ubjson_errc::max_items_exceeded;
  701|      2|                    more_ = false;
  702|      2|                    return;
  703|      2|                }
  704|  3.36k|                state_stack_.emplace_back(parse_mode::map_key,length);
  705|  3.36k|                more_ = visitor.begin_object(length, semantic_tag::none, *this, ec);
  706|  3.36k|            }
  707|  4.61M|            else
  708|  4.61M|            {
  709|  4.61M|                state_stack_.emplace_back(parse_mode::indefinite_map_key,0);
  710|  4.61M|                more_ = visitor.begin_object(semantic_tag::none, *this, ec);
  711|  4.61M|            }
  712|  4.61M|        }
  713|  4.62M|    }
_ZN8jsoncons6ubjson19basic_ubjson_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE8read_keyERNS_18basic_json_visitorIcEERNS4_10error_codeE:
  851|  3.71M|    {
  852|  3.71M|        std::size_t length = get_length(ec);
  853|  3.71M|        if (ec)
  ------------------
  |  Branch (853:13): [True: 21, False: 3.71M]
  ------------------
  854|     21|        {
  855|     21|            ec = ubjson_errc::key_expected;
  856|     21|            more_ = false;
  857|     21|            return;
  858|     21|        }
  859|  3.71M|        text_buffer_.clear();
  860|  3.71M|        if (source_reader<Source>::read(source_,text_buffer_,length) != length)
  ------------------
  |  Branch (860:13): [True: 20, False: 3.71M]
  ------------------
  861|     20|        {
  862|     20|            ec = ubjson_errc::unexpected_eof;
  863|     20|            more_ = false;
  864|     20|            return;
  865|     20|        }
  866|       |
  867|  3.71M|        auto result = unicode_traits::validate(text_buffer_.data(),text_buffer_.size());
  868|  3.71M|        if (result.ec != unicode_traits::conv_errc())
  ------------------
  |  Branch (868:13): [True: 11, False: 3.71M]
  ------------------
  869|     11|        {
  870|     11|            ec = ubjson_errc::invalid_utf8_text_string;
  871|     11|            more_ = false;
  872|     11|            return;
  873|     11|        }
  874|  3.71M|        more_ = visitor.key(jsoncons::basic_string_view<char>(text_buffer_.data(),text_buffer_.length()), *this, ec);
  875|  3.71M|    }
_ZN8jsoncons6ubjson19basic_ubjson_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE10end_objectERNS_18basic_json_visitorIcEERNS4_10error_codeE:
  716|  4.62M|    {
  717|  4.62M|        --nesting_depth_;
  718|  4.62M|        more_ = visitor.end_object(*this, ec);
  719|  4.62M|        state_stack_.pop_back();
  720|  4.62M|    }

_ZN8jsoncons6ubjson19basic_ubjson_readerINS_13stream_sourceIhEENSt3__19allocatorIcEEEC2IRNS4_13basic_istreamIcNS4_11char_traitsIcEEEEEEOT_RNS_18basic_json_visitorIcEERKNS0_21ubjson_decode_optionsERKS6_:
   47|    394|    {
   48|    394|    }
_ZN8jsoncons6ubjson19basic_ubjson_readerINS_13stream_sourceIhEENSt3__19allocatorIcEEE4readEv:
   51|    394|    {
   52|    394|        std::error_code ec;
   53|    394|        read(ec);
   54|    394|        if (ec)
  ------------------
  |  Branch (54:13): [True: 283, False: 111]
  ------------------
   55|    283|        {
   56|    283|            JSONCONS_THROW(ser_error(ec,line(),column()));
  ------------------
  |  |  237|    283|    #define JSONCONS_THROW(exception) throw exception
  ------------------
   57|    283|        }
   58|    394|    }
_ZN8jsoncons6ubjson19basic_ubjson_readerINS_13stream_sourceIhEENSt3__19allocatorIcEEE4readERNS4_10error_codeE:
   61|    394|    {
   62|    394|        parser_.reset();
   63|    394|        parser_.parse(visitor_, ec);
   64|    394|        if (ec)
  ------------------
  |  Branch (64:13): [True: 283, False: 111]
  ------------------
   65|    283|        {
   66|    283|            return;
   67|    283|        }
   68|    394|    }
_ZNK8jsoncons6ubjson19basic_ubjson_readerINS_13stream_sourceIhEENSt3__19allocatorIcEEE4lineEv:
   71|    283|    {
   72|    283|        return parser_.line();
   73|    283|    }
_ZNK8jsoncons6ubjson19basic_ubjson_readerINS_13stream_sourceIhEENSt3__19allocatorIcEEE6columnEv:
   76|    283|    {
   77|    283|        return parser_.column();
   78|    283|    }

