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

_ZNK8jsoncons16allocator_holderINSt3__19allocatorIcEEE13get_allocatorEv:
   31|  14.6M|    {
   32|  14.6M|        return alloc_;
   33|  14.6M|    }
_ZN8jsoncons16allocator_holderINSt3__19allocatorIcEEEC2ERKS3_:
   27|  9.78M|        {}

_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEED2Ev:
 3796|   102M|        {
 3797|   102M|             destroy();
 3798|   102M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE7destroyEv:
 2215|   111M|        {
 2216|   111M|            switch (storage_kind())
 2217|   111M|            {
 2218|  10.8k|                case json_storage_kind::long_string_value:
  ------------------
  |  Branch (2218:17): [True: 10.8k, False: 111M]
  ------------------
 2219|  10.8k|                    destroy_var<long_string_storage>();
 2220|  10.8k|                    break;
 2221|   233k|                case json_storage_kind::byte_string_value:
  ------------------
  |  Branch (2221:17): [True: 233k, False: 111M]
  ------------------
 2222|   233k|                    destroy_var<byte_string_storage>();
 2223|   233k|                    break;
 2224|  2.31M|                case json_storage_kind::array_value:
  ------------------
  |  Branch (2224:17): [True: 2.31M, False: 109M]
  ------------------
 2225|  2.31M|                    destroy_var<array_storage>();
 2226|  2.31M|                    break;
 2227|  2.56M|                case json_storage_kind::object_value:
  ------------------
  |  Branch (2227:17): [True: 2.56M, False: 108M]
  ------------------
 2228|  2.56M|                    destroy_var<object_storage>();
 2229|  2.56M|                    break;
 2230|   106M|                default:
  ------------------
  |  Branch (2230:17): [True: 106M, False: 5.12M]
  ------------------
 2231|   106M|                    break;
 2232|   111M|            }
 2233|   111M|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE12storage_kindEv:
 2839|   271M|        {
 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|   271M|            return static_cast<json_storage_kind>(common_stor_.storage_kind_);
 2845|   271M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE11destroy_varINS5_19long_string_storageEEEvv:
 2243|  10.8k|        {
 2244|  10.8k|            cast<T>().~T();
 2245|  10.8k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_19long_string_storageEEERT_v:
 2252|  79.4k|        {
 2253|  79.4k|            return cast(identity<T>());
 2254|  79.4k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_19long_string_storageEEE:
 2343|  79.4k|        {
 2344|  79.4k|            return long_string_stor_;
 2345|  79.4k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19long_string_storageD2Ev:
  733|  10.8k|            {
  734|  10.8k|                heap_string_factory_type::destroy(ptr_);
  735|  10.8k|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE11destroy_varINS5_19byte_string_storageEEEvv:
 2243|   233k|        {
 2244|   233k|            cast<T>().~T();
 2245|   233k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_19byte_string_storageEEERT_v:
 2252|  1.69M|        {
 2253|  1.69M|            return cast(identity<T>());
 2254|  1.69M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_19byte_string_storageEEE:
 2353|  1.69M|        {
 2354|  1.69M|            return byte_string_stor_;
 2355|  1.69M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19byte_string_storageD2Ev:
  858|   233k|            {
  859|   233k|                heap_string_factory_type::destroy(ptr_);
  860|   233k|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE11destroy_varINS5_13array_storageEEEvv:
 2243|  2.31M|        {
 2244|  2.31M|            cast<T>().~T();
 2245|  2.31M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_13array_storageEEERT_v:
 2252|  23.1M|        {
 2253|  23.1M|            return cast(identity<T>());
 2254|  23.1M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_13array_storageEEE:
 2373|  23.1M|        {
 2374|  23.1M|            return array_stor_;
 2375|  23.1M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE13array_storageD2Ev:
  990|  2.32M|            {
  991|  2.32M|                if (ptr_ != nullptr)
  ------------------
  |  Branch (991:21): [True: 2.31M, False: 211]
  ------------------
  992|  2.31M|                {
  993|  2.31M|                    destroy();
  994|  2.31M|                }
  995|  2.32M|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE13array_storage7destroyEv:
  924|  2.31M|            {
  925|  2.31M|                array_allocator alloc(ptr_->get_allocator());
  926|  2.31M|                std::allocator_traits<array_allocator>::destroy(alloc, extension_traits::to_plain_pointer(ptr_));
  927|  2.31M|                std::allocator_traits<array_allocator>::deallocate(alloc, ptr_,1);
  928|  2.31M|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEC2EOS5_:
 3497|  70.6M|        {
 3498|  70.6M|            uninitialized_move(std::move(other));
 3499|  70.6M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE18uninitialized_moveEOS5_:
 2537|  72.0M|        {
 2538|  72.0M|            switch (other.storage_kind())
 2539|  72.0M|            {
 2540|  6.38M|                case json_storage_kind::null_value:
  ------------------
  |  Branch (2540:17): [True: 6.38M, False: 65.6M]
  ------------------
 2541|  6.38M|                case json_storage_kind::empty_object_value:
  ------------------
  |  Branch (2541:17): [True: 0, False: 72.0M]
  ------------------
 2542|  6.38M|                case json_storage_kind::half_value:
  ------------------
  |  Branch (2542:17): [True: 0, False: 72.0M]
  ------------------
 2543|  6.70M|                case json_storage_kind::double_value:
  ------------------
  |  Branch (2543:17): [True: 321k, False: 71.7M]
  ------------------
 2544|  15.7M|                case json_storage_kind::int64_value:
  ------------------
  |  Branch (2544:17): [True: 9.06M, False: 63.0M]
  ------------------
 2545|  47.1M|                case json_storage_kind::uint64_value:
  ------------------
  |  Branch (2545:17): [True: 31.3M, False: 40.6M]
  ------------------
 2546|  55.6M|                case json_storage_kind::bool_value:
  ------------------
  |  Branch (2546:17): [True: 8.43M, False: 63.6M]
  ------------------
 2547|  59.7M|                case json_storage_kind::short_string_value:
  ------------------
  |  Branch (2547:17): [True: 4.17M, False: 67.8M]
  ------------------
 2548|  59.7M|                case json_storage_kind::json_const_pointer:
  ------------------
  |  Branch (2548:17): [True: 0, False: 72.0M]
  ------------------
 2549|  59.7M|                    uninitialized_copy(other);
 2550|  59.7M|                    break;
 2551|       |                    
 2552|  28.8k|                case json_storage_kind::long_string_value:
  ------------------
  |  Branch (2552:17): [True: 28.8k, False: 72.0M]
  ------------------
 2553|  28.8k|                    construct<long_string_storage>(std::move(other.cast<long_string_storage>()));
 2554|  28.8k|                    break;
 2555|   613k|                case json_storage_kind::byte_string_value:
  ------------------
  |  Branch (2555:17): [True: 613k, False: 71.4M]
  ------------------
 2556|   613k|                    construct<byte_string_storage>(std::move(other.cast<byte_string_storage>()));
 2557|   613k|                    break;
 2558|  6.73M|                case json_storage_kind::array_value:
  ------------------
  |  Branch (2558:17): [True: 6.73M, False: 65.3M]
  ------------------
 2559|  6.73M|                    construct<array_storage>(std::move(other.cast<array_storage>()));
 2560|  6.73M|                    break;
 2561|  4.90M|                case json_storage_kind::object_value:
  ------------------
  |  Branch (2561:17): [True: 4.90M, False: 67.1M]
  ------------------
 2562|  4.90M|                    construct<object_storage>(std::move(other.cast<object_storage>()));
 2563|  4.90M|                    break;
 2564|       |                    
 2565|      0|                default:
  ------------------
  |  Branch (2565:17): [True: 0, False: 72.0M]
  ------------------
 2566|      0|                    JSONCONS_UNREACHABLE();
  ------------------
  |  |   46|      0|#define JSONCONS_UNREACHABLE() __builtin_unreachable()
  ------------------
 2567|      0|                    break;
 2568|  72.0M|            }
 2569|  72.0M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE18uninitialized_copyERKS5_:
 2455|  67.1M|        {
 2456|  67.1M|            switch (other.storage_kind())
 2457|  67.1M|            {
 2458|  6.44M|                case json_storage_kind::null_value:
  ------------------
  |  Branch (2458:17): [True: 6.44M, False: 60.6M]
  ------------------
 2459|  6.44M|                    construct<null_storage>(other.cast<null_storage>());
 2460|  6.44M|                    break;
 2461|      0|                case json_storage_kind::empty_object_value:
  ------------------
  |  Branch (2461:17): [True: 0, False: 67.1M]
  ------------------
 2462|      0|                    construct<empty_object_storage>(other.cast<empty_object_storage>());
 2463|      0|                    break;
 2464|  9.59M|                case json_storage_kind::bool_value:
  ------------------
  |  Branch (2464:17): [True: 9.59M, False: 57.5M]
  ------------------
 2465|  9.59M|                    construct<bool_storage>(other.cast<bool_storage>());
 2466|  9.59M|                    break;
 2467|  9.65M|                case json_storage_kind::int64_value:
  ------------------
  |  Branch (2467:17): [True: 9.65M, False: 57.4M]
  ------------------
 2468|  9.65M|                    construct<int64_storage>(other.cast<int64_storage>());
 2469|  9.65M|                    break;
 2470|  36.7M|                case json_storage_kind::uint64_value:
  ------------------
  |  Branch (2470:17): [True: 36.7M, False: 30.3M]
  ------------------
 2471|  36.7M|                    construct<uint64_storage>(other.cast<uint64_storage>());
 2472|  36.7M|                    break;
 2473|      0|                case json_storage_kind::half_value:
  ------------------
  |  Branch (2473:17): [True: 0, False: 67.1M]
  ------------------
 2474|      0|                    construct<half_storage>(other.cast<half_storage>());
 2475|      0|                    break;
 2476|   330k|                case json_storage_kind::double_value:
  ------------------
  |  Branch (2476:17): [True: 330k, False: 66.7M]
  ------------------
 2477|   330k|                    construct<double_storage>(other.cast<double_storage>());
 2478|   330k|                    break;
 2479|  4.28M|                case json_storage_kind::short_string_value:
  ------------------
  |  Branch (2479:17): [True: 4.28M, False: 62.8M]
  ------------------
 2480|  4.28M|                    construct<short_string_storage>(other.cast<short_string_storage>());
 2481|  4.28M|                    break;
 2482|      0|                case json_storage_kind::long_string_value:
  ------------------
  |  Branch (2482:17): [True: 0, False: 67.1M]
  ------------------
 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: 67.1M]
  ------------------
 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: 67.1M]
  ------------------
 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: 67.1M]
  ------------------
 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: 67.1M]
  ------------------
 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: 67.1M]
  ------------------
 2498|      0|                    JSONCONS_UNREACHABLE();
  ------------------
  |  |   46|      0|#define JSONCONS_UNREACHABLE() __builtin_unreachable()
  ------------------
 2499|      0|                    break;
 2500|  67.1M|            }
 2501|  67.1M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_12null_storageEJRKS7_EEEvDpOT0_:
 2237|  6.44M|        {
 2238|  6.44M|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  6.44M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_12null_storageEEERT_v:
 2252|  9.69M|        {
 2253|  9.69M|            return cast(identity<T>());
 2254|  9.69M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_12null_storageEEE:
 2263|  9.69M|        {
 2264|  9.69M|            return null_stor_;
 2265|  9.69M|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_12null_storageEEERKT_v:
 2258|  6.44M|        {
 2259|  6.44M|            return cast(identity<T>());
 2260|  6.44M|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_12null_storageEEE:
 2268|  6.44M|        {
 2269|  6.44M|            return null_stor_;
 2270|  6.44M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_20empty_object_storageEEERT_v:
 2252|  8.42k|        {
 2253|  8.42k|            return cast(identity<T>());
 2254|  8.42k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_20empty_object_storageEEE:
 2273|  8.42k|        {
 2274|  8.42k|            return empty_object_stor_;
 2275|  8.42k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_12bool_storageEJRKS7_EEEvDpOT0_:
 2237|  9.59M|        {
 2238|  9.59M|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  9.59M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_12bool_storageEEERT_v:
 2252|  14.0M|        {
 2253|  14.0M|            return cast(identity<T>());
 2254|  14.0M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_12bool_storageEEE:
 2283|  14.0M|        {
 2284|  14.0M|            return bool_stor_;
 2285|  14.0M|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_12bool_storageEEERKT_v:
 2258|  9.59M|        {
 2259|  9.59M|            return cast(identity<T>());
 2260|  9.59M|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_12bool_storageEEE:
 2288|  9.59M|        {
 2289|  9.59M|            return bool_stor_;
 2290|  9.59M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_13int64_storageEJRKS7_EEEvDpOT0_:
 2237|  9.65M|        {
 2238|  9.65M|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  9.65M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_13int64_storageEEERT_v:
 2252|  13.2M|        {
 2253|  13.2M|            return cast(identity<T>());
 2254|  13.2M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_13int64_storageEEE:
 2293|  13.2M|        {
 2294|  13.2M|            return int64_stor_;
 2295|  13.2M|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_13int64_storageEEERKT_v:
 2258|  9.65M|        {
 2259|  9.65M|            return cast(identity<T>());
 2260|  9.65M|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_13int64_storageEEE:
 2298|  9.65M|        {
 2299|  9.65M|            return int64_stor_;
 2300|  9.65M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_14uint64_storageEJRKS7_EEEvDpOT0_:
 2237|  36.7M|        {
 2238|  36.7M|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  36.7M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_14uint64_storageEEERT_v:
 2252|  50.2M|        {
 2253|  50.2M|            return cast(identity<T>());
 2254|  50.2M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_14uint64_storageEEE:
 2303|  50.2M|        {
 2304|  50.2M|            return uint64_stor_;
 2305|  50.2M|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_14uint64_storageEEERKT_v:
 2258|  36.7M|        {
 2259|  36.7M|            return cast(identity<T>());
 2260|  36.7M|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_14uint64_storageEEE:
 2308|  36.7M|        {
 2309|  36.7M|            return uint64_stor_;
 2310|  36.7M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_14double_storageEJRKS7_EEEvDpOT0_:
 2237|   330k|        {
 2238|   330k|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|   330k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_14double_storageEEERT_v:
 2252|   443k|        {
 2253|   443k|            return cast(identity<T>());
 2254|   443k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_14double_storageEEE:
 2323|   443k|        {
 2324|   443k|            return double_stor_;
 2325|   443k|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_14double_storageEEERKT_v:
 2258|   330k|        {
 2259|   330k|            return cast(identity<T>());
 2260|   330k|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_14double_storageEEE:
 2328|   330k|        {
 2329|   330k|            return double_stor_;
 2330|   330k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_20short_string_storageEJRKS7_EEEvDpOT0_:
 2237|  4.28M|        {
 2238|  4.28M|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  4.28M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_20short_string_storageEEERT_v:
 2252|  6.33M|        {
 2253|  6.33M|            return cast(identity<T>());
 2254|  6.33M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_20short_string_storageEEE:
 2333|  6.33M|        {
 2334|  6.33M|            return short_string_stor_;
 2335|  6.33M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE20short_string_storageC2ERKS6_:
  621|  4.28M|            {
  622|  4.28M|                std::memcpy(data_,other.data_,other.small_string_length_*sizeof(char_type));
  623|  4.28M|                data_[small_string_length_] = 0;
  624|  4.28M|            }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_20short_string_storageEEERKT_v:
 2258|  4.28M|        {
 2259|  4.28M|            return cast(identity<T>());
 2260|  4.28M|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_20short_string_storageEEE:
 2338|  4.28M|        {
 2339|  4.28M|            return short_string_stor_;
 2340|  4.28M|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_14object_storageEEERKT_v:
 2258|  71.0k|        {
 2259|  71.0k|            return cast(identity<T>());
 2260|  71.0k|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_14object_storageEEE:
 2368|  71.0k|        {
 2369|  71.0k|            return object_stor_;
 2370|  71.0k|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_13array_storageEEERKT_v:
 2258|   151k|        {
 2259|   151k|            return cast(identity<T>());
 2260|   151k|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_13array_storageEEE:
 2378|   151k|        {
 2379|   151k|            return array_stor_;
 2380|   151k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_19long_string_storageEJS7_EEEvDpOT0_:
 2237|  28.8k|        {
 2238|  28.8k|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  28.8k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19long_string_storageC2EOS6_:
  684|  28.8k|            {
  685|  28.8k|                ptr_ = other.ptr_;
  686|  28.8k|                other.ptr_ = nullptr;
  687|  28.8k|                other.tag_ = semantic_tag::none;
  688|  28.8k|                other.storage_kind_ = static_cast<uint8_t>(json_storage_kind::null_value);
  689|  28.8k|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_19byte_string_storageEJS7_EEEvDpOT0_:
 2237|   613k|        {
 2238|   613k|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|   613k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19byte_string_storageC2EOS6_:
  809|   613k|            {
  810|   613k|                ptr_ = other.ptr_;
  811|   613k|                other.ptr_ = nullptr;
  812|   613k|                other.tag_ = semantic_tag::none;
  813|   613k|                other.storage_kind_ = static_cast<uint8_t>(json_storage_kind::null_value);
  814|   613k|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_13array_storageEJS7_EEEvDpOT0_:
 2237|  6.73M|        {
 2238|  6.73M|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  6.73M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE13array_storageC2EOS6_:
  957|  6.74M|            {
  958|  6.74M|                std::swap(other.ptr_, ptr_);
  959|       |
  960|  6.74M|                other.storage_kind_ = static_cast<uint8_t>(json_storage_kind::null_value);
  961|  6.74M|                other.small_string_length_ = 0;
  962|  6.74M|                other.tag_ = semantic_tag::none;
  963|  6.74M|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_14object_storageEJS7_EEEvDpOT0_:
 2237|  4.90M|        {
 2238|  4.90M|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  4.90M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE14object_storageC2EOS6_:
 1110|  4.90M|            {
 1111|  4.90M|                ptr_ = other.ptr_;
 1112|  4.90M|                other.ptr_ = nullptr;
 1113|  4.90M|                other.storage_kind_ = static_cast<uint8_t>(json_storage_kind::null_value);
 1114|  4.90M|                other.small_string_length_ = 0;
 1115|  4.90M|                other.tag_ = semantic_tag::none;
 1116|  4.90M|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castINS5_14object_storageEEERT_v:
 2252|  15.1M|        {
 2253|  15.1M|            return cast(identity<T>());
 2254|  15.1M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4castENS5_8identityINS5_14object_storageEEE:
 2363|  15.1M|        {
 2364|  15.1M|            return object_stor_;
 2365|  15.1M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE11array_rangeEv:
 5930|  40.3k|        {
 5931|  40.3k|            switch (storage_kind())
 5932|  40.3k|            {
 5933|  40.3k|                case json_storage_kind::array_value:
  ------------------
  |  Branch (5933:17): [True: 40.3k, False: 0]
  ------------------
 5934|  40.3k|                    return range<array_iterator, const_array_iterator>(cast<array_storage>().value().begin(),
 5935|  40.3k|                        cast<array_storage>().value().end());
 5936|      0|                default:
  ------------------
  |  Branch (5936:17): [True: 0, False: 40.3k]
  ------------------
 5937|      0|                    JSONCONS_THROW(json_runtime_error<std::domain_error>("Not an array"));
  ------------------
  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  ------------------
 5938|  40.3k|            }
 5939|  40.3k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE13array_storage5valueEv:
 1039|  5.07M|            {
 1040|  5.07M|                return *ptr_;
 1041|  5.07M|            }
_ZN8jsoncons5rangeINSt3__111__wrap_iterIPNS_10basic_jsonIcNS_13sorted_policyENS1_9allocatorIcEEEEEENS2_IPKS7_EEEC2ERKS9_SF_:
  346|  40.3k|        {
  347|  40.3k|        }
_ZN8jsoncons5rangeINSt3__111__wrap_iterIPNS_10basic_jsonIcNS_13sorted_policyENS1_9allocatorIcEEEEEENS2_IPKS7_EEE5beginEv:
  350|  40.3k|        {
  351|  40.3k|            return first_;
  352|  40.3k|        }
_ZN8jsoncons5rangeINSt3__111__wrap_iterIPNS_10basic_jsonIcNS_13sorted_policyENS1_9allocatorIcEEEEEENS2_IPKS7_EEE3endEv:
  354|  40.3k|        {
  355|  40.3k|            return last_;
  356|  40.3k|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4sizeEv:
 2897|  3.55M|        {
 2898|  3.55M|            switch (storage_kind())
 2899|  3.55M|            {
 2900|   147k|                case json_storage_kind::array_value:
  ------------------
  |  Branch (2900:17): [True: 147k, False: 3.40M]
  ------------------
 2901|   147k|                    return cast<array_storage>().value().size();
 2902|      0|                case json_storage_kind::empty_object_value:
  ------------------
  |  Branch (2902:17): [True: 0, False: 3.55M]
  ------------------
 2903|      0|                    return 0;
 2904|  65.2k|                case json_storage_kind::object_value:
  ------------------
  |  Branch (2904:17): [True: 65.2k, False: 3.48M]
  ------------------
 2905|  65.2k|                    return cast<object_storage>().value().size();
 2906|      0|                case json_storage_kind::json_const_pointer:
  ------------------
  |  Branch (2906:17): [True: 0, False: 3.55M]
  ------------------
 2907|      0|                    return cast<json_const_pointer_storage>().value()->size();
 2908|  3.33M|                default:
  ------------------
  |  Branch (2908:17): [True: 3.33M, False: 213k]
  ------------------
 2909|  3.33M|                    return 0;
 2910|  3.55M|            }
 2911|  3.55M|        }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE13array_storage5valueEv:
 1044|   151k|            {
 1045|   151k|                return *ptr_;
 1046|   151k|            }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE14object_storage5valueEv:
 1185|  71.0k|            {
 1186|  71.0k|                return *ptr_;
 1187|  71.0k|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE5clearEv:
 4926|   104k|        {
 4927|   104k|            switch (storage_kind())
 4928|   104k|            {
 4929|  40.3k|            case json_storage_kind::array_value:
  ------------------
  |  Branch (4929:13): [True: 40.3k, False: 64.2k]
  ------------------
 4930|  40.3k|                cast<array_storage>().value().clear();
 4931|  40.3k|                break;
 4932|  64.2k|            case json_storage_kind::object_value:
  ------------------
  |  Branch (4932:13): [True: 64.2k, False: 40.3k]
  ------------------
 4933|  64.2k|                cast<object_storage>().value().clear();
 4934|  64.2k|                break;
 4935|      0|            default:
  ------------------
  |  Branch (4935:13): [True: 0, False: 104k]
  ------------------
 4936|      0|                break;
 4937|   104k|            }
 4938|   104k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE14object_storage5valueEv:
 1180|   245k|            {
 1181|   245k|                return *ptr_;
 1182|   245k|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE12object_rangeEv:
 5900|  64.2k|        {
 5901|  64.2k|            switch (storage_kind())
 5902|  64.2k|            {
 5903|      0|            case json_storage_kind::empty_object_value:
  ------------------
  |  Branch (5903:13): [True: 0, False: 64.2k]
  ------------------
 5904|      0|                return range<object_iterator, const_object_iterator>(object_iterator(), object_iterator());
 5905|  64.2k|            case json_storage_kind::object_value:
  ------------------
  |  Branch (5905:13): [True: 64.2k, False: 0]
  ------------------
 5906|  64.2k|                return range<object_iterator, const_object_iterator>(object_iterator(cast<object_storage>().value().begin()),
 5907|  64.2k|                                              object_iterator(cast<object_storage>().value().end()));
 5908|      0|            default:
  ------------------
  |  Branch (5908:13): [True: 0, False: 64.2k]
  ------------------
 5909|      0|                JSONCONS_THROW(json_runtime_error<std::domain_error>("Not an object"));
  ------------------
  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  ------------------
 5910|  64.2k|            }
 5911|  64.2k|        }
_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|  64.2k|        {
  347|  64.2k|        }
_ZN8jsoncons6detail30random_access_iterator_wrapperINSt3__111__wrap_iterIPNS_9key_valueINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES9_EEEEEEvEC2ESG_:
  111|   128k|            {
  112|   128k|            }
_ZN8jsoncons5rangeINS_6detail30random_access_iterator_wrapperINSt3__111__wrap_iterIPNS_9key_valueINS3_12basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyESA_EEEEEEvEENS2_INS4_IPKSF_EEvEEE5beginEv:
  350|  64.2k|        {
  351|  64.2k|            return first_;
  352|  64.2k|        }
_ZN8jsoncons5rangeINS_6detail30random_access_iterator_wrapperINSt3__111__wrap_iterIPNS_9key_valueINS3_12basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyESA_EEEEEEvEENS2_INS4_IPKSF_EEvEEE3endEv:
  354|  64.2k|        {
  355|  64.2k|            return last_;
  356|  64.2k|        }
_ZNK8jsoncons6detail30random_access_iterator_wrapperINSt3__111__wrap_iterIPNS_9key_valueINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES9_EEEEEEvEneERKSH_:
  213|   160k|            {
  214|   160k|                return !(*this == rhs);
  215|   160k|            }
_ZNK8jsoncons6detail30random_access_iterator_wrapperINSt3__111__wrap_iterIPNS_9key_valueINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES9_EEEEEEvEeqERKSH_:
  201|   160k|            {
  202|   160k|                if (!has_value_ || !rhs.has_value_)
  ------------------
  |  Branch (202:21): [True: 0, False: 160k]
  |  Branch (202:36): [True: 0, False: 160k]
  ------------------
  203|      0|                {
  204|      0|                    return has_value_ == rhs.has_value_ ? true : false;
  ------------------
  |  Branch (204:28): [True: 0, False: 0]
  ------------------
  205|      0|                }
  206|   160k|                else
  207|   160k|                {
  208|   160k|                    return it_ == rhs.it_;
  209|   160k|                }
  210|   160k|            }
_ZNK8jsoncons6detail30random_access_iterator_wrapperINSt3__111__wrap_iterIPNS_9key_valueINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES9_EEEEEEvEdeEv:
  132|  96.3k|            {
  133|  96.3k|                return *it_;
  134|  96.3k|            }
_ZN8jsoncons6detail30random_access_iterator_wrapperINSt3__111__wrap_iterIPNS_9key_valueINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES9_EEEEEEvEppEv:
  142|  96.3k|            {
  143|  96.3k|                ++it_;
  144|  96.3k|                return *this;
  145|  96.3k|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE11destroy_varINS5_14object_storageEEEvv:
 2243|  2.56M|        {
 2244|  2.56M|            cast<T>().~T();
 2245|  2.56M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE14object_storageD2Ev:
 1136|  2.56M|            {
 1137|  2.56M|                if (ptr_ != nullptr)
  ------------------
  |  Branch (1137:21): [True: 2.56M, False: 940]
  ------------------
 1138|  2.56M|                {
 1139|  2.56M|                    destroy();
 1140|  2.56M|                }
 1141|  2.56M|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE14object_storage7destroyEv:
 1196|  2.56M|            {
 1197|  2.56M|                object_allocator alloc(ptr_->get_allocator());
 1198|  2.56M|                std::allocator_traits<object_allocator>::destroy(alloc, extension_traits::to_plain_pointer(ptr_));
 1199|  2.56M|                std::allocator_traits<object_allocator>::deallocate(alloc, ptr_,1);
 1200|  2.56M|            }
_ZNK8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE5emptyEv:
 4346|  9.40k|        {
 4347|  9.40k|            switch (storage_kind())
 4348|  9.40k|            {
 4349|      0|                case json_storage_kind::byte_string_value:
  ------------------
  |  Branch (4349:17): [True: 0, False: 9.40k]
  ------------------
 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: 9.40k]
  ------------------
 4353|      0|                    return cast<short_string_storage>().length() == 0;
 4354|      0|                case json_storage_kind::long_string_value:
  ------------------
  |  Branch (4354:17): [True: 0, False: 9.40k]
  ------------------
 4355|      0|                    return cast<long_string_storage>().length() == 0;
 4356|  3.55k|                case json_storage_kind::array_value:
  ------------------
  |  Branch (4356:17): [True: 3.55k, False: 5.84k]
  ------------------
 4357|  3.55k|                    return cast<array_storage>().value().empty();
 4358|      0|                case json_storage_kind::empty_object_value:
  ------------------
  |  Branch (4358:17): [True: 0, False: 9.40k]
  ------------------
 4359|      0|                    return true;
 4360|  5.84k|                case json_storage_kind::object_value:
  ------------------
  |  Branch (4360:17): [True: 5.84k, False: 3.55k]
  ------------------
 4361|  5.84k|                    return cast<object_storage>().value().empty();
 4362|      0|                case json_storage_kind::json_const_pointer:
  ------------------
  |  Branch (4362:17): [True: 0, False: 9.40k]
  ------------------
 4363|      0|                    return cast<json_const_pointer_storage>().value()->empty();
 4364|      0|                default:
  ------------------
  |  Branch (4364:17): [True: 0, False: 9.40k]
  ------------------
 4365|      0|                    return false;
 4366|  9.40k|            }
 4367|  9.40k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEC2Ev:
 3472|  6.12k|        {
 3473|  6.12k|            construct<empty_object_storage>(semantic_tag::none);
 3474|  6.12k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_20empty_object_storageEJNS_12semantic_tagEEEEvDpOT0_:
 2237|  6.12k|        {
 2238|  6.12k|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  6.12k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE20empty_object_storageC2ENS_12semantic_tagE:
  486|  6.12k|            {
  487|  6.12k|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEC2ENS_17json_object_arg_tENS_12semantic_tagERKS4_:
 3510|  2.56M|        {
 3511|  2.56M|            construct<object_storage>(object(alloc), tag);
 3512|  2.56M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_14object_storageEJNS_18sorted_json_objectINS2_12basic_stringIcNS2_11char_traitsIcEES4_EES5_NS2_6vectorEEERNS_12semantic_tagEEEEvDpOT0_:
 2237|  2.56M|        {
 2238|  2.56M|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  2.56M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE14object_storageC2EONS_18sorted_json_objectINS2_12basic_stringIcNS2_11char_traitsIcEES4_EES5_NS2_6vectorEEENS_12semantic_tagE:
 1091|  2.56M|            {
 1092|  2.56M|                create(val.get_allocator(), std::move(val));
 1093|  2.56M|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE14object_storage6createIJNS_18sorted_json_objectINS2_12basic_stringIcNS2_11char_traitsIcEES4_EES5_NS2_6vectorEEEEEEvNS3_ISE_EEDpOT_:
 1064|  2.56M|            {
 1065|  2.56M|                ptr_ = std::allocator_traits<object_allocator>::allocate(alloc, 1);
 1066|  2.56M|                JSONCONS_TRY
  ------------------
  |  |  239|  2.56M|    #define JSONCONS_TRY try
  ------------------
 1067|  2.56M|                {
 1068|  2.56M|                    std::allocator_traits<object_allocator>::construct(alloc, extension_traits::to_plain_pointer(ptr_), std::forward<Args>(args)...);
 1069|  2.56M|                }
 1070|  2.56M|                JSONCONS_CATCH(...)
 1071|  2.56M|                {
 1072|      0|                    std::allocator_traits<object_allocator>::deallocate(alloc, ptr_,1);
 1073|      0|                    JSONCONS_RETHROW;
  ------------------
  |  |  238|      0|    #define JSONCONS_RETHROW throw
  ------------------
 1074|      0|                }
 1075|  2.56M|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEaSEOS5_:
 2830|  8.77M|        {
 2831|  8.77M|            if (this != &other)
  ------------------
  |  Branch (2831:17): [True: 8.77M, False: 0]
  ------------------
 2832|  8.77M|            {
 2833|  8.77M|                move_assignment(std::move(other));
 2834|  8.77M|            }
 2835|  8.77M|            return *this;
 2836|  8.77M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE15move_assignmentEOS5_:
 2760|  8.77M|        {
 2761|  8.77M|            switch (other.storage_kind())
 2762|  8.77M|            {
 2763|  61.8k|                case json_storage_kind::null_value:
  ------------------
  |  Branch (2763:17): [True: 61.8k, False: 8.71M]
  ------------------
 2764|  61.8k|                case json_storage_kind::empty_object_value:
  ------------------
  |  Branch (2764:17): [True: 0, False: 8.77M]
  ------------------
 2765|  1.22M|                case json_storage_kind::bool_value:
  ------------------
  |  Branch (2765:17): [True: 1.16M, False: 7.61M]
  ------------------
 2766|  1.81M|                case json_storage_kind::int64_value:
  ------------------
  |  Branch (2766:17): [True: 587k, False: 8.18M]
  ------------------
 2767|  7.19M|                case json_storage_kind::uint64_value:
  ------------------
  |  Branch (2767:17): [True: 5.38M, False: 3.38M]
  ------------------
 2768|  7.19M|                case json_storage_kind::half_value:
  ------------------
  |  Branch (2768:17): [True: 0, False: 8.77M]
  ------------------
 2769|  7.20M|                case json_storage_kind::double_value:
  ------------------
  |  Branch (2769:17): [True: 9.43k, False: 8.76M]
  ------------------
 2770|  7.31M|                case json_storage_kind::short_string_value:
  ------------------
  |  Branch (2770:17): [True: 108k, False: 8.66M]
  ------------------
 2771|  7.31M|                case json_storage_kind::json_const_pointer:
  ------------------
  |  Branch (2771:17): [True: 0, False: 8.77M]
  ------------------
 2772|  7.31M|                    destroy();
 2773|  7.31M|                    uninitialized_copy(std::move(other));
 2774|  7.31M|                    break;
 2775|  10.9k|                case json_storage_kind::long_string_value:
  ------------------
  |  Branch (2775:17): [True: 10.9k, False: 8.76M]
  ------------------
 2776|  10.9k|                    move_assignment_r<long_string_storage>(std::move(other));
 2777|  10.9k|                    break;
 2778|  15.4k|                case json_storage_kind::byte_string_value:
  ------------------
  |  Branch (2778:17): [True: 15.4k, False: 8.75M]
  ------------------
 2779|  15.4k|                    move_assignment_r<byte_string_storage>(std::move(other));
 2780|  15.4k|                    break;
 2781|  1.34M|                case json_storage_kind::array_value:
  ------------------
  |  Branch (2781:17): [True: 1.34M, False: 7.42M]
  ------------------
 2782|  1.34M|                    move_assignment_r<array_storage>(std::move(other));
 2783|  1.34M|                    break;
 2784|  81.9k|                case json_storage_kind::object_value:
  ------------------
  |  Branch (2784:17): [True: 81.9k, False: 8.69M]
  ------------------
 2785|  81.9k|                    move_assignment_r<object_storage>(std::move(other));
 2786|  81.9k|                    break;
 2787|      0|                default:
  ------------------
  |  Branch (2787:17): [True: 0, False: 8.77M]
  ------------------
 2788|      0|                    JSONCONS_UNREACHABLE();
  ------------------
  |  |   46|      0|#define JSONCONS_UNREACHABLE() __builtin_unreachable()
  ------------------
 2789|      0|                    break;
 2790|  8.77M|            }
 2791|  8.77M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE17move_assignment_rINS5_19long_string_storageEEEvOS5_:
 2737|  10.9k|        {
 2738|  10.9k|            switch (storage_kind())
 2739|  10.9k|            {
 2740|  2.51k|                case json_storage_kind::null_value:          move_assignment_l_r<null_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2740:17): [True: 2.51k, False: 8.45k]
  ------------------
 2741|    735|                case json_storage_kind::empty_object_value:  move_assignment_l_r<empty_object_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2741:17): [True: 735, False: 10.2k]
  ------------------
 2742|    756|                case json_storage_kind::bool_value:          move_assignment_l_r<bool_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2742:17): [True: 756, False: 10.2k]
  ------------------
 2743|  1.31k|                case json_storage_kind::int64_value:         move_assignment_l_r<int64_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2743:17): [True: 1.31k, False: 9.64k]
  ------------------
 2744|  4.44k|                case json_storage_kind::uint64_value:        move_assignment_l_r<uint64_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2744:17): [True: 4.44k, False: 6.51k]
  ------------------
 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: 10.9k]
  ------------------
 2746|    449|                case json_storage_kind::double_value:        move_assignment_l_r<double_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2746:17): [True: 449, False: 10.5k]
  ------------------
 2747|    744|                case json_storage_kind::short_string_value:  move_assignment_l_r<short_string_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2747:17): [True: 744, False: 10.2k]
  ------------------
 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: 10.9k]
  ------------------
 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: 10.9k]
  ------------------
 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: 10.9k]
  ------------------
 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: 10.9k]
  ------------------
 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: 10.9k]
  ------------------
 2753|      0|                default:
  ------------------
  |  Branch (2753:17): [True: 0, False: 10.9k]
  ------------------
 2754|      0|                    JSONCONS_UNREACHABLE();
  ------------------
  |  |   46|      0|#define JSONCONS_UNREACHABLE() __builtin_unreachable()
  ------------------
 2755|      0|                    break;
 2756|  10.9k|            }
 2757|  10.9k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_12null_storageENS5_19long_string_storageEEEvOS5_:
 2704|  2.51k|        {
 2705|  2.51k|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|  2.51k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_12null_storageENS5_19long_string_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|  2.51k|        {
 2711|  2.51k|            destroy();
 2712|  2.51k|            uninitialized_move(std::move(other));
 2713|  2.51k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_20empty_object_storageENS5_19long_string_storageEEEvOS5_:
 2704|    735|        {
 2705|    735|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|    735|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_20empty_object_storageENS5_19long_string_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|    735|        {
 2711|    735|            destroy();
 2712|    735|            uninitialized_move(std::move(other));
 2713|    735|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_12bool_storageENS5_19long_string_storageEEEvOS5_:
 2704|    756|        {
 2705|    756|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|    756|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_12bool_storageENS5_19long_string_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|    756|        {
 2711|    756|            destroy();
 2712|    756|            uninitialized_move(std::move(other));
 2713|    756|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_13int64_storageENS5_19long_string_storageEEEvOS5_:
 2704|  1.31k|        {
 2705|  1.31k|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|  1.31k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_13int64_storageENS5_19long_string_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|  1.31k|        {
 2711|  1.31k|            destroy();
 2712|  1.31k|            uninitialized_move(std::move(other));
 2713|  1.31k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_14uint64_storageENS5_19long_string_storageEEEvOS5_:
 2704|  4.44k|        {
 2705|  4.44k|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|  4.44k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_14uint64_storageENS5_19long_string_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|  4.44k|        {
 2711|  4.44k|            destroy();
 2712|  4.44k|            uninitialized_move(std::move(other));
 2713|  4.44k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_14double_storageENS5_19long_string_storageEEEvOS5_:
 2704|    449|        {
 2705|    449|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|    449|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_14double_storageENS5_19long_string_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|    449|        {
 2711|    449|            destroy();
 2712|    449|            uninitialized_move(std::move(other));
 2713|    449|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_20short_string_storageENS5_19long_string_storageEEEvOS5_:
 2704|    744|        {
 2705|    744|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|    744|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_20short_string_storageENS5_19long_string_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|    744|        {
 2711|    744|            destroy();
 2712|    744|            uninitialized_move(std::move(other));
 2713|    744|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE17move_assignment_rINS5_19byte_string_storageEEEvOS5_:
 2737|  15.4k|        {
 2738|  15.4k|            switch (storage_kind())
 2739|  15.4k|            {
 2740|  10.1k|                case json_storage_kind::null_value:          move_assignment_l_r<null_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2740:17): [True: 10.1k, False: 5.27k]
  ------------------
 2741|      5|                case json_storage_kind::empty_object_value:  move_assignment_l_r<empty_object_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2741:17): [True: 5, False: 15.4k]
  ------------------
 2742|    722|                case json_storage_kind::bool_value:          move_assignment_l_r<bool_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2742:17): [True: 722, False: 14.6k]
  ------------------
 2743|    863|                case json_storage_kind::int64_value:         move_assignment_l_r<int64_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2743:17): [True: 863, False: 14.5k]
  ------------------
 2744|  3.00k|                case json_storage_kind::uint64_value:        move_assignment_l_r<uint64_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2744:17): [True: 3.00k, False: 12.4k]
  ------------------
 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: 15.4k]
  ------------------
 2746|    260|                case json_storage_kind::double_value:        move_assignment_l_r<double_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2746:17): [True: 260, False: 15.1k]
  ------------------
 2747|    417|                case json_storage_kind::short_string_value:  move_assignment_l_r<short_string_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2747:17): [True: 417, False: 14.9k]
  ------------------
 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: 15.4k]
  ------------------
 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: 15.4k]
  ------------------
 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: 15.4k]
  ------------------
 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: 15.4k]
  ------------------
 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: 15.4k]
  ------------------
 2753|      0|                default:
  ------------------
  |  Branch (2753:17): [True: 0, False: 15.4k]
  ------------------
 2754|      0|                    JSONCONS_UNREACHABLE();
  ------------------
  |  |   46|      0|#define JSONCONS_UNREACHABLE() __builtin_unreachable()
  ------------------
 2755|      0|                    break;
 2756|  15.4k|            }
 2757|  15.4k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_12null_storageENS5_19byte_string_storageEEEvOS5_:
 2704|  10.1k|        {
 2705|  10.1k|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|  10.1k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_12null_storageENS5_19byte_string_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|  10.1k|        {
 2711|  10.1k|            destroy();
 2712|  10.1k|            uninitialized_move(std::move(other));
 2713|  10.1k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_20empty_object_storageENS5_19byte_string_storageEEEvOS5_:
 2704|      5|        {
 2705|      5|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|      5|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_20empty_object_storageENS5_19byte_string_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|      5|        {
 2711|      5|            destroy();
 2712|      5|            uninitialized_move(std::move(other));
 2713|      5|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_12bool_storageENS5_19byte_string_storageEEEvOS5_:
 2704|    722|        {
 2705|    722|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|    722|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_12bool_storageENS5_19byte_string_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|    722|        {
 2711|    722|            destroy();
 2712|    722|            uninitialized_move(std::move(other));
 2713|    722|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_13int64_storageENS5_19byte_string_storageEEEvOS5_:
 2704|    863|        {
 2705|    863|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|    863|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_13int64_storageENS5_19byte_string_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|    863|        {
 2711|    863|            destroy();
 2712|    863|            uninitialized_move(std::move(other));
 2713|    863|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_14uint64_storageENS5_19byte_string_storageEEEvOS5_:
 2704|  3.00k|        {
 2705|  3.00k|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|  3.00k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_14uint64_storageENS5_19byte_string_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|  3.00k|        {
 2711|  3.00k|            destroy();
 2712|  3.00k|            uninitialized_move(std::move(other));
 2713|  3.00k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_14double_storageENS5_19byte_string_storageEEEvOS5_:
 2704|    260|        {
 2705|    260|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|    260|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_14double_storageENS5_19byte_string_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|    260|        {
 2711|    260|            destroy();
 2712|    260|            uninitialized_move(std::move(other));
 2713|    260|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_20short_string_storageENS5_19byte_string_storageEEEvOS5_:
 2704|    417|        {
 2705|    417|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|    417|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_20short_string_storageENS5_19byte_string_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|    417|        {
 2711|    417|            destroy();
 2712|    417|            uninitialized_move(std::move(other));
 2713|    417|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE17move_assignment_rINS5_13array_storageEEEvOS5_:
 2737|  1.34M|        {
 2738|  1.34M|            switch (storage_kind())
 2739|  1.34M|            {
 2740|  1.12M|                case json_storage_kind::null_value:          move_assignment_l_r<null_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2740:17): [True: 1.12M, False: 222k]
  ------------------
 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: 1.34M]
  ------------------
 2742|  16.4k|                case json_storage_kind::bool_value:          move_assignment_l_r<bool_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2742:17): [True: 16.4k, False: 1.33M]
  ------------------
 2743|  8.78k|                case json_storage_kind::int64_value:         move_assignment_l_r<int64_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2743:17): [True: 8.78k, False: 1.33M]
  ------------------
 2744|   195k|                case json_storage_kind::uint64_value:        move_assignment_l_r<uint64_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2744:17): [True: 195k, False: 1.15M]
  ------------------
 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: 1.34M]
  ------------------
 2746|    575|                case json_storage_kind::double_value:        move_assignment_l_r<double_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2746:17): [True: 575, False: 1.34M]
  ------------------
 2747|    852|                case json_storage_kind::short_string_value:  move_assignment_l_r<short_string_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2747:17): [True: 852, False: 1.34M]
  ------------------
 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: 1.34M]
  ------------------
 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: 1.34M]
  ------------------
 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: 1.34M]
  ------------------
 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: 1.34M]
  ------------------
 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: 1.34M]
  ------------------
 2753|      0|                default:
  ------------------
  |  Branch (2753:17): [True: 0, False: 1.34M]
  ------------------
 2754|      0|                    JSONCONS_UNREACHABLE();
  ------------------
  |  |   46|      0|#define JSONCONS_UNREACHABLE() __builtin_unreachable()
  ------------------
 2755|      0|                    break;
 2756|  1.34M|            }
 2757|  1.34M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_12null_storageENS5_13array_storageEEEvOS5_:
 2704|  1.12M|        {
 2705|  1.12M|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|  1.12M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_12null_storageENS5_13array_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|  1.12M|        {
 2711|  1.12M|            destroy();
 2712|  1.12M|            uninitialized_move(std::move(other));
 2713|  1.12M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_12bool_storageENS5_13array_storageEEEvOS5_:
 2704|  16.4k|        {
 2705|  16.4k|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|  16.4k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_12bool_storageENS5_13array_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|  16.4k|        {
 2711|  16.4k|            destroy();
 2712|  16.4k|            uninitialized_move(std::move(other));
 2713|  16.4k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_13int64_storageENS5_13array_storageEEEvOS5_:
 2704|  8.78k|        {
 2705|  8.78k|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|  8.78k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_13int64_storageENS5_13array_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|  8.78k|        {
 2711|  8.78k|            destroy();
 2712|  8.78k|            uninitialized_move(std::move(other));
 2713|  8.78k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_14uint64_storageENS5_13array_storageEEEvOS5_:
 2704|   195k|        {
 2705|   195k|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|   195k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_14uint64_storageENS5_13array_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|   195k|        {
 2711|   195k|            destroy();
 2712|   195k|            uninitialized_move(std::move(other));
 2713|   195k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_14double_storageENS5_13array_storageEEEvOS5_:
 2704|    575|        {
 2705|    575|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|    575|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_14double_storageENS5_13array_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|    575|        {
 2711|    575|            destroy();
 2712|    575|            uninitialized_move(std::move(other));
 2713|    575|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_20short_string_storageENS5_13array_storageEEEvOS5_:
 2704|    852|        {
 2705|    852|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|    852|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_20short_string_storageENS5_13array_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|    852|        {
 2711|    852|            destroy();
 2712|    852|            uninitialized_move(std::move(other));
 2713|    852|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE17move_assignment_rINS5_14object_storageEEEvOS5_:
 2737|  81.9k|        {
 2738|  81.9k|            switch (storage_kind())
 2739|  81.9k|            {
 2740|  33.3k|                case json_storage_kind::null_value:          move_assignment_l_r<null_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2740:17): [True: 33.3k, False: 48.5k]
  ------------------
 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: 81.9k]
  ------------------
 2742|  4.69k|                case json_storage_kind::bool_value:          move_assignment_l_r<bool_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2742:17): [True: 4.69k, False: 77.2k]
  ------------------
 2743|  3.60k|                case json_storage_kind::int64_value:         move_assignment_l_r<int64_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2743:17): [True: 3.60k, False: 78.3k]
  ------------------
 2744|  18.2k|                case json_storage_kind::uint64_value:        move_assignment_l_r<uint64_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2744:17): [True: 18.2k, False: 63.7k]
  ------------------
 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: 81.9k]
  ------------------
 2746|    373|                case json_storage_kind::double_value:        move_assignment_l_r<double_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2746:17): [True: 373, False: 81.5k]
  ------------------
 2747|  21.6k|                case json_storage_kind::short_string_value:  move_assignment_l_r<short_string_storage,TypeR>(std::move(other));break;
  ------------------
  |  Branch (2747:17): [True: 21.6k, False: 60.2k]
  ------------------
 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: 81.9k]
  ------------------
 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: 81.9k]
  ------------------
 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: 81.9k]
  ------------------
 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: 81.9k]
  ------------------
 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: 81.9k]
  ------------------
 2753|      0|                default:
  ------------------
  |  Branch (2753:17): [True: 0, False: 81.9k]
  ------------------
 2754|      0|                    JSONCONS_UNREACHABLE();
  ------------------
  |  |   46|      0|#define JSONCONS_UNREACHABLE() __builtin_unreachable()
  ------------------
 2755|      0|                    break;
 2756|  81.9k|            }
 2757|  81.9k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_12null_storageENS5_14object_storageEEEvOS5_:
 2704|  33.3k|        {
 2705|  33.3k|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|  33.3k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_12null_storageENS5_14object_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|  33.3k|        {
 2711|  33.3k|            destroy();
 2712|  33.3k|            uninitialized_move(std::move(other));
 2713|  33.3k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_12bool_storageENS5_14object_storageEEEvOS5_:
 2704|  4.69k|        {
 2705|  4.69k|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|  4.69k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_12bool_storageENS5_14object_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|  4.69k|        {
 2711|  4.69k|            destroy();
 2712|  4.69k|            uninitialized_move(std::move(other));
 2713|  4.69k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_13int64_storageENS5_14object_storageEEEvOS5_:
 2704|  3.60k|        {
 2705|  3.60k|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|  3.60k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_13int64_storageENS5_14object_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|  3.60k|        {
 2711|  3.60k|            destroy();
 2712|  3.60k|            uninitialized_move(std::move(other));
 2713|  3.60k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_14uint64_storageENS5_14object_storageEEEvOS5_:
 2704|  18.2k|        {
 2705|  18.2k|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|  18.2k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_14uint64_storageENS5_14object_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|  18.2k|        {
 2711|  18.2k|            destroy();
 2712|  18.2k|            uninitialized_move(std::move(other));
 2713|  18.2k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_14double_storageENS5_14object_storageEEEvOS5_:
 2704|    373|        {
 2705|    373|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|    373|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_14double_storageENS5_14object_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|    373|        {
 2711|    373|            destroy();
 2712|    373|            uninitialized_move(std::move(other));
 2713|    373|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_20short_string_storageENS5_14object_storageEEEvOS5_:
 2704|  21.6k|        {
 2705|  21.6k|            move_assignment_l_r(identity<TypeL>(), identity<TypeR>(), std::move(other));
 2706|  21.6k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19move_assignment_l_rINS5_20short_string_storageENS5_14object_storageEEEvNS5_8identityIT_EENS9_IT0_EEOS5_:
 2710|  21.6k|        {
 2711|  21.6k|            destroy();
 2712|  21.6k|            uninitialized_move(std::move(other));
 2713|  21.6k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE4swapERS5_:
 3157|  1.15k|        {
 3158|  1.15k|            if (this == &other)
  ------------------
  |  Branch (3158:17): [True: 0, False: 1.15k]
  ------------------
 3159|      0|            {
 3160|      0|                return;
 3161|      0|            }
 3162|       |
 3163|  1.15k|            switch (storage_kind())
 3164|  1.15k|            {
 3165|      0|                case json_storage_kind::null_value: swap_l<null_storage>(other); break;
  ------------------
  |  Branch (3165:17): [True: 0, False: 1.15k]
  ------------------
 3166|  1.15k|                case json_storage_kind::empty_object_value : swap_l<empty_object_storage>(other); break;
  ------------------
  |  Branch (3166:17): [True: 1.15k, False: 0]
  ------------------
 3167|      0|                case json_storage_kind::bool_value: swap_l<bool_storage>(other); break;
  ------------------
  |  Branch (3167:17): [True: 0, False: 1.15k]
  ------------------
 3168|      0|                case json_storage_kind::int64_value: swap_l<int64_storage>(other); break;
  ------------------
  |  Branch (3168:17): [True: 0, False: 1.15k]
  ------------------
 3169|      0|                case json_storage_kind::uint64_value: swap_l<uint64_storage>(other); break;
  ------------------
  |  Branch (3169:17): [True: 0, False: 1.15k]
  ------------------
 3170|      0|                case json_storage_kind::half_value: swap_l<half_storage>(other); break;
  ------------------
  |  Branch (3170:17): [True: 0, False: 1.15k]
  ------------------
 3171|      0|                case json_storage_kind::double_value: swap_l<double_storage>(other); break;
  ------------------
  |  Branch (3171:17): [True: 0, False: 1.15k]
  ------------------
 3172|      0|                case json_storage_kind::short_string_value: swap_l<short_string_storage>(other); break;
  ------------------
  |  Branch (3172:17): [True: 0, False: 1.15k]
  ------------------
 3173|      0|                case json_storage_kind::long_string_value: swap_l<long_string_storage>(other); break;
  ------------------
  |  Branch (3173:17): [True: 0, False: 1.15k]
  ------------------
 3174|      0|                case json_storage_kind::byte_string_value: swap_l<byte_string_storage>(other); break;
  ------------------
  |  Branch (3174:17): [True: 0, False: 1.15k]
  ------------------
 3175|      0|                case json_storage_kind::array_value: swap_l<array_storage>(other); break;
  ------------------
  |  Branch (3175:17): [True: 0, False: 1.15k]
  ------------------
 3176|      0|                case json_storage_kind::object_value: swap_l<object_storage>(other); break;
  ------------------
  |  Branch (3176:17): [True: 0, False: 1.15k]
  ------------------
 3177|      0|                case json_storage_kind::json_const_pointer: swap_l<json_const_pointer_storage>(other); break;
  ------------------
  |  Branch (3177:17): [True: 0, False: 1.15k]
  ------------------
 3178|      0|                default:
  ------------------
  |  Branch (3178:17): [True: 0, False: 1.15k]
  ------------------
 3179|      0|                    JSONCONS_UNREACHABLE();
  ------------------
  |  |   46|      0|#define JSONCONS_UNREACHABLE() __builtin_unreachable()
  ------------------
 3180|      0|                    break;
 3181|  1.15k|            }
 3182|  1.15k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_20empty_object_storageEJS7_EEEvDpOT0_:
 2237|  1.15k|        {
 2238|  1.15k|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  1.15k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE6swap_lINS5_20empty_object_storageEEEvRS5_:
 2432|  1.15k|        {
 2433|  1.15k|            switch (other.storage_kind())
 2434|  1.15k|            {
 2435|      0|                case json_storage_kind::null_value         : swap_l_r<TypeL, null_storage>(other); break;
  ------------------
  |  Branch (2435:17): [True: 0, False: 1.15k]
  ------------------
 2436|      0|                case json_storage_kind::empty_object_value : swap_l_r<TypeL, empty_object_storage>(other); break;
  ------------------
  |  Branch (2436:17): [True: 0, False: 1.15k]
  ------------------
 2437|      0|                case json_storage_kind::bool_value         : swap_l_r<TypeL, bool_storage>(other); break;
  ------------------
  |  Branch (2437:17): [True: 0, False: 1.15k]
  ------------------
 2438|      0|                case json_storage_kind::int64_value        : swap_l_r<TypeL, int64_storage>(other); break;
  ------------------
  |  Branch (2438:17): [True: 0, False: 1.15k]
  ------------------
 2439|      0|                case json_storage_kind::uint64_value       : swap_l_r<TypeL, uint64_storage>(other); break;
  ------------------
  |  Branch (2439:17): [True: 0, False: 1.15k]
  ------------------
 2440|      0|                case json_storage_kind::half_value         : swap_l_r<TypeL, half_storage>(other); break;
  ------------------
  |  Branch (2440:17): [True: 0, False: 1.15k]
  ------------------
 2441|      0|                case json_storage_kind::double_value       : swap_l_r<TypeL, double_storage>(other); break;
  ------------------
  |  Branch (2441:17): [True: 0, False: 1.15k]
  ------------------
 2442|      0|                case json_storage_kind::short_string_value : swap_l_r<TypeL, short_string_storage>(other); break;
  ------------------
  |  Branch (2442:17): [True: 0, False: 1.15k]
  ------------------
 2443|      0|                case json_storage_kind::long_string_value  : swap_l_r<TypeL, long_string_storage>(other); break;
  ------------------
  |  Branch (2443:17): [True: 0, False: 1.15k]
  ------------------
 2444|      0|                case json_storage_kind::byte_string_value  : swap_l_r<TypeL, byte_string_storage>(other); break;
  ------------------
  |  Branch (2444:17): [True: 0, False: 1.15k]
  ------------------
 2445|    211|                case json_storage_kind::array_value        : swap_l_r<TypeL, array_storage>(other); break;
  ------------------
  |  Branch (2445:17): [True: 211, False: 940]
  ------------------
 2446|    940|                case json_storage_kind::object_value       : swap_l_r<TypeL, object_storage>(other); break;
  ------------------
  |  Branch (2446:17): [True: 940, False: 211]
  ------------------
 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: 1.15k]
  ------------------
 2448|      0|                default:
  ------------------
  |  Branch (2448:17): [True: 0, False: 1.15k]
  ------------------
 2449|      0|                    JSONCONS_UNREACHABLE();
  ------------------
  |  |   46|      0|#define JSONCONS_UNREACHABLE() __builtin_unreachable()
  ------------------
 2450|      0|                    break;
 2451|  1.15k|            }
 2452|  1.15k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE8swap_l_rINS5_20empty_object_storageENS5_13array_storageEEEvRS5_:
 2394|    211|        {
 2395|    211|            swap_l_r(identity<TypeL>(), identity<TypeR>(), other);
 2396|    211|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE8swap_l_rINS5_20empty_object_storageENS5_13array_storageEEEvNS5_8identityIT_EENS9_IT0_EERS5_:
 2400|    211|        {
 2401|    211|            TypeR tmpR(std::move(other.cast<TypeR>())); 
 2402|       |
 2403|    211|            other.destroy();
 2404|    211|            other.construct<TypeL>(std::move(cast<TypeL>()));
 2405|       |
 2406|    211|            destroy();
 2407|    211|            construct<TypeR>(std::move(tmpR));
 2408|    211|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE8swap_l_rINS5_20empty_object_storageENS5_14object_storageEEEvRS5_:
 2394|    940|        {
 2395|    940|            swap_l_r(identity<TypeL>(), identity<TypeR>(), other);
 2396|    940|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE8swap_l_rINS5_20empty_object_storageENS5_14object_storageEEEvNS5_8identityIT_EENS9_IT0_EERS5_:
 2400|    940|        {
 2401|    940|            TypeR tmpR(std::move(other.cast<TypeR>())); 
 2402|       |
 2403|    940|            other.destroy();
 2404|    940|            other.construct<TypeL>(std::move(cast<TypeL>()));
 2405|       |
 2406|    940|            destroy();
 2407|    940|            construct<TypeR>(std::move(tmpR));
 2408|    940|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEC2ENS_16json_array_arg_tENS_12semantic_tagERKS4_:
 3544|  2.31M|        {
 3545|  2.31M|            construct<array_storage>(array(alloc), tag);
 3546|  2.31M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_13array_storageEJNS_10json_arrayIS5_NS2_6vectorEEERNS_12semantic_tagEEEEvDpOT0_:
 2237|  2.31M|        {
 2238|  2.31M|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  2.31M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE13array_storageC2EONS_10json_arrayIS5_NS2_6vectorEEENS_12semantic_tagE:
  938|  2.31M|            {
  939|  2.31M|                create(val.get_allocator(), std::move(val));
  940|  2.31M|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE13array_storage6createIJNS_10json_arrayIS5_NS2_6vectorEEEEEEvNS3_ISA_EEDpOT_:
  909|  2.31M|            {
  910|  2.31M|                ptr_ = std::allocator_traits<array_allocator>::allocate(alloc, 1);
  911|  2.31M|                JSONCONS_TRY
  ------------------
  |  |  239|  2.31M|    #define JSONCONS_TRY try
  ------------------
  912|  2.31M|                {
  913|  2.31M|                    std::allocator_traits<array_allocator>::construct(alloc, extension_traits::to_plain_pointer(ptr_), 
  914|  2.31M|                        std::forward<Args>(args)...);
  915|  2.31M|                }
  916|  2.31M|                JSONCONS_CATCH(...)
  917|  2.31M|                {
  918|      0|                    std::allocator_traits<array_allocator>::deallocate(alloc, ptr_,1);
  919|      0|                    JSONCONS_RETHROW;
  ------------------
  |  |  238|      0|    #define JSONCONS_RETHROW throw
  ------------------
  920|      0|                }
  921|  2.31M|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE7reserveEm:
 4401|  23.5k|        {
 4402|  23.5k|            if (n > 0)
  ------------------
  |  Branch (4402:17): [True: 23.5k, False: 0]
  ------------------
 4403|  23.5k|            {
 4404|  23.5k|                switch (storage_kind())
 4405|  23.5k|                {
 4406|  23.5k|                    case json_storage_kind::array_value:
  ------------------
  |  Branch (4406:21): [True: 23.5k, False: 0]
  ------------------
 4407|  23.5k|                        cast<array_storage>().value().reserve(n);
 4408|  23.5k|                        break;
 4409|      0|                    case json_storage_kind::empty_object_value:
  ------------------
  |  Branch (4409:21): [True: 0, False: 23.5k]
  ------------------
 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: 23.5k]
  ------------------
 4416|      0|                    {
 4417|      0|                        cast<object_storage>().value().reserve(n);
 4418|      0|                    }
 4419|      0|                        break;
 4420|      0|                    default:
  ------------------
  |  Branch (4420:21): [True: 0, False: 23.5k]
  ------------------
 4421|      0|                        break;
 4422|  23.5k|                }
 4423|  23.5k|            }
 4424|  23.5k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9push_backEOS5_:
 5316|  4.93M|        {
 5317|  4.93M|            switch (storage_kind())
 5318|  4.93M|            {
 5319|  4.93M|            case json_storage_kind::array_value:
  ------------------
  |  Branch (5319:13): [True: 4.93M, False: 0]
  ------------------
 5320|  4.93M|                cast<array_storage>().value().push_back(std::move(val));
 5321|  4.93M|                break;
 5322|      0|            default:
  ------------------
  |  Branch (5322:13): [True: 0, False: 4.93M]
  ------------------
 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|  4.93M|            }
 5325|  4.93M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEC2ENS_9null_typeENS_12semantic_tagE:
 3751|  3.24M|        {
 3752|  3.24M|            construct<null_storage>(tag);
 3753|  3.24M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_12null_storageEJRNS_12semantic_tagEEEEvDpOT0_:
 2237|  3.24M|        {
 2238|  3.24M|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  3.24M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE12null_storageC2ENS_12semantic_tagE:
  473|  3.24M|            {
  474|  3.24M|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEC2EbNS_12semantic_tagE:
 3761|  4.44M|        {
 3762|  4.44M|            construct<bool_storage>(val,tag);
 3763|  4.44M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_12bool_storageEJRbRNS_12semantic_tagEEEEvDpOT0_:
 2237|  4.44M|        {
 2238|  4.44M|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  4.44M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE12bool_storageC2EbNS_12semantic_tagE:
  502|  4.44M|            {
  503|  4.44M|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEC2ERKNS_6detail17basic_string_viewIcNS2_11char_traitsIcEEEENS_12semantic_tagERKS4_:
 3772|  2.06M|        {
 3773|  2.06M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEC2EPKcmNS_12semantic_tagERKS4_:
 3659|  2.06M|        {
 3660|  2.06M|            if (length <= short_string_storage::max_length)
  ------------------
  |  Branch (3660:17): [True: 2.05M, False: 10.8k]
  ------------------
 3661|  2.05M|            {
 3662|  2.05M|                construct<short_string_storage>(tag, s, static_cast<uint8_t>(length));
 3663|  2.05M|            }
 3664|  10.8k|            else
 3665|  10.8k|            {
 3666|  10.8k|                construct<long_string_storage>(tag, s, length, alloc);
 3667|  10.8k|            }
 3668|  2.06M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_20short_string_storageEJRNS_12semantic_tagERPKchEEEvDpOT0_:
 2237|  2.05M|        {
 2238|  2.05M|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  2.05M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE20short_string_storageC2ENS_12semantic_tagEPKch:
  613|  2.05M|            {
  614|  2.05M|                JSONCONS_ASSERT(length <= max_length);
  ------------------
  |  |  378|  2.05M|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 2.05M]
  |  |  ------------------
  |  |  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.05M|                std::memcpy(data_,p,length*sizeof(char_type));
  616|  2.05M|                data_[length] = 0;
  617|  2.05M|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_19long_string_storageEJRNS_12semantic_tagERPKcRmRKS4_EEEvDpOT0_:
 2237|  10.8k|        {
 2238|  10.8k|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  10.8k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19long_string_storageC2ENS_12semantic_tagEPKcmRKS4_:
  660|  10.8k|            {
  661|  10.8k|                ptr_ = heap_string_factory_type::create(data, length, null_type(), alloc);
  662|  10.8k|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEC2INS_16byte_string_viewEEENS_17byte_string_arg_tERKT_NS_12semantic_tagERKS4_NS2_9enable_ifIXsr16extension_traits16is_byte_sequenceIS9_EE5valueEiE4typeE:
 3780|   131k|        {
 3781|   131k|            auto bytes = jsoncons::span<const uint8_t>(reinterpret_cast<const uint8_t*>(source.data()), source.size());
 3782|   131k|            construct<byte_string_storage>(tag, bytes.data(), bytes.size(), 0, alloc);
 3783|   131k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_19byte_string_storageEJRNS_12semantic_tagEPKhmiRKS4_EEEvDpOT0_:
 2237|   131k|        {
 2238|   131k|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|   131k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE19byte_string_storageC2ENS_12semantic_tagEPKhmmRKS4_:
  785|   233k|            {
  786|   233k|                ptr_ = heap_string_factory_type::create(data, length, ext_tag, alloc);
  787|   233k|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEC2INS_16byte_string_viewEEENS_17byte_string_arg_tERKT_mRKS4_NS2_9enable_ifIXsr16extension_traits16is_byte_sequenceIS9_EE5valueEiE4typeE:
 3790|   102k|        {
 3791|   102k|            auto bytes = jsoncons::span<const uint8_t>(reinterpret_cast<const uint8_t*>(source.data()), source.size());
 3792|   102k|            construct<byte_string_storage>(semantic_tag::ext, bytes.data(), bytes.size(), ext_tag, alloc);
 3793|   102k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_19byte_string_storageEJNS_12semantic_tagEPKhmRmRKS4_EEEvDpOT0_:
 2237|   102k|        {
 2238|   102k|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|   102k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEC2ImEET_NS_12semantic_tagENS2_9enable_ifIXaasr16extension_traits19is_unsigned_integerIS7_EE5valuelestS7_Lm8EEiE4typeE:
 3693|  13.5M|        {
 3694|  13.5M|            construct<uint64_storage>(val, tag);
 3695|  13.5M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_14uint64_storageEJRmRNS_12semantic_tagEEEEvDpOT0_:
 2237|  13.5M|        {
 2238|  13.5M|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  13.5M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE14uint64_storageC2EmNS_12semantic_tagE:
  547|  13.5M|            {
  548|  13.5M|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEC2IlEET_NS_12semantic_tagENS2_9enable_ifIXaasr16extension_traits17is_signed_integerIS7_EE5valuelestS7_Lm8EEiE4typeE:
 3723|  3.59M|        {
 3724|  3.59M|            construct<int64_storage>(val, tag);
 3725|  3.59M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_13int64_storageEJRlRNS_12semantic_tagEEEEvDpOT0_:
 2237|  3.59M|        {
 2238|  3.59M|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|  3.59M|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE13int64_storageC2ElNS_12semantic_tagE:
  525|  3.59M|            {
  526|  3.59M|            }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEC2EdNS_12semantic_tagE:
 3681|   112k|        {
 3682|   112k|            construct<double_storage>(val, tag);
 3683|   112k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE9constructINS5_14double_storageEJRdRNS_12semantic_tagEEEEvDpOT0_:
 2237|   112k|        {
 2238|   112k|            ::new (&cast<VariantType>()) VariantType(std::forward<Args>(args)...);
 2239|   112k|        }
_ZN8jsoncons10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEE14double_storageC2EdNS_12semantic_tagE:
  590|   112k|            {
  591|   112k|            }

_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEEC2ImEET_PNS1_9enable_ifIXsr3std11is_integralIS6_EE5valueEvE4typeE:
  328|   134k|    {
  329|   134k|        ::new (&short_stor_) short_storage(n);
  330|   134k|    }
_ZN8jsoncons6detail17basic_bigint_baseINSt3__19allocatorIhEEEC2Ev:
   56|   336k|        {
   57|   336k|        }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE13short_storageC2ImEET_PNS1_9enable_ifIXaaaasr3std11is_integralIS7_EE5valuelestS7_Lm8Entsr3std9is_signedIS7_EE5valueEvE4typeE:
  137|   134k|        {
  138|   134k|            values_[0] = n;
  139|   134k|            values_[1] = 0;
  140|   134k|        }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEEmLEm:
  634|  56.1k|    {
  635|  56.1k|        size_type len0 = length();
  636|  56.1k|        uint64_t hi;
  637|  56.1k|        uint64_t lo;
  638|  56.1k|        uint64_t dig = data()[0];
  639|  56.1k|        uint64_t carry = 0;
  640|       |
  641|  56.1k|        resize( length() + 1 );
  642|       |
  643|  56.1k|        size_type i = 0;
  644|   110k|        for (i = 0; i < len0; i++ )
  ------------------
  |  Branch (644:21): [True: 54.6k, False: 56.1k]
  ------------------
  645|  54.6k|        {
  646|  54.6k|            DDproduct( dig, y, hi, lo );
  647|  54.6k|            data()[i] = lo + carry;
  648|  54.6k|            dig = data()[i+1];
  649|  54.6k|            carry = hi + (data()[i] < lo);
  650|  54.6k|        }
  651|  56.1k|        data()[i] = carry;
  652|  56.1k|        reduce();
  653|  56.1k|        return *this;
  654|  56.1k|    }
_ZNK8jsoncons12basic_bigintINSt3__19allocatorIhEEE6lengthEv:
  343|  4.34M|    {
  344|  4.34M|        return common_stor_.length_;
  345|  4.34M|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE4dataEv:
  368|  1.24M|    {
  369|  1.24M|        return is_dynamic() ? dynamic_stor_.data_ : short_stor_.values_;
  ------------------
  |  Branch (369:16): [True: 164k, False: 1.07M]
  ------------------
  370|  1.24M|    }
_ZNK8jsoncons12basic_bigintINSt3__19allocatorIhEEE10is_dynamicEv:
  338|  3.66M|    {
  339|  3.66M|        return common_stor_.is_dynamic_;
  340|  3.66M|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE6resizeEm:
  508|   327k|    {
  509|   327k|        size_type len_old = common_stor_.length_;
  510|   327k|        reserve(n);
  511|   327k|        common_stor_.length_ = n;
  512|   327k|        if ( common_stor_.length_ > len_old )
  ------------------
  |  Branch (512:14): [True: 203k, False: 123k]
  ------------------
  513|   203k|        {
  514|   203k|            memset( data()+len_old, 0, (common_stor_.length_ - len_old)*sizeof(uint64_t) );
  515|   203k|        }
  516|   327k|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE7reserveEm:
  519|   327k|    {
  520|   327k|       if (capacity() < n)
  ------------------
  |  Branch (520:12): [True: 47.1k, False: 280k]
  ------------------
  521|  47.1k|       {
  522|  47.1k|           if (!is_dynamic())
  ------------------
  |  Branch (522:16): [True: 47.1k, False: 0]
  ------------------
  523|  47.1k|           {
  524|  47.1k|               size_type size = short_stor_.length_;
  525|  47.1k|               size_type is_neg = short_stor_.is_negative_;
  526|  47.1k|               uint64_t values[2] = {short_stor_.values_[0], short_stor_.values_[1]};
  527|       |
  528|  47.1k|               ::new (&dynamic_stor_) dynamic_storage();
  529|  47.1k|               dynamic_stor_.reserve(n, get_allocator());
  530|  47.1k|               dynamic_stor_.length_ = size;
  531|  47.1k|               dynamic_stor_.is_negative_ = is_neg;
  532|  47.1k|               dynamic_stor_.data_[0] = values[0];
  533|  47.1k|               dynamic_stor_.data_[1] = values[1];
  534|  47.1k|           }
  535|      0|           else
  536|      0|           {
  537|      0|               dynamic_stor_.reserve(n, get_allocator());
  538|      0|           }
  539|  47.1k|       }
  540|   327k|    }
_ZNK8jsoncons12basic_bigintINSt3__19allocatorIhEEE8capacityEv:
  348|   327k|    {
  349|   327k|        return is_dynamic() ? dynamic_stor_.capacity_ : 2;
  ------------------
  |  Branch (349:16): [True: 94.3k, False: 233k]
  ------------------
  350|   327k|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE15dynamic_storageC2Ev:
  202|  47.1k|        {
  203|  47.1k|        }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE15dynamic_storage7reserveEmRKNS2_ImEE:
  255|  47.1k|        {
  256|  47.1k|            real_allocator_type alloc(a);
  257|       |
  258|  47.1k|            size_type capacity_new = round_up(n);
  259|  47.1k|            uint64_t* data_old = data_;
  260|  47.1k|            data_ = std::allocator_traits<real_allocator_type>::allocate(alloc, capacity_new);
  261|  47.1k|            if (length_ > 0)
  ------------------
  |  Branch (261:17): [True: 0, False: 47.1k]
  ------------------
  262|      0|            {
  263|      0|                std::memcpy( data_, data_old, length_*sizeof(uint64_t));
  264|      0|            }
  265|  47.1k|            if (capacity_ > 0 && data_ != nullptr)
  ------------------
  |  Branch (265:17): [True: 0, False: 47.1k]
  |  Branch (265:34): [True: 0, False: 0]
  ------------------
  266|      0|            {
  267|      0|                std::allocator_traits<real_allocator_type>::deallocate(alloc, data_old, capacity_);
  268|      0|            }
  269|  47.1k|            capacity_ = capacity_new;
  270|  47.1k|        }
_ZNK8jsoncons12basic_bigintINSt3__19allocatorIhEEE15dynamic_storage8round_upEm:
  274|   235k|        {
  275|   235k|            return (i/word_length + 1) * word_length;
  276|   235k|        }
_ZNK8jsoncons6detail17basic_bigint_baseINSt3__19allocatorIhEEE13get_allocatorEv:
   64|   843k|        {
   65|   843k|            return alloc_;
   66|   843k|        }
_ZNK8jsoncons12basic_bigintINSt3__19allocatorIhEEE9DDproductEmmRmS5_:
 1438|   102k|    {
 1439|   102k|        uint64_t hiA = A >> basic_type_halfBits, loA = A & r_mask,
 1440|   102k|                   hiB = B >> basic_type_halfBits, loB = B & r_mask,
 1441|   102k|                   mid1, mid2, old;
 1442|       |
 1443|   102k|        lo = loA * loB;
 1444|   102k|        hi = hiA * hiB;
 1445|   102k|        mid1 = loA * hiB;
 1446|   102k|        mid2 = hiA * loB;
 1447|   102k|        old = lo;
 1448|   102k|        lo += mid1 << basic_type_halfBits;
 1449|   102k|            hi += (lo < old) + (mid1 >> basic_type_halfBits);
 1450|   102k|        old = lo;
 1451|   102k|        lo += mid2 << basic_type_halfBits;
 1452|   102k|            hi += (lo < old) + (mid2 >> basic_type_halfBits);
 1453|   102k|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE6reduceEv:
 1573|   302k|    {
 1574|   302k|        uint64_t* p = end() - 1;
 1575|   302k|        uint64_t* pBegin = begin();
 1576|   451k|        while ( p >= pBegin )
  ------------------
  |  Branch (1576:17): [True: 412k, False: 38.6k]
  ------------------
 1577|   412k|        {
 1578|   412k|            if ( *p )
  ------------------
  |  Branch (1578:18): [True: 264k, False: 148k]
  ------------------
 1579|   264k|            {
 1580|   264k|                break;
 1581|   264k|            }
 1582|   148k|            --common_stor_.length_;
 1583|   148k|            --p;
 1584|   148k|        }
 1585|   302k|        if ( length() == 0 )
  ------------------
  |  Branch (1585:14): [True: 38.6k, False: 264k]
  ------------------
 1586|  38.6k|        {
 1587|  38.6k|            common_stor_.is_negative_ = false;
 1588|  38.6k|        }
 1589|   302k|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE3endEv:
  504|   302k|    uint64_t* end() { return begin() + length(); }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE5beginEv:
  502|   605k|    uint64_t* begin() { return is_dynamic() ? dynamic_stor_.data_ : short_stor_.values_; }
  ------------------
  |  Branch (502:32): [True: 283k, False: 322k]
  ------------------
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEEpLERKS4_:
  571|  56.1k|    {
  572|  56.1k|        if ( is_negative() != y.is_negative() )
  ------------------
  |  Branch (572:14): [True: 0, False: 56.1k]
  ------------------
  573|      0|            return *this -= -y;
  574|  56.1k|        uint64_t d;
  575|  56.1k|        uint64_t carry = 0;
  576|       |
  577|  56.1k|        resize( (std::max)(y.length(), length()) + 1 );
  578|       |
  579|  70.1k|        for (size_type i = 0; i < length(); i++ )
  ------------------
  |  Branch (579:31): [True: 69.7k, False: 451]
  ------------------
  580|  69.7k|        {
  581|  69.7k|            if ( i >= y.length() && carry == 0 )
  ------------------
  |  Branch (581:18): [True: 57.0k, False: 12.6k]
  |  Branch (581:37): [True: 55.6k, False: 1.36k]
  ------------------
  582|  55.6k|                break;
  583|  14.0k|            d = data()[i] + carry;
  584|  14.0k|            carry = d < carry;
  585|  14.0k|            if ( i < y.length() )
  ------------------
  |  Branch (585:18): [True: 12.6k, False: 1.36k]
  ------------------
  586|  12.6k|            {
  587|  12.6k|                data()[i] = d + y.data()[i];
  588|  12.6k|                if ( data()[i] < d )
  ------------------
  |  Branch (588:22): [True: 1.36k, False: 11.3k]
  ------------------
  589|  1.36k|                    carry = 1;
  590|  12.6k|            }
  591|  1.36k|            else
  592|  1.36k|                data()[i] = d;
  593|  14.0k|        }
  594|  56.1k|        reduce();
  595|  56.1k|        return *this;
  596|  56.1k|    }
_ZNK8jsoncons12basic_bigintINSt3__19allocatorIhEEE11is_negativeEv:
  353|  1.14M|    {
  354|  1.14M|        return common_stor_.is_negative_;
  355|  1.14M|    }
_ZNK8jsoncons12basic_bigintINSt3__19allocatorIhEEEngEv:
  550|  4.82k|    {
  551|  4.82k|        basic_bigint<Allocator> v(*this);
  552|  4.82k|        v.common_stor_.is_negative_ = !v.is_negative();
  553|  4.82k|        return v;
  554|  4.82k|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEEC2ERKS4_:
  301|   371k|    {
  302|   371k|        if (!n.is_dynamic())
  ------------------
  |  Branch (302:13): [True: 182k, False: 188k]
  ------------------
  303|   182k|        {
  304|   182k|            ::new (&short_stor_) short_storage(n.short_stor_);
  305|   182k|        }
  306|   188k|        else
  307|   188k|        {
  308|   188k|            ::new (&dynamic_stor_) dynamic_storage(n.dynamic_stor_, get_allocator());
  309|   188k|        }
  310|   371k|    }
_ZN8jsoncons6detail17basic_bigint_baseINSt3__19allocatorIhEEEC2ERKS4_:
   60|   371k|        {
   61|   371k|        }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE13short_storageC2ERKS5_:
  177|   182k|        {
  178|   182k|            values_[0] = stor.values_[0];
  179|   182k|            values_[1] = stor.values_[1];
  180|   182k|        }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE15dynamic_storageC2ERKS5_RKNS2_ImEE:
  211|   188k|        {
  212|   188k|            create(stor.length_, alloc);
  213|   188k|            std::memcpy(data_, stor.data_, stor.length_*sizeof(uint64_t));
  214|   188k|        }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE15dynamic_storage6createEmNS2_ImEE:
  229|   188k|        {
  230|   188k|            capacity_ = round_up(length);
  231|   188k|            data_ = std::allocator_traits<real_allocator_type>::allocate(alloc, capacity_);
  232|   188k|            JSONCONS_TRY
  ------------------
  |  |  239|   188k|    #define JSONCONS_TRY try
  ------------------
  233|   188k|            {
  234|   188k|                std::allocator_traits<real_allocator_type>::construct(alloc, extension_traits::to_plain_pointer(data_));
  235|   188k|            }
  236|   188k|            JSONCONS_CATCH(...)
  237|   188k|            {
  238|      0|                std::allocator_traits<real_allocator_type>::deallocate(alloc, data_, capacity_);
  239|      0|                JSONCONS_RETHROW;
  ------------------
  |  |  238|      0|    #define JSONCONS_RETHROW throw
  ------------------
  240|      0|            }
  241|   188k|        }
_ZNK8jsoncons12basic_bigintINSt3__19allocatorIhEEE4dataEv:
  363|   357k|    {
  364|   357k|        return is_dynamic() ? dynamic_stor_.data_ : short_stor_.values_;
  ------------------
  |  Branch (364:16): [True: 188k, False: 168k]
  ------------------
  365|   357k|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEED2Ev:
  333|   707k|    {
  334|   707k|        destroy();
  335|   707k|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE7destroyEv:
 1429|   707k|    {
 1430|   707k|        if (is_dynamic())
  ------------------
  |  Branch (1430:13): [True: 235k, False: 471k]
  ------------------
 1431|   235k|        {
 1432|   235k|            dynamic_stor_.destroy(get_allocator());
 1433|   235k|        }
 1434|   707k|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE15dynamic_storage7destroyERKNS2_ImEE:
  244|   235k|        {
  245|   235k|            if (data_ != nullptr)
  ------------------
  |  Branch (245:17): [True: 235k, False: 0]
  ------------------
  246|   235k|            {
  247|   235k|                real_allocator_type alloc(a);
  248|       |
  249|   235k|                std::allocator_traits<real_allocator_type>::destroy(alloc, extension_traits::to_plain_pointer(data_));
  250|   235k|                std::allocator_traits<real_allocator_type>::deallocate(alloc, data_,capacity_);
  251|   235k|            }
  252|   235k|        }
_ZNK8jsoncons12basic_bigintINSt3__19allocatorIhEEE12write_stringIcNS1_11char_traitsIcEENS2_IcEEEEvRNS1_12basic_stringIT_T0_T1_EE:
  981|  56.1k|    {
  982|  56.1k|        basic_bigint<Allocator> v(*this);
  983|       |
  984|  56.1k|        size_t len = (v.length() * basic_type_bits / 3) + 2;
  985|  56.1k|        data.reserve(len);
  986|       |
  987|  56.1k|        static uint64_t p10 = 1;
  988|  56.1k|        static uint64_t ip10 = 0;
  989|       |
  990|  56.1k|        if ( v.length() == 0 )
  ------------------
  |  Branch (990:14): [True: 924, False: 55.1k]
  ------------------
  991|    924|        {
  992|    924|            data.push_back('0');
  993|    924|        }
  994|  55.1k|        else
  995|  55.1k|        {
  996|  55.1k|            uint64_t r;
  997|  55.1k|            if ( p10 == 1 )
  ------------------
  |  Branch (997:18): [True: 1, False: 55.1k]
  ------------------
  998|      1|            {
  999|     20|                while ( p10 <= (std::numeric_limits<uint64_t>::max)()/10 )
  ------------------
  |  Branch (999:25): [True: 19, False: 1]
  ------------------
 1000|     19|                {
 1001|     19|                    p10 *= 10;
 1002|     19|                    ip10++;
 1003|     19|                }
 1004|      1|            }                     
 1005|       |            // p10 is max unsigned power of 10
 1006|  55.1k|            basic_bigint<Allocator> R;
 1007|  55.1k|            basic_bigint<Allocator> LP10 = p10; // LP10 = p10 = ::pow(10, ip10)
 1008|       |
 1009|  55.1k|            do
 1010|   107k|            {
 1011|   107k|                v.divide( LP10, v, R, true );
 1012|   107k|                r = (R.length() ? R.data()[0] : 0);
  ------------------
  |  Branch (1012:22): [True: 69.7k, False: 37.8k]
  ------------------
 1013|  1.37M|                for ( size_type j=0; j < ip10; j++ )
  ------------------
  |  Branch (1013:38): [True: 1.32M, False: 52.4k]
  ------------------
 1014|  1.32M|                {
 1015|  1.32M|                    data.push_back(char(r % 10 + '0'));
 1016|  1.32M|                    r /= 10;
 1017|  1.32M|                    if ( r + v.length() == 0 )
  ------------------
  |  Branch (1017:26): [True: 55.1k, False: 1.26M]
  ------------------
 1018|  55.1k|                        break;
 1019|  1.32M|                }
 1020|   107k|            } 
 1021|   107k|            while ( v.length() );
  ------------------
  |  Branch (1021:21): [True: 52.4k, False: 55.1k]
  ------------------
 1022|  55.1k|            if (is_negative())
  ------------------
  |  Branch (1022:17): [True: 4.82k, False: 50.3k]
  ------------------
 1023|  4.82k|            {
 1024|  4.82k|                data.push_back('-');
 1025|  4.82k|            }
 1026|  55.1k|            std::reverse(data.begin(),data.end());
 1027|  55.1k|        }
 1028|  56.1k|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEEC2Ev:
  288|  55.1k|    {
  289|  55.1k|        ::new (&short_stor_) short_storage();
  290|  55.1k|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE13short_storageC2Ev:
  113|  55.1k|        {
  114|  55.1k|        }
_ZNK8jsoncons12basic_bigintINSt3__19allocatorIhEEE6divideES4_RS4_S5_b:
 1351|   107k|    {
 1352|   107k|        if ( denom.length() == 0 )
  ------------------
  |  Branch (1352:14): [True: 0, False: 107k]
  ------------------
 1353|      0|        {
 1354|      0|            JSONCONS_THROW(std::runtime_error( "Zero divide." ));
  ------------------
  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  ------------------
 1355|      0|        }
 1356|   107k|        bool quot_neg = is_negative() ^ denom.is_negative();
 1357|   107k|        bool rem_neg = is_negative();
 1358|   107k|        int x = 0;
 1359|   107k|        basic_bigint<Allocator> num = *this;
 1360|   107k|        num.common_stor_.is_negative_ = denom.common_stor_.is_negative_ = false;
 1361|   107k|        if ( num < denom )
  ------------------
  |  Branch (1361:14): [True: 55.1k, False: 52.4k]
  ------------------
 1362|  55.1k|        {
 1363|  55.1k|            quot = uint64_t(0);
 1364|  55.1k|            rem = num;
 1365|  55.1k|            rem.common_stor_.is_negative_ = rem_neg;
 1366|  55.1k|            return;
 1367|  55.1k|        }
 1368|  52.4k|        if ( denom.length() == 1 && num.length() == 1 )
  ------------------
  |  Branch (1368:14): [True: 52.4k, False: 0]
  |  Branch (1368:37): [True: 4.78k, False: 47.6k]
  ------------------
 1369|  4.78k|        {
 1370|  4.78k|            quot = uint64_t( num.data()[0]/denom.data()[0] );
 1371|  4.78k|            rem = uint64_t( num.data()[0]%denom.data()[0] );
 1372|  4.78k|            quot.common_stor_.is_negative_ = quot_neg;
 1373|  4.78k|            rem.common_stor_.is_negative_ = rem_neg;
 1374|  4.78k|            return;
 1375|  4.78k|        }
 1376|  47.6k|        else if (denom.length() == 1 && (denom.data()[0] & l_mask) == 0 )
  ------------------
  |  Branch (1376:18): [True: 47.6k, False: 0]
  |  Branch (1376:41): [True: 0, False: 47.6k]
  ------------------
 1377|      0|        {
 1378|       |            // Denominator fits into a half word
 1379|      0|            uint64_t divisor = denom.data()[0], dHi = 0,
 1380|      0|                     q1, r, q2, dividend;
 1381|      0|            quot.resize(length());
 1382|      0|            for (size_type i=length(); i-- > 0; )
  ------------------
  |  Branch (1382:40): [True: 0, False: 0]
  ------------------
 1383|      0|            {
 1384|      0|                dividend = (dHi << basic_type_halfBits) | (data()[i] >> basic_type_halfBits);
 1385|      0|                q1 = dividend/divisor;
 1386|      0|                r = dividend % divisor;
 1387|      0|                dividend = (r << basic_type_halfBits) | (data()[i] & r_mask);
 1388|      0|                q2 = dividend/divisor;
 1389|      0|                dHi = dividend % divisor;
 1390|      0|                quot.data()[i] = (q1 << basic_type_halfBits) | q2;
 1391|      0|            }
 1392|      0|            quot.reduce();
 1393|      0|            rem = dHi;
 1394|      0|            quot.common_stor_.is_negative_ = quot_neg;
 1395|      0|            rem.common_stor_.is_negative_ = rem_neg;
 1396|      0|            return;
 1397|      0|        }
 1398|  47.6k|        basic_bigint<Allocator> num0 = num, denom0 = denom;
 1399|  47.6k|        int second_done = normalize(denom, num, x);
 1400|  47.6k|        size_type l = denom.length() - 1;
 1401|  47.6k|        size_type n = num.length() - 1;
 1402|  47.6k|        quot.resize(n - l);
 1403|  95.2k|        for (size_type i=quot.length(); i-- > 0; )
  ------------------
  |  Branch (1403:41): [True: 47.6k, False: 47.6k]
  ------------------
 1404|  47.6k|            quot.data()[i] = 0;
 1405|  47.6k|        rem = num;
 1406|  47.6k|        if ( rem.data()[n] >= denom.data()[l] )
  ------------------
  |  Branch (1406:14): [True: 0, False: 47.6k]
  ------------------
 1407|      0|        {
 1408|      0|            rem.resize(rem.length() + 1);
 1409|      0|            n++;
 1410|      0|            quot.resize(quot.length() + 1);
 1411|      0|        }
 1412|  47.6k|        uint64_t d = denom.data()[l];
 1413|  95.2k|        for ( size_type k = n; k > l; k-- )
  ------------------
  |  Branch (1413:32): [True: 47.6k, False: 47.6k]
  ------------------
 1414|  47.6k|        {
 1415|  47.6k|            uint64_t q = DDquotient(rem.data()[k], rem.data()[k-1], d);
 1416|  47.6k|            subtractmul( rem.data() + k - l - 1, denom.data(), l + 1, q );
 1417|  47.6k|            quot.data()[k - l - 1] = q;
 1418|  47.6k|        }
 1419|  47.6k|        quot.reduce();
 1420|  47.6k|        quot.common_stor_.is_negative_ = quot_neg;
 1421|  47.6k|        if ( remDesired )
  ------------------
  |  Branch (1421:14): [True: 47.6k, False: 0]
  ------------------
 1422|  47.6k|        {
 1423|  47.6k|            unnormalize(rem, x, second_done);
 1424|  47.6k|            rem.common_stor_.is_negative_ = rem_neg;
 1425|  47.6k|        }
 1426|  47.6k|    }
_ZN8jsonconsltERKNS_12basic_bigintINSt3__19allocatorIhEEEES6_:
 1111|   107k|    {
 1112|   107k|       return x.compare(y) < 0 ? true : false;
  ------------------
  |  Branch (1112:15): [True: 55.1k, False: 52.4k]
  ------------------
 1113|   107k|    }
_ZNK8jsoncons12basic_bigintINSt3__19allocatorIhEEE7compareERKS4_:
 1321|   156k|    {
 1322|   156k|        if ( is_negative() != y.is_negative() )
  ------------------
  |  Branch (1322:14): [True: 4.82k, False: 151k]
  ------------------
 1323|  4.82k|            return y.is_negative() - is_negative();
 1324|   151k|        int code = 0;
 1325|   151k|        if ( length() == 0 && y.length() == 0 )
  ------------------
  |  Branch (1325:14): [True: 656, False: 150k]
  |  Branch (1325:31): [True: 656, False: 0]
  ------------------
 1326|    656|            code = 0;
 1327|   150k|        else if ( length() < y.length() )
  ------------------
  |  Branch (1327:19): [True: 0, False: 150k]
  ------------------
 1328|      0|            code = -1;
 1329|   150k|        else if ( length() > y.length() )
  ------------------
  |  Branch (1329:19): [True: 90.9k, False: 59.9k]
  ------------------
 1330|  90.9k|            code = +1;
 1331|  59.9k|        else
 1332|  59.9k|        {
 1333|  61.6k|            for (size_type i = length(); i-- > 0; )
  ------------------
  |  Branch (1333:42): [True: 59.9k, False: 1.63k]
  ------------------
 1334|  59.9k|            {
 1335|  59.9k|                if (data()[i] > y.data()[i])
  ------------------
  |  Branch (1335:21): [True: 3.14k, False: 56.8k]
  ------------------
 1336|  3.14k|                {
 1337|  3.14k|                    code = 1;
 1338|  3.14k|                    break;
 1339|  3.14k|                }
 1340|  56.8k|                else if (data()[i] < y.data()[i])
  ------------------
  |  Branch (1340:26): [True: 55.1k, False: 1.63k]
  ------------------
 1341|  55.1k|                {
 1342|  55.1k|                    code = -1;
 1343|  55.1k|                    break;
 1344|  55.1k|                }
 1345|  59.9k|            }
 1346|  59.9k|        }
 1347|   151k|        return is_negative() ? -code : code;
  ------------------
  |  Branch (1347:16): [True: 0, False: 151k]
  ------------------
 1348|   156k|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEEaSERKS4_:
  557|   167k|    {
  558|   167k|        if ( this != &y )
  ------------------
  |  Branch (558:14): [True: 167k, False: 0]
  ------------------
  559|   167k|        {
  560|   167k|            resize( y.length() );
  561|   167k|            common_stor_.is_negative_ = y.is_negative();
  562|   167k|            if ( y.length() > 0 )
  ------------------
  |  Branch (562:18): [True: 110k, False: 56.8k]
  ------------------
  563|   110k|            {
  564|   110k|                std::memcpy( data(), y.data(), y.length()*sizeof(uint64_t) );
  565|   110k|            }
  566|   167k|        }
  567|   167k|        return *this;
  568|   167k|    }
_ZNK8jsoncons12basic_bigintINSt3__19allocatorIhEEE9normalizeERS4_S5_Ri:
 1530|  47.6k|    {
 1531|  47.6k|        size_type r = denom.length() - 1;
 1532|  47.6k|        uint64_t y = denom.data()[r];
 1533|       |
 1534|  47.6k|        x = 0;
 1535|  47.6k|        while ( (y & l_bit) == 0 )
  ------------------
  |  Branch (1535:17): [True: 0, False: 47.6k]
  ------------------
 1536|      0|        {
 1537|      0|            y <<= 1;
 1538|      0|            x++;
 1539|      0|        }
 1540|  47.6k|        denom <<= x;
 1541|  47.6k|        num <<= x;
 1542|  47.6k|        if ( r > 0 && denom.data()[r] < denom.data()[r-1] )
  ------------------
  |  Branch (1542:14): [True: 0, False: 47.6k]
  |  Branch (1542:23): [True: 0, False: 0]
  ------------------
 1543|      0|        {
 1544|      0|            denom *= max_basic_type;
 1545|      0|                    num *= max_basic_type;
 1546|      0|            return 1;
 1547|      0|        }
 1548|  47.6k|        return 0;
 1549|  47.6k|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEElSEm:
  735|  95.2k|    {
  736|  95.2k|        size_type q = (size_type)(k / basic_type_bits);
  737|  95.2k|        if ( q ) // Increase common_stor_.length_ by q:
  ------------------
  |  Branch (737:14): [True: 0, False: 95.2k]
  ------------------
  738|      0|        {
  739|      0|            resize(length() + q);
  740|      0|            for (size_type i = length(); i-- > 0; )
  ------------------
  |  Branch (740:42): [True: 0, False: 0]
  ------------------
  741|      0|                data()[i] = ( i < q ? 0 : data()[i - q]);
  ------------------
  |  Branch (741:31): [True: 0, False: 0]
  ------------------
  742|      0|            k %= basic_type_bits;
  743|      0|        }
  744|  95.2k|        if ( k )  // 0 < k < basic_type_bits:
  ------------------
  |  Branch (744:14): [True: 0, False: 95.2k]
  ------------------
  745|      0|        {
  746|      0|            uint64_t k1 = basic_type_bits - k;
  747|      0|            uint64_t mask = (uint64_t(1) << k) - uint64_t(1);
  748|      0|            resize( length() + 1 );
  749|      0|            for (size_type i = length(); i-- > 0; )
  ------------------
  |  Branch (749:42): [True: 0, False: 0]
  ------------------
  750|      0|            {
  751|      0|                data()[i] <<= k;
  752|      0|                if ( i > 0 )
  ------------------
  |  Branch (752:22): [True: 0, False: 0]
  ------------------
  753|      0|                    data()[i] |= (data()[i-1] >> k1) & mask;
  754|      0|            }
  755|      0|        }
  756|  95.2k|        reduce();
  757|  95.2k|        return *this;
  758|  95.2k|    }
_ZNK8jsoncons12basic_bigintINSt3__19allocatorIhEEE10DDquotientEmmm:
 1457|  47.6k|    {
 1458|  47.6k|        uint64_t left, middle, right, qHi, qLo, x, dLo1,
 1459|  47.6k|                   dHi = d >> basic_type_halfBits, dLo = d & r_mask;
 1460|  47.6k|        qHi = A/(dHi + 1);
 1461|       |        // This initial guess of qHi may be too small.
 1462|  47.6k|        middle = qHi * dLo;
 1463|  47.6k|        left = qHi * dHi;
 1464|  47.6k|        x = B - (middle << basic_type_halfBits);
 1465|  47.6k|        A -= (middle >> basic_type_halfBits) + left + (x > B);
 1466|  47.6k|        B = x;
 1467|  47.6k|        dLo1 = dLo << basic_type_halfBits;
 1468|       |        // Increase qHi if necessary:
 1469|  47.6k|        while ( A > dHi || (A == dHi && B >= dLo1) )
  ------------------
  |  Branch (1469:17): [True: 0, False: 47.6k]
  |  Branch (1469:29): [True: 0, False: 47.6k]
  |  Branch (1469:41): [True: 0, False: 0]
  ------------------
 1470|      0|        {
 1471|      0|            x = B - dLo1;
 1472|      0|            A -= dHi + (x > B);
 1473|      0|            B = x;
 1474|      0|            qHi++;
 1475|      0|        }
 1476|  47.6k|        qLo = ((A << basic_type_halfBits) | (B >> basic_type_halfBits))/(dHi + 1);
 1477|       |        // This initial guess of qLo may be too small.
 1478|  47.6k|        right = qLo * dLo;
 1479|  47.6k|        middle = qLo * dHi;
 1480|  47.6k|        x = B - right;
 1481|  47.6k|        A -= (x > B);
 1482|  47.6k|        B = x;
 1483|  47.6k|        x = B - (middle << basic_type_halfBits);
 1484|  47.6k|            A -= (middle >> basic_type_halfBits) + (x > B);
 1485|  47.6k|        B = x;
 1486|       |        // Increase qLo if necessary:
 1487|  86.1k|        while ( A || B >= d )
  ------------------
  |  Branch (1487:17): [True: 0, False: 86.1k]
  |  Branch (1487:22): [True: 38.5k, False: 47.6k]
  ------------------
 1488|  38.5k|        {
 1489|  38.5k|            x = B - d;
 1490|  38.5k|            A -= (x > B);
 1491|  38.5k|            B = x;
 1492|  38.5k|            qLo++;
 1493|  38.5k|        }
 1494|  47.6k|        return (qHi << basic_type_halfBits) + qLo;
 1495|  47.6k|    }
_ZNK8jsoncons12basic_bigintINSt3__19allocatorIhEEE11subtractmulEPmS5_mRm:
 1499|  47.6k|    {
 1500|  47.6k|        uint64_t hi, lo, d, carry = 0;
 1501|  47.6k|        size_type i;
 1502|  95.2k|        for ( i = 0; i < n; i++ )
  ------------------
  |  Branch (1502:22): [True: 47.6k, False: 47.6k]
  ------------------
 1503|  47.6k|        {
 1504|  47.6k|            DDproduct( b[i], q, hi, lo );
 1505|  47.6k|            d = a[i];
 1506|  47.6k|            a[i] -= lo;
 1507|  47.6k|            if ( a[i] > d )
  ------------------
  |  Branch (1507:18): [True: 3.10k, False: 44.5k]
  ------------------
 1508|  3.10k|                carry++;
 1509|  47.6k|            d = a[i + 1];
 1510|  47.6k|            a[i + 1] -= hi + carry;
 1511|  47.6k|            carry = a[i + 1] > d;
 1512|  47.6k|        }
 1513|  47.6k|        if ( carry ) // q was too large
  ------------------
  |  Branch (1513:14): [True: 0, False: 47.6k]
  ------------------
 1514|      0|        {
 1515|      0|            q--;
 1516|      0|            carry = 0;
 1517|      0|            for ( i = 0; i < n; i++ )
  ------------------
  |  Branch (1517:26): [True: 0, False: 0]
  ------------------
 1518|      0|            {
 1519|      0|                d = a[i] + carry;
 1520|      0|                carry = d < carry;
 1521|      0|                a[i] = d + b[i];
 1522|      0|                if ( a[i] < d )
  ------------------
  |  Branch (1522:22): [True: 0, False: 0]
  ------------------
 1523|      0|                    carry = 1;
 1524|      0|            }
 1525|      0|            a[n] = 0;
 1526|      0|        }
 1527|  47.6k|    }
_ZNK8jsoncons12basic_bigintINSt3__19allocatorIhEEE11unnormalizeERS4_ii:
 1552|  47.6k|    {
 1553|  47.6k|        if ( secondDone )
  ------------------
  |  Branch (1553:14): [True: 0, False: 47.6k]
  ------------------
 1554|      0|        {
 1555|      0|            rem /= max_basic_type;
 1556|      0|        }
 1557|  47.6k|        if ( x > 0 )
  ------------------
  |  Branch (1557:14): [True: 0, False: 47.6k]
  ------------------
 1558|      0|        {
 1559|      0|            rem >>= x;
 1560|      0|        }
 1561|  47.6k|        else
 1562|  47.6k|        {
 1563|  47.6k|            rem.reduce();
 1564|  47.6k|        }
 1565|  47.6k|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEEC2IlEET_PNS1_9enable_ifIXsr3std11is_integralIS6_EE5valueEvE4typeE:
  328|  97.5k|    {
  329|  97.5k|        ::new (&short_stor_) short_storage(n);
  330|  97.5k|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE13short_storageC2IlEET_PNS1_9enable_ifIXaaaasr3std11is_integralIS7_EE5valuelestS7_Lm8Esr3std9is_signedIS7_EE5valueEvE4typeE:
  124|  97.5k|        {
  125|  97.5k|            values_[0] = n < 0 ? (uint64_t(0)-static_cast<uint64_t>(n)) : static_cast<uint64_t>(n);
  ------------------
  |  Branch (125:26): [True: 4.82k, False: 92.7k]
  ------------------
  126|  97.5k|            values_[1] = 0;
  127|  97.5k|        }
_ZN8jsonconsltERKNS_12basic_bigintINSt3__19allocatorIhEEEEl:
 1116|  48.7k|    {
 1117|  48.7k|       return x.compare(y) < 0 ? true : false;
  ------------------
  |  Branch (1117:15): [True: 4.82k, False: 43.9k]
  ------------------
 1118|  48.7k|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEEC2IjEET_PNS1_9enable_ifIXsr3std11is_integralIS6_EE5valueEvE4typeE:
  328|  48.7k|    {
  329|  48.7k|        ::new (&short_stor_) short_storage(n);
  330|  48.7k|    }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEE13short_storageC2IjEET_PNS1_9enable_ifIXaaaasr3std11is_integralIS7_EE5valuelestS7_Lm8Entsr3std9is_signedIS7_EE5valueEvE4typeE:
  137|  48.7k|        {
  138|  48.7k|            values_[0] = n;
  139|  48.7k|            values_[1] = 0;
  140|  48.7k|        }
_ZN8jsoncons12basic_bigintINSt3__19allocatorIhEEEmIERKS4_:
  599|  4.82k|    {
  600|  4.82k|        if ( is_negative() != y.is_negative() )
  ------------------
  |  Branch (600:14): [True: 4.82k, False: 0]
  ------------------
  601|  4.82k|            return *this += -y;
  602|      0|        if ( (!is_negative() && y > *this) || (is_negative() && y < *this) )
  ------------------
  |  Branch (602:15): [True: 0, False: 0]
  |  Branch (602:33): [True: 0, False: 0]
  |  Branch (602:48): [True: 0, False: 0]
  |  Branch (602:65): [True: 0, False: 0]
  ------------------
  603|      0|            return *this = -(y - *this);
  604|      0|        uint64_t borrow = 0;
  605|      0|        uint64_t d;
  606|      0|        for (size_type i = 0; i < length(); i++ )
  ------------------
  |  Branch (606:31): [True: 0, False: 0]
  ------------------
  607|      0|        {
  608|      0|            if ( i >= y.length() && borrow == 0 )
  ------------------
  |  Branch (608:18): [True: 0, False: 0]
  |  Branch (608:37): [True: 0, False: 0]
  ------------------
  609|      0|                break;
  610|      0|            d = data()[i] - borrow;
  611|      0|            borrow = d > data()[i];
  612|      0|            if ( i < y.length())
  ------------------
  |  Branch (612:18): [True: 0, False: 0]
  ------------------
  613|      0|            {
  614|      0|                data()[i] = d - y.data()[i];
  615|      0|                if ( data()[i] > d )
  ------------------
  |  Branch (615:22): [True: 0, False: 0]
  ------------------
  616|      0|                    borrow = 1;
  617|      0|            }
  618|      0|            else 
  619|      0|                data()[i] = d;
  620|      0|        }
  621|      0|        reduce();
  622|      0|        return *this;
  623|      0|    }

_ZNK8jsoncons16byte_string_view4dataEv:
  392|  1.00M|        {
  393|  1.00M|            return data_;
  394|  1.00M|        }
_ZNK8jsoncons16byte_string_view4sizeEv:
  403|  1.00M|        {
  404|  1.00M|            return size_;
  405|  1.00M|        }
_ZN8jsoncons16byte_string_viewC2EPKhm:
  355|  1.08M|        {
  356|  1.08M|        }
_ZN8jsoncons6detail21encode_base64_genericIPKhNSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEEENS4_9enable_ifIXsr3std7is_sameINS4_15iterator_traitsIT_E10value_typeEhEE5valueEmE4typeESD_SD_PKcRT0_:
   35|  73.9k|    {
   36|  73.9k|        std::size_t count = 0;
   37|  73.9k|        unsigned char a3[3];
   38|  73.9k|        unsigned char a4[4];
   39|  73.9k|        unsigned char fill = alphabet[64];
   40|  73.9k|        int i = 0;
   41|  73.9k|        int j = 0;
   42|       |
   43|  2.86M|        while (first != last)
  ------------------
  |  Branch (43:16): [True: 2.79M, False: 73.9k]
  ------------------
   44|  2.79M|        {
   45|  2.79M|            a3[i++] = *first++;
   46|  2.79M|            if (i == 3)
  ------------------
  |  Branch (46:17): [True: 910k, False: 1.88M]
  ------------------
   47|   910k|            {
   48|   910k|                a4[0] = (a3[0] & 0xfc) >> 2;
   49|   910k|                a4[1] = ((a3[0] & 0x03) << 4) + ((a3[1] & 0xf0) >> 4);
   50|   910k|                a4[2] = ((a3[1] & 0x0f) << 2) + ((a3[2] & 0xc0) >> 6);
   51|   910k|                a4[3] = a3[2] & 0x3f;
   52|       |
   53|  4.55M|                for (i = 0; i < 4; i++) 
  ------------------
  |  Branch (53:29): [True: 3.64M, False: 910k]
  ------------------
   54|  3.64M|                {
   55|  3.64M|                    result.push_back(alphabet[a4[i]]);
   56|  3.64M|                    ++count;
   57|  3.64M|                }
   58|   910k|                i = 0;
   59|   910k|            }
   60|  2.79M|        }
   61|       |
   62|  73.9k|        if (i > 0)
  ------------------
  |  Branch (62:13): [True: 38.9k, False: 35.0k]
  ------------------
   63|  38.9k|        {
   64|  95.1k|            for (j = i; j < 3; ++j) 
  ------------------
  |  Branch (64:25): [True: 56.1k, False: 38.9k]
  ------------------
   65|  56.1k|            {
   66|  56.1k|                a3[j] = 0;
   67|  56.1k|            }
   68|       |
   69|  38.9k|            a4[0] = (a3[0] & 0xfc) >> 2;
   70|  38.9k|            a4[1] = ((a3[0] & 0x03) << 4) + ((a3[1] & 0xf0) >> 4);
   71|  38.9k|            a4[2] = ((a3[1] & 0x0f) << 2) + ((a3[2] & 0xc0) >> 6);
   72|       |
   73|   138k|            for (j = 0; j < i + 1; ++j) 
  ------------------
  |  Branch (73:25): [True: 99.5k, False: 38.9k]
  ------------------
   74|  99.5k|            {
   75|  99.5k|                result.push_back(alphabet[a4[j]]);
   76|  99.5k|                ++count;
   77|  99.5k|            }
   78|       |
   79|  38.9k|            if (fill != 0)
  ------------------
  |  Branch (79:17): [True: 0, False: 38.9k]
  ------------------
   80|      0|            {
   81|      0|                while (i++ < 3) 
  ------------------
  |  Branch (81:24): [True: 0, False: 0]
  ------------------
   82|      0|                {
   83|      0|                    result.push_back(fill);
   84|      0|                    ++count;
   85|      0|                }
   86|      0|            }
   87|  38.9k|        }
   88|       |
   89|  73.9k|        return count;
   90|  73.9k|    }
_ZNK8jsoncons16byte_string_view5beginEv:
  409|  73.9k|        {
  410|  73.9k|            return data_;
  411|  73.9k|        }
_ZNK8jsoncons16byte_string_view3endEv:
  413|  73.9k|        {
  414|  73.9k|            return data_ + size_;
  415|  73.9k|        }
_ZN8jsoncons16encode_base64urlIPKhNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEENS3_9enable_ifIXsr3std7is_sameINS3_15iterator_traitsIT_E10value_typeEhEE5valueEmE4typeESC_SC_RT0_:
  168|  73.9k|    {
  169|  73.9k|        static constexpr char alphabet[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  170|  73.9k|                                                      "abcdefghijklmnopqrstuvwxyz"
  171|  73.9k|                                                      "0123456789-_"
  172|  73.9k|                                                      "\0";
  173|  73.9k|        return detail::encode_base64_generic(first, last, alphabet, result);
  174|  73.9k|    }

_ZN8jsoncons6binary9byte_swapIfEENSt3__19enable_ifIXaasr3std17is_floating_pointIT_EE5valueeqstS4_Lm4EES4_E4typeES4_:
  182|   188k|    {
  183|   188k|        uint32_t x;
  184|   188k|        std::memcpy(&x,&val,sizeof(uint32_t));
  185|   188k|        uint32_t y = byte_swap(x);
  186|   188k|        T val2;
  187|   188k|        std::memcpy(&val2,&y,sizeof(uint32_t));
  188|   188k|        return val2;
  189|   188k|    }
_ZN8jsoncons6binary9byte_swapIjEENSt3__19enable_ifIXaasr3std11is_integralIT_EE5valueeqstS4_Lm4EES4_E4typeES4_:
  157|   247k|    {
  158|   247k|    #if defined(JSONCONS_BYTE_SWAP_32)
  159|   247k|        return JSONCONS_BYTE_SWAP_32(val);
  ------------------
  |  |   31|   247k|#  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|   247k|    }
_ZN8jsoncons6binary9byte_swapIdEENSt3__19enable_ifIXaasr3std17is_floating_pointIT_EE5valueeqstS4_Lm8EES4_E4typeES4_:
  194|  8.29k|    {
  195|  8.29k|        uint64_t x;
  196|  8.29k|        std::memcpy(&x,&val,sizeof(uint64_t));
  197|  8.29k|        uint64_t y = byte_swap(x);
  198|  8.29k|        T val2;
  199|  8.29k|        std::memcpy(&val2,&y,sizeof(uint64_t));
  200|  8.29k|        return val2;
  201|  8.29k|    }
_ZN8jsoncons6binary9byte_swapImEENSt3__19enable_ifIXaasr3std11is_integralIT_EE5valueeqstS4_Lm8EES4_E4typeES4_:
  169|  19.2k|    {
  170|  19.2k|    #if defined(JSONCONS_BYTE_SWAP_64)
  171|  19.2k|        return JSONCONS_BYTE_SWAP_64(val);
  ------------------
  |  |   30|  19.2k|#  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|  19.2k|    }
_ZN8jsoncons6binary9byte_swapItEENSt3__19enable_ifIXaasr3std11is_integralIT_EE5valueeqstS4_Lm2EES4_E4typeES4_:
  146|  22.5k|    {
  147|  22.5k|    #if defined(JSONCONS_BYTE_SWAP_16)
  148|  22.5k|        return JSONCONS_BYTE_SWAP_16(val);
  ------------------
  |  |   35|  22.5k|#      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|  22.5k|    }
_ZN8jsoncons6binary9byte_swapIaEENSt3__19enable_ifIXaasr3std11is_integralIT_EE5valueeqstS4_Lm1EES4_E4typeES4_:
  139|   200k|    {
  140|   200k|        return val;
  141|   200k|    }
_ZN8jsoncons6binary9byte_swapIsEENSt3__19enable_ifIXaasr3std11is_integralIT_EE5valueeqstS4_Lm2EES4_E4typeES4_:
  146|  1.86k|    {
  147|  1.86k|    #if defined(JSONCONS_BYTE_SWAP_16)
  148|  1.86k|        return JSONCONS_BYTE_SWAP_16(val);
  ------------------
  |  |   35|  1.86k|#      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|  1.86k|    }
_ZN8jsoncons6binary9byte_swapIiEENSt3__19enable_ifIXaasr3std11is_integralIT_EE5valueeqstS4_Lm4EES4_E4typeES4_:
  157|  11.4k|    {
  158|  11.4k|    #if defined(JSONCONS_BYTE_SWAP_32)
  159|  11.4k|        return JSONCONS_BYTE_SWAP_32(val);
  ------------------
  |  |   31|  11.4k|#  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|  11.4k|    }
_ZN8jsoncons6binary9byte_swapIlEENSt3__19enable_ifIXaasr3std11is_integralIT_EE5valueeqstS4_Lm8EES4_E4typeES4_:
  169|  49.2k|    {
  170|  49.2k|    #if defined(JSONCONS_BYTE_SWAP_64)
  171|  49.2k|        return JSONCONS_BYTE_SWAP_64(val);
  ------------------
  |  |   30|  49.2k|#  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|  49.2k|    }
_ZN8jsoncons6binary9byte_swapIhEENSt3__19enable_ifIXaasr3std11is_integralIT_EE5valueeqstS4_Lm1EES4_E4typeES4_:
  139|   216k|    {
  140|   216k|        return val;
  141|   216k|    }

_ZN8jsoncons6binary13big_to_nativeIfNS_6detail6endianEEENSt3__19enable_ifIXeqsrT0_6nativesrS6_6littleET_E4typeEPKhm:
  204|   188k|    {
  205|   188k|        if (sizeof(T) > count)
  ------------------
  |  Branch (205:13): [True: 0, False: 188k]
  ------------------
  206|      0|        {
  207|      0|            return T{};
  208|      0|        }
  209|   188k|        T val;
  210|   188k|        std::memcpy(&val,first,sizeof(T));
  211|   188k|        return byte_swap(val);
  212|   188k|    }
_ZN8jsoncons6binary13big_to_nativeIdNS_6detail6endianEEENSt3__19enable_ifIXeqsrT0_6nativesrS6_6littleET_E4typeEPKhm:
  204|  8.29k|    {
  205|  8.29k|        if (sizeof(T) > count)
  ------------------
  |  Branch (205:13): [True: 0, False: 8.29k]
  ------------------
  206|      0|        {
  207|      0|            return T{};
  208|      0|        }
  209|  8.29k|        T val;
  210|  8.29k|        std::memcpy(&val,first,sizeof(T));
  211|  8.29k|        return byte_swap(val);
  212|  8.29k|    }
_ZN8jsoncons6binary13big_to_nativeItNS_6detail6endianEEENSt3__19enable_ifIXeqsrT0_6nativesrS6_6littleET_E4typeEPKhm:
  204|  22.5k|    {
  205|  22.5k|        if (sizeof(T) > count)
  ------------------
  |  Branch (205:13): [True: 0, False: 22.5k]
  ------------------
  206|      0|        {
  207|      0|            return T{};
  208|      0|        }
  209|  22.5k|        T val;
  210|  22.5k|        std::memcpy(&val,first,sizeof(T));
  211|  22.5k|        return byte_swap(val);
  212|  22.5k|    }
_ZN8jsoncons6binary13big_to_nativeIjNS_6detail6endianEEENSt3__19enable_ifIXeqsrT0_6nativesrS6_6littleET_E4typeEPKhm:
  204|  58.7k|    {
  205|  58.7k|        if (sizeof(T) > count)
  ------------------
  |  Branch (205:13): [True: 0, False: 58.7k]
  ------------------
  206|      0|        {
  207|      0|            return T{};
  208|      0|        }
  209|  58.7k|        T val;
  210|  58.7k|        std::memcpy(&val,first,sizeof(T));
  211|  58.7k|        return byte_swap(val);
  212|  58.7k|    }
_ZN8jsoncons6binary13big_to_nativeImNS_6detail6endianEEENSt3__19enable_ifIXeqsrT0_6nativesrS6_6littleET_E4typeEPKhm:
  204|  10.9k|    {
  205|  10.9k|        if (sizeof(T) > count)
  ------------------
  |  Branch (205:13): [True: 0, False: 10.9k]
  ------------------
  206|      0|        {
  207|      0|            return T{};
  208|      0|        }
  209|  10.9k|        T val;
  210|  10.9k|        std::memcpy(&val,first,sizeof(T));
  211|  10.9k|        return byte_swap(val);
  212|  10.9k|    }
_ZN8jsoncons6binary13big_to_nativeIaNS_6detail6endianEEENSt3__19enable_ifIXeqsrT0_6nativesrS6_6littleET_E4typeEPKhm:
  204|   200k|    {
  205|   200k|        if (sizeof(T) > count)
  ------------------
  |  Branch (205:13): [True: 0, False: 200k]
  ------------------
  206|      0|        {
  207|      0|            return T{};
  208|      0|        }
  209|   200k|        T val;
  210|   200k|        std::memcpy(&val,first,sizeof(T));
  211|   200k|        return byte_swap(val);
  212|   200k|    }
_ZN8jsoncons6binary13big_to_nativeIsNS_6detail6endianEEENSt3__19enable_ifIXeqsrT0_6nativesrS6_6littleET_E4typeEPKhm:
  204|  1.86k|    {
  205|  1.86k|        if (sizeof(T) > count)
  ------------------
  |  Branch (205:13): [True: 0, False: 1.86k]
  ------------------
  206|      0|        {
  207|      0|            return T{};
  208|      0|        }
  209|  1.86k|        T val;
  210|  1.86k|        std::memcpy(&val,first,sizeof(T));
  211|  1.86k|        return byte_swap(val);
  212|  1.86k|    }
_ZN8jsoncons6binary13big_to_nativeIiNS_6detail6endianEEENSt3__19enable_ifIXeqsrT0_6nativesrS6_6littleET_E4typeEPKhm:
  204|  11.4k|    {
  205|  11.4k|        if (sizeof(T) > count)
  ------------------
  |  Branch (205:13): [True: 0, False: 11.4k]
  ------------------
  206|      0|        {
  207|      0|            return T{};
  208|      0|        }
  209|  11.4k|        T val;
  210|  11.4k|        std::memcpy(&val,first,sizeof(T));
  211|  11.4k|        return byte_swap(val);
  212|  11.4k|    }
_ZN8jsoncons6binary13big_to_nativeIlNS_6detail6endianEEENSt3__19enable_ifIXeqsrT0_6nativesrS6_6littleET_E4typeEPKhm:
  204|  49.2k|    {
  205|  49.2k|        if (sizeof(T) > count)
  ------------------
  |  Branch (205:13): [True: 0, False: 49.2k]
  ------------------
  206|      0|        {
  207|      0|            return T{};
  208|      0|        }
  209|  49.2k|        T val;
  210|  49.2k|        std::memcpy(&val,first,sizeof(T));
  211|  49.2k|        return byte_swap(val);
  212|  49.2k|    }
_ZN8jsoncons6binary13big_to_nativeIhNS_6detail6endianEEENSt3__19enable_ifIXeqsrT0_6nativesrS6_6littleET_E4typeEPKhm:
  204|   216k|    {
  205|   216k|        if (sizeof(T) > count)
  ------------------
  |  Branch (205:13): [True: 0, False: 216k]
  ------------------
  206|      0|        {
  207|      0|            return T{};
  208|      0|        }
  209|   216k|        T val;
  210|   216k|        std::memcpy(&val,first,sizeof(T));
  211|   216k|        return byte_swap(val);
  212|   216k|    }

_ZN8jsoncons6detail6grisu3EdPcPiS2_:
  294|  83.4k|{
  295|  83.4k|    diy_fp_t w_m, w_p;
  296|  83.4k|    int q = 64, alpha = -59, gamma = -56;
  297|  83.4k|    normalized_boundaries(v, &w_m, &w_p);
  298|  83.4k|    diy_fp_t w = normalize_diy_fp(double2diy_fp(v));
  299|  83.4k|    int mk = k_comp(w_p.e + q, alpha, gamma);
  300|  83.4k|    diy_fp_t c_mk = cached_power(mk);
  301|  83.4k|    diy_fp_t W  = multiply(w,   c_mk);
  302|  83.4k|    diy_fp_t Wp = multiply(w_p, c_mk);
  303|  83.4k|    diy_fp_t Wm = multiply(w_m, c_mk);
  304|  83.4k|    *K = -mk;
  305|  83.4k|    bool result = digit_gen(Wm, W, Wp, buffer, length, K);
  306|  83.4k|    buffer[*length] = 0;
  307|  83.4k|    return result;
  308|  83.4k|}
_ZN8jsoncons6detail21normalized_boundariesEdPNS0_8diy_fp_tES2_:
  189|  83.4k|{
  190|  83.4k|    diy_fp_t v = double2diy_fp(d);
  191|  83.4k|    diy_fp_t pl, mi;
  192|  83.4k|    bool significand_is_zero = v.f == dp_hidden_bit;
  193|  83.4k|    pl.f  = (v.f << 1) + 1; pl.e  = v.e - 1;
  194|  83.4k|    pl = normalize_boundary(pl);
  195|  83.4k|    if (significand_is_zero)
  ------------------
  |  Branch (195:9): [True: 726, False: 82.7k]
  ------------------
  196|    726|    {
  197|    726|        mi.f = (v.f << 2) - 1;
  198|    726|        mi.e = v.e - 2;
  199|    726|    } else
  200|  82.7k|    {
  201|  82.7k|        mi.f = (v.f << 1) - 1;
  202|  82.7k|        mi.e = v.e - 1;
  203|  82.7k|    }
  204|  83.4k|	int x = mi.e - pl.e;
  205|  83.4k|    mi.f <<= x;
  206|  83.4k|    mi.e = pl.e;
  207|  83.4k|    *out_m_plus = pl;
  208|  83.4k|    *out_m_minus = mi;
  209|  83.4k|}
_ZN8jsoncons6detail18normalize_boundaryENS0_8diy_fp_tE:
  172|  83.4k|{
  173|  83.4k|    diy_fp_t res = in;
  174|       |    /* Normalize now */
  175|       |    /* the original number could have been a denormal. */
  176|   222k|    while (!(res.f & (dp_hidden_bit << 1)))
  ------------------
  |  Branch (176:12): [True: 138k, False: 83.4k]
  ------------------
  177|   138k|    {
  178|   138k|        res.f <<= 1;
  179|   138k|        res.e--;
  180|   138k|    }
  181|       |    /* do the final shifts in one go. Don't forget the hidden bit (the '-1') */
  182|  83.4k|    res.f <<= (diy_significand_size - dp_significand_size - 2);
  183|  83.4k|    res.e = res.e - (diy_significand_size - dp_significand_size - 2);
  184|  83.4k|    return res;
  185|  83.4k|}
_ZN8jsoncons6detail16normalize_diy_fpENS0_8diy_fp_tE:
  135|  83.4k|{
  136|  83.4k|    diy_fp_t res = in;
  137|       |    /* Normalize now */
  138|       |    /* the original number could have been a denormal. */
  139|   222k|    while (!(res.f & dp_hidden_bit))
  ------------------
  |  Branch (139:12): [True: 138k, False: 83.4k]
  ------------------
  140|   138k|    {
  141|   138k|        res.f <<= 1;
  142|   138k|        res.e--;
  143|   138k|    }
  144|       |    /* do the final shifts in one go. Don't forget the hidden bit (the '-1') */
  145|  83.4k|    res.f <<= (diy_significand_size - dp_significand_size - 1);
  146|  83.4k|    res.e = res.e - (diy_significand_size - dp_significand_size - 1);
  147|  83.4k|    return res;
  148|  83.4k|}
_ZN8jsoncons6detail13double2diy_fpEd:
  152|   166k|{
  153|   166k|    uint64_t d64 = double_to_uint64(d);
  154|   166k|    int biased_e = (d64 & dp_exponent_mask) >> dp_significand_size;
  155|   166k|    uint64_t significand = (d64 & dp_significand_mask);
  156|   166k|    diy_fp_t res;
  157|   166k|    if (biased_e != 0)
  ------------------
  |  Branch (157:9): [True: 159k, False: 7.32k]
  ------------------
  158|   159k|    {
  159|   159k|        res.f = significand + dp_hidden_bit;
  160|   159k|        res.e = biased_e - dp_exponent_bias;
  161|   159k|    } 
  162|  7.32k|    else
  163|  7.32k|    {
  164|  7.32k|        res.f = significand;
  165|  7.32k|        res.e = dp_min_exponent + 1;
  166|  7.32k|    }
  167|   166k|    return res;
  168|   166k|}
_ZN8jsoncons6detail16double_to_uint64Ed:
  121|   166k|uint64_t double_to_uint64(double d) {uint64_t d64; std::memcpy(&d64,&d,sizeof(double)); return d64; }
_ZN8jsoncons6detail6k_compEiii:
   83|  83.4k|{
   84|  83.4k|    constexpr double d_1_log2_10 = 0.30102999566398114; //  1 / lg(10)
   85|  83.4k|	int x = alpha - e + 63;
   86|  83.4k|    return static_cast<int>(std::ceil(x * d_1_log2_10));
   87|  83.4k|}
_ZN8jsoncons6detail12cached_powerEi:
   98|  83.4k|{
   99|  83.4k|    diy_fp_t res;
  100|  83.4k|    int index = 343 + k;
  101|  83.4k|    res.f = powers_ten[index];
  102|  83.4k|    res.e = powers_ten_e[index];
  103|  83.4k|    return res;
  104|  83.4k|}
_ZN8jsoncons6detail8multiplyENS0_8diy_fp_tES1_:
   66|   250k|{
   67|   250k|    uint64_t a, b, c, d, ac, bc, ad, bd, tmp;
   68|   250k|    diy_fp_t r; uint64_t M32 = 0xFFFFFFFF;
   69|   250k|    a = x.f >> 32; b = x.f & M32;
   70|   250k|    c = y.f >> 32; d = y.f & M32;
   71|   250k|    ac = a * c; bc = b * c; ad = a * d; bd = b * d;
   72|   250k|    tmp = (bd >> 32) + (ad & M32) + (bc & M32);
   73|   250k|    tmp += 1U << 31; /// mult_round
   74|   250k|    r.f = ac + (ad >> 32) + (bc >> 32) + (tmp >> 32);
   75|   250k|    r.e = x.e + y.e + 64;
   76|   250k|    return r;
   77|   250k|}
_ZN8jsoncons6detail9digit_genENS0_8diy_fp_tES1_S1_PcPiS3_:
  251|  83.4k|{
  252|  83.4k|    const uint32_t TEN2 = 100;
  253|       |
  254|  83.4k|    uint32_t div, p1; uint64_t p2, tmp, unit = 1;
  255|  83.4k|    int d, kappa;
  256|  83.4k|    diy_fp_t one, wp_W, Delta;
  257|  83.4k|    Delta = minus(Wp, Wm); Delta.f += 2 * unit;
  258|  83.4k|    wp_W = minus(Wp, W); wp_W.f += unit;
  259|  83.4k|    one.f = ((uint64_t)1) << -Wp.e; one.e = Wp.e;
  260|  83.4k|    p1 = static_cast<uint32_t>((Wp.f + 1) >> -one.e);
  261|  83.4k|    p2 = (Wp.f + 1) & (one.f - 1);
  262|  83.4k|    *len = 0; kappa = 3; div = TEN2;
  263|   328k|    while (kappa > 0)
  ------------------
  |  Branch (263:12): [True: 247k, False: 80.1k]
  ------------------
  264|   247k|    {
  265|   247k|        d = p1 / div;
  266|   247k|        if (d || *len) buffer[(*len)++] = (char)('0' + d);
  ------------------
  |  Branch (266:13): [True: 162k, False: 85.1k]
  |  Branch (266:18): [True: 3.95k, False: 81.1k]
  ------------------
  267|   247k|        p1 %= div; kappa--;
  268|   247k|        tmp = (((uint64_t)p1) << -one.e) + p2;
  269|   247k|        if (tmp < Delta.f)
  ------------------
  |  Branch (269:13): [True: 3.27k, False: 244k]
  ------------------
  270|  3.27k|        {
  271|  3.27k|            *K += kappa;
  272|  3.27k|            return round_weed(buffer, *len, wp_W.f, Delta.f, tmp,
  273|  3.27k|                              ((uint64_t)div) << -one.e, unit);
  274|  3.27k|        }
  275|   244k|        div /= 10;
  276|   244k|    }
  277|   765k|    while (1)
  ------------------
  |  Branch (277:12): [Folded - Ignored]
  ------------------
  278|   765k|    {
  279|   765k|        p2 *= 10; Delta.f *= 10; unit *= 10;
  280|   765k|        d = static_cast<int>(p2 >> -one.e);
  281|   765k|        if (d || *len) buffer[(*len)++] = (char)('0' + d);
  ------------------
  |  Branch (281:13): [True: 665k, False: 99.9k]
  |  Branch (281:18): [True: 99.9k, False: 0]
  ------------------
  282|   765k|        p2 &= one.f - 1; kappa--;
  283|   765k|        if (p2 < Delta.f)
  ------------------
  |  Branch (283:13): [True: 80.1k, False: 684k]
  ------------------
  284|  80.1k|        {
  285|  80.1k|            *K += kappa;
  286|  80.1k|            return round_weed(buffer, *len, wp_W.f * unit, Delta.f, p2,
  287|  80.1k|                              one.f, unit);
  288|  80.1k|        }
  289|   765k|    }
  290|  80.1k|}
_ZN8jsoncons6detail5minusENS0_8diy_fp_tES1_:
   57|   166k|{
   58|   166k|    assert(x.e == y.e);
   59|      0|    assert(x.f >= y.f);
   60|      0|    diy_fp_t r = { x.f = x.f - y.f, x.e };
   61|   166k|    return r;
   62|   166k|}
_ZN8jsoncons6detail10round_weedEPcimmmmm:
  231|  83.4k|{
  232|  83.4k|    uint64_t wp_Wup = wp_W - ulp;
  233|  83.4k|    uint64_t wp_Wdown = wp_W + ulp;
  234|  95.7k|    while (rest < wp_Wup &&  /// round1
  ------------------
  |  Branch (234:12): [True: 24.8k, False: 70.9k]
  ------------------
  235|  95.7k|           Delta - rest >= ten_kappa &&
  ------------------
  |  Branch (235:12): [True: 17.9k, False: 6.89k]
  ------------------
  236|  95.7k|           (rest + ten_kappa < wp_Wup || /// closer
  ------------------
  |  Branch (236:13): [True: 8.51k, False: 9.39k]
  ------------------
  237|  17.9k|            wp_Wup - rest >= rest + ten_kappa - wp_Wup))
  ------------------
  |  Branch (237:13): [True: 3.78k, False: 5.60k]
  ------------------
  238|  12.3k|    {
  239|  12.3k|        buffer[len - 1]--; rest += ten_kappa;
  240|  12.3k|    }
  241|  83.4k|    if (rest < wp_Wdown && /// round2
  ------------------
  |  Branch (241:9): [True: 55.1k, False: 28.2k]
  ------------------
  242|  83.4k|        Delta - rest >= ten_kappa &&
  ------------------
  |  Branch (242:9): [True: 5.71k, False: 49.4k]
  ------------------
  243|  83.4k|        (rest + ten_kappa < wp_Wdown ||
  ------------------
  |  Branch (243:10): [True: 0, False: 5.71k]
  ------------------
  244|  5.71k|         wp_Wdown - rest > rest + ten_kappa - wp_Wdown)) return 0;
  ------------------
  |  Branch (244:10): [True: 2.09k, False: 3.62k]
  ------------------
  245|  81.3k|    return 2 * ulp <= rest && rest <= Delta - 4 * ulp; /// weed
  ------------------
  |  Branch (245:12): [True: 79.6k, False: 1.75k]
  |  Branch (245:31): [True: 79.4k, False: 179]
  ------------------
  246|  83.4k|}

_ZN8jsoncons6detail19heap_string_factoryIcNS_9null_typeENSt3__19allocatorIcEEE7destroyEPNS0_11heap_stringIcS2_S5_EE:
  147|  10.8k|        {
  148|  10.8k|            if (ptr != nullptr)
  ------------------
  |  Branch (148:17): [True: 10.8k, False: 0]
  ------------------
  149|  10.8k|            {
  150|  10.8k|                heap_string_type* rawp = extension_traits::to_plain_pointer(ptr);
  151|       |
  152|  10.8k|                char* p = launder_cast<char*>(rawp);
  153|       |
  154|  10.8k|                std::size_t mem_size = aligned_size(ptr->length_*sizeof(char_type));
  155|  10.8k|                byte_allocator_type byte_alloc(ptr->get_allocator());
  156|  10.8k|                byte_alloc.deallocate(p,mem_size);
  157|  10.8k|            }
  158|  10.8k|        }
_ZN8jsoncons6detail12launder_castIPcNS0_11heap_stringIcNS_9null_typeENSt3__19allocatorIcEEEEEET_PT0_:
   85|  10.8k|    {
   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|  10.8k|        return reinterpret_cast<T>(u);
   92|  10.8k|    #endif
   93|  10.8k|    }
_ZN8jsoncons6detail19heap_string_factoryIcNS_9null_typeENSt3__19allocatorIcEEE12aligned_sizeEm:
  120|  21.7k|        {
  121|  21.7k|            return sizeof(json_storage_kind) + n;
  122|  21.7k|        }
_ZN8jsoncons6detail16heap_string_baseINS_9null_typeENSt3__19allocatorIcEEE13get_allocatorEv:
   28|  10.8k|        {
   29|  10.8k|            return alloc_;
   30|  10.8k|        }
_ZN8jsoncons6detail19heap_string_factoryIhmNSt3__19allocatorIcEEE7destroyEPNS0_11heap_stringIhmS4_EE:
  147|   233k|        {
  148|   233k|            if (ptr != nullptr)
  ------------------
  |  Branch (148:17): [True: 233k, False: 0]
  ------------------
  149|   233k|            {
  150|   233k|                heap_string_type* rawp = extension_traits::to_plain_pointer(ptr);
  151|       |
  152|   233k|                char* p = launder_cast<char*>(rawp);
  153|       |
  154|   233k|                std::size_t mem_size = aligned_size(ptr->length_*sizeof(char_type));
  155|   233k|                byte_allocator_type byte_alloc(ptr->get_allocator());
  156|   233k|                byte_alloc.deallocate(p,mem_size);
  157|   233k|            }
  158|   233k|        }
_ZN8jsoncons6detail12launder_castIPcNS0_11heap_stringIhmNSt3__19allocatorIcEEEEEET_PT0_:
   85|   233k|    {
   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|   233k|        return reinterpret_cast<T>(u);
   92|   233k|    #endif
   93|   233k|    }
_ZN8jsoncons6detail19heap_string_factoryIhmNSt3__19allocatorIcEEE12aligned_sizeEm:
  120|   467k|        {
  121|   467k|            return sizeof(json_storage_kind) + n;
  122|   467k|        }
_ZN8jsoncons6detail16heap_string_baseImNSt3__19allocatorIcEEE13get_allocatorEv:
   28|   233k|        {
   29|   233k|            return alloc_;
   30|   233k|        }
_ZN8jsoncons6detail19heap_string_factoryIcNS_9null_typeENSt3__19allocatorIcEEE6createEPKcmS2_RKS5_:
  127|  10.8k|        {
  128|  10.8k|            std::size_t mem_size = aligned_size(length*sizeof(char_type));
  129|       |
  130|  10.8k|            byte_allocator_type byte_alloc(alloc);
  131|  10.8k|            byte_pointer ptr = byte_alloc.allocate(mem_size);
  132|       |
  133|  10.8k|            char* storage = extension_traits::to_plain_pointer(ptr);
  134|  10.8k|            heap_string_type* ps = new(storage)heap_string_type(extra, byte_alloc);
  135|       |
  136|  10.8k|            auto psa = launder_cast<storage_t*>(storage); 
  137|       |
  138|  10.8k|            CharT* p = new(&psa->c)char_type[length + 1];
  139|  10.8k|            std::memcpy(p, s, length*sizeof(char_type));
  140|  10.8k|            p[length] = 0;
  141|  10.8k|            ps->p_ = std::pointer_traits<typename heap_string_type::pointer>::pointer_to(*p);
  142|  10.8k|            ps->length_ = length;
  143|  10.8k|            return std::pointer_traits<pointer>::pointer_to(*ps);
  144|  10.8k|        }
_ZN8jsoncons6detail11heap_stringIcNS_9null_typeENSt3__19allocatorIcEEEC2ES2_RKS5_:
   65|  10.8k|        {
   66|  10.8k|        }
_ZN8jsoncons6detail16heap_string_baseINS_9null_typeENSt3__19allocatorIcEEEC2ERKS2_RKS5_:
   39|  10.8k|        {
   40|  10.8k|        }
_ZN8jsoncons6detail12launder_castIPNS0_19heap_string_factoryIcNS_9null_typeENSt3__19allocatorIcEEE9storage_tEcEET_PT0_:
   85|  10.8k|    {
   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|  10.8k|        return reinterpret_cast<T>(u);
   92|  10.8k|    #endif
   93|  10.8k|    }
_ZN8jsoncons6detail19heap_string_factoryIhmNSt3__19allocatorIcEEE6createEPKhmmRKS4_:
  127|   233k|        {
  128|   233k|            std::size_t mem_size = aligned_size(length*sizeof(char_type));
  129|       |
  130|   233k|            byte_allocator_type byte_alloc(alloc);
  131|   233k|            byte_pointer ptr = byte_alloc.allocate(mem_size);
  132|       |
  133|   233k|            char* storage = extension_traits::to_plain_pointer(ptr);
  134|   233k|            heap_string_type* ps = new(storage)heap_string_type(extra, byte_alloc);
  135|       |
  136|   233k|            auto psa = launder_cast<storage_t*>(storage); 
  137|       |
  138|   233k|            CharT* p = new(&psa->c)char_type[length + 1];
  139|   233k|            std::memcpy(p, s, length*sizeof(char_type));
  140|   233k|            p[length] = 0;
  141|   233k|            ps->p_ = std::pointer_traits<typename heap_string_type::pointer>::pointer_to(*p);
  142|   233k|            ps->length_ = length;
  143|   233k|            return std::pointer_traits<pointer>::pointer_to(*ps);
  144|   233k|        }
_ZN8jsoncons6detail11heap_stringIhmNSt3__19allocatorIcEEEC2EmRKS4_:
   65|   233k|        {
   66|   233k|        }
_ZN8jsoncons6detail16heap_string_baseImNSt3__19allocatorIcEEEC2ERKmRKS4_:
   39|   233k|        {
   40|   233k|        }
_ZN8jsoncons6detail12launder_castIPNS0_19heap_string_factoryIhmNSt3__19allocatorIcEEE9storage_tEcEET_PT0_:
   85|   233k|    {
   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|   233k|        return reinterpret_cast<T>(u);
   92|   233k|    #endif
   93|   233k|    }

_ZN8jsoncons6detail8chars_toC2Ev:
 1082|  87.8k|    {
 1083|  87.8k|        struct lconv * lc = localeconv();
 1084|  87.8k|        if (lc != nullptr && lc->decimal_point[0] != 0)
  ------------------
  |  Branch (1084:13): [True: 87.8k, False: 0]
  |  Branch (1084:30): [True: 87.8k, False: 0]
  ------------------
 1085|  87.8k|        {
 1086|  87.8k|            decimal_point_ = lc->decimal_point[0];    
 1087|  87.8k|        }
 1088|      0|        else
 1089|      0|        {
 1090|      0|            decimal_point_ = '.'; 
 1091|      0|        }
 1092|  87.8k|        buffer_.reserve(100);
 1093|  87.8k|    }
_ZNK8jsoncons6detail8chars_toclIcEENSt3__19enable_ifIXsr3std7is_sameIT_cEE5valueEdE4typeEPKS5_m:
 1106|  4.02k|    {
 1107|  4.02k|        CharT *end = nullptr;
 1108|  4.02k|        double val = strtod(s, &end);
 1109|  4.02k|        if (s == end)
  ------------------
  |  Branch (1109:13): [True: 0, False: 4.02k]
  ------------------
 1110|      0|        {
 1111|      0|            JSONCONS_THROW(json_runtime_error<std::invalid_argument>("Convert string to double failed"));
  ------------------
  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  ------------------
 1112|      0|        }
 1113|  4.02k|        return val;
 1114|  4.02k|    }

_ZN8jsoncons6detail4spanIKhLm18446744073709551615EEC2EPS2_m:
   57|   233k|        {
   58|   233k|        }
_ZNK8jsoncons6detail4spanIKhLm18446744073709551615EE4dataEv:
  106|   233k|        {
  107|   233k|            return data_;
  108|   233k|        }
_ZNK8jsoncons6detail4spanIKhLm18446744073709551615EE4sizeEv:
  111|   233k|        {
  112|   233k|            return size_;
  113|   233k|        }

_ZNK8jsoncons6detail17basic_string_viewIcNSt3__111char_traitsIcEEE4dataEv:
  157|  8.50M|        {
  158|  8.50M|            return data_;
  159|  8.50M|        }
_ZNK8jsoncons6detail17basic_string_viewIcNSt3__111char_traitsIcEEE6lengthEv:
  119|  4.25M|        {
  120|  4.25M|            return length_;
  121|  4.25M|        }
_ZNK8jsoncons6detail17basic_string_viewIcNSt3__111char_traitsIcEEE4sizeEv:
  114|  4.25M|        {
  115|  4.25M|            return length_;
  116|  4.25M|        }
_ZN8jsoncons6detail17basic_string_viewIcNSt3__111char_traitsIcEEEC2EPKcm:
   48|  6.68M|        {
   49|  6.68M|        }
_ZN8jsoncons6detail17basic_string_viewIcNSt3__111char_traitsIcEEEC2IS4_NS2_9allocatorIcEEEERKNS2_12basic_stringIcT_T0_EE:
   60|  2.17M|        {
   61|  2.17M|        }
_ZNK8jsoncons6detail17basic_string_viewIcNSt3__111char_traitsIcEEE5beginEv:
   79|   355k|        {
   80|   355k|            return data_;
   81|   355k|        }
_ZNK8jsoncons6detail17basic_string_viewIcNSt3__111char_traitsIcEEE3endEv:
   83|   355k|        {
   84|   355k|            return data_ + length_;
   85|   355k|        }

_ZN8jsoncons6detail12from_integerImNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEENS2_9enable_ifIXsr16extension_traits10is_integerIT_EE5valueEmE4typeESA_RT0_:
   37|  12.0M|    {
   38|  12.0M|        using char_type = typename Result::value_type;
   39|       |
   40|  12.0M|        char_type buf[255];
   41|  12.0M|        char_type *p = buf;
   42|  12.0M|        const char_type* last = buf+255;
   43|       |
   44|  12.0M|        bool is_negative = value < 0;
   45|       |
   46|  12.0M|        if (value < 0)
  ------------------
  |  Branch (46:13): [True: 0, False: 12.0M]
  ------------------
   47|      0|        {
   48|      0|            do
   49|      0|            {
   50|      0|                *p++ = static_cast<char_type>(48 - (value % 10));
   51|      0|            }
   52|      0|            while ((value /= 10) && (p < last));
  ------------------
  |  Branch (52:20): [True: 0, False: 0]
  |  Branch (52:37): [True: 0, False: 0]
  ------------------
   53|      0|        }
   54|  12.0M|        else
   55|  12.0M|        {
   56|       |
   57|  12.0M|            do
   58|  13.4M|            {
   59|  13.4M|                *p++ = static_cast<char_type>(48 + value % 10);
   60|  13.4M|            }
   61|  13.4M|            while ((value /= 10) && (p < last));
  ------------------
  |  Branch (61:20): [True: 1.41M, False: 12.0M]
  |  Branch (61:37): [True: 1.41M, False: 0]
  ------------------
   62|  12.0M|        }
   63|  12.0M|        JSONCONS_ASSERT(p != last);
  ------------------
  |  |  378|  12.0M|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 12.0M]
  |  |  ------------------
  |  |  379|      0|    JSONCONS_THROW(jsoncons::assertion_error("assertion '" #x "' failed at  <> :" \
  |  |  ------------------
  |  |  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  |  |  ------------------
  |  |  380|      0|            JSONCONS_STR( 0 ))); }
  ------------------
   64|       |
   65|  12.0M|        std::size_t count = (p - buf);
   66|  12.0M|        if (is_negative)
  ------------------
  |  Branch (66:13): [True: 0, False: 12.0M]
  ------------------
   67|      0|        {
   68|      0|            result.push_back('-');
   69|      0|            ++count;
   70|      0|        }
   71|  25.5M|        while (--p >= buf)
  ------------------
  |  Branch (71:16): [True: 13.4M, False: 12.0M]
  ------------------
   72|  13.4M|        {
   73|  13.4M|            result.push_back(*p);
   74|  13.4M|        }
   75|       |
   76|  12.0M|        return count;
   77|  12.0M|    }
_ZN8jsoncons6detail12from_integerIlNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEENS2_9enable_ifIXsr16extension_traits10is_integerIT_EE5valueEmE4typeESA_RT0_:
   37|   805k|    {
   38|   805k|        using char_type = typename Result::value_type;
   39|       |
   40|   805k|        char_type buf[255];
   41|   805k|        char_type *p = buf;
   42|   805k|        const char_type* last = buf+255;
   43|       |
   44|   805k|        bool is_negative = value < 0;
   45|       |
   46|   805k|        if (value < 0)
  ------------------
  |  Branch (46:13): [True: 805k, False: 558]
  ------------------
   47|   805k|        {
   48|   805k|            do
   49|  1.29M|            {
   50|  1.29M|                *p++ = static_cast<char_type>(48 - (value % 10));
   51|  1.29M|            }
   52|  1.29M|            while ((value /= 10) && (p < last));
  ------------------
  |  Branch (52:20): [True: 490k, False: 805k]
  |  Branch (52:37): [True: 490k, False: 0]
  ------------------
   53|   805k|        }
   54|    558|        else
   55|    558|        {
   56|       |
   57|    558|            do
   58|  3.24k|            {
   59|  3.24k|                *p++ = static_cast<char_type>(48 + value % 10);
   60|  3.24k|            }
   61|  3.24k|            while ((value /= 10) && (p < last));
  ------------------
  |  Branch (61:20): [True: 2.69k, False: 558]
  |  Branch (61:37): [True: 2.69k, False: 0]
  ------------------
   62|    558|        }
   63|   805k|        JSONCONS_ASSERT(p != last);
  ------------------
  |  |  378|   805k|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 805k]
  |  |  ------------------
  |  |  379|      0|    JSONCONS_THROW(jsoncons::assertion_error("assertion '" #x "' failed at  <> :" \
  |  |  ------------------
  |  |  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  |  |  ------------------
  |  |  380|      0|            JSONCONS_STR( 0 ))); }
  ------------------
   64|       |
   65|   805k|        std::size_t count = (p - buf);
   66|   805k|        if (is_negative)
  ------------------
  |  Branch (66:13): [True: 805k, False: 558]
  ------------------
   67|   805k|        {
   68|   805k|            result.push_back('-');
   69|   805k|            ++count;
   70|   805k|        }
   71|  2.10M|        while (--p >= buf)
  ------------------
  |  Branch (71:16): [True: 1.29M, False: 805k]
  ------------------
   72|  1.29M|        {
   73|  1.29M|            result.push_back(*p);
   74|  1.29M|        }
   75|       |
   76|   805k|        return count;
   77|   805k|    }
_ZN8jsoncons6detail12write_doubleC2ENS_18float_chars_formatEi:
  472|  83.8k|        {
  473|  83.8k|    #if !defined(JSONCONS_NO_LOCALECONV)
  474|  83.8k|            struct lconv *lc = localeconv();
  475|  83.8k|            if (lc != nullptr && lc->decimal_point[0] != 0)
  ------------------
  |  Branch (475:17): [True: 83.8k, False: 0]
  |  Branch (475:34): [True: 83.8k, False: 0]
  ------------------
  476|  83.8k|            {
  477|  83.8k|                decimal_point_ = lc->decimal_point[0];
  478|  83.8k|            }
  479|  83.8k|    #endif
  480|  83.8k|        }
_ZN8jsoncons6detail12write_doubleclINS_11string_sinkINSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEEEEEmdRT_:
  487|  83.8k|        {
  488|  83.8k|            std::size_t count = 0;
  489|       |
  490|  83.8k|            char number_buffer[200];
  491|  83.8k|            int length = 0;
  492|       |
  493|  83.8k|            switch (float_format_)
  494|  83.8k|            {
  495|      0|            case float_chars_format::fixed:
  ------------------
  |  Branch (495:13): [True: 0, False: 83.8k]
  ------------------
  496|      0|                {
  497|      0|                    if (precision_ > 0)
  ------------------
  |  Branch (497:25): [True: 0, False: 0]
  ------------------
  498|      0|                    {
  499|      0|                        length = snprintf(number_buffer, sizeof(number_buffer), "%1.*f", precision_, val);
  500|      0|                        if (length < 0)
  ------------------
  |  Branch (500:29): [True: 0, False: 0]
  ------------------
  501|      0|                        {
  502|      0|                            JSONCONS_THROW(json_runtime_error<std::invalid_argument>("write_double failed."));
  ------------------
  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  ------------------
  503|      0|                        }
  504|      0|                        dump_buffer(number_buffer, length, decimal_point_, result);
  505|      0|                    }
  506|      0|                    else
  507|      0|                    {
  508|      0|                        if (!dtoa_fixed(val, decimal_point_, result))
  ------------------
  |  Branch (508:29): [True: 0, False: 0]
  ------------------
  509|      0|                        {
  510|      0|                            JSONCONS_THROW(json_runtime_error<std::invalid_argument>("write_double failed."));
  ------------------
  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  ------------------
  511|      0|                        }
  512|      0|                    }
  513|      0|                }
  514|      0|                break;
  515|      0|            case float_chars_format::scientific:
  ------------------
  |  Branch (515:13): [True: 0, False: 83.8k]
  ------------------
  516|      0|                {
  517|      0|                    if (precision_ > 0)
  ------------------
  |  Branch (517:25): [True: 0, False: 0]
  ------------------
  518|      0|                    {
  519|      0|                        length = snprintf(number_buffer, sizeof(number_buffer), "%1.*e", precision_, val);
  520|      0|                        if (length < 0)
  ------------------
  |  Branch (520:29): [True: 0, False: 0]
  ------------------
  521|      0|                        {
  522|      0|                            JSONCONS_THROW(json_runtime_error<std::invalid_argument>("write_double failed."));
  ------------------
  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  ------------------
  523|      0|                        }
  524|      0|                        dump_buffer(number_buffer, length, decimal_point_, result);
  525|      0|                    }
  526|      0|                    else
  527|      0|                    {
  528|      0|                        if (!dtoa_scientific(val, decimal_point_, result))
  ------------------
  |  Branch (528:29): [True: 0, False: 0]
  ------------------
  529|      0|                        {
  530|      0|                            JSONCONS_THROW(json_runtime_error<std::invalid_argument>("write_double failed."));
  ------------------
  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  ------------------
  531|      0|                        }
  532|      0|                    }
  533|      0|                }
  534|      0|                break;
  535|  83.8k|            case float_chars_format::general:
  ------------------
  |  Branch (535:13): [True: 83.8k, False: 0]
  ------------------
  536|  83.8k|                {
  537|  83.8k|                    if (precision_ > 0)
  ------------------
  |  Branch (537:25): [True: 0, False: 83.8k]
  ------------------
  538|      0|                    {
  539|      0|                        length = snprintf(number_buffer, sizeof(number_buffer), "%1.*g", precision_, val);
  540|      0|                        if (length < 0)
  ------------------
  |  Branch (540:29): [True: 0, False: 0]
  ------------------
  541|      0|                        {
  542|      0|                            JSONCONS_THROW(json_runtime_error<std::invalid_argument>("write_double failed."));
  ------------------
  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  ------------------
  543|      0|                        }
  544|      0|                        dump_buffer(number_buffer, length, decimal_point_, result);
  545|      0|                    }
  546|  83.8k|                    else
  547|  83.8k|                    {
  548|  83.8k|                        if (!dtoa_general(val, decimal_point_, result))
  ------------------
  |  Branch (548:29): [True: 0, False: 83.8k]
  ------------------
  549|      0|                        {
  550|      0|                            JSONCONS_THROW(json_runtime_error<std::invalid_argument>("write_double failed."));
  ------------------
  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  ------------------
  551|      0|                        }
  552|  83.8k|                    }             
  553|  83.8k|                    break;
  554|  83.8k|                }
  555|  83.8k|                default:
  ------------------
  |  Branch (555:17): [True: 0, False: 83.8k]
  ------------------
  556|      0|                    JSONCONS_THROW(json_runtime_error<std::invalid_argument>("write_double failed."));
  ------------------
  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  ------------------
  557|      0|                    break;
  558|  83.8k|            }
  559|  83.8k|            return count;
  560|  83.8k|        }
_ZN8jsoncons6detail11dump_bufferINS_11string_sinkINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEEEvPKcmcRT_:
  238|  4.02k|    {
  239|  4.02k|        const char *sbeg = buffer;
  240|  4.02k|        const char *send = sbeg + length;
  241|       |
  242|  4.02k|        if (sbeg != send)
  ------------------
  |  Branch (242:13): [True: 4.02k, False: 0]
  ------------------
  243|  4.02k|        {
  244|  4.02k|            bool needs_dot = true;
  245|  75.6k|            for (const char* q = sbeg; q < send; ++q)
  ------------------
  |  Branch (245:40): [True: 71.6k, False: 4.02k]
  ------------------
  246|  71.6k|            {
  247|  71.6k|                switch (*q)
  248|  71.6k|                {
  249|  2.44k|                case '-':
  ------------------
  |  Branch (249:17): [True: 2.44k, False: 69.1k]
  ------------------
  250|  5.99k|                case '0':
  ------------------
  |  Branch (250:17): [True: 3.54k, False: 68.0k]
  ------------------
  251|  14.3k|                case '1':
  ------------------
  |  Branch (251:17): [True: 8.36k, False: 63.2k]
  ------------------
  252|  20.1k|                case '2':
  ------------------
  |  Branch (252:17): [True: 5.74k, False: 65.8k]
  ------------------
  253|  25.0k|                case '3':
  ------------------
  |  Branch (253:17): [True: 4.92k, False: 66.7k]
  ------------------
  254|  28.7k|                case '4':
  ------------------
  |  Branch (254:17): [True: 3.70k, False: 67.9k]
  ------------------
  255|  39.6k|                case '5':
  ------------------
  |  Branch (255:17): [True: 10.8k, False: 60.7k]
  ------------------
  256|  45.1k|                case '6':
  ------------------
  |  Branch (256:17): [True: 5.50k, False: 66.1k]
  ------------------
  257|  52.1k|                case '7':
  ------------------
  |  Branch (257:17): [True: 7.03k, False: 64.6k]
  ------------------
  258|  58.1k|                case '8':
  ------------------
  |  Branch (258:17): [True: 5.98k, False: 65.6k]
  ------------------
  259|  61.8k|                case '9':
  ------------------
  |  Branch (259:17): [True: 3.70k, False: 67.9k]
  ------------------
  260|  63.6k|                case '+':
  ------------------
  |  Branch (260:17): [True: 1.83k, False: 69.8k]
  ------------------
  261|  63.6k|                    result.push_back(*q);
  262|  63.6k|                    break;
  263|  2.43k|                case 'e':
  ------------------
  |  Branch (263:17): [True: 2.43k, False: 69.2k]
  ------------------
  264|  2.43k|                case 'E':
  ------------------
  |  Branch (264:17): [True: 0, False: 71.6k]
  ------------------
  265|  2.43k|                    result.push_back('e');
  266|  2.43k|                    needs_dot = false;
  267|  2.43k|                    break;
  268|  5.50k|                default:
  ------------------
  |  Branch (268:17): [True: 5.50k, False: 66.1k]
  ------------------
  269|  5.50k|                    if (*q == decimal_point)
  ------------------
  |  Branch (269:25): [True: 3.10k, False: 2.40k]
  ------------------
  270|  3.10k|                    {
  271|  3.10k|                        needs_dot = false;
  272|  3.10k|                        result.push_back('.');
  273|  3.10k|                    }
  274|  5.50k|                    break;
  275|  71.6k|                }
  276|  71.6k|            }
  277|  4.02k|            if (needs_dot)
  ------------------
  |  Branch (277:17): [True: 921, False: 3.10k]
  ------------------
  278|    921|            {
  279|    921|                result.push_back('.');
  280|    921|                result.push_back('0');
  281|    921|            }
  282|  4.02k|        }
  283|  4.02k|    }
_ZN8jsoncons6detail15prettify_stringINS_11string_sinkINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEEEvPKcmiiiRT_:
  166|  79.4k|    {
  167|  79.4k|        int nb_digits = (int)length;
  168|  79.4k|        int offset;
  169|       |        /* v = buffer * 10^k
  170|       |           kk is such that 10^(kk-1) <= v < 10^kk
  171|       |           this way kk gives the position of the decimal point.
  172|       |        */
  173|  79.4k|        int kk = nb_digits + k;
  174|       |
  175|  79.4k|        if (nb_digits <= kk && kk <= max_exp)
  ------------------
  |  Branch (175:13): [True: 40.3k, False: 39.0k]
  |  Branch (175:32): [True: 36.2k, False: 4.10k]
  ------------------
  176|  36.2k|        {
  177|       |            /* the first digits are already in. Add some 0s and call it a day. */
  178|       |            /* the max_exp is a personal choice. Only 16 digits could possibly be relevant.
  179|       |             * Basically we want to print 12340000000 rather than 1234.0e7 or 1.234e10 */
  180|   291k|            for (int i = 0; i < nb_digits; ++i)
  ------------------
  |  Branch (180:29): [True: 255k, False: 36.2k]
  ------------------
  181|   255k|            {
  182|   255k|                result.push_back(buffer[i]);
  183|   255k|            }
  184|  38.6k|            for (int i = nb_digits; i < kk; ++i)
  ------------------
  |  Branch (184:37): [True: 2.40k, False: 36.2k]
  ------------------
  185|  2.40k|            {
  186|  2.40k|                result.push_back('0');
  187|  2.40k|            }
  188|  36.2k|            result.push_back('.');
  189|  36.2k|            result.push_back('0');
  190|  36.2k|        } 
  191|  43.1k|        else if (0 < kk && kk <= max_exp)
  ------------------
  |  Branch (191:18): [True: 33.2k, False: 9.98k]
  |  Branch (191:28): [True: 29.1k, False: 4.10k]
  ------------------
  192|  29.1k|        {
  193|       |            /* comma number. Just insert a '.' at the correct location. */
  194|   123k|            for (int i = 0; i < kk; ++i)
  ------------------
  |  Branch (194:29): [True: 94.5k, False: 29.1k]
  ------------------
  195|  94.5k|            {
  196|  94.5k|                result.push_back(buffer[i]);
  197|  94.5k|            }
  198|  29.1k|            result.push_back('.');
  199|   363k|            for (int i = kk; i < nb_digits; ++i)
  ------------------
  |  Branch (199:30): [True: 334k, False: 29.1k]
  ------------------
  200|   334k|            {
  201|   334k|                result.push_back(buffer[i]);
  202|   334k|            }
  203|  29.1k|        } 
  204|  14.0k|        else if (min_exp < kk && kk <= 0)
  ------------------
  |  Branch (204:18): [True: 6.30k, False: 7.78k]
  |  Branch (204:34): [True: 2.19k, False: 4.10k]
  ------------------
  205|  2.19k|        {
  206|  2.19k|            offset = 2 - kk;
  207|       |
  208|  2.19k|            result.push_back('0');
  209|  2.19k|            result.push_back('.');
  210|  5.89k|            for (int i = 2; i < offset; ++i) 
  ------------------
  |  Branch (210:29): [True: 3.70k, False: 2.19k]
  ------------------
  211|  3.70k|                result.push_back('0');
  212|  30.0k|            for (int i = 0; i < nb_digits; ++i)
  ------------------
  |  Branch (212:29): [True: 27.8k, False: 2.19k]
  ------------------
  213|  27.8k|            {
  214|  27.8k|                result.push_back(buffer[i]);
  215|  27.8k|            }
  216|  2.19k|        } 
  217|  11.8k|        else if (nb_digits == 1)
  ------------------
  |  Branch (217:18): [True: 2.31k, False: 9.57k]
  ------------------
  218|  2.31k|        {
  219|  2.31k|            result.push_back(buffer[0]);
  220|  2.31k|            result.push_back('e');
  221|  2.31k|            fill_exponent(kk - 1, result);
  222|  2.31k|        } 
  223|  9.57k|        else
  224|  9.57k|        {
  225|  9.57k|            result.push_back(buffer[0]);
  226|  9.57k|            result.push_back('.');
  227|   151k|            for (int i = 1; i < nb_digits; ++i)
  ------------------
  |  Branch (227:29): [True: 142k, False: 9.57k]
  ------------------
  228|   142k|            {
  229|   142k|                result.push_back(buffer[i]);
  230|   142k|            }
  231|  9.57k|            result.push_back('e');
  232|  9.57k|            fill_exponent(kk - 1, result);
  233|  9.57k|        }
  234|  79.4k|    }
_ZN8jsoncons6detail13fill_exponentINS_11string_sinkINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEEEviRT_:
  131|  11.8k|    {
  132|  11.8k|        if (K < 0)
  ------------------
  |  Branch (132:13): [True: 7.78k, False: 4.10k]
  ------------------
  133|  7.78k|        {
  134|  7.78k|            result.push_back('-');
  135|  7.78k|            K = -K;
  136|  7.78k|        }
  137|  4.10k|        else
  138|  4.10k|        {
  139|  4.10k|            result.push_back('+'); // compatibility with sprintf
  140|  4.10k|        }
  141|       |
  142|  11.8k|        if (K < 10)
  ------------------
  |  Branch (142:13): [True: 923, False: 10.9k]
  ------------------
  143|    923|        {
  144|    923|            result.push_back('0'); // compatibility with sprintf
  145|    923|            result.push_back((char)('0' + K));
  146|    923|        }
  147|  10.9k|        else if (K < 100)
  ------------------
  |  Branch (147:18): [True: 6.01k, False: 4.95k]
  ------------------
  148|  6.01k|        {
  149|  6.01k|            result.push_back((char)('0' + K / 10)); K %= 10;
  150|  6.01k|            result.push_back((char)('0' + K));
  151|  6.01k|        }
  152|  4.95k|        else if (K < 1000)
  ------------------
  |  Branch (152:18): [True: 4.95k, False: 0]
  ------------------
  153|  4.95k|        {
  154|  4.95k|            result.push_back((char)('0' + K / 100)); K %= 100;
  155|  4.95k|            result.push_back((char)('0' + K / 10)); K %= 10;
  156|  4.95k|            result.push_back((char)('0' + K));
  157|  4.95k|        }
  158|      0|        else
  159|      0|        {
  160|      0|            jsoncons::detail::from_integer(K, result);
  161|      0|        }
  162|  11.8k|    }
_ZN8jsoncons6detail12dtoa_generalINS_11string_sinkINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEEEbdcRT_:
  458|  83.8k|    {
  459|  83.8k|        return dtoa_general(v, decimal_point, result, std::integral_constant<bool, std::numeric_limits<double>::is_iec559>());
  460|  83.8k|    }
_ZN8jsoncons6detail12dtoa_generalINS_11string_sinkINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEEEbdcRT_NS3_17integral_constantIbLb1EEE:
  353|  83.8k|    {
  354|  83.8k|        if (v == 0)
  ------------------
  |  Branch (354:13): [True: 344, False: 83.4k]
  ------------------
  355|    344|        {
  356|    344|            result.push_back('0');
  357|    344|            result.push_back('.');
  358|    344|            result.push_back('0');
  359|    344|            return true;
  360|    344|        }
  361|       |
  362|  83.4k|        int length = 0;
  363|  83.4k|        int k;
  364|       |
  365|  83.4k|        char buffer[100];
  366|       |
  367|  83.4k|        double u = std::signbit(v) ? -v : v;
  ------------------
  |  Branch (367:20): [True: 73.7k, False: 9.69k]
  ------------------
  368|  83.4k|        if (jsoncons::detail::grisu3(u, buffer, &length, &k))
  ------------------
  |  Branch (368:13): [True: 79.4k, False: 4.02k]
  ------------------
  369|  79.4k|        {
  370|  79.4k|            if (std::signbit(v))
  ------------------
  |  Branch (370:17): [True: 71.9k, False: 7.50k]
  ------------------
  371|  71.9k|            {
  372|  71.9k|                result.push_back('-');
  373|  71.9k|            }
  374|       |            // min exp: -4 is consistent with sprintf
  375|       |            // max exp: std::numeric_limits<double>::max_digits10
  376|  79.4k|            jsoncons::detail::prettify_string(buffer, length, k, -4, std::numeric_limits<double>::max_digits10, result);
  377|  79.4k|            return true;
  378|  79.4k|        }
  379|  4.02k|        else
  380|  4.02k|        {
  381|  4.02k|            return dtoa_general(v, decimal_point, result, std::false_type());
  382|  4.02k|        }
  383|  83.4k|    }
_ZN8jsoncons6detail12dtoa_generalINS_11string_sinkINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEEEbdcRT_NS3_17integral_constantIbLb0EEE:
  320|  4.02k|    {
  321|  4.02k|        if (val == 0)
  ------------------
  |  Branch (321:13): [True: 0, False: 4.02k]
  ------------------
  322|      0|        {
  323|      0|            result.push_back('0');
  324|      0|            result.push_back('.');
  325|      0|            result.push_back('0');
  326|      0|            return true;
  327|      0|        }
  328|       |
  329|  4.02k|        jsoncons::detail::chars_to to_double_;
  330|       |
  331|  4.02k|        char buffer[100];
  332|  4.02k|        int precision = std::numeric_limits<double>::digits10;
  333|  4.02k|        int length = snprintf(buffer, sizeof(buffer), "%1.*g", precision, val);
  334|  4.02k|        if (length < 0)
  ------------------
  |  Branch (334:13): [True: 0, False: 4.02k]
  ------------------
  335|      0|        {
  336|      0|            return false;
  337|      0|        }
  338|  4.02k|        if (to_double_(buffer, sizeof(buffer)) != val)
  ------------------
  |  Branch (338:13): [True: 3.74k, False: 281]
  ------------------
  339|  3.74k|        {
  340|  3.74k|            const int precision2 = std::numeric_limits<double>::max_digits10;
  341|  3.74k|            length = snprintf(buffer, sizeof(buffer), "%1.*g", precision2, val);
  342|  3.74k|            if (length < 0)
  ------------------
  |  Branch (342:17): [True: 0, False: 3.74k]
  ------------------
  343|      0|            {
  344|      0|                return false;
  345|      0|            }
  346|  3.74k|        }
  347|  4.02k|        dump_buffer(buffer, length, decimal_point, result);
  348|  4.02k|        return true;
  349|  4.02k|    }

_ZN8jsoncons16extension_traits16to_plain_pointerINS_6detail11heap_stringIcNS_9null_typeENSt3__19allocatorIcEEEEEEPT_SA_:
  238|  10.8k|    {       
  239|  10.8k|        return (ptr);
  240|  10.8k|    }  
_ZN8jsoncons16extension_traits16to_plain_pointerINS_6detail11heap_stringIhmNSt3__19allocatorIcEEEEEEPT_S9_:
  238|   233k|    {       
  239|   233k|        return (ptr);
  240|   233k|    }  
_ZN8jsoncons16extension_traits16to_plain_pointerIcEEPT_S3_:
  238|   244k|    {       
  239|   244k|        return (ptr);
  240|   244k|    }  
_ZN8jsoncons16extension_traits16to_plain_pointerINS_18sorted_json_objectINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES8_EENS3_6vectorEEEEEPT_SG_:
  238|  5.12M|    {       
  239|  5.12M|        return (ptr);
  240|  5.12M|    }  
_ZN8jsoncons16extension_traits16to_plain_pointerINS_10json_arrayINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEENS5_6vectorEEEEEPT_SC_:
  238|  4.63M|    {       
  239|  4.63M|        return (ptr);
  240|  4.63M|    }  
_ZN8jsoncons16extension_traits16to_plain_pointerImEEPT_S3_:
  238|   424k|    {       
  239|   424k|        return (ptr);
  240|   424k|    }  

_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEEC2ERNS_18basic_json_visitorIcEERKS3_:
  832|  6.12k|        {
  833|  6.12k|            level_stack_.emplace_back(target_t::destination,container_t::root); // root
  834|  6.12k|        }
_ZN8jsoncons24basic_item_event_visitorIcEC2Ev:
   33|  6.12k|        basic_item_event_visitor() = default;
_ZN8jsoncons24basic_item_event_visitorIcE11begin_arrayEmNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  271|  5.09M|        {
  272|  5.09M|            return visit_begin_array(length, tag, context, ec);
  273|  5.09M|        }
_ZN8jsoncons24basic_item_event_visitorIcE12uint64_valueEmNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  332|  25.5M|        {
  333|  25.5M|            return visit_uint64(value, tag, context, ec);
  334|  25.5M|        }
_ZN8jsoncons24basic_item_event_visitorIcE9end_arrayERKNS_11ser_contextERNSt3__110error_codeE:
  276|  5.06M|        {
  277|  5.06M|            return visit_end_array(context, ec);
  278|  5.06M|        }
_ZN8jsoncons24basic_item_event_visitorIcE11int64_valueElNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  340|  4.40M|        {
  341|  4.40M|            return visit_int64(value, tag, context, ec);
  342|  4.40M|        }
_ZN8jsoncons24basic_item_event_visitorIcE12double_valueEdNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  356|   196k|        {
  357|   196k|            return visit_double(value, tag, context, ec);
  358|   196k|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE5levelC2ENS4_8target_tENS4_11container_tE:
  770|  8.16M|            {
  771|  8.16M|            }
_ZN8jsoncons24basic_item_event_visitorIcED2Ev:
   35|  6.12k|        virtual ~basic_item_event_visitor() noexcept = default;
_ZNK8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE5level6is_keyEv:
  786|   214M|            {
  787|   214M|                return even_odd_ == 0;
  788|   214M|            }
_ZNK8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE5level6targetEv:
  796|   136M|            {
  797|   136M|                return state_;
  798|   136M|            }
_ZNK8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE5level5countEv:
  801|  28.9M|            {
  802|  28.9M|                return count_;
  803|  28.9M|            }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE18visit_begin_objectEmNS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
  888|  3.06M|        {
  889|  3.06M|            if (level_stack_.back().is_key())
  ------------------
  |  Branch (889:17): [True: 197k, False: 2.86M]
  ------------------
  890|   197k|            {
  891|   197k|                if (level_stack_.back().target() == target_t::buffer && level_stack_.back().count() > 0)
  ------------------
  |  Branch (891:21): [True: 178k, False: 18.4k]
  |  Branch (891:73): [True: 113k, False: 65.1k]
  ------------------
  892|   113k|                {
  893|   113k|                    key_buffer_.push_back(',');
  894|   113k|                }
  895|   197k|                level_stack_.emplace_back(target_t::buffer, container_t::object);
  896|   197k|                key_buffer_.push_back('{');
  897|   197k|                return true;
  898|   197k|            }
  899|  2.86M|            else
  900|  2.86M|            {
  901|  2.86M|                switch (level_stack_.back().target())
  902|  2.86M|                {
  903|   302k|                    case target_t::buffer:
  ------------------
  |  Branch (903:21): [True: 302k, False: 2.56M]
  ------------------
  904|   302k|                        if (!level_stack_.back().is_object() && level_stack_.back().count() > 0)
  ------------------
  |  Branch (904:29): [True: 76.5k, False: 226k]
  |  Branch (904:65): [True: 73.8k, False: 2.77k]
  ------------------
  905|  73.8k|                        {
  906|  73.8k|                            key_buffer_.push_back(',');
  907|  73.8k|                        }
  908|   302k|                        level_stack_.emplace_back(target_t::buffer, container_t::object);
  909|   302k|                        key_buffer_.push_back('{');
  910|   302k|                        return true;
  911|  2.56M|                    default:
  ------------------
  |  Branch (911:21): [True: 2.56M, False: 302k]
  ------------------
  912|  2.56M|                        level_stack_.emplace_back(target_t::destination, container_t::object);
  913|  2.56M|                        return destination_->begin_object(length, tag, context, ec);
  914|  2.86M|                }
  915|  2.86M|            }
  916|  3.06M|        }
_ZNK8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE5level9is_objectEv:
  791|   102M|            {
  792|   102M|                return type_ == container_t::object;
  793|   102M|            }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE16visit_end_objectERKNS_11ser_contextERNS1_10error_codeE:
  919|  3.04M|        {
  920|  3.04M|            bool retval = true;
  921|  3.04M|            switch (level_stack_.back().target())
  922|  3.04M|            {
  923|   490k|                case target_t::buffer:
  ------------------
  |  Branch (923:17): [True: 490k, False: 2.55M]
  ------------------
  924|   490k|                    key_buffer_.push_back('}');
  925|   490k|                    JSONCONS_ASSERT(level_stack_.size() > 1);
  ------------------
  |  |  378|   490k|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 490k]
  |  |  ------------------
  |  |  379|      0|    JSONCONS_THROW(jsoncons::assertion_error("assertion '" #x "' failed at  <> :" \
  |  |  ------------------
  |  |  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  |  |  ------------------
  |  |  380|      0|            JSONCONS_STR( 0 ))); }
  ------------------
  926|   490k|                    level_stack_.pop_back();
  927|       |                    
  928|   490k|                    if (level_stack_.back().target() == target_t::destination)
  ------------------
  |  Branch (928:25): [True: 17.5k, False: 473k]
  ------------------
  929|  17.5k|                    {
  930|  17.5k|                        retval = destination_->key(key_buffer_,context, ec);
  931|  17.5k|                        key_buffer_.clear();
  932|  17.5k|                    }
  933|   473k|                    else if (level_stack_.back().is_key())
  ------------------
  |  Branch (933:30): [True: 175k, False: 297k]
  ------------------
  934|   175k|                    {
  935|   175k|                        key_buffer_.push_back(':');
  936|   175k|                    }
  937|   490k|                    level_stack_.back().advance();
  938|   490k|                    break;
  939|  2.55M|                default:
  ------------------
  |  Branch (939:17): [True: 2.55M, False: 490k]
  ------------------
  940|  2.55M|                    JSONCONS_ASSERT(level_stack_.size() > 1);
  ------------------
  |  |  378|  2.55M|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 2.55M]
  |  |  ------------------
  |  |  379|      0|    JSONCONS_THROW(jsoncons::assertion_error("assertion '" #x "' failed at  <> :" \
  |  |  ------------------
  |  |  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  |  |  ------------------
  |  |  380|      0|            JSONCONS_STR( 0 ))); }
  ------------------
  941|  2.55M|                    level_stack_.pop_back();
  942|  2.55M|                    level_stack_.back().advance();
  943|  2.55M|                    retval = destination_->end_object(context, ec);
  944|  2.55M|                    break;
  945|  3.04M|            }
  946|  3.04M|            return retval;
  947|  3.04M|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE5level7advanceEv:
  774|  74.0M|            {
  775|  74.0M|                if (!is_key())
  ------------------
  |  Branch (775:21): [True: 60.9M, False: 13.0M]
  ------------------
  776|  60.9M|                {
  777|  60.9M|                    ++count_;
  778|  60.9M|                }
  779|  74.0M|                if (is_object())
  ------------------
  |  Branch (779:21): [True: 26.1M, False: 47.8M]
  ------------------
  780|  26.1M|                {
  781|  26.1M|                    even_odd_ = !even_odd_;
  782|  26.1M|                }
  783|  74.0M|            }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE17visit_begin_arrayEmNS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
  981|  5.09M|        {
  982|  5.09M|            if (level_stack_.back().is_key())
  ------------------
  |  Branch (982:17): [True: 646k, False: 4.44M]
  ------------------
  983|   646k|            {
  984|   646k|                if (level_stack_.back().target() == target_t::buffer && level_stack_.back().count() > 0)
  ------------------
  |  Branch (984:21): [True: 392k, False: 254k]
  |  Branch (984:73): [True: 390k, False: 2.15k]
  ------------------
  985|   390k|                {
  986|   390k|                    key_buffer_.push_back(',');
  987|   390k|                }
  988|   646k|                level_stack_.emplace_back(target_t::buffer, container_t::array);
  989|   646k|                key_buffer_.push_back('[');
  990|   646k|                return true;
  991|   646k|            }
  992|  4.44M|            else
  993|  4.44M|            {
  994|  4.44M|                switch (level_stack_.back().target())
  995|  4.44M|                {
  996|  2.12M|                    case target_t::buffer:
  ------------------
  |  Branch (996:21): [True: 2.12M, False: 2.31M]
  ------------------
  997|  2.12M|                        if (!level_stack_.back().is_object() && level_stack_.back().count() > 0)
  ------------------
  |  Branch (997:29): [True: 1.73M, False: 389k]
  |  Branch (997:65): [True: 1.68M, False: 50.6k]
  ------------------
  998|  1.68M|                        {
  999|  1.68M|                            key_buffer_.push_back(',');
 1000|  1.68M|                        }
 1001|  2.12M|                        level_stack_.emplace_back(target_t::buffer, container_t::array);
 1002|  2.12M|                        key_buffer_.push_back('[');
 1003|  2.12M|                        return true;
 1004|  2.31M|                    default:
  ------------------
  |  Branch (1004:21): [True: 2.31M, False: 2.12M]
  ------------------
 1005|  2.31M|                        level_stack_.emplace_back(target_t::destination, container_t::array);
 1006|  2.31M|                        return destination_->begin_array(length, tag, context, ec);
 1007|  4.44M|                }
 1008|  4.44M|            }
 1009|  5.09M|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE15visit_end_arrayERKNS_11ser_contextERNS1_10error_codeE:
 1012|  5.06M|        {
 1013|  5.06M|            bool retval = true;
 1014|  5.06M|            switch (level_stack_.back().target())
 1015|  5.06M|            {
 1016|  2.76M|                case target_t::buffer:
  ------------------
  |  Branch (1016:17): [True: 2.76M, False: 2.29M]
  ------------------
 1017|  2.76M|                    key_buffer_.push_back(']');
 1018|  2.76M|                    JSONCONS_ASSERT(level_stack_.size() > 1);
  ------------------
  |  |  378|  2.76M|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 2.76M]
  |  |  ------------------
  |  |  379|      0|    JSONCONS_THROW(jsoncons::assertion_error("assertion '" #x "' failed at  <> :" \
  |  |  ------------------
  |  |  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  |  |  ------------------
  |  |  380|      0|            JSONCONS_STR( 0 ))); }
  ------------------
 1019|  2.76M|                    level_stack_.pop_back();
 1020|  2.76M|                    if (level_stack_.back().target() == target_t::destination)
  ------------------
  |  Branch (1020:25): [True: 253k, False: 2.51M]
  ------------------
 1021|   253k|                    {
 1022|   253k|                        retval = destination_->key(key_buffer_, context, ec);
 1023|   253k|                        key_buffer_.clear();
 1024|   253k|                    }
 1025|  2.51M|                    else if (level_stack_.back().is_key())
  ------------------
  |  Branch (1025:30): [True: 391k, False: 2.12M]
  ------------------
 1026|   391k|                    {
 1027|   391k|                        key_buffer_.push_back(':');
 1028|   391k|                    }
 1029|  2.76M|                    level_stack_.back().advance();
 1030|  2.76M|                    break;
 1031|  2.29M|                default:
  ------------------
  |  Branch (1031:17): [True: 2.29M, False: 2.76M]
  ------------------
 1032|  2.29M|                    JSONCONS_ASSERT(level_stack_.size() > 1);
  ------------------
  |  |  378|  2.29M|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 2.29M]
  |  |  ------------------
  |  |  379|      0|    JSONCONS_THROW(jsoncons::assertion_error("assertion '" #x "' failed at  <> :" \
  |  |  ------------------
  |  |  |  |  237|      0|    #define JSONCONS_THROW(exception) throw exception
  |  |  ------------------
  |  |  380|      0|            JSONCONS_STR( 0 ))); }
  ------------------
 1033|  2.29M|                    level_stack_.pop_back();
 1034|  2.29M|                    level_stack_.back().advance();
 1035|  2.29M|                    retval = destination_->end_array(context, ec);
 1036|  2.29M|                    break;
 1037|  5.06M|            }
 1038|  5.06M|            return retval;
 1039|  5.06M|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE10visit_nullENS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
 1473|  4.11M|        {
 1474|  4.11M|            if (level_stack_.back().is_key() || level_stack_.back().target() == target_t::buffer)
  ------------------
  |  Branch (1474:17): [True: 391k, False: 3.72M]
  |  Branch (1474:49): [True: 481k, False: 3.24M]
  ------------------
 1475|   872k|            {
 1476|   872k|                key_.clear(); 
 1477|   872k|                key_.insert(key_.begin(), null_constant.begin(), null_constant.end());
 1478|   872k|            }
 1479|       |
 1480|  4.11M|            bool retval;
 1481|  4.11M|            if (level_stack_.back().is_key())
  ------------------
  |  Branch (1481:17): [True: 391k, False: 3.72M]
  ------------------
 1482|   391k|            {
 1483|   391k|                switch (level_stack_.back().target())
 1484|   391k|                {
 1485|   369k|                    case target_t::buffer:
  ------------------
  |  Branch (1485:21): [True: 369k, False: 22.1k]
  ------------------
 1486|   369k|                        if (level_stack_.back().count() > 0)
  ------------------
  |  Branch (1486:29): [True: 368k, False: 985]
  ------------------
 1487|   368k|                        {
 1488|   368k|                            key_buffer_.push_back(',');
 1489|   368k|                        }
 1490|   369k|                        key_buffer_.insert(key_buffer_.end(), key_.begin(), key_.end());
 1491|   369k|                        key_buffer_.push_back(':');
 1492|   369k|                        retval = true; 
 1493|   369k|                        break;
 1494|  22.1k|                    default:
  ------------------
  |  Branch (1494:21): [True: 22.1k, False: 369k]
  ------------------
 1495|  22.1k|                        retval = destination_->key(key_, context, ec);
 1496|  22.1k|                        break;
 1497|   391k|                }
 1498|   391k|            }
 1499|  3.72M|            else
 1500|  3.72M|            {
 1501|  3.72M|                switch (level_stack_.back().target())
 1502|  3.72M|                {
 1503|   481k|                    case target_t::buffer:
  ------------------
  |  Branch (1503:21): [True: 481k, False: 3.24M]
  ------------------
 1504|   481k|                        if (!level_stack_.back().is_object() && level_stack_.back().count() > 0)
  ------------------
  |  Branch (1504:29): [True: 117k, False: 364k]
  |  Branch (1504:65): [True: 116k, False: 619]
  ------------------
 1505|   116k|                        {
 1506|   116k|                            key_buffer_.push_back(',');
 1507|   116k|                        }
 1508|   481k|                        key_buffer_.insert(key_buffer_.end(), key_.begin(), key_.end());
 1509|   481k|                        retval = true; 
 1510|   481k|                        break;
 1511|  3.24M|                    default:
  ------------------
  |  Branch (1511:21): [True: 3.24M, False: 481k]
  ------------------
 1512|  3.24M|                        retval = destination_->null_value(tag, context, ec);
 1513|  3.24M|                        break;
 1514|  3.72M|                }
 1515|  3.72M|            }
 1516|       |
 1517|  4.11M|            level_stack_.back().advance();
 1518|  4.11M|            return retval;
 1519|  4.11M|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE10visit_boolEbNS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
 1417|  28.8M|        {
 1418|  28.8M|            if (level_stack_.back().is_key() || level_stack_.back().target() == target_t::buffer)
  ------------------
  |  Branch (1418:17): [True: 7.04M, False: 21.8M]
  |  Branch (1418:49): [True: 17.3M, False: 4.44M]
  ------------------
 1419|  24.4M|            {
 1420|  24.4M|                key_.clear(); 
 1421|  24.4M|                if (value)
  ------------------
  |  Branch (1421:21): [True: 46.7k, False: 24.3M]
  ------------------
 1422|  46.7k|                {
 1423|  46.7k|                    key_.insert(key_.begin(), true_constant.begin(), true_constant.end());
 1424|  46.7k|                }
 1425|  24.3M|                else
 1426|  24.3M|                {
 1427|  24.3M|                    key_.insert(key_.begin(), false_constant.begin(), false_constant.end());
 1428|  24.3M|                }
 1429|  24.4M|            }
 1430|       |
 1431|  28.8M|            bool retval;
 1432|  28.8M|            if (level_stack_.back().is_key())
  ------------------
  |  Branch (1432:17): [True: 7.04M, False: 21.8M]
  ------------------
 1433|  7.04M|            {
 1434|  7.04M|                switch (level_stack_.back().target())
 1435|  7.04M|                {
 1436|  6.73M|                    case target_t::buffer:
  ------------------
  |  Branch (1436:21): [True: 6.73M, False: 311k]
  ------------------
 1437|  6.73M|                        if (level_stack_.back().count() > 0)
  ------------------
  |  Branch (1437:29): [True: 6.64M, False: 92.0k]
  ------------------
 1438|  6.64M|                        {
 1439|  6.64M|                            key_buffer_.push_back(',');
 1440|  6.64M|                        }
 1441|  6.73M|                        key_buffer_.insert(key_buffer_.end(), key_.begin(), key_.end());
 1442|  6.73M|                        key_buffer_.push_back(':');
 1443|  6.73M|                        retval = true; 
 1444|  6.73M|                        break;
 1445|   311k|                    default:
  ------------------
  |  Branch (1445:21): [True: 311k, False: 6.73M]
  ------------------
 1446|   311k|                        retval = destination_->key(key_, context, ec);
 1447|   311k|                        break;
 1448|  7.04M|                }
 1449|  7.04M|            }
 1450|  21.8M|            else
 1451|  21.8M|            {
 1452|  21.8M|                switch (level_stack_.back().target())
 1453|  21.8M|                {
 1454|  17.3M|                    case target_t::buffer:
  ------------------
  |  Branch (1454:21): [True: 17.3M, False: 4.44M]
  ------------------
 1455|  17.3M|                        if (!level_stack_.back().is_object() && level_stack_.back().count() > 0)
  ------------------
  |  Branch (1455:29): [True: 10.6M, False: 6.73M]
  |  Branch (1455:65): [True: 10.6M, False: 11.5k]
  ------------------
 1456|  10.6M|                        {
 1457|  10.6M|                            key_buffer_.push_back(',');
 1458|  10.6M|                        }
 1459|  17.3M|                        key_buffer_.insert(key_buffer_.end(), key_.begin(), key_.end());
 1460|  17.3M|                        retval = true; 
 1461|  17.3M|                        break;
 1462|  4.44M|                    default:
  ------------------
  |  Branch (1462:21): [True: 4.44M, False: 17.3M]
  ------------------
 1463|  4.44M|                        retval = destination_->bool_value(value, tag, context, ec);
 1464|  4.44M|                        break;
 1465|  21.8M|                }
 1466|  21.8M|            }
 1467|       |
 1468|  28.8M|            level_stack_.back().advance();
 1469|  28.8M|            return retval;
 1470|  28.8M|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE12visit_stringERKNS_6detail17basic_string_viewIcNS1_11char_traitsIcEEEENS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
 1045|  2.48M|        {
 1046|  2.48M|            bool retval;
 1047|       |
 1048|  2.48M|            if (level_stack_.back().is_key())
  ------------------
  |  Branch (1048:17): [True: 209k, False: 2.27M]
  ------------------
 1049|   209k|            {
 1050|   209k|                switch (level_stack_.back().target())
 1051|   209k|                {
 1052|   143k|                    case target_t::buffer:
  ------------------
  |  Branch (1052:21): [True: 143k, False: 66.1k]
  ------------------
 1053|   143k|                        if (level_stack_.back().count() > 0)
  ------------------
  |  Branch (1053:29): [True: 141k, False: 1.88k]
  ------------------
 1054|   141k|                        {
 1055|   141k|                            key_buffer_.push_back(',');
 1056|   141k|                        }
 1057|   143k|                        key_buffer_.push_back('\"');
 1058|   143k|                        key_buffer_.insert(key_buffer_.end(), value.begin(), value.end());
 1059|   143k|                        key_buffer_.push_back('\"');
 1060|   143k|                        key_buffer_.push_back(':');
 1061|   143k|                        retval = true;
 1062|   143k|                        break;
 1063|  66.1k|                    default:
  ------------------
  |  Branch (1063:21): [True: 66.1k, False: 143k]
  ------------------
 1064|  66.1k|                        retval = destination_->key(value, context, ec);
 1065|  66.1k|                        break;
 1066|   209k|                }
 1067|   209k|            }
 1068|  2.27M|            else
 1069|  2.27M|            {
 1070|  2.27M|                switch (level_stack_.back().target())
 1071|  2.27M|                {
 1072|   212k|                    case target_t::buffer:
  ------------------
  |  Branch (1072:21): [True: 212k, False: 2.06M]
  ------------------
 1073|   212k|                        if (!level_stack_.back().is_object() && level_stack_.back().count() > 0)
  ------------------
  |  Branch (1073:29): [True: 70.2k, False: 141k]
  |  Branch (1073:65): [True: 68.7k, False: 1.47k]
  ------------------
 1074|  68.7k|                        {
 1075|  68.7k|                            key_buffer_.push_back(',');
 1076|  68.7k|                        }
 1077|   212k|                        key_buffer_.push_back('\"');
 1078|   212k|                        key_buffer_.insert(key_buffer_.end(), value.begin(), value.end());
 1079|   212k|                        key_buffer_.push_back('\"');
 1080|   212k|                        retval = true;
 1081|   212k|                        break;
 1082|  2.06M|                    default:
  ------------------
  |  Branch (1082:21): [True: 2.06M, False: 212k]
  ------------------
 1083|  2.06M|                        retval = destination_->string_value(value, tag, context, ec);
 1084|  2.06M|                        break;
 1085|  2.27M|                }
 1086|  2.27M|            }
 1087|       |
 1088|  2.48M|            level_stack_.back().advance();
 1089|  2.48M|            return retval;
 1090|  2.48M|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE17visit_byte_stringERKNS_16byte_string_viewENS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
 1096|   164k|        {
 1097|   164k|            if (level_stack_.back().is_key() || level_stack_.back().target() == target_t::buffer)
  ------------------
  |  Branch (1097:17): [True: 14.2k, False: 150k]
  |  Branch (1097:49): [True: 19.2k, False: 131k]
  ------------------
 1098|  33.5k|            {
 1099|  33.5k|                key_.clear();
 1100|  33.5k|                switch (tag)
 1101|  33.5k|                {
 1102|      0|                    case semantic_tag::base64:
  ------------------
  |  Branch (1102:21): [True: 0, False: 33.5k]
  ------------------
 1103|      0|                        encode_base64(value.begin(), value.end(), key_);
 1104|      0|                        break;
 1105|      0|                    case semantic_tag::base16:
  ------------------
  |  Branch (1105:21): [True: 0, False: 33.5k]
  ------------------
 1106|      0|                        encode_base16(value.begin(), value.end(),key_);
 1107|      0|                        break;
 1108|  33.5k|                    default:
  ------------------
  |  Branch (1108:21): [True: 33.5k, False: 0]
  ------------------
 1109|  33.5k|                        encode_base64url(value.begin(), value.end(),key_);
 1110|  33.5k|                        break;
 1111|  33.5k|                }
 1112|  33.5k|            }
 1113|       |
 1114|   164k|            bool retval;
 1115|   164k|            if (level_stack_.back().is_key())
  ------------------
  |  Branch (1115:17): [True: 14.2k, False: 150k]
  ------------------
 1116|  14.2k|            {
 1117|  14.2k|                switch (level_stack_.back().target())
 1118|  14.2k|                {
 1119|  10.7k|                    case target_t::buffer:
  ------------------
  |  Branch (1119:21): [True: 10.7k, False: 3.50k]
  ------------------
 1120|  10.7k|                        if (level_stack_.back().count() > 0)
  ------------------
  |  Branch (1120:29): [True: 5.47k, False: 5.27k]
  ------------------
 1121|  5.47k|                        {
 1122|  5.47k|                            key_buffer_.push_back(',');
 1123|  5.47k|                        }
 1124|  10.7k|                        key_buffer_.push_back('\"');
 1125|  10.7k|                        key_buffer_.insert(key_buffer_.end(), key_.begin(), key_.end());
 1126|  10.7k|                        key_buffer_.push_back('\"');
 1127|  10.7k|                        key_buffer_.push_back(':');
 1128|  10.7k|                        retval = true; 
 1129|  10.7k|                        break;
 1130|  3.50k|                    default:
  ------------------
  |  Branch (1130:21): [True: 3.50k, False: 10.7k]
  ------------------
 1131|  3.50k|                        retval = destination_->key(key_, context, ec);
 1132|  3.50k|                        break;
 1133|  14.2k|                }
 1134|  14.2k|            }
 1135|   150k|            else
 1136|   150k|            {
 1137|   150k|                switch (level_stack_.back().target())
 1138|   150k|                {
 1139|  19.2k|                    case target_t::buffer:
  ------------------
  |  Branch (1139:21): [True: 19.2k, False: 131k]
  ------------------
 1140|  19.2k|                        if (!level_stack_.back().is_object() && level_stack_.back().count() > 0)
  ------------------
  |  Branch (1140:29): [True: 3.76k, False: 15.5k]
  |  Branch (1140:65): [True: 3.47k, False: 291]
  ------------------
 1141|  3.47k|                        {
 1142|  3.47k|                            key_buffer_.push_back(',');
 1143|  3.47k|                        }
 1144|  19.2k|                        key_buffer_.push_back('\"');
 1145|  19.2k|                        key_buffer_.insert(key_buffer_.end(), key_.begin(), key_.end());
 1146|  19.2k|                        key_buffer_.push_back('\"');
 1147|  19.2k|                        retval = true; 
 1148|  19.2k|                        break;
 1149|   131k|                    default:
  ------------------
  |  Branch (1149:21): [True: 131k, False: 19.2k]
  ------------------
 1150|   131k|                        retval = destination_->byte_string_value(value, tag, context, ec);
 1151|   131k|                        break;
 1152|   150k|                }
 1153|   150k|            }
 1154|       |
 1155|   164k|            level_stack_.back().advance();
 1156|   164k|            return retval;
 1157|   164k|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE17visit_byte_stringERKNS_16byte_string_viewEmRKNS_11ser_contextERNS1_10error_codeE:
 1163|   142k|        {
 1164|   142k|            if (level_stack_.back().is_key() || level_stack_.back().target() == target_t::buffer)
  ------------------
  |  Branch (1164:17): [True: 7.64k, False: 135k]
  |  Branch (1164:49): [True: 32.8k, False: 102k]
  ------------------
 1165|  40.4k|            {
 1166|  40.4k|                key_.clear();
 1167|  40.4k|                encode_base64url(value.begin(), value.end(),key_);
 1168|  40.4k|            }
 1169|       |
 1170|   142k|            bool retval;
 1171|   142k|            if (level_stack_.back().is_key())
  ------------------
  |  Branch (1171:17): [True: 7.64k, False: 135k]
  ------------------
 1172|  7.64k|            {
 1173|  7.64k|                switch (level_stack_.back().target())
 1174|  7.64k|                {
 1175|  4.29k|                    case target_t::buffer:
  ------------------
  |  Branch (1175:21): [True: 4.29k, False: 3.34k]
  ------------------
 1176|  4.29k|                        if (level_stack_.back().count() > 0)
  ------------------
  |  Branch (1176:29): [True: 2.85k, False: 1.44k]
  ------------------
 1177|  2.85k|                        {
 1178|  2.85k|                            key_buffer_.push_back(',');
 1179|  2.85k|                        }
 1180|  4.29k|                        key_buffer_.push_back('\"');
 1181|  4.29k|                        key_buffer_.insert(key_buffer_.end(), key_.begin(), key_.end());
 1182|  4.29k|                        key_buffer_.push_back('\"');
 1183|  4.29k|                        key_buffer_.push_back(':');
 1184|  4.29k|                        retval = true; 
 1185|  4.29k|                        break;
 1186|  3.34k|                    default:
  ------------------
  |  Branch (1186:21): [True: 3.34k, False: 4.29k]
  ------------------
 1187|  3.34k|                        retval = destination_->key(key_, context, ec);
 1188|  3.34k|                        break;
 1189|  7.64k|                }
 1190|  7.64k|            }
 1191|   135k|            else
 1192|   135k|            {
 1193|   135k|                switch (level_stack_.back().target())
 1194|   135k|                {
 1195|  32.8k|                    case target_t::buffer:
  ------------------
  |  Branch (1195:21): [True: 32.8k, False: 102k]
  ------------------
 1196|  32.8k|                        if (!level_stack_.back().is_object() && level_stack_.back().count() > 0)
  ------------------
  |  Branch (1196:29): [True: 24.3k, False: 8.51k]
  |  Branch (1196:65): [True: 23.9k, False: 386]
  ------------------
 1197|  23.9k|                        {
 1198|  23.9k|                            key_buffer_.push_back(',');
 1199|  23.9k|                        }
 1200|  32.8k|                        key_buffer_.push_back('\"');
 1201|  32.8k|                        key_buffer_.insert(key_buffer_.end(), key_.begin(), key_.end());
 1202|  32.8k|                        key_buffer_.push_back('\"');
 1203|  32.8k|                        retval = true; 
 1204|  32.8k|                        break;
 1205|   102k|                    default:
  ------------------
  |  Branch (1205:21): [True: 102k, False: 32.8k]
  ------------------
 1206|   102k|                        retval = destination_->byte_string_value(value, ext_tag, context, ec);
 1207|   102k|                        break;
 1208|   135k|                }
 1209|   135k|            }
 1210|       |
 1211|   142k|            level_stack_.back().advance();
 1212|   142k|            return retval;
 1213|   142k|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE12visit_uint64EmNS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
 1216|  25.5M|        {
 1217|  25.5M|            if (level_stack_.back().is_key() || level_stack_.back().target() == target_t::buffer)
  ------------------
  |  Branch (1217:17): [True: 4.22M, False: 21.3M]
  |  Branch (1217:49): [True: 7.82M, False: 13.5M]
  ------------------
 1218|  12.0M|            {
 1219|  12.0M|                key_.clear();
 1220|  12.0M|                jsoncons::detail::from_integer(value,key_);
 1221|  12.0M|            }
 1222|       |
 1223|  25.5M|            bool retval;
 1224|  25.5M|            if (level_stack_.back().is_key())
  ------------------
  |  Branch (1224:17): [True: 4.22M, False: 21.3M]
  ------------------
 1225|  4.22M|            {
 1226|  4.22M|                switch (level_stack_.back().target())
 1227|  4.22M|                {
 1228|  2.90M|                    case target_t::buffer:
  ------------------
  |  Branch (1228:21): [True: 2.90M, False: 1.31M]
  ------------------
 1229|  2.90M|                        if (level_stack_.back().count() > 0)
  ------------------
  |  Branch (1229:29): [True: 2.87M, False: 24.1k]
  ------------------
 1230|  2.87M|                        {
 1231|  2.87M|                            key_buffer_.push_back(',');
 1232|  2.87M|                        }
 1233|  2.90M|                        key_buffer_.insert(key_buffer_.end(), key_.begin(), key_.end());
 1234|  2.90M|                        key_buffer_.push_back(':');
 1235|  2.90M|                        retval = true; 
 1236|  2.90M|                        break;
 1237|  1.31M|                    default:
  ------------------
  |  Branch (1237:21): [True: 1.31M, False: 2.90M]
  ------------------
 1238|  1.31M|                        retval = destination_->key(key_, context, ec);
 1239|  1.31M|                        break;
 1240|  4.22M|                }
 1241|  4.22M|            }
 1242|  21.3M|            else
 1243|  21.3M|            {
 1244|  21.3M|                switch (level_stack_.back().target())
 1245|  21.3M|                {
 1246|  7.82M|                    case target_t::buffer:
  ------------------
  |  Branch (1246:21): [True: 7.82M, False: 13.5M]
  ------------------
 1247|  7.82M|                        if (!level_stack_.back().is_object() && level_stack_.back().count() > 0)
  ------------------
  |  Branch (1247:29): [True: 4.92M, False: 2.89M]
  |  Branch (1247:65): [True: 4.91M, False: 10.1k]
  ------------------
 1248|  4.91M|                        {
 1249|  4.91M|                            key_buffer_.push_back(',');
 1250|  4.91M|                        }
 1251|  7.82M|                        key_buffer_.insert(key_buffer_.end(), key_.begin(), key_.end());
 1252|  7.82M|                        retval = true; 
 1253|  7.82M|                        break;
 1254|  13.5M|                    default:
  ------------------
  |  Branch (1254:21): [True: 13.5M, False: 7.82M]
  ------------------
 1255|  13.5M|                        retval = destination_->uint64_value(value, tag, context, ec);
 1256|  13.5M|                        break;
 1257|  21.3M|                }
 1258|  21.3M|            }
 1259|       |
 1260|  25.5M|            level_stack_.back().advance();
 1261|  25.5M|            return retval;
 1262|  25.5M|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE11visit_int64ElNS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
 1265|  4.40M|        {
 1266|  4.40M|            if (level_stack_.back().is_key() || level_stack_.back().target() == target_t::buffer)
  ------------------
  |  Branch (1266:17): [True: 336k, False: 4.06M]
  |  Branch (1266:49): [True: 468k, False: 3.59M]
  ------------------
 1267|   805k|            {
 1268|   805k|                key_.clear();
 1269|   805k|                jsoncons::detail::from_integer(value,key_);
 1270|   805k|            }
 1271|       |
 1272|  4.40M|            bool retval;
 1273|  4.40M|            if (level_stack_.back().is_key())
  ------------------
  |  Branch (1273:17): [True: 336k, False: 4.06M]
  ------------------
 1274|   336k|            {
 1275|   336k|                switch (level_stack_.back().target())
 1276|   336k|                {
 1277|   152k|                    case target_t::buffer:
  ------------------
  |  Branch (1277:21): [True: 152k, False: 184k]
  ------------------
 1278|   152k|                        if (level_stack_.back().count() > 0)
  ------------------
  |  Branch (1278:29): [True: 99.9k, False: 52.4k]
  ------------------
 1279|  99.9k|                        {
 1280|  99.9k|                            key_buffer_.push_back(',');
 1281|  99.9k|                        }
 1282|   152k|                        key_buffer_.insert(key_buffer_.end(), key_.begin(), key_.end());
 1283|   152k|                        key_buffer_.push_back(':');
 1284|   152k|                        retval = true; 
 1285|   152k|                        break;
 1286|   184k|                    default:
  ------------------
  |  Branch (1286:21): [True: 184k, False: 152k]
  ------------------
 1287|   184k|                        retval = destination_->key(key_, context, ec);
 1288|   184k|                        break;
 1289|   336k|                }
 1290|   336k|            }
 1291|  4.06M|            else
 1292|  4.06M|            {
 1293|  4.06M|                switch (level_stack_.back().target())
 1294|  4.06M|                {
 1295|   468k|                    case target_t::buffer:
  ------------------
  |  Branch (1295:21): [True: 468k, False: 3.59M]
  ------------------
 1296|   468k|                        if (!level_stack_.back().is_object() && level_stack_.back().count() > 0)
  ------------------
  |  Branch (1296:29): [True: 363k, False: 105k]
  |  Branch (1296:65): [True: 361k, False: 2.00k]
  ------------------
 1297|   361k|                        {
 1298|   361k|                            key_buffer_.push_back(',');
 1299|   361k|                        }
 1300|   468k|                        key_buffer_.insert(key_buffer_.end(), key_.begin(), key_.end());
 1301|   468k|                        retval = true; 
 1302|   468k|                        break;
 1303|  3.59M|                    default:
  ------------------
  |  Branch (1303:21): [True: 3.59M, False: 468k]
  ------------------
 1304|  3.59M|                        retval = destination_->int64_value(value, tag, context, ec);
 1305|  3.59M|                        break;
 1306|  4.06M|                }
 1307|  4.06M|            }
 1308|       |
 1309|  4.40M|            level_stack_.back().advance();
 1310|  4.40M|            return retval;
 1311|  4.40M|        }
_ZN8jsoncons40basic_item_event_visitor_to_json_visitorIcNSt3__19allocatorIcEEE12visit_doubleEdNS_12semantic_tagERKNS_11ser_contextERNS1_10error_codeE:
 1366|   196k|        {
 1367|   196k|            if (level_stack_.back().is_key() || level_stack_.back().target() == target_t::buffer)
  ------------------
  |  Branch (1367:17): [True: 26.7k, False: 169k]
  |  Branch (1367:49): [True: 57.0k, False: 112k]
  ------------------
 1368|  83.8k|            {
 1369|  83.8k|                key_.clear();
 1370|  83.8k|                string_sink<string_type> sink(key_);
 1371|  83.8k|                jsoncons::detail::write_double f{float_chars_format::general,0};
 1372|  83.8k|                f(value, sink);
 1373|  83.8k|            }
 1374|       |
 1375|   196k|            bool retval;
 1376|   196k|            if (level_stack_.back().is_key())
  ------------------
  |  Branch (1376:17): [True: 26.7k, False: 169k]
  ------------------
 1377|  26.7k|            {
 1378|  26.7k|                switch (level_stack_.back().target())
 1379|  26.7k|                {
 1380|  21.5k|                    case target_t::buffer:
  ------------------
  |  Branch (1380:21): [True: 21.5k, False: 5.27k]
  ------------------
 1381|  21.5k|                        if (level_stack_.back().count() > 0)
  ------------------
  |  Branch (1381:29): [True: 19.2k, False: 2.29k]
  ------------------
 1382|  19.2k|                        {
 1383|  19.2k|                            key_buffer_.push_back(',');
 1384|  19.2k|                        }
 1385|  21.5k|                        key_buffer_.insert(key_buffer_.end(), key_.begin(), key_.end());
 1386|  21.5k|                        key_buffer_.push_back(':');
 1387|  21.5k|                        retval = true; 
 1388|  21.5k|                        break;
 1389|  5.27k|                    default:
  ------------------
  |  Branch (1389:21): [True: 5.27k, False: 21.5k]
  ------------------
 1390|  5.27k|                        retval = destination_->key(key_, context, ec);
 1391|  5.27k|                        break;
 1392|  26.7k|                }
 1393|  26.7k|            }
 1394|   169k|            else
 1395|   169k|            {
 1396|   169k|                switch (level_stack_.back().target())
 1397|   169k|                {
 1398|  57.0k|                    case target_t::buffer:
  ------------------
  |  Branch (1398:21): [True: 57.0k, False: 112k]
  ------------------
 1399|  57.0k|                        if (!level_stack_.back().is_object() && level_stack_.back().count() > 0)
  ------------------
  |  Branch (1399:29): [True: 31.0k, False: 25.9k]
  |  Branch (1399:65): [True: 27.1k, False: 3.88k]
  ------------------
 1400|  27.1k|                        {
 1401|  27.1k|                            key_buffer_.push_back(',');
 1402|  27.1k|                        }
 1403|  57.0k|                        key_buffer_.insert(key_buffer_.end(), key_.begin(), key_.end());
 1404|  57.0k|                        retval = true; 
 1405|  57.0k|                        break;
 1406|   112k|                    default:
  ------------------
  |  Branch (1406:21): [True: 112k, False: 57.0k]
  ------------------
 1407|   112k|                        retval = destination_->double_value(value, tag, context, ec);
 1408|   112k|                        break;
 1409|   169k|                }
 1410|   169k|            }
 1411|       |
 1412|   196k|            level_stack_.back().advance();
 1413|   196k|            return retval;
 1414|   196k|        }
_ZN8jsoncons24basic_item_event_visitorIcE12begin_objectEmNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  256|  3.06M|        {
  257|  3.06M|            return visit_begin_object(length, tag, context, ec);
  258|  3.06M|        }
_ZN8jsoncons24basic_item_event_visitorIcE12string_valueERKNS_6detail17basic_string_viewIcNSt3__111char_traitsIcEEEENS_12semantic_tagERKNS_11ser_contextERNS4_10error_codeE:
  304|  2.48M|        {
  305|  2.48M|            return visit_string(value, tag, context, ec);
  306|  2.48M|        }
_ZN8jsoncons24basic_item_event_visitorIcE10null_valueENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  288|  4.11M|        {
  289|  4.11M|            return visit_null(tag, context, ec);
  290|  4.11M|        }
_ZN8jsoncons24basic_item_event_visitorIcE10bool_valueEbNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  296|  28.8M|        {
  297|  28.8M|            return visit_bool(value, tag, context, ec);
  298|  28.8M|        }
_ZN8jsoncons24basic_item_event_visitorIcE17byte_string_valueINS_16byte_string_viewEEEbRKT_NS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeENSB_9enable_ifIXsr16extension_traits16is_byte_sequenceIS4_EE5valueEiE4typeE:
  314|   164k|        {
  315|   164k|            return visit_byte_string(byte_string_view(reinterpret_cast<const uint8_t*>(b.data()),b.size()), tag, context, ec);
  316|   164k|        }
_ZN8jsoncons24basic_item_event_visitorIcE17byte_string_valueINS_16byte_string_viewEEEbRKT_mRKNS_11ser_contextERNSt3__110error_codeENSA_9enable_ifIXsr16extension_traits16is_byte_sequenceIS4_EE5valueEiE4typeE:
  324|   142k|        {
  325|   142k|            return visit_byte_string(byte_string_view(reinterpret_cast<const uint8_t*>(b.data()),b.size()), ext_tag, context, ec);
  326|   142k|        }
_ZN8jsoncons24basic_item_event_visitorIcE10end_objectERKNS_11ser_contextERNSt3__110error_codeE:
  261|  3.04M|        {
  262|  3.04M|            return visit_end_object(context, ec);
  263|  3.04M|        }

_ZN8jsoncons10json_arrayINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEENS3_6vectorEED2Ev:
  108|  4.65M|        {
  109|  4.65M|            flatten_and_destroy();
  110|  4.65M|        }
_ZN8jsoncons10json_arrayINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEENS3_6vectorEE19flatten_and_destroyEv:
  285|  4.65M|        {
  286|  6.18M|            while (!elements_.empty())
  ------------------
  |  Branch (286:20): [True: 1.53M, False: 4.65M]
  ------------------
  287|  1.53M|            {
  288|  1.53M|                value_type current = std::move(elements_.back());
  289|  1.53M|                elements_.pop_back();
  290|  1.53M|                switch (current.storage_kind())
  291|  1.53M|                {
  292|  40.3k|                    case json_storage_kind::array_value:
  ------------------
  |  Branch (292:21): [True: 40.3k, False: 1.49M]
  ------------------
  293|  40.3k|                    {
  294|  40.3k|                        for (auto&& item : current.array_range())
  ------------------
  |  Branch (294:42): [True: 3.45M, False: 40.3k]
  ------------------
  295|  3.45M|                        {
  296|  3.45M|                            if (item.size() > 0) // non-empty object or array
  ------------------
  |  Branch (296:33): [True: 15.9k, False: 3.43M]
  ------------------
  297|  15.9k|                            {
  298|  15.9k|                                elements_.push_back(std::move(item));
  299|  15.9k|                            }
  300|  3.45M|                        }
  301|  40.3k|                        current.clear();                           
  302|  40.3k|                        break;
  303|      0|                    }
  304|  64.2k|                    case json_storage_kind::object_value:
  ------------------
  |  Branch (304:21): [True: 64.2k, False: 1.46M]
  ------------------
  305|  64.2k|                    {
  306|  64.2k|                        for (auto&& kv : current.object_range())
  ------------------
  |  Branch (306:40): [True: 96.3k, False: 64.2k]
  ------------------
  307|  96.3k|                        {
  308|  96.3k|                            if (kv.value().size() > 0) // non-empty object or array
  ------------------
  |  Branch (308:33): [True: 34.8k, False: 61.4k]
  ------------------
  309|  34.8k|                            {
  310|  34.8k|                                elements_.push_back(std::move(kv.value()));
  311|  34.8k|                            }
  312|  96.3k|                        }
  313|  64.2k|                        current.clear();                           
  314|  64.2k|                        break;
  315|      0|                    }
  316|  1.42M|                    default:
  ------------------
  |  Branch (316:21): [True: 1.42M, False: 104k]
  ------------------
  317|  1.42M|                        break;
  318|  1.53M|                }
  319|  1.53M|            }
  320|  4.65M|        }
_ZN8jsoncons10json_arrayINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEENS3_6vectorEE5beginEv:
  263|  40.3k|        iterator begin() {return elements_.begin();}
_ZN8jsoncons10json_arrayINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEENS3_6vectorEE3endEv:
  265|  40.3k|        iterator end() {return elements_.end();}
_ZNK8jsoncons10json_arrayINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEENS3_6vectorEE4sizeEv:
  137|   147k|        std::size_t size() const {return elements_.size();}
_ZN8jsoncons10json_arrayINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEENS3_6vectorEE5clearEv:
  141|  40.3k|        void clear() {elements_.clear();}
_ZN8jsoncons10json_arrayINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEENS3_6vectorEEC2ERKS5_:
   54|  2.33M|        {
   55|  2.33M|        }
_ZNK8jsoncons10json_arrayINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEENS3_6vectorEE5emptyEv:
  128|  3.55k|        {
  129|  3.55k|            return elements_.empty();
  130|  3.55k|        }
_ZN8jsoncons10json_arrayINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEENS3_6vectorEE12emplace_backIJS6_EEERS6_DpOT_:
  258|  6.48k|        {
  259|  6.48k|            elements_.emplace_back(std::forward<Args>(args)...);
  260|  6.48k|            return elements_.back();
  261|  6.48k|        }
_ZN8jsoncons10json_arrayINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEENS3_6vectorEEC2EOS8_:
   93|  2.31M|        {
   94|  2.31M|        }
_ZN8jsoncons10json_arrayINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEENS3_6vectorEE7reserveEm:
  152|  23.5k|        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|  4.93M|        {
  199|  4.93M|            elements_.emplace_back(std::forward<T>(value));
  200|  4.93M|        }

_ZN8jsoncons12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES5_EC2ERKS5_S9_:
   77|  6.12k|    {
   78|  6.12k|        item_stack_.reserve(1000);
   79|  6.12k|        structure_stack_.reserve(100);
   80|  6.12k|        structure_stack_.emplace_back(structure_type::root_t, 0);
   81|  6.12k|    }
_ZN8jsoncons12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES5_E14structure_infoC2ENS7_14structure_typeEm:
   48|  4.89M|        {
   49|  4.89M|        }
_ZN8jsoncons12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES5_E18visit_begin_objectENS_12semantic_tagERKNS_11ser_contextERNS3_10error_codeE:
  142|  2.56M|    {
  143|  2.56M|        if (structure_stack_.back().type_ == structure_type::root_t)
  ------------------
  |  Branch (143:13): [True: 4.08k, False: 2.56M]
  ------------------
  144|  4.08k|        {
  145|  4.08k|            index_ = 0;
  146|  4.08k|            item_stack_.clear();
  147|  4.08k|            is_valid_ = false;
  148|  4.08k|        }
  149|  2.56M|        item_stack_.emplace_back(std::move(name_), index_++, json_object_arg, tag);
  150|  2.56M|        structure_stack_.emplace_back(structure_type::object_t, item_stack_.size()-1);
  151|  2.56M|        return true;
  152|  2.56M|    }
_ZN8jsoncons12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES5_E16visit_end_objectERKNS_11ser_contextERNS3_10error_codeE:
  155|  2.55M|    {
  156|  2.55M|        JSONCONS_ASSERT(structure_stack_.size() > 0);
  ------------------
  |  |  378|  2.55M|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 2.55M]
  |  |  ------------------
  |  |  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|  2.55M|        JSONCONS_ASSERT(structure_stack_.back().type_ == structure_type::object_t);
  ------------------
  |  |  378|  2.55M|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 2.55M]
  |  |  ------------------
  |  |  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|  2.55M|        const size_t structure_index = structure_stack_.back().container_index_;
  159|  2.55M|        JSONCONS_ASSERT(item_stack_.size() > structure_index);
  ------------------
  |  |  378|  2.55M|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 2.55M]
  |  |  ------------------
  |  |  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|  2.55M|        const size_t count = item_stack_.size() - (structure_index + 1);
  161|  2.55M|        auto first = item_stack_.begin() + (structure_index+1);
  162|       |
  163|  2.55M|        if (count > 0)
  ------------------
  |  Branch (163:13): [True: 52.6k, False: 2.50M]
  ------------------
  164|  52.6k|        {
  165|  52.6k|            item_stack_[structure_index].value.template cast<typename Json::object_storage>().value().uninitialized_init(
  166|  52.6k|                &item_stack_[structure_index+1], count);
  167|  52.6k|        }
  168|       |
  169|  2.55M|        item_stack_.erase(first, item_stack_.end());
  170|  2.55M|        structure_stack_.pop_back();
  171|  2.55M|        if (structure_stack_.back().type_ == structure_type::root_t)
  ------------------
  |  Branch (171:13): [True: 940, False: 2.55M]
  ------------------
  172|    940|        {
  173|    940|            result_.swap(item_stack_.front().value);
  174|    940|            item_stack_.pop_back();
  175|    940|            is_valid_ = true;
  176|    940|            return false;
  177|    940|        }
  178|  2.55M|        return true;
  179|  2.55M|    }
_ZN8jsoncons12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES5_E17visit_begin_arrayENS_12semantic_tagERKNS_11ser_contextERNS3_10error_codeE:
  182|  2.31M|    {
  183|  2.31M|        if (structure_stack_.back().type_ == structure_type::root_t)
  ------------------
  |  Branch (183:13): [True: 813, False: 2.31M]
  ------------------
  184|    813|        {
  185|    813|            index_ = 0;
  186|    813|            item_stack_.clear();
  187|    813|            is_valid_ = false;
  188|    813|        }
  189|  2.31M|        item_stack_.emplace_back(std::move(name_), index_++, json_array_arg, tag);
  190|  2.31M|        structure_stack_.emplace_back(structure_type::array_t, item_stack_.size()-1);
  191|  2.31M|        return true;
  192|  2.31M|    }
_ZN8jsoncons12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES5_E15visit_end_arrayERKNS_11ser_contextERNS3_10error_codeE:
  195|  2.29M|    {
  196|  2.29M|        JSONCONS_ASSERT(structure_stack_.size() > 1);
  ------------------
  |  |  378|  2.29M|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 2.29M]
  |  |  ------------------
  |  |  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|  2.29M|        JSONCONS_ASSERT(structure_stack_.back().type_ == structure_type::array_t);
  ------------------
  |  |  378|  2.29M|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 2.29M]
  |  |  ------------------
  |  |  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|  2.29M|        const size_t container_index = structure_stack_.back().container_index_;
  199|  2.29M|        JSONCONS_ASSERT(item_stack_.size() > container_index);
  ------------------
  |  |  378|  2.29M|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 2.29M]
  |  |  ------------------
  |  |  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|  2.29M|        auto& container = item_stack_[container_index].value;
  202|       |
  203|  2.29M|        const size_t size = item_stack_.size() - (container_index + 1);
  204|       |        //std::cout << "size on item stack: " << size << "\n";
  205|       |
  206|  2.29M|        if (size > 0)
  ------------------
  |  Branch (206:13): [True: 23.5k, False: 2.27M]
  ------------------
  207|  23.5k|        {
  208|  23.5k|            container.reserve(size);
  209|  23.5k|            auto first = item_stack_.begin() + (container_index+1);
  210|  23.5k|            auto last = first + size;
  211|  4.95M|            for (auto it = first; it != last; ++it)
  ------------------
  |  Branch (211:35): [True: 4.93M, False: 23.5k]
  ------------------
  212|  4.93M|            {
  213|  4.93M|                container.push_back(std::move(it->value));
  214|  4.93M|            }
  215|  23.5k|            item_stack_.erase(first, item_stack_.end());
  216|  23.5k|        }
  217|       |
  218|  2.29M|        structure_stack_.pop_back();
  219|  2.29M|        if (structure_stack_.back().type_ == structure_type::root_t)
  ------------------
  |  Branch (219:13): [True: 211, False: 2.29M]
  ------------------
  220|    211|        {
  221|    211|            result_.swap(item_stack_.front().value);
  222|    211|            item_stack_.pop_back();
  223|    211|            is_valid_ = true;
  224|    211|            return false;
  225|    211|        }
  226|  2.29M|        return true;
  227|  2.29M|    }
_ZN8jsoncons12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES5_E9visit_keyERKNS_6detail17basic_string_viewIcNS3_11char_traitsIcEEEERKNS_11ser_contextERNS3_10error_codeE:
  230|  2.18M|    {
  231|  2.18M|        name_ = key_type(name.data(),name.length(),allocator_);
  232|  2.18M|        return true;
  233|  2.18M|    }
_ZN8jsoncons12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES5_E10visit_nullENS_12semantic_tagERKNS_11ser_contextERNS3_10error_codeE:
  382|  3.24M|    {
  383|  3.24M|        switch (structure_stack_.back().type_)
  ------------------
  |  Branch (383:17): [True: 0, False: 3.24M]
  ------------------
  384|  3.24M|        {
  385|  22.8k|            case structure_type::object_t:
  ------------------
  |  Branch (385:13): [True: 22.8k, False: 3.22M]
  ------------------
  386|  3.24M|            case structure_type::array_t:
  ------------------
  |  Branch (386:13): [True: 3.22M, False: 22.8k]
  ------------------
  387|  3.24M|                item_stack_.emplace_back(std::move(name_), index_++, null_type(), tag);
  388|  3.24M|                break;
  389|      1|            case structure_type::root_t:
  ------------------
  |  Branch (389:13): [True: 1, False: 3.24M]
  ------------------
  390|      1|                result_ = Json(null_type(), tag);
  391|      1|                is_valid_ = true;
  392|      1|                return false;
  393|  3.24M|        }
  394|  3.24M|        return true;
  395|  3.24M|    }
_ZN8jsoncons12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES5_E10visit_boolEbNS_12semantic_tagERKNS_11ser_contextERNS3_10error_codeE:
  366|  4.44M|    {
  367|  4.44M|        switch (structure_stack_.back().type_)
  ------------------
  |  Branch (367:17): [True: 0, False: 4.44M]
  ------------------
  368|  4.44M|        {
  369|   312k|            case structure_type::object_t:
  ------------------
  |  Branch (369:13): [True: 312k, False: 4.12M]
  ------------------
  370|  4.44M|            case structure_type::array_t:
  ------------------
  |  Branch (370:13): [True: 4.12M, False: 312k]
  ------------------
  371|  4.44M|                item_stack_.emplace_back(std::move(name_), index_++, value, tag);
  372|  4.44M|                break;
  373|      2|            case structure_type::root_t:
  ------------------
  |  Branch (373:13): [True: 2, False: 4.44M]
  ------------------
  374|      2|                result_ = Json(value, tag);
  375|      2|                is_valid_ = true;
  376|      2|                return false;
  377|  4.44M|        }
  378|  4.44M|        return true;
  379|  4.44M|    }
_ZN8jsoncons12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES5_E12visit_stringERKNS_6detail17basic_string_viewIcNS3_11char_traitsIcEEEENS_12semantic_tagERKNS_11ser_contextERNS3_10error_codeE:
  236|  2.06M|    {
  237|  2.06M|        switch (structure_stack_.back().type_)
  ------------------
  |  Branch (237:17): [True: 0, False: 2.06M]
  ------------------
  238|  2.06M|        {
  239|  67.5k|            case structure_type::object_t:
  ------------------
  |  Branch (239:13): [True: 67.5k, False: 1.99M]
  ------------------
  240|  2.06M|            case structure_type::array_t:
  ------------------
  |  Branch (240:13): [True: 1.99M, False: 68.4k]
  ------------------
  241|  2.06M|                item_stack_.emplace_back(std::move(name_), index_++, sv, tag);
  242|  2.06M|                break;
  243|    827|            case structure_type::root_t:
  ------------------
  |  Branch (243:13): [True: 827, False: 2.06M]
  ------------------
  244|    827|                result_ = Json(sv, tag, allocator_);
  245|    827|                is_valid_ = true;
  246|    827|                return false;
  247|  2.06M|        }
  248|  2.06M|        return true;
  249|  2.06M|    }
_ZN8jsoncons12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES5_E17visit_byte_stringERKNS_16byte_string_viewENS_12semantic_tagERKNS_11ser_contextERNS3_10error_codeE:
  255|   131k|    {
  256|   131k|        switch (structure_stack_.back().type_)
  ------------------
  |  Branch (256:17): [True: 0, False: 131k]
  ------------------
  257|   131k|        {
  258|  16.8k|            case structure_type::object_t:
  ------------------
  |  Branch (258:13): [True: 16.8k, False: 114k]
  ------------------
  259|   131k|            case structure_type::array_t:
  ------------------
  |  Branch (259:13): [True: 114k, False: 16.8k]
  ------------------
  260|   131k|                item_stack_.emplace_back(std::move(name_), index_++, byte_string_arg, b, tag);
  261|   131k|                break;
  262|      1|            case structure_type::root_t:
  ------------------
  |  Branch (262:13): [True: 1, False: 131k]
  ------------------
  263|      1|                result_ = Json(byte_string_arg, b, tag, allocator_);
  264|      1|                is_valid_ = true;
  265|      1|                return false;
  266|   131k|        }
  267|   131k|        return true;
  268|   131k|    }
_ZN8jsoncons12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES5_E17visit_byte_stringERKNS_16byte_string_viewEmRKNS_11ser_contextERNS3_10error_codeE:
  274|   102k|    {
  275|   102k|        switch (structure_stack_.back().type_)
  ------------------
  |  Branch (275:17): [True: 0, False: 102k]
  ------------------
  276|   102k|        {
  277|  3.19k|            case structure_type::object_t:
  ------------------
  |  Branch (277:13): [True: 3.19k, False: 99.3k]
  ------------------
  278|   102k|            case structure_type::array_t:
  ------------------
  |  Branch (278:13): [True: 99.3k, False: 3.19k]
  ------------------
  279|   102k|                item_stack_.emplace_back(std::move(name_), index_++, byte_string_arg, b, ext_tag);
  280|   102k|                break;
  281|      4|            case structure_type::root_t:
  ------------------
  |  Branch (281:13): [True: 4, False: 102k]
  ------------------
  282|      4|                result_ = Json(byte_string_arg, b, ext_tag, allocator_);
  283|      4|                is_valid_ = true;
  284|      4|                return false;
  285|   102k|        }
  286|   102k|        return true;
  287|   102k|    }
_ZN8jsoncons12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES5_E12visit_uint64EmNS_12semantic_tagERKNS_11ser_contextERNS3_10error_codeE:
  312|  13.5M|    {
  313|  13.5M|        switch (structure_stack_.back().type_)
  ------------------
  |  Branch (313:17): [True: 0, False: 13.5M]
  ------------------
  314|  13.5M|        {
  315|  1.29M|            case structure_type::object_t:
  ------------------
  |  Branch (315:13): [True: 1.29M, False: 12.2M]
  ------------------
  316|  13.5M|            case structure_type::array_t:
  ------------------
  |  Branch (316:13): [True: 12.2M, False: 1.29M]
  ------------------
  317|  13.5M|                item_stack_.emplace_back(std::move(name_), index_++, value, tag);
  318|  13.5M|                break;
  319|     14|            case structure_type::root_t:
  ------------------
  |  Branch (319:13): [True: 14, False: 13.5M]
  ------------------
  320|     14|                result_ = Json(value,tag);
  321|     14|                is_valid_ = true;
  322|     14|                return false;
  323|  13.5M|        }
  324|  13.5M|        return true;
  325|  13.5M|    }
_ZN8jsoncons12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES5_E11visit_int64ElNS_12semantic_tagERKNS_11ser_contextERNS3_10error_codeE:
  293|  3.59M|    {
  294|  3.59M|        switch (structure_stack_.back().type_)
  ------------------
  |  Branch (294:17): [True: 0, False: 3.59M]
  ------------------
  295|  3.59M|        {
  296|   147k|            case structure_type::object_t:
  ------------------
  |  Branch (296:13): [True: 147k, False: 3.45M]
  ------------------
  297|  3.59M|            case structure_type::array_t:
  ------------------
  |  Branch (297:13): [True: 3.45M, False: 147k]
  ------------------
  298|  3.59M|                item_stack_.emplace_back(std::move(name_), index_++, value, tag);
  299|  3.59M|                break;
  300|      6|            case structure_type::root_t:
  ------------------
  |  Branch (300:13): [True: 6, False: 3.59M]
  ------------------
  301|      6|                result_ = Json(value,tag);
  302|      6|                is_valid_ = true;
  303|      6|                return false;
  304|  3.59M|        }
  305|  3.59M|        return true;
  306|  3.59M|    }
_ZN8jsoncons12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES5_E12visit_doubleEdNS_12semantic_tagERKNS_11ser_contextERNS3_10error_codeE:
  350|   112k|    {
  351|   112k|        switch (structure_stack_.back().type_)
  ------------------
  |  Branch (351:17): [True: 0, False: 112k]
  ------------------
  352|   112k|        {
  353|  5.27k|            case structure_type::object_t:
  ------------------
  |  Branch (353:13): [True: 5.27k, False: 107k]
  ------------------
  354|   112k|            case structure_type::array_t:
  ------------------
  |  Branch (354:13): [True: 107k, False: 5.28k]
  ------------------
  355|   112k|                item_stack_.emplace_back(std::move(name_), index_++, value, tag);
  356|   112k|                break;
  357|      2|            case structure_type::root_t:
  ------------------
  |  Branch (357:13): [True: 2, False: 112k]
  ------------------
  358|      2|                result_ = Json(value, tag);
  359|      2|                is_valid_ = true;
  360|      2|                return false;
  361|   112k|        }
  362|   112k|        return true;
  363|   112k|    }
_ZNK8jsoncons12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES5_E8is_validEv:
  116|  2.00k|    {
  117|  2.00k|        return is_valid_;
  118|  2.00k|    }
_ZN8jsoncons12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES5_E10get_resultEv:
  121|  2.00k|    {
  122|  2.00k|        JSONCONS_ASSERT(is_valid_);
  ------------------
  |  |  378|  2.00k|#define JSONCONS_ASSERT(x) if (!(x)) { \
  |  |  ------------------
  |  |  |  Branch (378:32): [True: 0, False: 2.00k]
  |  |  ------------------
  |  |  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|  2.00k|        is_valid_ = false;
  124|  2.00k|        return std::move(result_);
  125|  2.00k|    }

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

_ZN8jsoncons25make_json_visitor_adaptorINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEEENS_20json_visitor_adaptorIT_T0_vEERSD_:
  631|  6.12k|{
  632|  6.12k|    return json_visitor_adaptor<From, To>(to);
  633|  6.12k|}
_ZN8jsoncons20json_visitor_adaptorINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEvEC2ERSA_:
  550|  6.12k|    {
  551|  6.12k|    }
_ZN8jsoncons25json_visitor_adaptor_baseINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEEC2ERSA_:
  318|  6.12k|    {
  319|  6.12k|    }
_ZN8jsoncons25json_visitor_adaptor_baseINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEE18visit_begin_objectEmNS_12semantic_tagERKNS_11ser_contextERNS6_10error_codeE:
  347|  2.56M|    {
  348|  2.56M|        return destination_->begin_object(length, tag, context, ec);
  349|  2.56M|    }
_ZN8jsoncons25json_visitor_adaptor_baseINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEE16visit_end_objectERKNS_11ser_contextERNS6_10error_codeE:
  352|  2.55M|    {
  353|  2.55M|        return destination_->end_object(context, ec);
  354|  2.55M|    }
_ZN8jsoncons25json_visitor_adaptor_baseINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEE17visit_begin_arrayEmNS_12semantic_tagERKNS_11ser_contextERNS6_10error_codeE:
  367|  2.31M|    {
  368|  2.31M|        return destination_->begin_array(length, tag, context, ec);
  369|  2.31M|    }
_ZN8jsoncons25json_visitor_adaptor_baseINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEE15visit_end_arrayERKNS_11ser_contextERNS6_10error_codeE:
  372|  2.29M|    {
  373|  2.29M|        return destination_->end_array(context, ec);
  374|  2.29M|    }
_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|  2.18M|    {
  563|  2.18M|        return destination().key(string_view_type(reinterpret_cast<const to_char_type*>(key.data()),key.size()), context, ec);
  564|  2.18M|    }
_ZN8jsoncons25json_visitor_adaptor_baseINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEE11destinationEv:
  326|  4.25M|    {
  327|  4.25M|        return *destination_;
  328|  4.25M|    }
_ZN8jsoncons25json_visitor_adaptor_baseINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEE10visit_nullENS_12semantic_tagERKNS_11ser_contextERNS6_10error_codeE:
  418|  3.24M|    {
  419|  3.24M|        return destination_->null_value(tag, context, ec);
  420|  3.24M|    }
_ZN8jsoncons25json_visitor_adaptor_baseINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEE10visit_boolEbNS_12semantic_tagERKNS_11ser_contextERNS6_10error_codeE:
  413|  4.44M|    {
  414|  4.44M|        return destination_->bool_value(value, tag, context, ec);
  415|  4.44M|    }
_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.06M|    {
  571|  2.06M|        return destination().string_value(string_view_type(reinterpret_cast<const to_char_type*>(value.data()),value.size()), tag, context, ec);
  572|  2.06M|    }
_ZN8jsoncons25json_visitor_adaptor_baseINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEE17visit_byte_stringERKNS_16byte_string_viewENS_12semantic_tagERKNS_11ser_contextERNS6_10error_codeE:
  380|   131k|    {
  381|   131k|        return destination_->byte_string_value(b, tag, context, ec);
  382|   131k|    }
_ZN8jsoncons25json_visitor_adaptor_baseINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEE17visit_byte_stringERKNS_16byte_string_viewEmRKNS_11ser_contextERNS6_10error_codeE:
  388|   102k|    {
  389|   102k|        return destination_->byte_string_value(b, ext_tag, context, ec);
  390|   102k|    }
_ZN8jsoncons25json_visitor_adaptor_baseINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEE12visit_uint64EmNS_12semantic_tagERKNS_11ser_contextERNS6_10error_codeE:
  408|  13.5M|    {
  409|  13.5M|        return destination_->uint64_value(value, tag, context, ec);
  410|  13.5M|    }
_ZN8jsoncons25json_visitor_adaptor_baseINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEE11visit_int64ElNS_12semantic_tagERKNS_11ser_contextERNS6_10error_codeE:
  403|  3.59M|    {
  404|  3.59M|        return destination_->int64_value(value, tag, context, ec);
  405|  3.59M|    }
_ZN8jsoncons25json_visitor_adaptor_baseINS_18basic_json_visitorIcEENS_12json_decoderINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEES8_EEE12visit_doubleEdNS_12semantic_tagERKNS_11ser_contextERNS6_10error_codeE:
  398|   112k|    {
  399|   112k|        return destination_->double_value(value, tag, context, ec);
  400|   112k|    }

_ZNK8jsoncons18sorted_json_objectINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES6_EENS1_6vectorEE4sizeEv:
  464|  65.2k|        std::size_t size() const {return members_.size();}
_ZN8jsoncons18sorted_json_objectINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES6_EENS1_6vectorEE5clearEv:
  468|  64.2k|        void clear() {members_.clear();}
_ZN8jsoncons18sorted_json_objectINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES6_EENS1_6vectorEE5beginEv:
  445|  64.2k|        {
  446|  64.2k|            return members_.begin();
  447|  64.2k|        }
_ZN8jsoncons18sorted_json_objectINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES6_EENS1_6vectorEE3endEv:
  450|  64.2k|        {
  451|  64.2k|            return members_.end();
  452|  64.2k|        }
_ZN8jsoncons9key_valueINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES6_EEE5valueEv:
  172|   192k|        {
  173|   192k|            return value_;
  174|   192k|        }
_ZN8jsoncons18sorted_json_objectINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES6_EENS1_6vectorEED2Ev:
  430|  5.12M|        {
  431|  5.12M|            flatten_and_destroy();
  432|  5.12M|        }
_ZN8jsoncons18sorted_json_objectINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES6_EENS1_6vectorEE19flatten_and_destroyEv:
 1008|  5.12M|        {
 1009|  5.12M|            if (!members_.empty())
  ------------------
  |  Branch (1009:17): [True: 12.2k, False: 5.11M]
  ------------------
 1010|  12.2k|            {
 1011|  12.2k|                json_array<Json> temp(get_allocator());
 1012|       |
 1013|  12.2k|                for (auto& kv : members_)
  ------------------
  |  Branch (1013:31): [True: 45.7k, False: 12.2k]
  ------------------
 1014|  45.7k|                {
 1015|  45.7k|                    switch (kv.value().storage_kind())
 1016|  45.7k|                    {
 1017|  3.55k|                        case json_storage_kind::array_value:
  ------------------
  |  Branch (1017:25): [True: 3.55k, False: 42.2k]
  ------------------
 1018|  9.40k|                        case json_storage_kind::object_value:
  ------------------
  |  Branch (1018:25): [True: 5.84k, False: 39.9k]
  ------------------
 1019|  9.40k|                            if (!kv.value().empty())
  ------------------
  |  Branch (1019:33): [True: 6.48k, False: 2.92k]
  ------------------
 1020|  6.48k|                            {
 1021|  6.48k|                                temp.emplace_back(std::move(kv.value()));
 1022|  6.48k|                            }
 1023|  9.40k|                            break;
 1024|  36.3k|                        default:
  ------------------
  |  Branch (1024:25): [True: 36.3k, False: 9.40k]
  ------------------
 1025|  36.3k|                            break;
 1026|  45.7k|                    }
 1027|  45.7k|                }
 1028|  12.2k|            }
 1029|  5.12M|        }
_ZNK8jsoncons18sorted_json_objectINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES6_EENS1_6vectorEE5emptyEv:
  435|  5.84k|        {
  436|  5.84k|            return members_.empty();
  437|  5.84k|        }
_ZN8jsoncons15key_index_valueINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEEEC2EOS7_:
   47|  63.6M|        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|  2.56M|        {
   43|  2.56M|        }
_ZN8jsoncons18sorted_json_objectINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES6_EENS1_6vectorEEC2EOSC_:
  361|  2.56M|        {
  362|  2.56M|        }
_ZN8jsoncons18sorted_json_objectINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES6_EENS1_6vectorEEC2ERKS6_:
  343|  2.56M|        {
  344|  2.56M|        }
_ZN8jsoncons18sorted_json_objectINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES6_EENS1_6vectorEE18uninitialized_initEPNS_15key_index_valueISA_EEm:
  553|  52.6k|        {
  554|  52.6k|            auto first = items;
  555|  52.6k|            if (count > 0)
  ------------------
  |  Branch (555:17): [True: 52.6k, False: 0]
  ------------------
  556|  52.6k|            {
  557|  52.6k|                members_.reserve(count);
  558|       |
  559|  52.6k|                auto last = first + count;
  560|       |
  561|  52.6k|                std::sort(first, last, compare);
  562|  52.6k|                members_.emplace_back(first->name, std::move(first->value));
  563|  52.6k|                auto prev_it = first;
  564|  1.98M|                for (auto it = first+1; it != last; ++it)
  ------------------
  |  Branch (564:41): [True: 1.93M, False: 52.6k]
  ------------------
  565|  1.93M|                {
  566|  1.93M|                    if (it->name.compare(prev_it->name) != 0)
  ------------------
  |  Branch (566:25): [True: 89.4k, False: 1.84M]
  ------------------
  567|  89.4k|                    {
  568|  89.4k|                        members_.emplace_back(it->name, std::move(it->value));
  569|  89.4k|                    }
  570|  1.93M|                    ++prev_it;
  571|  1.93M|                }
  572|  52.6k|            }
  573|  52.6k|        }
_ZN8jsoncons15key_index_valueINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEEEaSEOS7_:
   58|  8.77M|        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|  30.3M|        {
  545|  30.3M|            int comp = item1.name.compare(item2.name); 
  546|  30.3M|            if (comp < 0) return true;
  ------------------
  |  Branch (546:17): [True: 752k, False: 29.6M]
  ------------------
  547|  29.6M|            if (comp == 0) return item1.index < item2.index;
  ------------------
  |  Branch (547:17): [True: 28.7M, False: 872k]
  ------------------
  548|       |
  549|   872k|            return false;
  550|  29.6M|        }
_ZN8jsoncons9key_valueINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS_10basic_jsonIcNS_13sorted_policyES6_EEEC2IJSA_EEERKS7_DpOT_:
   99|   142k|        {
  100|   142k|        }
_ZN8jsoncons15key_index_valueINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEEEC2IJRKNS_16json_array_arg_tERNS_12semantic_tagEEEEONS3_12basic_stringIcNS3_11char_traitsIcEES5_EEmDpOT_:
   42|  2.31M|        {
   43|  2.31M|        }
_ZN8jsoncons15key_index_valueINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEEEC2IJNS_9null_typeERNS_12semantic_tagEEEEONS3_12basic_stringIcNS3_11char_traitsIcEES5_EEmDpOT_:
   42|  3.24M|        {
   43|  3.24M|        }
_ZN8jsoncons15key_index_valueINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEEEC2IJRbRNS_12semantic_tagEEEEONS3_12basic_stringIcNS3_11char_traitsIcEES5_EEmDpOT_:
   42|  4.44M|        {
   43|  4.44M|        }
_ZN8jsoncons15key_index_valueINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEEEC2IJRKNS_6detail17basic_string_viewIcNS3_11char_traitsIcEEEERNS_12semantic_tagEEEEONS3_12basic_stringIcSC_S5_EEmDpOT_:
   42|  2.06M|        {
   43|  2.06M|        }
_ZN8jsoncons15key_index_valueINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEEEC2IJRKNS_17byte_string_arg_tERKNS_16byte_string_viewERNS_12semantic_tagEEEEONS3_12basic_stringIcNS3_11char_traitsIcEES5_EEmDpOT_:
   42|   131k|        {
   43|   131k|        }
_ZN8jsoncons15key_index_valueINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEEEC2IJRKNS_17byte_string_arg_tERKNS_16byte_string_viewERmEEEONS3_12basic_stringIcNS3_11char_traitsIcEES5_EEmDpOT_:
   42|   102k|        {
   43|   102k|        }
_ZN8jsoncons15key_index_valueINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEEEC2IJRmRNS_12semantic_tagEEEEONS3_12basic_stringIcNS3_11char_traitsIcEES5_EEmDpOT_:
   42|  13.5M|        {
   43|  13.5M|        }
_ZN8jsoncons15key_index_valueINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEEEC2IJRlRNS_12semantic_tagEEEEONS3_12basic_stringIcNS3_11char_traitsIcEES5_EEmDpOT_:
   42|  3.59M|        {
   43|  3.59M|        }
_ZN8jsoncons15key_index_valueINS_10basic_jsonIcNS_13sorted_policyENSt3__19allocatorIcEEEEEC2IJRdRNS_12semantic_tagEEEEONS3_12basic_stringIcNS3_11char_traitsIcEES5_EEmDpOT_:
   42|   112k|        {
   43|   112k|        }

_ZN8jsoncons18basic_json_visitorIcEC2Ev:
   36|  18.3k|        basic_json_visitor() = default;
_ZN8jsoncons18basic_json_visitorIcED2Ev:
   38|  18.3k|        virtual ~basic_json_visitor() noexcept = default;
_ZN8jsoncons18basic_json_visitorIcE18visit_begin_objectEmNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  625|  2.56M|        {
  626|  2.56M|            return visit_begin_object(tag, context, ec);
  627|  2.56M|        }
_ZN8jsoncons18basic_json_visitorIcE17visit_begin_arrayEmNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  640|  2.31M|        {
  641|  2.31M|            return visit_begin_array(tag, context, ec);
  642|  2.31M|        }
_ZN8jsoncons18basic_json_visitorIcE11begin_arrayEmNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  274|  4.63M|        {
  275|  4.63M|            return visit_begin_array(length, tag, context, ec);
  276|  4.63M|        }
_ZN8jsoncons18basic_json_visitorIcE12uint64_valueEmNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  335|  27.0M|        {
  336|  27.0M|            return visit_uint64(value, tag, context, ec);
  337|  27.0M|        }
_ZN8jsoncons18basic_json_visitorIcE9end_arrayERKNS_11ser_contextERNSt3__110error_codeE:
  279|  4.59M|        {
  280|  4.59M|            return visit_end_array(context, ec);
  281|  4.59M|        }
_ZN8jsoncons18basic_json_visitorIcE11int64_valueElNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  343|  7.19M|        {
  344|  7.19M|            return visit_int64(value, tag, context, ec);
  345|  7.19M|        }
_ZN8jsoncons18basic_json_visitorIcE12double_valueEdNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  359|   225k|        {
  360|   225k|            return visit_double(value, tag, context, ec);
  361|   225k|        }
_ZN8jsoncons18basic_json_visitorIcE12begin_objectEmNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  259|  5.12M|        {
  260|  5.12M|            return visit_begin_object(length, tag, context, ec);
  261|  5.12M|        }
_ZN8jsoncons18basic_json_visitorIcE10end_objectERKNS_11ser_contextERNSt3__110error_codeE:
  264|  5.11M|        {
  265|  5.11M|            return visit_end_object(context, ec);
  266|  5.11M|        }
_ZN8jsoncons18basic_json_visitorIcE3keyERKNS_6detail17basic_string_viewIcNSt3__111char_traitsIcEEEERKNS_11ser_contextERNS4_10error_codeE:
  284|  4.37M|        {
  285|  4.37M|            return visit_key(name, context, ec);
  286|  4.37M|        }
_ZN8jsoncons18basic_json_visitorIcE10null_valueENS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  291|  6.48M|        {
  292|  6.48M|            return visit_null(tag, context, ec);
  293|  6.48M|        }
_ZN8jsoncons18basic_json_visitorIcE10bool_valueEbNS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeE:
  299|  8.88M|        {
  300|  8.88M|            return visit_bool(value, tag, context, ec);
  301|  8.88M|        }
_ZN8jsoncons18basic_json_visitorIcE12string_valueERKNS_6detail17basic_string_viewIcNSt3__111char_traitsIcEEEENS_12semantic_tagERKNS_11ser_contextERNS4_10error_codeE:
  307|  4.12M|        {
  308|  4.12M|            return visit_string(value, tag, context, ec);
  309|  4.12M|        }
_ZN8jsoncons18basic_json_visitorIcE17byte_string_valueINS_16byte_string_viewEEEbRKT_NS_12semantic_tagERKNS_11ser_contextERNSt3__110error_codeENSB_9enable_ifIXsr16extension_traits16is_byte_sequenceIS4_EE5valueEiE4typeE:
  317|   262k|        {
  318|   262k|            return visit_byte_string(byte_string_view(reinterpret_cast<const uint8_t*>(b.data()),b.size()), tag, context, ec);
  319|   262k|        }
_ZN8jsoncons18basic_json_visitorIcE17byte_string_valueINS_16byte_string_viewEEEbRKT_mRKNS_11ser_contextERNSt3__110error_codeENSA_9enable_ifIXsr16extension_traits16is_byte_sequenceIS4_EE5valueEiE4typeE:
  327|   205k|        {
  328|   205k|            return visit_byte_string(byte_string_view(reinterpret_cast<const uint8_t*>(b.data()),b.size()), ext_tag, context, ec);
  329|   205k|        }
_ZN8jsoncons26basic_default_json_visitorIcEC2EbNSt3__110error_codeE:
  931|  6.12k|        {
  932|  6.12k|        }

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

_ZN8jsoncons11string_sinkINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEEC2ERS7_:
  222|  83.8k|        {
  223|  83.8k|        }
_ZN8jsoncons11string_sinkINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEE9push_backEc:
  243|  1.18M|        {
  244|  1.18M|            buf_ptr->push_back(ch);
  245|  1.18M|        }

_ZN8jsoncons13stream_sourceIhEC2ERNSt3__113basic_istreamIcNS2_11char_traitsIcEEEEm:
  101|  6.12k|        {
  102|  6.12k|        }
_ZN8jsoncons18basic_null_istreamIcEC1Ev:
   48|  6.12k|        {
   49|  6.12k|        }
_ZN8jsoncons18basic_null_istreamIcE11null_bufferC2Ev:
   36|  6.12k|            null_buffer() = default;
_ZN8jsoncons13stream_sourceIhED2Ev:
  121|  6.12k|        {
  122|  6.12k|        }
_ZNK8jsoncons13stream_sourceIhE8positionEv:
  158|  4.11k|        {
  159|  4.11k|            return position_;
  160|  4.11k|        }
_ZNK8jsoncons13stream_sourceIhE8is_errorEv:
  153|  74.0M|        {
  154|  74.0M|            return stream_ptr_->bad();  
  155|  74.0M|        }
_ZN8jsoncons13stream_sourceIhE4readEPhm:
  220|  80.4M|        {
  221|  80.4M|            std::size_t len = 0;
  222|  80.4M|            if (buffer_length_ > 0)
  ------------------
  |  Branch (222:17): [True: 80.4M, False: 14.4k]
  ------------------
  223|  80.4M|            {
  224|  80.4M|                len = (std::min)(buffer_length_, length);
  225|  80.4M|                std::memcpy(p, buffer_data_, len*sizeof(value_type));
  226|  80.4M|                buffer_data_ += len;
  227|  80.4M|                buffer_length_ -= len;
  228|  80.4M|                position_ += len;
  229|  80.4M|            }
  230|  80.4M|            if (length - len == 0)
  ------------------
  |  Branch (230:17): [True: 80.4M, False: 15.2k]
  ------------------
  231|  80.4M|            {
  232|  80.4M|                return len;
  233|  80.4M|            }
  234|  15.2k|            else if (length - len < buffer_.size())
  ------------------
  |  Branch (234:22): [True: 15.1k, False: 141]
  ------------------
  235|  15.1k|            {
  236|  15.1k|                fill_buffer();
  237|  15.1k|                if (buffer_length_ > 0)
  ------------------
  |  Branch (237:21): [True: 11.3k, False: 3.75k]
  ------------------
  238|  11.3k|                {
  239|  11.3k|                    std::size_t len2 = (std::min)(buffer_length_, length-len);
  240|  11.3k|                    std::memcpy(p+len, buffer_data_, len2*sizeof(value_type));
  241|  11.3k|                    buffer_data_ += len2;
  242|  11.3k|                    buffer_length_ -= len2;
  243|  11.3k|                    position_ += len2;
  244|  11.3k|                    len += len2;
  245|  11.3k|                }
  246|  15.1k|                return len;
  247|  15.1k|            }
  248|    141|            else
  249|    141|            {
  250|    141|                if (stream_ptr_->eof())
  ------------------
  |  Branch (250:21): [True: 0, False: 141]
  ------------------
  251|      0|                {
  252|      0|                    buffer_length_ = 0;
  253|      0|                    return 0;
  254|      0|                }
  255|    141|                JSONCONS_TRY
  ------------------
  |  |  239|    141|    #define JSONCONS_TRY try
  ------------------
  256|    141|                {
  257|    141|                    std::streamsize count = sbuf_->sgetn(reinterpret_cast<char_type*>(p+len), length-len);
  258|    141|                    std::size_t len2 = static_cast<std::size_t>(count);
  259|    141|                    if (len2 < length-len)
  ------------------
  |  Branch (259:25): [True: 25, False: 116]
  ------------------
  260|     25|                    {
  261|     25|                        stream_ptr_->clear(stream_ptr_->rdstate() | std::ios::eofbit);
  262|     25|                    }
  263|    141|                    len += len2;
  264|    141|                    position_ += len2;
  265|    141|                    return len;
  266|    141|                }
  267|    141|                JSONCONS_CATCH(const std::exception&)     
  268|    141|                {
  269|      0|                    stream_ptr_->clear(stream_ptr_->rdstate() | std::ios::badbit | std::ios::eofbit);
  270|      0|                    return 0;
  271|      0|                }
  272|    141|            }
  273|  80.4M|        }
_ZN8jsoncons13stream_sourceIhE11fill_bufferEv:
  276|  15.1k|        {
  277|  15.1k|            if (stream_ptr_->eof())
  ------------------
  |  Branch (277:17): [True: 3.74k, False: 11.3k]
  ------------------
  278|  3.74k|            {
  279|  3.74k|                buffer_length_ = 0;
  280|  3.74k|                return;
  281|  3.74k|            }
  282|       |
  283|  11.3k|            buffer_data_ = buffer_.data();
  284|  11.3k|            JSONCONS_TRY
  ------------------
  |  |  239|  11.3k|    #define JSONCONS_TRY try
  ------------------
  285|  11.3k|            {
  286|  11.3k|                std::streamsize count = sbuf_->sgetn(reinterpret_cast<char_type*>(buffer_.data()), buffer_.size());
  287|  11.3k|                buffer_length_ = static_cast<std::size_t>(count);
  288|       |
  289|  11.3k|                if (buffer_length_ < buffer_.size())
  ------------------
  |  Branch (289:21): [True: 6.08k, False: 5.30k]
  ------------------
  290|  6.08k|                {
  291|  6.08k|                    stream_ptr_->clear(stream_ptr_->rdstate() | std::ios::eofbit);
  292|  6.08k|                }
  293|  11.3k|            }
  294|  11.3k|            JSONCONS_CATCH(const std::exception&)     
  295|  11.3k|            {
  296|      0|                stream_ptr_->clear(stream_ptr_->rdstate() | std::ios::badbit | std::ios::eofbit);
  297|      0|                buffer_length_ = 0;
  298|      0|            }
  299|  11.3k|        }
_ZN8jsoncons13source_readerINS_13stream_sourceIhEEE4readINSt3__112basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEEENS5_9enable_ifIXaaaasr3std14is_convertibleIhNT_10value_typeEEE5valuesr16extension_traits11has_reserveISD_EE5valuentsr16extension_traits14has_data_exactIPhSD_EE5valueEmE4typeERS2_RSD_m:
  759|  2.42M|        {
  760|  2.42M|            std::size_t unread = length;
  761|       |
  762|  2.42M|            std::size_t n = (std::min)(max_buffer_length, unread);
  763|  2.43M|            while (n > 0 && !source.eof())
  ------------------
  |  Branch (763:20): [True: 4.63k, False: 2.42M]
  |  Branch (763:29): [True: 4.51k, False: 125]
  ------------------
  764|  4.51k|            {
  765|  4.51k|                v.reserve(v.size()+n);
  766|  4.51k|                std::size_t actual = 0;
  767|  5.47M|                while (actual < n)
  ------------------
  |  Branch (767:24): [True: 5.46M, False: 4.43k]
  ------------------
  768|  5.46M|                {
  769|  5.46M|                    typename Source::value_type c;
  770|  5.46M|                    if (source.read(&c,1) != 1)
  ------------------
  |  Branch (770:25): [True: 72, False: 5.46M]
  ------------------
  771|     72|                    {
  772|     72|                        break;
  773|     72|                    }
  774|  5.46M|                    v.push_back(c);
  775|  5.46M|                    ++actual;
  776|  5.46M|                }
  777|  4.51k|                unread -= actual;
  778|  4.51k|                n = (std::min)(max_buffer_length, unread);
  779|  4.51k|            }
  780|       |
  781|  2.42M|            return length - unread;
  782|  2.42M|        }
_ZNK8jsoncons13stream_sourceIhE3eofEv:
  148|   149k|        {
  149|   149k|            return buffer_length_ == 0 && stream_ptr_->eof();
  ------------------
  |  Branch (149:20): [True: 683, False: 148k]
  |  Branch (149:43): [True: 441, False: 242]
  ------------------
  150|   149k|        }
_ZN8jsoncons13source_readerINS_13stream_sourceIhEEE4readINSt3__16vectorIhNS5_9allocatorIhEEEEEENS5_9enable_ifIXaaaasr3std14is_convertibleIhNT_10value_typeEEE5valuesr16extension_traits11has_reserveISB_EE5valuesr16extension_traits14has_data_exactIPhSB_EE5valueEmE4typeERS2_RSB_m:
  736|   308k|        {
  737|   308k|            std::size_t unread = length;
  738|       |
  739|   308k|            std::size_t n = (std::min)(max_buffer_length, unread);
  740|   452k|            while (n > 0 && !source.eof())
  ------------------
  |  Branch (740:20): [True: 144k, False: 307k]
  |  Branch (740:29): [True: 144k, False: 316]
  ------------------
  741|   144k|            {
  742|   144k|                std::size_t offset = v.size();
  743|   144k|                v.resize(v.size()+n);
  744|   144k|                std::size_t actual = source.read(v.data()+offset, n);
  745|   144k|                unread -= actual;
  746|   144k|                n = (std::min)(max_buffer_length, unread);
  747|   144k|            }
  748|       |
  749|   308k|            return length - unread;
  750|   308k|        }

_ZN8jsoncons14unicode_traits8validateIcEENSt3__19enable_ifIXsr16extension_traits8is_char8IT_EE5valueENS0_14convert_resultIS4_EEE4typeEPKS4_m:
 1130|  2.42M|    {
 1131|  2.42M|        conv_errc  result = conv_errc();
 1132|  2.42M|        const CharT* last = data + length;
 1133|  4.04M|        while (data != last) 
  ------------------
  |  Branch (1133:16): [True: 1.61M, False: 2.42M]
  ------------------
 1134|  1.61M|        {
 1135|  1.61M|            std::size_t len = static_cast<std::size_t>(trailing_bytes_for_utf8[static_cast<uint8_t>(*data)]) + 1;
 1136|  1.61M|            if (len > (std::size_t)(last - data))
  ------------------
  |  Branch (1136:17): [True: 10, False: 1.61M]
  ------------------
 1137|     10|            {
 1138|     10|                return convert_result<CharT>{data, conv_errc::source_exhausted};
 1139|     10|            }
 1140|  1.61M|            if ((result=is_legal_utf8(data, len)) != conv_errc())
  ------------------
  |  Branch (1140:17): [True: 123, False: 1.61M]
  ------------------
 1141|    123|            {
 1142|    123|                return convert_result<CharT>{data,result} ;
 1143|    123|            }
 1144|  1.61M|            data += len;
 1145|  1.61M|        }
 1146|  2.42M|        return convert_result<CharT>{data,result} ;
 1147|  2.42M|    }
_ZN8jsoncons14unicode_traits13is_legal_utf8IcEENSt3__19enable_ifIXsr16extension_traits8is_char8IT_EE5valueENS0_9conv_errcEE4typeEPKS4_m:
  299|  1.61M|    {
  300|  1.61M|        uint8_t a;
  301|  1.61M|        const CharT* srcptr = first+length;
  302|  1.61M|        switch (length) {
  303|     10|        default:
  ------------------
  |  Branch (303:9): [True: 10, False: 1.61M]
  ------------------
  304|     10|            return conv_errc::over_long_utf8_sequence;
  305|    525|        case 4:
  ------------------
  |  Branch (305:9): [True: 525, False: 1.61M]
  ------------------
  306|    525|            if (((a = (*--srcptr))& 0xC0) != 0x80)
  ------------------
  |  Branch (306:17): [True: 5, False: 520]
  ------------------
  307|      5|                return conv_errc::expected_continuation_byte;
  308|    525|            JSONCONS_FALLTHROUGH;
  ------------------
  |  |   34|    520|#  define JSONCONS_FALLTHROUGH [[clang::fallthrough]]
  ------------------
  309|    979|        case 3:
  ------------------
  |  Branch (309:9): [True: 459, False: 1.61M]
  ------------------
  310|    979|            if (((a = (*--srcptr))& 0xC0) != 0x80)
  ------------------
  |  Branch (310:17): [True: 10, False: 969]
  ------------------
  311|     10|                return conv_errc::expected_continuation_byte;
  312|    979|            JSONCONS_FALLTHROUGH;
  ------------------
  |  |   34|    969|#  define JSONCONS_FALLTHROUGH [[clang::fallthrough]]
  ------------------
  313|  1.22k|        case 2:
  ------------------
  |  Branch (313:9): [True: 251, False: 1.61M]
  ------------------
  314|  1.22k|            if (((a = (*--srcptr))& 0xC0) != 0x80)
  ------------------
  |  Branch (314:17): [True: 35, False: 1.18k]
  ------------------
  315|     35|                return conv_errc::expected_continuation_byte;
  316|       |
  317|  1.18k|            switch (static_cast<uint8_t>(*first)) 
  318|  1.18k|            {
  319|       |                // no fall-through in this inner switch
  320|    209|                case 0xE0: if (a < 0xA0) return conv_errc::source_illegal; break;
  ------------------
  |  Branch (320:17): [True: 209, False: 976]
  |  Branch (320:32): [True: 6, False: 203]
  ------------------
  321|    210|                case 0xED: if (a > 0x9F) return conv_errc::source_illegal; break;
  ------------------
  |  Branch (321:17): [True: 210, False: 975]
  |  Branch (321:32): [True: 3, False: 207]
  ------------------
  322|    273|                case 0xF0: if (a < 0x90) return conv_errc::source_illegal; break;
  ------------------
  |  Branch (322:17): [True: 273, False: 912]
  |  Branch (322:32): [True: 6, False: 267]
  ------------------
  323|    267|                case 0xF4: if (a > 0x8F) return conv_errc::source_illegal; break;
  ------------------
  |  Branch (323:17): [True: 207, False: 978]
  |  Branch (323:32): [True: 1, False: 206]
  ------------------
  324|    286|                default:   if (a < 0x80) return conv_errc::source_illegal;
  ------------------
  |  Branch (324:17): [True: 286, False: 899]
  |  Branch (324:32): [True: 0, False: 286]
  ------------------
  325|  1.18k|            }
  326|       |
  327|  1.18k|            JSONCONS_FALLTHROUGH;
  ------------------
  |  |   34|  1.16k|#  define JSONCONS_FALLTHROUGH [[clang::fallthrough]]
  ------------------
  328|  1.61M|        case 1:
  ------------------
  |  Branch (328:9): [True: 1.61M, False: 1.24k]
  ------------------
  329|  1.61M|            if (static_cast<uint8_t>(*first) >= 0x80 && static_cast<uint8_t>(*first) < 0xC2)
  ------------------
  |  Branch (329:17): [True: 1.21k, False: 1.61M]
  |  Branch (329:57): [True: 46, False: 1.16k]
  ------------------
  330|     46|                return conv_errc::source_illegal;
  331|  1.61M|            break;
  332|  1.61M|        }
  333|  1.61M|        if (static_cast<uint8_t>(*first) > 0xF4) 
  ------------------
  |  Branch (333:13): [True: 1, False: 1.61M]
  ------------------
  334|      1|            return conv_errc::source_illegal;
  335|       |
  336|  1.61M|        return conv_errc();
  337|  1.61M|    }

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

_ZN8jsoncons7msgpack15make_error_codeENS0_12msgpack_errcE:
   80|  4.11k|{
   81|  4.11k|    return std::error_code(static_cast<int>(e),msgpack_error_category());
   82|  4.11k|}
_ZN8jsoncons7msgpack22msgpack_error_categoryEv:
   73|  4.11k|{
   74|  4.11k|  static msgpack_error_category_impl instance;
   75|  4.11k|  return instance;
   76|  4.11k|}
_ZNK8jsoncons7msgpack27msgpack_error_category_impl7messageEi:
   40|  4.11k|    {
   41|  4.11k|        switch (static_cast<msgpack_errc>(ev))
   42|  4.11k|        {
   43|  3.97k|            case msgpack_errc::unexpected_eof:
  ------------------
  |  Branch (43:13): [True: 3.97k, False: 143]
  ------------------
   44|  3.97k|                return "Unexpected end of file";
   45|      0|            case msgpack_errc::source_error:
  ------------------
  |  Branch (45:13): [True: 0, False: 4.11k]
  ------------------
   46|      0|                return "Source error";
   47|    133|            case msgpack_errc::invalid_utf8_text_string:
  ------------------
  |  Branch (47:13): [True: 133, False: 3.98k]
  ------------------
   48|    133|                return "Illegal UTF-8 encoding in text string";
   49|      0|            case msgpack_errc::array_length_required:
  ------------------
  |  Branch (49:13): [True: 0, False: 4.11k]
  ------------------
   50|      0|                return "MessagePack encoder requires array length";
   51|      0|            case msgpack_errc::object_length_required:
  ------------------
  |  Branch (51:13): [True: 0, False: 4.11k]
  ------------------
   52|      0|                return "MessagePack encoder requires object length";
   53|      0|            case msgpack_errc::too_many_items:
  ------------------
  |  Branch (53:13): [True: 0, False: 4.11k]
  ------------------
   54|      0|                return "Too many items were added to a MessagePack object or array";
   55|      0|            case msgpack_errc::too_few_items:
  ------------------
  |  Branch (55:13): [True: 0, False: 4.11k]
  ------------------
   56|      0|                return "Too few items were added to a MessagePack object or array";
   57|      3|            case msgpack_errc::max_nesting_depth_exceeded:
  ------------------
  |  Branch (57:13): [True: 3, False: 4.11k]
  ------------------
   58|      3|                return "Data item nesting exceeds limit in options";
   59|      0|            case msgpack_errc::length_is_negative:
  ------------------
  |  Branch (59:13): [True: 0, False: 4.11k]
  ------------------
   60|      0|                return "Request for the length of an array, map or string returned a negative result";
   61|      0|            case msgpack_errc::invalid_timestamp:
  ------------------
  |  Branch (61:13): [True: 0, False: 4.11k]
  ------------------
   62|      0|                return "Invalid timestamp";
   63|      7|            case msgpack_errc::unknown_type:
  ------------------
  |  Branch (63:13): [True: 7, False: 4.10k]
  ------------------
   64|      7|                return "An unknown type was found in the stream";
   65|      0|            default:
  ------------------
  |  Branch (65:13): [True: 0, False: 4.11k]
  ------------------
   66|      0|                return "Unknown MessagePack parser error";
   67|  4.11k|        }
   68|  4.11k|    }

_ZN8jsoncons7msgpack22msgpack_decode_optionsC1Ev:
   48|  6.12k|    {
   49|  6.12k|    }
_ZN8jsoncons7msgpack22msgpack_options_commonC2Ev:
   29|  6.12k|    {
   30|  6.12k|    }
_ZN8jsoncons7msgpack22msgpack_options_commonD2Ev:
   25|  12.2k|    virtual ~msgpack_options_common() = default;
_ZN8jsoncons7msgpack22msgpack_options_commonC2ERKS1_:
   32|  6.12k|    msgpack_options_common(const msgpack_options_common&) = default;
_ZNK8jsoncons7msgpack22msgpack_options_common17max_nesting_depthEv:
   38|  8.16M|    {
   39|  8.16M|        return max_nesting_depth_;
   40|  8.16M|    }

_ZN8jsoncons7msgpack20basic_msgpack_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEEC2IRNS4_13basic_istreamIcNS4_11char_traitsIcEEEEEEOT_RKNS0_22msgpack_decode_optionsERKS6_:
   78|  6.12k|    {
   79|  6.12k|        state_stack_.emplace_back(parse_mode::root,0);
   80|  6.12k|    }
_ZN8jsoncons7msgpack11parse_stateC2ENS0_10parse_modeEm:
   36|  8.17M|    {
   37|  8.17M|    }
_ZNK8jsoncons7msgpack20basic_msgpack_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE4lineEv:
  116|  4.11k|    {
  117|  4.11k|        return 0;
  118|  4.11k|    }
_ZNK8jsoncons7msgpack20basic_msgpack_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE6columnEv:
  121|  4.11k|    {
  122|  4.11k|        return source_.position();
  123|  4.11k|    }
_ZN8jsoncons7msgpack20basic_msgpack_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE5resetEv:
   88|  6.12k|    {
   89|  6.12k|        more_ = true;
   90|  6.12k|        done_ = false;
   91|  6.12k|        text_buffer_.clear();
   92|  6.12k|        bytes_buffer_.clear();
   93|  6.12k|        state_stack_.clear();
   94|  6.12k|        state_stack_.emplace_back(parse_mode::root,0);
   95|  6.12k|        nesting_depth_ = 0;
   96|  6.12k|    }
_ZN8jsoncons7msgpack20basic_msgpack_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE5parseERNS_24basic_item_event_visitorIcEERNS4_10error_codeE:
  126|  6.12k|    {
  127|  82.2M|        while (!done_ && more_)
  ------------------
  |  Branch (127:16): [True: 82.2M, False: 0]
  |  Branch (127:26): [True: 82.2M, False: 2.00k]
  ------------------
  128|  82.2M|        {
  129|  82.2M|            switch (state_stack_.back().mode)
  ------------------
  |  Branch (129:21): [True: 0, False: 82.2M]
  ------------------
  130|  82.2M|            {
  131|  52.9M|                case parse_mode::array:
  ------------------
  |  Branch (131:17): [True: 52.9M, False: 29.2M]
  ------------------
  132|  52.9M|                {
  133|  52.9M|                    if (state_stack_.back().index < state_stack_.back().length)
  ------------------
  |  Branch (133:25): [True: 47.8M, False: 5.06M]
  ------------------
  134|  47.8M|                    {
  135|  47.8M|                        ++state_stack_.back().index;
  136|  47.8M|                        read_item(visitor, ec);
  137|  47.8M|                        if (ec)
  ------------------
  |  Branch (137:29): [True: 1.15k, False: 47.8M]
  ------------------
  138|  1.15k|                        {
  139|  1.15k|                            return;
  140|  1.15k|                        }
  141|  47.8M|                    }
  142|  5.06M|                    else
  143|  5.06M|                    {
  144|  5.06M|                        end_array(visitor, ec);
  145|  5.06M|                    }
  146|  52.9M|                    break;
  147|  52.9M|                }
  148|  52.9M|                case parse_mode::map_key:
  ------------------
  |  Branch (148:17): [True: 16.1M, False: 66.0M]
  ------------------
  149|  16.1M|                {
  150|  16.1M|                    if (state_stack_.back().index < state_stack_.back().length)
  ------------------
  |  Branch (150:25): [True: 13.0M, False: 3.04M]
  ------------------
  151|  13.0M|                    {
  152|  13.0M|                        ++state_stack_.back().index;
  153|  13.0M|                        state_stack_.back().mode = parse_mode::map_value;
  154|  13.0M|                        read_item(visitor, ec);
  155|  13.0M|                        if (ec)
  ------------------
  |  Branch (155:29): [True: 716, False: 13.0M]
  ------------------
  156|    716|                        {
  157|    716|                            return;
  158|    716|                        }
  159|  13.0M|                    }
  160|  3.04M|                    else
  161|  3.04M|                    {
  162|  3.04M|                        end_object(visitor, ec);
  163|  3.04M|                    }
  164|  16.1M|                    break;
  165|  16.1M|                }
  166|  16.1M|                case parse_mode::map_value:
  ------------------
  |  Branch (166:17): [True: 13.0M, False: 69.1M]
  ------------------
  167|  13.0M|                {
  168|  13.0M|                    state_stack_.back().mode = parse_mode::map_key;
  169|  13.0M|                    read_item(visitor, ec);
  170|  13.0M|                    if (ec)
  ------------------
  |  Branch (170:25): [True: 1.87k, False: 13.0M]
  ------------------
  171|  1.87k|                    {
  172|  1.87k|                        return;
  173|  1.87k|                    }
  174|  13.0M|                    break;
  175|  13.0M|                }
  176|  13.0M|                case parse_mode::root:
  ------------------
  |  Branch (176:17): [True: 6.12k, False: 82.2M]
  ------------------
  177|  6.12k|                {
  178|  6.12k|                    state_stack_.back().mode = parse_mode::accept;
  179|  6.12k|                    read_item(visitor, ec);
  180|  6.12k|                    if (ec)
  ------------------
  |  Branch (180:25): [True: 368, False: 5.75k]
  ------------------
  181|    368|                    {
  182|    368|                        return;
  183|    368|                    }
  184|  5.75k|                    break;
  185|  6.12k|                }
  186|  5.75k|                case parse_mode::accept:
  ------------------
  |  Branch (186:17): [True: 0, False: 82.2M]
  ------------------
  187|      0|                {
  188|      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 ))); }
  ------------------
  189|      0|                    state_stack_.clear();
  190|      0|                    more_ = false;
  191|      0|                    done_ = true;
  192|      0|                    visitor.flush();
  193|      0|                    break;
  194|      0|                }
  195|  82.2M|            }
  196|  82.2M|        }
  197|  6.12k|    }
_ZN8jsoncons7msgpack20basic_msgpack_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE9read_itemERNS_24basic_item_event_visitorIcEERNS4_10error_codeE:
  201|  74.0M|    {
  202|  74.0M|        if (source_.is_error())
  ------------------
  |  Branch (202:13): [True: 0, False: 74.0M]
  ------------------
  203|      0|        {
  204|      0|            ec = msgpack_errc::source_error;
  205|      0|            more_ = false;
  206|      0|            return;
  207|      0|        }   
  208|       |
  209|  74.0M|        uint8_t type;
  210|  74.0M|        if (source_.read(&type, 1) == 0)
  ------------------
  |  Branch (210:13): [True: 3.29k, False: 74.0M]
  ------------------
  211|  3.29k|        {
  212|  3.29k|            ec = msgpack_errc::unexpected_eof;
  213|  3.29k|            more_ = false;
  214|  3.29k|            return;
  215|  3.29k|        }
  216|       |
  217|  74.0M|        if (type <= 0xbf)
  ------------------
  |  Branch (217:13): [True: 36.1M, False: 37.9M]
  ------------------
  218|  36.1M|        {
  219|  36.1M|            if (type <= 0x7f) 
  ------------------
  |  Branch (219:17): [True: 25.5M, False: 10.5M]
  ------------------
  220|  25.5M|            {
  221|       |                // positive fixint
  222|  25.5M|                more_ = visitor.uint64_value(type, semantic_tag::none, *this, ec);
  223|  25.5M|            }
  224|  10.5M|            else if (type <= 0x8f) 
  ------------------
  |  Branch (224:22): [True: 3.05M, False: 7.51M]
  ------------------
  225|  3.05M|            {
  226|  3.05M|                begin_object(visitor,type,ec); // fixmap
  227|  3.05M|            }
  228|  7.51M|            else if (type <= 0x9f) 
  ------------------
  |  Branch (228:22): [True: 5.09M, False: 2.42M]
  ------------------
  229|  5.09M|            {
  230|  5.09M|                begin_array(visitor,type,ec); // fixarray
  231|  5.09M|            }
  232|  2.42M|            else 
  233|  2.42M|            {
  234|       |                // fixstr
  235|  2.42M|                const size_t len = type & 0x1f;
  236|       |
  237|  2.42M|                text_buffer_.clear();
  238|       |
  239|  2.42M|                if (source_reader<Source>::read(source_,text_buffer_,len) != static_cast<std::size_t>(len))
  ------------------
  |  Branch (239:21): [True: 26, False: 2.42M]
  ------------------
  240|     26|                {
  241|     26|                    ec = msgpack_errc::unexpected_eof;
  242|     26|                    more_ = false;
  243|     26|                    return;
  244|     26|                }
  245|       |
  246|  2.42M|                auto result = unicode_traits::validate(text_buffer_.data(),text_buffer_.size());
  247|  2.42M|                if (result.ec != unicode_traits::conv_errc())
  ------------------
  |  Branch (247:21): [True: 114, False: 2.42M]
  ------------------
  248|    114|                {
  249|    114|                    ec = msgpack_errc::invalid_utf8_text_string;
  250|    114|                    more_ = false;
  251|    114|                    return;
  252|    114|                }
  253|  2.42M|                more_ = visitor.string_value(jsoncons::basic_string_view<char>(text_buffer_.data(),text_buffer_.length()), semantic_tag::none, *this, ec);
  254|  2.42M|            }
  255|  36.1M|        }
  256|  37.9M|        else if (type >= 0xe0) 
  ------------------
  |  Branch (256:18): [True: 4.38M, False: 33.5M]
  ------------------
  257|  4.38M|        {
  258|       |            // negative fixint
  259|  4.38M|            more_ = visitor.int64_value(static_cast<int8_t>(type), semantic_tag::none, *this, ec);
  260|  4.38M|        }
  261|  33.5M|        else
  262|  33.5M|        {
  263|  33.5M|            switch (type)
  264|  33.5M|            {
  265|  4.11M|                case jsoncons::msgpack::msgpack_type::nil_type: 
  ------------------
  |  Branch (265:17): [True: 4.11M, False: 29.4M]
  ------------------
  266|  4.11M|                {
  267|  4.11M|                    more_ = visitor.null_value(semantic_tag::none, *this, ec);
  268|  4.11M|                    break;
  269|      0|                }
  270|   718k|                case jsoncons::msgpack::msgpack_type::true_type:
  ------------------
  |  Branch (270:17): [True: 718k, False: 32.8M]
  ------------------
  271|   718k|                {
  272|   718k|                    more_ = visitor.bool_value(true, semantic_tag::none, *this, ec);
  273|   718k|                    break;
  274|      0|                }
  275|  28.1M|                case jsoncons::msgpack::msgpack_type::false_type:
  ------------------
  |  Branch (275:17): [True: 28.1M, False: 5.44M]
  ------------------
  276|  28.1M|                {
  277|  28.1M|                    more_ = visitor.bool_value(false, semantic_tag::none, *this, ec);
  278|  28.1M|                    break;
  279|      0|                }
  280|   188k|                case jsoncons::msgpack::msgpack_type::float32_type: 
  ------------------
  |  Branch (280:17): [True: 188k, False: 33.4M]
  ------------------
  281|   188k|                {
  282|   188k|                    uint8_t buf[sizeof(float)];
  283|   188k|                    if (source_.read(buf, sizeof(float)) != sizeof(float))
  ------------------
  |  Branch (283:25): [True: 16, False: 188k]
  ------------------
  284|     16|                    {
  285|     16|                        ec = msgpack_errc::unexpected_eof;
  286|     16|                        more_ = false;
  287|     16|                        return;
  288|     16|                    }
  289|   188k|                    float val = binary::big_to_native<float>(buf, sizeof(buf));
  290|   188k|                    more_ = visitor.double_value(val, semantic_tag::none, *this, ec);
  291|   188k|                    break;
  292|   188k|                }
  293|       |
  294|  8.30k|                case jsoncons::msgpack::msgpack_type::float64_type: 
  ------------------
  |  Branch (294:17): [True: 8.30k, False: 33.5M]
  ------------------
  295|  8.30k|                {
  296|  8.30k|                    uint8_t buf[sizeof(double)];
  297|  8.30k|                    if (source_.read(buf, sizeof(double)) != sizeof(double))
  ------------------
  |  Branch (297:25): [True: 11, False: 8.29k]
  ------------------
  298|     11|                    {
  299|     11|                        ec = msgpack_errc::unexpected_eof;
  300|     11|                        more_ = false;
  301|     11|                        return;
  302|     11|                    }
  303|  8.29k|                    double val = binary::big_to_native<double>(buf, sizeof(buf));
  304|  8.29k|                    more_ = visitor.double_value(val, semantic_tag::none, *this, ec);
  305|  8.29k|                    break;
  306|  8.30k|                }
  307|       |
  308|  1.41k|                case jsoncons::msgpack::msgpack_type::uint8_type: 
  ------------------
  |  Branch (308:17): [True: 1.41k, False: 33.5M]
  ------------------
  309|  1.41k|                {
  310|  1.41k|                    uint8_t b;
  311|  1.41k|                    if (source_.read(&b, 1) == 0)
  ------------------
  |  Branch (311:25): [True: 1, False: 1.41k]
  ------------------
  312|      1|                    {
  313|      1|                        ec = msgpack_errc::unexpected_eof;
  314|      1|                        more_ = false;
  315|      1|                        return;
  316|      1|                    }
  317|  1.41k|                    more_ = visitor.uint64_value(b, semantic_tag::none, *this, ec);
  318|  1.41k|                    break;
  319|  1.41k|                }
  320|       |
  321|  4.22k|                case jsoncons::msgpack::msgpack_type::uint16_type: 
  ------------------
  |  Branch (321:17): [True: 4.22k, False: 33.5M]
  ------------------
  322|  4.22k|                {
  323|  4.22k|                    uint8_t buf[sizeof(uint16_t)];
  324|  4.22k|                    if (source_.read(buf, sizeof(uint16_t)) !=sizeof(uint16_t)) 
  ------------------
  |  Branch (324:25): [True: 2, False: 4.22k]
  ------------------
  325|      2|                    {
  326|      2|                        ec = msgpack_errc::unexpected_eof;
  327|      2|                        more_ = false;
  328|      2|                        return;
  329|      2|                    }
  330|  4.22k|                    uint16_t val = binary::big_to_native<uint16_t>(buf, sizeof(buf));
  331|  4.22k|                    more_ = visitor.uint64_value(val, semantic_tag::none, *this, ec);
  332|  4.22k|                    break;
  333|  4.22k|                }
  334|       |
  335|  6.58k|                case jsoncons::msgpack::msgpack_type::uint32_type: 
  ------------------
  |  Branch (335:17): [True: 6.58k, False: 33.5M]
  ------------------
  336|  6.58k|                {
  337|  6.58k|                    uint8_t buf[sizeof(uint32_t)];
  338|  6.58k|                    if (source_.read(buf, sizeof(uint32_t)) != sizeof(uint32_t))
  ------------------
  |  Branch (338:25): [True: 3, False: 6.57k]
  ------------------
  339|      3|                    {
  340|      3|                        ec = msgpack_errc::unexpected_eof;
  341|      3|                        more_ = false;
  342|      3|                        return;
  343|      3|                    }
  344|  6.57k|                    uint32_t val = binary::big_to_native<uint32_t>(buf, sizeof(buf));
  345|  6.57k|                    more_ = visitor.uint64_value(val, semantic_tag::none, *this, ec);
  346|  6.57k|                    break;
  347|  6.58k|                }
  348|       |
  349|  3.62k|                case jsoncons::msgpack::msgpack_type::uint64_type: 
  ------------------
  |  Branch (349:17): [True: 3.62k, False: 33.5M]
  ------------------
  350|  3.62k|                {
  351|  3.62k|                    uint8_t buf[sizeof(uint64_t)];
  352|  3.62k|                    if (source_.read(buf, sizeof(uint64_t)) != sizeof(uint64_t))
  ------------------
  |  Branch (352:25): [True: 6, False: 3.62k]
  ------------------
  353|      6|                    {
  354|      6|                        ec = msgpack_errc::unexpected_eof;
  355|      6|                        more_ = false;
  356|      6|                        return;
  357|      6|                    }
  358|  3.62k|                    uint64_t val = binary::big_to_native<uint64_t>(buf, sizeof(buf));
  359|  3.62k|                    more_ = visitor.uint64_value(val, semantic_tag::none, *this, ec);
  360|  3.62k|                    break;
  361|  3.62k|                }
  362|       |
  363|  1.09k|                case jsoncons::msgpack::msgpack_type::int8_type: 
  ------------------
  |  Branch (363:17): [True: 1.09k, False: 33.5M]
  ------------------
  364|  1.09k|                {
  365|  1.09k|                    uint8_t buf[sizeof(int8_t)];
  366|  1.09k|                    if (source_.read(buf, sizeof(int8_t)) != sizeof(int8_t))
  ------------------
  |  Branch (366:25): [True: 2, False: 1.09k]
  ------------------
  367|      2|                    {
  368|      2|                        ec = msgpack_errc::unexpected_eof;
  369|      2|                        more_ = false;
  370|      2|                        return;
  371|      2|                    }
  372|  1.09k|                    int8_t val = binary::big_to_native<int8_t>(buf, sizeof(buf));
  373|  1.09k|                    more_ = visitor.int64_value(val, semantic_tag::none, *this, ec);
  374|  1.09k|                    break;
  375|  1.09k|                }
  376|       |
  377|  1.86k|                case jsoncons::msgpack::msgpack_type::int16_type: 
  ------------------
  |  Branch (377:17): [True: 1.86k, False: 33.5M]
  ------------------
  378|  1.86k|                {
  379|  1.86k|                    uint8_t buf[sizeof(int16_t)];
  380|  1.86k|                    if (source_.read(buf, sizeof(int16_t)) != sizeof(int16_t))
  ------------------
  |  Branch (380:25): [True: 4, False: 1.86k]
  ------------------
  381|      4|                    {
  382|      4|                        ec = msgpack_errc::unexpected_eof;
  383|      4|                        more_ = false;
  384|      4|                        return;
  385|      4|                    }
  386|  1.86k|                    int16_t val = binary::big_to_native<int16_t>(buf, sizeof(buf));
  387|  1.86k|                    more_ = visitor.int64_value(val, semantic_tag::none, *this, ec);
  388|  1.86k|                    break;
  389|  1.86k|                }
  390|       |
  391|  11.4k|                case jsoncons::msgpack::msgpack_type::int32_type: 
  ------------------
  |  Branch (391:17): [True: 11.4k, False: 33.5M]
  ------------------
  392|  11.4k|                {
  393|  11.4k|                    uint8_t buf[sizeof(int32_t)];
  394|  11.4k|                    if (source_.read(buf, sizeof(int32_t)) != sizeof(int32_t))
  ------------------
  |  Branch (394:25): [True: 4, False: 11.4k]
  ------------------
  395|      4|                    {
  396|      4|                        ec = msgpack_errc::unexpected_eof;
  397|      4|                        more_ = false;
  398|      4|                        return;
  399|      4|                    }
  400|  11.4k|                    int32_t val = binary::big_to_native<int32_t>(buf, sizeof(buf));
  401|  11.4k|                    more_ = visitor.int64_value(val, semantic_tag::none, *this, ec);
  402|  11.4k|                    break;
  403|  11.4k|                }
  404|       |
  405|    498|                case jsoncons::msgpack::msgpack_type::int64_type: 
  ------------------
  |  Branch (405:17): [True: 498, False: 33.5M]
  ------------------
  406|    498|                {
  407|    498|                    uint8_t buf[sizeof(int64_t)];
  408|    498|                    if (source_.read(buf, sizeof(int64_t)) != sizeof(int64_t))
  ------------------
  |  Branch (408:25): [True: 6, False: 492]
  ------------------
  409|      6|                    {
  410|      6|                        ec = msgpack_errc::unexpected_eof;
  411|      6|                        more_ = false;
  412|      6|                        return;
  413|      6|                    }
  414|    492|                    int64_t val = binary::big_to_native<int64_t>(buf, sizeof(buf));
  415|    492|                    more_ = visitor.int64_value(val, semantic_tag::none, *this, ec);
  416|    492|                    break;
  417|    498|                }
  418|       |
  419|    624|                case jsoncons::msgpack::msgpack_type::str8_type: 
  ------------------
  |  Branch (419:17): [True: 624, False: 33.5M]
  ------------------
  420|  1.08k|                case jsoncons::msgpack::msgpack_type::str16_type: 
  ------------------
  |  Branch (420:17): [True: 456, False: 33.5M]
  ------------------
  421|  1.39k|                case jsoncons::msgpack::msgpack_type::str32_type: 
  ------------------
  |  Branch (421:17): [True: 313, False: 33.5M]
  ------------------
  422|  1.39k|                {
  423|  1.39k|                    std::size_t len = get_size(type, ec);
  424|  1.39k|                    if (!more_)
  ------------------
  |  Branch (424:25): [True: 22, False: 1.37k]
  ------------------
  425|     22|                    {
  426|     22|                        return;
  427|     22|                    }
  428|       |
  429|  1.37k|                    text_buffer_.clear();
  430|  1.37k|                    if (source_reader<Source>::read(source_,text_buffer_,len) != static_cast<std::size_t>(len))
  ------------------
  |  Branch (430:25): [True: 99, False: 1.27k]
  ------------------
  431|     99|                    {
  432|     99|                        ec = msgpack_errc::unexpected_eof;
  433|     99|                        more_ = false;
  434|     99|                        return;
  435|     99|                    }
  436|       |
  437|  1.27k|                    auto result = unicode_traits::validate(text_buffer_.data(),text_buffer_.size());
  438|  1.27k|                    if (result.ec != unicode_traits::conv_errc())
  ------------------
  |  Branch (438:25): [True: 19, False: 1.25k]
  ------------------
  439|     19|                    {
  440|     19|                        ec = msgpack_errc::invalid_utf8_text_string;
  441|     19|                        more_ = false;
  442|     19|                        return;
  443|     19|                    }
  444|  1.25k|                    more_ = visitor.string_value(jsoncons::basic_string_view<char>(text_buffer_.data(),text_buffer_.length()), semantic_tag::none, *this, ec);
  445|  1.25k|                    break;
  446|  1.27k|                }
  447|       |
  448|   164k|                case jsoncons::msgpack::msgpack_type::bin8_type: 
  ------------------
  |  Branch (448:17): [True: 164k, False: 33.4M]
  ------------------
  449|   164k|                case jsoncons::msgpack::msgpack_type::bin16_type: 
  ------------------
  |  Branch (449:17): [True: 478, False: 33.5M]
  ------------------
  450|   165k|                case jsoncons::msgpack::msgpack_type::bin32_type: 
  ------------------
  |  Branch (450:17): [True: 291, False: 33.5M]
  ------------------
  451|   165k|                {
  452|   165k|                    std::size_t len = get_size(type,ec);
  453|   165k|                    if (!more_)
  ------------------
  |  Branch (453:25): [True: 31, False: 165k]
  ------------------
  454|     31|                    {
  455|     31|                        return;
  456|     31|                    }
  457|   165k|                    bytes_buffer_.clear();
  458|   165k|                    if (source_reader<Source>::read(source_,bytes_buffer_,len) != static_cast<std::size_t>(len))
  ------------------
  |  Branch (458:25): [True: 160, False: 164k]
  ------------------
  459|    160|                    {
  460|    160|                        ec = msgpack_errc::unexpected_eof;
  461|    160|                        more_ = false;
  462|    160|                        return;
  463|    160|                    }
  464|       |
  465|   164k|                    more_ = visitor.byte_string_value(byte_string_view(bytes_buffer_.data(),bytes_buffer_.size()), 
  466|   164k|                                                      semantic_tag::none, 
  467|   164k|                                                      *this,
  468|   164k|                                                      ec);
  469|   164k|                    break;
  470|   165k|                }
  471|  15.2k|                case jsoncons::msgpack::msgpack_type::fixext1_type: 
  ------------------
  |  Branch (471:17): [True: 15.2k, False: 33.5M]
  ------------------
  472|   129k|                case jsoncons::msgpack::msgpack_type::fixext2_type: 
  ------------------
  |  Branch (472:17): [True: 114k, False: 33.4M]
  ------------------
  473|   130k|                case jsoncons::msgpack::msgpack_type::fixext4_type: 
  ------------------
  |  Branch (473:17): [True: 1.07k, False: 33.5M]
  ------------------
  474|   139k|                case jsoncons::msgpack::msgpack_type::fixext8_type: 
  ------------------
  |  Branch (474:17): [True: 8.52k, False: 33.5M]
  ------------------
  475|   146k|                case jsoncons::msgpack::msgpack_type::fixext16_type: 
  ------------------
  |  Branch (475:17): [True: 7.80k, False: 33.5M]
  ------------------
  476|   198k|                case jsoncons::msgpack::msgpack_type::ext8_type: 
  ------------------
  |  Branch (476:17): [True: 52.0k, False: 33.5M]
  ------------------
  477|   199k|                case jsoncons::msgpack::msgpack_type::ext16_type: 
  ------------------
  |  Branch (477:17): [True: 372, False: 33.5M]
  ------------------
  478|   199k|                case jsoncons::msgpack::msgpack_type::ext32_type: 
  ------------------
  |  Branch (478:17): [True: 276, False: 33.5M]
  ------------------
  479|   199k|                {
  480|   199k|                    std::size_t len = get_size(type,ec);
  481|   199k|                    if (!more_)
  ------------------
  |  Branch (481:25): [True: 27, False: 199k]
  ------------------
  482|     27|                    {
  483|     27|                        return;
  484|     27|                    }
  485|       |
  486|       |                    // type
  487|   199k|                    uint8_t buf[sizeof(int8_t)];
  488|   199k|                    if (source_.read(buf, sizeof(int8_t)) != sizeof(int8_t))
  ------------------
  |  Branch (488:25): [True: 40, False: 199k]
  ------------------
  489|     40|                    {
  490|     40|                        ec = msgpack_errc::unexpected_eof;
  491|     40|                        more_ = false;
  492|     40|                        return;
  493|     40|                    }
  494|       |
  495|   199k|                    int8_t ext_type = binary::big_to_native<int8_t>(buf, sizeof(buf));
  496|       |
  497|   199k|                    bool is_timestamp = false; 
  498|   199k|                    if (ext_type == -1)
  ------------------
  |  Branch (498:25): [True: 57.4k, False: 142k]
  ------------------
  499|  57.4k|                    {
  500|  57.4k|                        is_timestamp = true;;
  501|  57.4k|                    }
  502|       |
  503|       |                    // payload
  504|   199k|                    if (is_timestamp && len == 4)
  ------------------
  |  Branch (504:25): [True: 57.4k, False: 142k]
  |  Branch (504:41): [True: 285, False: 57.1k]
  ------------------
  505|    285|                    {
  506|    285|                        uint8_t buf32[sizeof(uint32_t)];
  507|    285|                        if (source_.read(buf32, sizeof(uint32_t)) != sizeof(uint32_t))
  ------------------
  |  Branch (507:29): [True: 3, False: 282]
  ------------------
  508|      3|                        {
  509|      3|                            ec = msgpack_errc::unexpected_eof;
  510|      3|                            more_ = false;
  511|      3|                            return;
  512|      3|                        }
  513|    282|                        uint32_t val = binary::big_to_native<uint32_t>(buf32, sizeof(buf32));
  514|    282|                        more_ = visitor.uint64_value(val, semantic_tag::epoch_second, *this, ec);
  515|    282|                    }
  516|   199k|                    else if (is_timestamp && len == 8)
  ------------------
  |  Branch (516:30): [True: 57.1k, False: 142k]
  |  Branch (516:46): [True: 7.35k, False: 49.8k]
  ------------------
  517|  7.35k|                    {
  518|  7.35k|                        uint8_t buf64[sizeof(uint64_t)];
  519|  7.35k|                        if (source_.read(buf64, sizeof(uint64_t)) != sizeof(uint64_t))
  ------------------
  |  Branch (519:29): [True: 7, False: 7.34k]
  ------------------
  520|      7|                        {
  521|      7|                            ec = msgpack_errc::unexpected_eof;
  522|      7|                            more_ = false;
  523|      7|                            return;
  524|      7|                        }
  525|  7.34k|                        uint64_t data64 = binary::big_to_native<uint64_t>(buf64, sizeof(buf64));
  526|  7.34k|                        uint64_t sec = data64 & 0x00000003ffffffffL;
  527|  7.34k|                        uint64_t nsec = data64 >> 34;
  528|       |
  529|  7.34k|                        bigint nano(sec);
  530|  7.34k|                        nano *= uint64_t(nanos_in_second);
  531|  7.34k|                        nano += nsec;
  532|  7.34k|                        text_buffer_.clear();
  533|  7.34k|                        nano.write_string(text_buffer_);
  534|  7.34k|                        more_ = visitor.string_value(text_buffer_, semantic_tag::epoch_nano, *this, ec);
  535|  7.34k|                        if (!more_) return;
  ------------------
  |  Branch (535:29): [True: 263, False: 7.08k]
  ------------------
  536|  7.34k|                    }
  537|   191k|                    else if (is_timestamp && len == 12)
  ------------------
  |  Branch (537:30): [True: 49.8k, False: 142k]
  |  Branch (537:46): [True: 48.7k, False: 1.05k]
  ------------------
  538|  48.7k|                    {
  539|  48.7k|                        uint8_t buf1[sizeof(uint32_t)];
  540|  48.7k|                        if (source_.read(buf1, sizeof(uint32_t)) != sizeof(uint32_t))
  ------------------
  |  Branch (540:29): [True: 11, False: 48.7k]
  ------------------
  541|     11|                        {
  542|     11|                            ec = msgpack_errc::unexpected_eof;
  543|     11|                            more_ = false;
  544|     11|                            return;
  545|     11|                        }
  546|  48.7k|                        uint32_t nsec = binary::big_to_native<uint32_t>(buf1, sizeof(buf1));
  547|       |
  548|  48.7k|                        uint8_t buf2[sizeof(int64_t)];
  549|  48.7k|                        if (source_.read(buf2, sizeof(int64_t)) != sizeof(int64_t))
  ------------------
  |  Branch (549:29): [True: 4, False: 48.7k]
  ------------------
  550|      4|                        {
  551|      4|                            ec = msgpack_errc::unexpected_eof;
  552|      4|                            more_ = false;
  553|      4|                            return;
  554|      4|                        }
  555|  48.7k|                        int64_t sec = binary::big_to_native<int64_t>(buf2, sizeof(buf2));
  556|       |
  557|  48.7k|                        bigint nano(sec);
  558|       |
  559|  48.7k|                        nano *= uint64_t(nanos_in_second);
  560|       |
  561|  48.7k|                        if (nano < 0)
  ------------------
  |  Branch (561:29): [True: 4.82k, False: 43.9k]
  ------------------
  562|  4.82k|                        {
  563|  4.82k|                            nano -= nsec;
  564|  4.82k|                        }
  565|  43.9k|                        else
  566|  43.9k|                        {
  567|  43.9k|                            nano += nsec;
  568|  43.9k|                        }
  569|       |
  570|  48.7k|                        text_buffer_.clear();
  571|  48.7k|                        nano.write_string(text_buffer_);
  572|  48.7k|                        more_ = visitor.string_value(text_buffer_, semantic_tag::epoch_nano, *this, ec);
  573|  48.7k|                        if (!more_) return;
  ------------------
  |  Branch (573:29): [True: 500, False: 48.2k]
  ------------------
  574|  48.7k|                    }
  575|   143k|                    else
  576|   143k|                    {
  577|   143k|                        bytes_buffer_.clear();
  578|   143k|                        if (source_reader<Source>::read(source_,bytes_buffer_,len) != static_cast<std::size_t>(len))
  ------------------
  |  Branch (578:29): [True: 156, False: 142k]
  ------------------
  579|    156|                        {
  580|    156|                            ec = msgpack_errc::unexpected_eof;
  581|    156|                            more_ = false;
  582|    156|                            return;
  583|    156|                        }
  584|       |
  585|   142k|                        more_ = visitor.byte_string_value(byte_string_view(bytes_buffer_.data(),bytes_buffer_.size()), 
  586|   142k|                                                          static_cast<uint8_t>(ext_type), 
  587|   142k|                                                          *this,
  588|   142k|                                                          ec);
  589|   142k|                    }
  590|   198k|                    break;
  591|   199k|                }
  592|       |
  593|   198k|                case jsoncons::msgpack::msgpack_type::array16_type: 
  ------------------
  |  Branch (593:17): [True: 3.36k, False: 33.5M]
  ------------------
  594|  5.03k|                case jsoncons::msgpack::msgpack_type::array32_type: 
  ------------------
  |  Branch (594:17): [True: 1.66k, False: 33.5M]
  ------------------
  595|  5.03k|                {
  596|  5.03k|                    begin_array(visitor,type,ec);
  597|  5.03k|                    break;
  598|  3.36k|                }
  599|       |
  600|  13.6k|                case jsoncons::msgpack::msgpack_type::map16_type : 
  ------------------
  |  Branch (600:17): [True: 13.6k, False: 33.5M]
  ------------------
  601|  14.3k|                case jsoncons::msgpack::msgpack_type::map32_type : 
  ------------------
  |  Branch (601:17): [True: 613, False: 33.5M]
  ------------------
  602|  14.3k|                {
  603|  14.3k|                    begin_object(visitor, type, ec);
  604|  14.3k|                    break;
  605|  13.6k|                }
  606|       |
  607|      7|                default:
  ------------------
  |  Branch (607:17): [True: 7, False: 33.5M]
  ------------------
  608|      7|                {
  609|      7|                    ec = msgpack_errc::unknown_type;
  610|      7|                    more_ = false;
  611|      7|                    return;
  612|  13.6k|                }
  613|  33.5M|            }
  614|  33.5M|        }
  615|  74.0M|    }
_ZN8jsoncons7msgpack20basic_msgpack_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE12begin_objectERNS_24basic_item_event_visitorIcEEhRNS4_10error_codeE:
  643|  3.06M|    {
  644|  3.06M|        if (JSONCONS_UNLIKELY(++nesting_depth_ > options_.max_nesting_depth()))
  ------------------
  |  |   45|  3.06M|#define JSONCONS_UNLIKELY(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (45:30): [True: 1, False: 3.06M]
  |  |  ------------------
  ------------------
  645|      1|        {
  646|      1|            ec = msgpack_errc::max_nesting_depth_exceeded;
  647|      1|            more_ = false;
  648|      1|            return;
  649|      1|        } 
  650|  3.06M|        std::size_t length = get_size(type, ec);
  651|  3.06M|        if (!more_)
  ------------------
  |  Branch (651:13): [True: 17, False: 3.06M]
  ------------------
  652|     17|        {
  653|     17|            return;
  654|     17|        }
  655|  3.06M|        state_stack_.emplace_back(parse_mode::map_key,length);
  656|  3.06M|        more_ = visitor.begin_object(length, semantic_tag::none, *this, ec);
  657|  3.06M|    }
_ZN8jsoncons7msgpack20basic_msgpack_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE11begin_arrayERNS_24basic_item_event_visitorIcEEhRNS4_10error_codeE:
  618|  5.09M|    {
  619|  5.09M|        if (JSONCONS_UNLIKELY(++nesting_depth_ > options_.max_nesting_depth()))
  ------------------
  |  |   45|  5.09M|#define JSONCONS_UNLIKELY(x) __builtin_expect(!!(x), 0)
  |  |  ------------------
  |  |  |  Branch (45:30): [True: 2, False: 5.09M]
  |  |  ------------------
  ------------------
  620|      2|        {
  621|      2|            ec = msgpack_errc::max_nesting_depth_exceeded;
  622|      2|            more_ = false;
  623|      2|            return;
  624|      2|        } 
  625|  5.09M|        std::size_t length = get_size(type, ec);
  626|  5.09M|        if (!more_)
  ------------------
  |  Branch (626:13): [True: 21, False: 5.09M]
  ------------------
  627|     21|        {
  628|     21|            return;
  629|     21|        }
  630|  5.09M|        state_stack_.emplace_back(parse_mode::array,length);
  631|  5.09M|        more_ = visitor.begin_array(length, semantic_tag::none, *this, ec);
  632|  5.09M|    }
_ZN8jsoncons7msgpack20basic_msgpack_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE8get_sizeEhRNS4_10error_codeE:
  667|  8.52M|    {
  668|  8.52M|        switch (type)
  669|  8.52M|        {
  670|    624|            case jsoncons::msgpack::msgpack_type::str8_type: 
  ------------------
  |  Branch (670:13): [True: 624, False: 8.52M]
  ------------------
  671|   164k|            case jsoncons::msgpack::msgpack_type::bin8_type: 
  ------------------
  |  Branch (671:13): [True: 164k, False: 8.36M]
  ------------------
  672|   216k|            case jsoncons::msgpack::msgpack_type::ext8_type: 
  ------------------
  |  Branch (672:13): [True: 52.0k, False: 8.47M]
  ------------------
  673|   216k|            {
  674|   216k|                uint8_t buf[sizeof(int8_t)];
  675|   216k|                if (source_.read(buf, sizeof(int8_t)) != sizeof(int8_t))
  ------------------
  |  Branch (675:21): [True: 31, False: 216k]
  ------------------
  676|     31|                {
  677|     31|                    ec = msgpack_errc::unexpected_eof;
  678|     31|                    more_ = false;
  679|     31|                    return 0;
  680|     31|                }
  681|   216k|                uint8_t len = binary::big_to_native<uint8_t>(buf, sizeof(buf));
  682|   216k|                return static_cast<std::size_t>(len);
  683|   216k|            }
  684|       |
  685|    456|            case jsoncons::msgpack::msgpack_type::str16_type: 
  ------------------
  |  Branch (685:13): [True: 456, False: 8.52M]
  ------------------
  686|    934|            case jsoncons::msgpack::msgpack_type::bin16_type: 
  ------------------
  |  Branch (686:13): [True: 478, False: 8.52M]
  ------------------
  687|  1.30k|            case jsoncons::msgpack::msgpack_type::ext16_type: 
  ------------------
  |  Branch (687:13): [True: 372, False: 8.52M]
  ------------------
  688|  4.67k|            case jsoncons::msgpack::msgpack_type::array16_type: 
  ------------------
  |  Branch (688:13): [True: 3.36k, False: 8.52M]
  ------------------
  689|  18.3k|            case jsoncons::msgpack::msgpack_type::map16_type:
  ------------------
  |  Branch (689:13): [True: 13.6k, False: 8.51M]
  ------------------
  690|  18.3k|            {
  691|  18.3k|                uint8_t buf[sizeof(int16_t)];
  692|  18.3k|                if (source_.read(buf, sizeof(int16_t)) != sizeof(int16_t))
  ------------------
  |  Branch (692:21): [True: 41, False: 18.3k]
  ------------------
  693|     41|                {
  694|     41|                    ec = msgpack_errc::unexpected_eof;
  695|     41|                    more_ = false;
  696|     41|                    return 0;
  697|     41|                }
  698|  18.3k|                uint16_t len = binary::big_to_native<uint16_t>(buf, sizeof(buf));
  699|  18.3k|                return static_cast<std::size_t>(len);
  700|  18.3k|            }
  701|       |
  702|    313|            case jsoncons::msgpack::msgpack_type::str32_type: 
  ------------------
  |  Branch (702:13): [True: 313, False: 8.52M]
  ------------------
  703|    604|            case jsoncons::msgpack::msgpack_type::bin32_type: 
  ------------------
  |  Branch (703:13): [True: 291, False: 8.52M]
  ------------------
  704|    880|            case jsoncons::msgpack::msgpack_type::ext32_type: 
  ------------------
  |  Branch (704:13): [True: 276, False: 8.52M]
  ------------------
  705|  2.54k|            case jsoncons::msgpack::msgpack_type::array32_type: 
  ------------------
  |  Branch (705:13): [True: 1.66k, False: 8.52M]
  ------------------
  706|  3.15k|            case jsoncons::msgpack::msgpack_type::map32_type : 
  ------------------
  |  Branch (706:13): [True: 613, False: 8.52M]
  ------------------
  707|  3.15k|            {
  708|  3.15k|                uint8_t buf[sizeof(int32_t)];
  709|  3.15k|                if (source_.read(buf, sizeof(int32_t)) != sizeof(int32_t))
  ------------------
  |  Branch (709:21): [True: 46, False: 3.10k]
  ------------------
  710|     46|                {
  711|     46|                    ec = msgpack_errc::unexpected_eof;
  712|     46|                    more_ = false;
  713|     46|                    return 0;
  714|     46|                }
  715|  3.10k|                uint32_t len = binary::big_to_native<uint32_t>(buf, sizeof(buf));
  716|  3.10k|                return static_cast<std::size_t>(len);
  717|  3.15k|            }
  718|  15.2k|            case jsoncons::msgpack::msgpack_type::fixext1_type: 
  ------------------
  |  Branch (718:13): [True: 15.2k, False: 8.51M]
  ------------------
  719|  15.2k|                return 1;
  720|   114k|            case jsoncons::msgpack::msgpack_type::fixext2_type: 
  ------------------
  |  Branch (720:13): [True: 114k, False: 8.41M]
  ------------------
  721|   114k|                return 2;
  722|  1.07k|            case jsoncons::msgpack::msgpack_type::fixext4_type: 
  ------------------
  |  Branch (722:13): [True: 1.07k, False: 8.52M]
  ------------------
  723|  1.07k|                return 4;
  724|  8.52k|            case jsoncons::msgpack::msgpack_type::fixext8_type: 
  ------------------
  |  Branch (724:13): [True: 8.52k, False: 8.51M]
  ------------------
  725|  8.52k|                return 8;
  726|  7.80k|            case jsoncons::msgpack::msgpack_type::fixext16_type: 
  ------------------
  |  Branch (726:13): [True: 7.80k, False: 8.51M]
  ------------------
  727|  7.80k|                return 16;
  728|  8.14M|            default:
  ------------------
  |  Branch (728:13): [True: 8.14M, False: 385k]
  ------------------
  729|  8.14M|                if ((type > 0x8f && type <= 0x9f) // fixarray
  ------------------
  |  Branch (729:22): [True: 5.09M, False: 3.05M]
  |  Branch (729:37): [True: 5.09M, False: 0]
  ------------------
  730|  8.14M|                    || (type > 0x7f && type <= 0x8f) // fixmap
  ------------------
  |  Branch (730:25): [True: 3.05M, False: 0]
  |  Branch (730:40): [True: 3.05M, False: 0]
  ------------------
  731|  8.14M|                   )
  732|  8.14M|                {
  733|  8.14M|                    return type & 0x0f;
  734|  8.14M|                }
  735|      0|                else
  736|      0|                {
  737|      0|                    ec = msgpack_errc::unknown_type;
  738|      0|                    more_ = false;
  739|      0|                    return 0;
  740|      0|                }
  741|      0|                break;
  742|  8.52M|        }
  743|  8.52M|    }
_ZN8jsoncons7msgpack20basic_msgpack_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE9end_arrayERNS_24basic_item_event_visitorIcEERNS4_10error_codeE:
  635|  5.06M|    {
  636|  5.06M|        --nesting_depth_;
  637|       |
  638|  5.06M|        more_ = visitor.end_array(*this, ec);
  639|  5.06M|        state_stack_.pop_back();
  640|  5.06M|    }
_ZN8jsoncons7msgpack20basic_msgpack_parserINS_13stream_sourceIhEENSt3__19allocatorIcEEE10end_objectERNS_24basic_item_event_visitorIcEERNS4_10error_codeE:
  660|  3.04M|    {
  661|  3.04M|        --nesting_depth_;
  662|  3.04M|        more_ = visitor.end_object(*this, ec);
  663|  3.04M|        state_stack_.pop_back();
  664|  3.04M|    }

_ZN8jsoncons7msgpack20basic_msgpack_readerINS_13stream_sourceIhEENSt3__19allocatorIcEEEC2IRNS4_13basic_istreamIcNS4_11char_traitsIcEEEEEEOT_RNS_18basic_json_visitorIcEERKNS0_22msgpack_decode_optionsERKS6_:
   51|  6.12k|    {
   52|  6.12k|    }
_ZN8jsoncons7msgpack20basic_msgpack_readerINS_13stream_sourceIhEENSt3__19allocatorIcEEE4readEv:
   75|  6.12k|    {
   76|  6.12k|        std::error_code ec;
   77|  6.12k|        read(ec);
   78|  6.12k|        if (ec)
  ------------------
  |  Branch (78:13): [True: 4.11k, False: 2.00k]
  ------------------
   79|  4.11k|        {
   80|  4.11k|            JSONCONS_THROW(ser_error(ec,line(),column()));
  ------------------
  |  |  237|  4.11k|    #define JSONCONS_THROW(exception) throw exception
  ------------------
   81|  4.11k|        }
   82|  6.12k|    }
_ZN8jsoncons7msgpack20basic_msgpack_readerINS_13stream_sourceIhEENSt3__19allocatorIcEEE4readERNS4_10error_codeE:
   85|  6.12k|    {
   86|  6.12k|        parser_.reset();
   87|  6.12k|        parser_.parse(visitor_, ec);
   88|  6.12k|        if (ec)
  ------------------
  |  Branch (88:13): [True: 4.11k, False: 2.00k]
  ------------------
   89|  4.11k|        {
   90|  4.11k|            return;
   91|  4.11k|        }
   92|  6.12k|    }
_ZNK8jsoncons7msgpack20basic_msgpack_readerINS_13stream_sourceIhEENSt3__19allocatorIcEEE4lineEv:
   95|  4.11k|    {
   96|  4.11k|        return parser_.line();
   97|  4.11k|    }
_ZNK8jsoncons7msgpack20basic_msgpack_readerINS_13stream_sourceIhEENSt3__19allocatorIcEEE6columnEv:
  100|  4.11k|    {
  101|  4.11k|        return parser_.column();
  102|  4.11k|    }

