_ZN10json_proto18JsonProtoConverter11AppendArrayERKNS_10ArrayValueE:
   21|  1.22k|void JsonProtoConverter::AppendArray(const ArrayValue& array_value) {
   22|  1.22k|  data_ << '[';
   23|  1.22k|  bool need_comma = false;
   24|  7.47k|  for (const auto& value : array_value.value()) {
  ------------------
  |  Branch (24:26): [True: 7.47k, False: 1.22k]
  ------------------
   25|       |    // Trailing comma inside of an array makes JSON invalid, avoid adding that.
   26|  7.47k|    if (need_comma)
  ------------------
  |  Branch (26:9): [True: 6.64k, False: 833]
  ------------------
   27|  6.64k|      data_ << ',';
   28|    833|    else
   29|    833|      need_comma = true;
   30|       |
   31|  7.47k|    AppendValue(value);
   32|  7.47k|  }
   33|  1.22k|  data_ << ']';
   34|  1.22k|}
_ZN10json_proto18JsonProtoConverter12AppendNumberERKNS_11NumberValueE:
   36|  1.57k|void JsonProtoConverter::AppendNumber(const NumberValue& number_value) {
   37|  1.57k|  if (number_value.has_float_value()) {
  ------------------
  |  Branch (37:7): [True: 412, False: 1.16k]
  ------------------
   38|    412|    data_ << number_value.float_value().value();
   39|  1.16k|  } else if (number_value.has_exponent_value()) {
  ------------------
  |  Branch (39:14): [True: 384, False: 782]
  ------------------
   40|    384|    auto value = number_value.exponent_value();
   41|    384|    data_ << value.base();
   42|    384|    data_ << (value.use_uppercase() ? 'E' : 'e');
  ------------------
  |  Branch (42:15): [True: 166, False: 218]
  ------------------
   43|    384|    data_ << value.exponent();
   44|    782|  } else if (number_value.has_exponent_frac_value()) {
  ------------------
  |  Branch (44:14): [True: 228, False: 554]
  ------------------
   45|    228|    auto value = number_value.exponent_value();
   46|    228|    data_ << value.base();
   47|    228|    data_ << (value.use_uppercase() ? 'E' : 'e');
  ------------------
  |  Branch (47:15): [True: 0, False: 228]
  ------------------
   48|    228|    data_ << value.exponent();
   49|    554|  } else {
   50|    554|    data_ << number_value.integer_value().value();
   51|    554|  }
   52|  1.57k|}
_ZN10json_proto18JsonProtoConverter12AppendObjectERKNS_10JsonObjectE:
   54|  4.12k|void JsonProtoConverter::AppendObject(const JsonObject& json_object) {
   55|  4.12k|  data_ << '{' << '"' << json_object.name() << '"' << ':';
   56|  4.12k|  AppendValue(json_object.value());
   57|  4.12k|  data_ << '}';
   58|  4.12k|}
_ZN10json_proto18JsonProtoConverter11AppendValueERKNS_9JsonValueE:
   60|  11.6k|void JsonProtoConverter::AppendValue(const JsonValue& json_value) {
   61|  11.6k|  if (json_value.has_object_value()) {
  ------------------
  |  Branch (61:7): [True: 1.11k, False: 10.4k]
  ------------------
   62|  1.11k|    AppendObject(json_value.object_value());
   63|  10.4k|  } else if (json_value.has_array_value()) {
  ------------------
  |  Branch (63:14): [True: 1.22k, False: 9.26k]
  ------------------
   64|  1.22k|    AppendArray(json_value.array_value());
   65|  9.26k|  } else if (json_value.has_number_value()) {
  ------------------
  |  Branch (65:14): [True: 1.57k, False: 7.68k]
  ------------------
   66|  1.57k|    AppendNumber(json_value.number_value());
   67|  7.68k|  } else if (json_value.has_string_value()) {
  ------------------
  |  Branch (67:14): [True: 643, False: 7.04k]
  ------------------
   68|    643|    data_ << '"' << json_value.string_value().value() << '"';
   69|  7.04k|  } else if (json_value.has_boolean_value()) {
  ------------------
  |  Branch (69:14): [True: 404, False: 6.64k]
  ------------------
   70|    404|    data_ << (json_value.boolean_value().value() ? "true" : "false");
  ------------------
  |  Branch (70:15): [True: 327, False: 77]
  ------------------
   71|  6.64k|  } else {
   72|  6.64k|    data_ << "null";
   73|  6.64k|  }
   74|  11.6k|}
_ZN10json_proto18JsonProtoConverter7ConvertERKNS_10JsonObjectE:
   76|  3.01k|std::string JsonProtoConverter::Convert(const JsonObject& json_object) {
   77|  3.01k|  AppendObject(json_object);
   78|  3.01k|  return data_.str();
   79|  3.01k|}

_ZN10json_proto12JsonParseAPIC2EPN6google8protobuf5ArenaE:
  552|  3.16k|    : ::google::protobuf::Message(arena) {
  553|  3.16k|#endif  // PROTOBUF_CUSTOM_VTABLE
  554|  3.16k|  SharedCtor(arena);
  555|       |  // @@protoc_insertion_point(arena_constructor:json_proto.JsonParseAPI)
  556|  3.16k|}
_ZN10json_proto12JsonParseAPID2Ev:
  598|  3.16k|JsonParseAPI::~JsonParseAPI() {
  599|       |  // @@protoc_insertion_point(destructor:json_proto.JsonParseAPI)
  600|  3.16k|  SharedDtor(*this);
  601|  3.16k|}
_ZNK10json_proto12JsonParseAPI12GetClassDataEv:
  640|  41.2k|const ::google::protobuf::internal::ClassData* JsonParseAPI::GetClassData() const {
  641|  41.2k|  ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
  642|  41.2k|  ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
  643|  41.2k|  return _class_data_.base();
  644|  41.2k|}
_ZN10json_proto12JsonParseAPI5ClearEv:
  685|  6.47k|PROTOBUF_NOINLINE void JsonParseAPI::Clear() {
  686|       |// @@protoc_insertion_point(message_clear_start:json_proto.JsonParseAPI)
  687|  6.47k|  ::google::protobuf::internal::TSanWrite(&_impl_);
  688|  6.47k|  ::uint32_t cached_has_bits = 0;
  689|       |  // Prevent compiler warnings about cached_has_bits being unused
  690|  6.47k|  (void) cached_has_bits;
  691|       |
  692|  6.47k|  cached_has_bits = _impl_._has_bits_[0];
  693|  6.47k|  if (cached_has_bits & 0x00000001u) {
  ------------------
  |  Branch (693:7): [True: 116, False: 6.35k]
  ------------------
  694|    116|    ABSL_DCHECK(_impl_.object_value_ != nullptr);
  ------------------
  |  |   47|    116|  ABSL_LOG_INTERNAL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|    116|  ABSL_LOG_INTERNAL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|    232|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  172|    116|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|    232|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|    232|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  695|    116|    _impl_.object_value_->Clear();
  696|    116|  }
  697|  6.47k|  _impl_.settings_ = 0;
  698|  6.47k|  _impl_._has_bits_.Clear();
  699|  6.47k|  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
  700|  6.47k|}
_ZN10json_proto10JsonObjectC2EPN6google8protobuf5ArenaE:
  852|  4.95k|    : ::google::protobuf::Message(arena) {
  853|  4.95k|#endif  // PROTOBUF_CUSTOM_VTABLE
  854|  4.95k|  SharedCtor(arena);
  855|       |  // @@protoc_insertion_point(arena_constructor:json_proto.JsonObject)
  856|  4.95k|}
_ZN10json_proto10JsonObjectD2Ev:
  900|  4.95k|JsonObject::~JsonObject() {
  901|       |  // @@protoc_insertion_point(destructor:json_proto.JsonObject)
  902|  4.95k|  SharedDtor(*this);
  903|  4.95k|}
_ZNK10json_proto10JsonObject12GetClassDataEv:
  943|  67.9k|const ::google::protobuf::internal::ClassData* JsonObject::GetClassData() const {
  944|  67.9k|  ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
  945|  67.9k|  ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
  946|  67.9k|  return _class_data_.base();
  947|  67.9k|}
_ZN10json_proto10JsonObject5ClearEv:
  998|    124|PROTOBUF_NOINLINE void JsonObject::Clear() {
  999|       |// @@protoc_insertion_point(message_clear_start:json_proto.JsonObject)
 1000|    124|  ::google::protobuf::internal::TSanWrite(&_impl_);
 1001|    124|  ::uint32_t cached_has_bits = 0;
 1002|       |  // Prevent compiler warnings about cached_has_bits being unused
 1003|    124|  (void) cached_has_bits;
 1004|       |
 1005|    124|  cached_has_bits = _impl_._has_bits_[0];
 1006|    124|  if (cached_has_bits & 0x00000003u) {
  ------------------
  |  Branch (1006:7): [True: 112, False: 12]
  ------------------
 1007|    112|    if (cached_has_bits & 0x00000001u) {
  ------------------
  |  Branch (1007:9): [True: 49, False: 63]
  ------------------
 1008|     49|      _impl_.name_.ClearNonDefaultToEmpty();
 1009|     49|    }
 1010|    112|    if (cached_has_bits & 0x00000002u) {
  ------------------
  |  Branch (1010:9): [True: 111, False: 1]
  ------------------
 1011|    111|      ABSL_DCHECK(_impl_.value_ != nullptr);
  ------------------
  |  |   47|    111|  ABSL_LOG_INTERNAL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|    111|  ABSL_LOG_INTERNAL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|    222|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  172|    111|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|    222|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|    222|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1012|    111|      _impl_.value_->Clear();
 1013|    111|    }
 1014|    112|  }
 1015|    124|  _impl_.settings_ = 0;
 1016|    124|  _impl_._has_bits_.Clear();
 1017|    124|  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
 1018|    124|}
_ZN10json_proto10JsonObject9MergeImplERN6google8protobuf11MessageLiteERKS3_:
 1104|      4|void JsonObject::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
 1105|      4|  auto* const _this = static_cast<JsonObject*>(&to_msg);
 1106|      4|  auto& from = static_cast<const JsonObject&>(from_msg);
 1107|      4|  ::google::protobuf::Arena* arena = _this->GetArena();
 1108|       |  // @@protoc_insertion_point(class_specific_merge_from_start:json_proto.JsonObject)
 1109|      4|  ABSL_DCHECK_NE(&from, _this);
  ------------------
  |  |   76|      4|  ABSL_LOG_INTERNAL_DCHECK_NE_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   88|      4|  ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|      4|  while (false && ((void)(x), (void)(y), 0)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (56:10): [Folded - Ignored]
  |  |  |  |  |  |  |  Branch (56:19): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   57|      4|  ::absl::log_internal::NullStream().InternalStream()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1110|      4|  ::uint32_t cached_has_bits = 0;
 1111|      4|  (void) cached_has_bits;
 1112|       |
 1113|      4|  cached_has_bits = from._impl_._has_bits_[0];
 1114|      4|  if (cached_has_bits & 0x00000007u) {
  ------------------
  |  Branch (1114:7): [True: 0, False: 4]
  ------------------
 1115|      0|    if (cached_has_bits & 0x00000001u) {
  ------------------
  |  Branch (1115:9): [True: 0, False: 0]
  ------------------
 1116|      0|      _this->_internal_set_name(from._internal_name());
 1117|      0|    }
 1118|      0|    if (cached_has_bits & 0x00000002u) {
  ------------------
  |  Branch (1118:9): [True: 0, False: 0]
  ------------------
 1119|      0|      ABSL_DCHECK(from._impl_.value_ != nullptr);
  ------------------
  |  |   47|      0|  ABSL_LOG_INTERNAL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|      0|  ABSL_LOG_INTERNAL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      0|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  172|      0|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|      0|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1120|      0|      if (_this->_impl_.value_ == nullptr) {
  ------------------
  |  Branch (1120:11): [True: 0, False: 0]
  ------------------
 1121|      0|        _this->_impl_.value_ =
 1122|      0|            ::google::protobuf::Message::CopyConstruct<::json_proto::JsonValue>(arena, *from._impl_.value_);
 1123|      0|      } else {
 1124|      0|        _this->_impl_.value_->MergeFrom(*from._impl_.value_);
 1125|      0|      }
 1126|      0|    }
 1127|      0|    if (cached_has_bits & 0x00000004u) {
  ------------------
  |  Branch (1127:9): [True: 0, False: 0]
  ------------------
 1128|      0|      _this->_impl_.settings_ = from._impl_.settings_;
 1129|      0|    }
 1130|      0|  }
 1131|      4|  _this->_impl_._has_bits_[0] |= cached_has_bits;
 1132|      4|  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
 1133|      4|}
_ZN10json_proto9JsonValueC2EPN6google8protobuf5ArenaE:
 1249|  15.2k|    : ::google::protobuf::Message(arena) {
 1250|  15.2k|#endif  // PROTOBUF_CUSTOM_VTABLE
 1251|  15.2k|  SharedCtor(arena);
 1252|       |  // @@protoc_insertion_point(arena_constructor:json_proto.JsonValue)
 1253|  15.2k|}
_ZN10json_proto9JsonValueD2Ev:
 1306|  15.2k|JsonValue::~JsonValue() {
 1307|       |  // @@protoc_insertion_point(destructor:json_proto.JsonValue)
 1308|  15.2k|  SharedDtor(*this);
 1309|  15.2k|}
_ZN10json_proto9JsonValue11clear_valueEv:
 1320|  8.97k|void JsonValue::clear_value() {
 1321|       |// @@protoc_insertion_point(one_of_clear_start:json_proto.JsonValue)
 1322|  8.97k|  ::google::protobuf::internal::TSanWrite(&_impl_);
 1323|  8.97k|  switch (value_case()) {
  ------------------
  |  Branch (1323:11): [True: 0, False: 8.97k]
  ------------------
 1324|  1.81k|    case kObjectValue: {
  ------------------
  |  Branch (1324:5): [True: 1.81k, False: 7.15k]
  ------------------
 1325|  1.81k|      if (GetArena() == nullptr) {
  ------------------
  |  Branch (1325:11): [True: 1.81k, False: 0]
  ------------------
 1326|  1.81k|        delete _impl_.value_.object_value_;
 1327|  1.81k|      } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
  ------------------
  |  Branch (1327:18): [Folded - Ignored]
  ------------------
 1328|      0|        ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.value_.object_value_);
 1329|      0|      }
 1330|  1.81k|      break;
 1331|      0|    }
 1332|  1.68k|    case kArrayValue: {
  ------------------
  |  Branch (1332:5): [True: 1.68k, False: 7.29k]
  ------------------
 1333|  1.68k|      if (GetArena() == nullptr) {
  ------------------
  |  Branch (1333:11): [True: 1.68k, False: 0]
  ------------------
 1334|  1.68k|        delete _impl_.value_.array_value_;
 1335|  1.68k|      } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
  ------------------
  |  Branch (1335:18): [Folded - Ignored]
  ------------------
 1336|      0|        ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.value_.array_value_);
 1337|      0|      }
 1338|  1.68k|      break;
 1339|      0|    }
 1340|  2.28k|    case kNumberValue: {
  ------------------
  |  Branch (1340:5): [True: 2.28k, False: 6.69k]
  ------------------
 1341|  2.28k|      if (GetArena() == nullptr) {
  ------------------
  |  Branch (1341:11): [True: 2.28k, False: 0]
  ------------------
 1342|  2.28k|        delete _impl_.value_.number_value_;
 1343|  2.28k|      } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
  ------------------
  |  Branch (1343:18): [Folded - Ignored]
  ------------------
 1344|      0|        ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.value_.number_value_);
 1345|      0|      }
 1346|  2.28k|      break;
 1347|      0|    }
 1348|    728|    case kStringValue: {
  ------------------
  |  Branch (1348:5): [True: 728, False: 8.25k]
  ------------------
 1349|    728|      if (GetArena() == nullptr) {
  ------------------
  |  Branch (1349:11): [True: 728, False: 0]
  ------------------
 1350|    728|        delete _impl_.value_.string_value_;
 1351|    728|      } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
  ------------------
  |  Branch (1351:18): [Folded - Ignored]
  ------------------
 1352|      0|        ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.value_.string_value_);
 1353|      0|      }
 1354|    728|      break;
 1355|      0|    }
 1356|    457|    case kBooleanValue: {
  ------------------
  |  Branch (1356:5): [True: 457, False: 8.52k]
  ------------------
 1357|    457|      if (GetArena() == nullptr) {
  ------------------
  |  Branch (1357:11): [True: 457, False: 0]
  ------------------
 1358|    457|        delete _impl_.value_.boolean_value_;
 1359|    457|      } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
  ------------------
  |  Branch (1359:18): [Folded - Ignored]
  ------------------
 1360|      0|        ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.value_.boolean_value_);
 1361|      0|      }
 1362|    457|      break;
 1363|      0|    }
 1364|  2.00k|    case VALUE_NOT_SET: {
  ------------------
  |  Branch (1364:5): [True: 2.00k, False: 6.97k]
  ------------------
 1365|  2.00k|      break;
 1366|      0|    }
 1367|  8.97k|  }
 1368|  8.97k|  _impl_._oneof_case_[0] = VALUE_NOT_SET;
 1369|  8.97k|}
_ZNK10json_proto9JsonValue12GetClassDataEv:
 1402|   105k|const ::google::protobuf::internal::ClassData* JsonValue::GetClassData() const {
 1403|   105k|  ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
 1404|   105k|  ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
 1405|   105k|  return _class_data_.base();
 1406|   105k|}
_ZN10json_proto9JsonValue5ClearEv:
 1455|  2.11k|PROTOBUF_NOINLINE void JsonValue::Clear() {
 1456|       |// @@protoc_insertion_point(message_clear_start:json_proto.JsonValue)
 1457|  2.11k|  ::google::protobuf::internal::TSanWrite(&_impl_);
 1458|  2.11k|  ::uint32_t cached_has_bits = 0;
 1459|       |  // Prevent compiler warnings about cached_has_bits being unused
 1460|  2.11k|  (void) cached_has_bits;
 1461|       |
 1462|  2.11k|  clear_value();
 1463|  2.11k|  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
 1464|  2.11k|}
_ZN10json_proto9JsonValue9MergeImplERN6google8protobuf11MessageLiteERKS3_:
 1577|  1.00k|void JsonValue::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
 1578|  1.00k|  auto* const _this = static_cast<JsonValue*>(&to_msg);
 1579|  1.00k|  auto& from = static_cast<const JsonValue&>(from_msg);
 1580|  1.00k|  ::google::protobuf::Arena* arena = _this->GetArena();
 1581|       |  // @@protoc_insertion_point(class_specific_merge_from_start:json_proto.JsonValue)
 1582|  1.00k|  ABSL_DCHECK_NE(&from, _this);
  ------------------
  |  |   76|  1.00k|  ABSL_LOG_INTERNAL_DCHECK_NE_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   88|  1.00k|  ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|  1.00k|  while (false && ((void)(x), (void)(y), 0)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (56:10): [Folded - Ignored]
  |  |  |  |  |  |  |  Branch (56:19): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   57|  1.00k|  ::absl::log_internal::NullStream().InternalStream()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1583|  1.00k|  ::uint32_t cached_has_bits = 0;
 1584|  1.00k|  (void) cached_has_bits;
 1585|       |
 1586|  1.00k|  if (const uint32_t oneof_from_case = from._impl_._oneof_case_[0]) {
  ------------------
  |  Branch (1586:22): [True: 0, False: 1.00k]
  ------------------
 1587|      0|    const uint32_t oneof_to_case = _this->_impl_._oneof_case_[0];
 1588|      0|    const bool oneof_needs_init = oneof_to_case != oneof_from_case;
 1589|      0|    if (oneof_needs_init) {
  ------------------
  |  Branch (1589:9): [True: 0, False: 0]
  ------------------
 1590|      0|      if (oneof_to_case != 0) {
  ------------------
  |  Branch (1590:11): [True: 0, False: 0]
  ------------------
 1591|      0|        _this->clear_value();
 1592|      0|      }
 1593|      0|      _this->_impl_._oneof_case_[0] = oneof_from_case;
 1594|      0|    }
 1595|       |
 1596|      0|    switch (oneof_from_case) {
  ------------------
  |  Branch (1596:13): [True: 0, False: 0]
  ------------------
 1597|      0|      case kObjectValue: {
  ------------------
  |  Branch (1597:7): [True: 0, False: 0]
  ------------------
 1598|      0|        if (oneof_needs_init) {
  ------------------
  |  Branch (1598:13): [True: 0, False: 0]
  ------------------
 1599|      0|          _this->_impl_.value_.object_value_ =
 1600|      0|              ::google::protobuf::Message::CopyConstruct<::json_proto::JsonObject>(arena, *from._impl_.value_.object_value_);
 1601|      0|        } else {
 1602|      0|          _this->_impl_.value_.object_value_->MergeFrom(from._internal_object_value());
 1603|      0|        }
 1604|      0|        break;
 1605|      0|      }
 1606|      0|      case kArrayValue: {
  ------------------
  |  Branch (1606:7): [True: 0, False: 0]
  ------------------
 1607|      0|        if (oneof_needs_init) {
  ------------------
  |  Branch (1607:13): [True: 0, False: 0]
  ------------------
 1608|      0|          _this->_impl_.value_.array_value_ =
 1609|      0|              ::google::protobuf::Message::CopyConstruct<::json_proto::ArrayValue>(arena, *from._impl_.value_.array_value_);
 1610|      0|        } else {
 1611|      0|          _this->_impl_.value_.array_value_->MergeFrom(from._internal_array_value());
 1612|      0|        }
 1613|      0|        break;
 1614|      0|      }
 1615|      0|      case kNumberValue: {
  ------------------
  |  Branch (1615:7): [True: 0, False: 0]
  ------------------
 1616|      0|        if (oneof_needs_init) {
  ------------------
  |  Branch (1616:13): [True: 0, False: 0]
  ------------------
 1617|      0|          _this->_impl_.value_.number_value_ =
 1618|      0|              ::google::protobuf::Message::CopyConstruct<::json_proto::NumberValue>(arena, *from._impl_.value_.number_value_);
 1619|      0|        } else {
 1620|      0|          _this->_impl_.value_.number_value_->MergeFrom(from._internal_number_value());
 1621|      0|        }
 1622|      0|        break;
 1623|      0|      }
 1624|      0|      case kStringValue: {
  ------------------
  |  Branch (1624:7): [True: 0, False: 0]
  ------------------
 1625|      0|        if (oneof_needs_init) {
  ------------------
  |  Branch (1625:13): [True: 0, False: 0]
  ------------------
 1626|      0|          _this->_impl_.value_.string_value_ =
 1627|      0|              ::google::protobuf::Message::CopyConstruct<::json_proto::StringValue>(arena, *from._impl_.value_.string_value_);
 1628|      0|        } else {
 1629|      0|          _this->_impl_.value_.string_value_->MergeFrom(from._internal_string_value());
 1630|      0|        }
 1631|      0|        break;
 1632|      0|      }
 1633|      0|      case kBooleanValue: {
  ------------------
  |  Branch (1633:7): [True: 0, False: 0]
  ------------------
 1634|      0|        if (oneof_needs_init) {
  ------------------
  |  Branch (1634:13): [True: 0, False: 0]
  ------------------
 1635|      0|          _this->_impl_.value_.boolean_value_ =
 1636|      0|              ::google::protobuf::Message::CopyConstruct<::json_proto::BooleanValue>(arena, *from._impl_.value_.boolean_value_);
 1637|      0|        } else {
 1638|      0|          _this->_impl_.value_.boolean_value_->MergeFrom(from._internal_boolean_value());
 1639|      0|        }
 1640|      0|        break;
 1641|      0|      }
 1642|      0|      case VALUE_NOT_SET:
  ------------------
  |  Branch (1642:7): [True: 0, False: 0]
  ------------------
 1643|      0|        break;
 1644|      0|    }
 1645|      0|  }
 1646|  1.00k|  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
 1647|  1.00k|}
_ZN10json_proto10ArrayValueC2EPN6google8protobuf5ArenaE:
 1712|  1.68k|    : ::google::protobuf::Message(arena) {
 1713|  1.68k|#endif  // PROTOBUF_CUSTOM_VTABLE
 1714|  1.68k|  SharedCtor(arena);
 1715|       |  // @@protoc_insertion_point(arena_constructor:json_proto.ArrayValue)
 1716|  1.68k|}
_ZN10json_proto10ArrayValueD2Ev:
 1748|  1.68k|ArrayValue::~ArrayValue() {
 1749|       |  // @@protoc_insertion_point(destructor:json_proto.ArrayValue)
 1750|  1.68k|  SharedDtor(*this);
 1751|  1.68k|}
_ZNK10json_proto10ArrayValue12GetClassDataEv:
 1801|  38.5k|const ::google::protobuf::internal::ClassData* ArrayValue::GetClassData() const {
 1802|  38.5k|  ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
 1803|  38.5k|  ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
 1804|  38.5k|  return _class_data_.base();
 1805|  38.5k|}
_ZN10json_proto13NumberIntegerC2EPN6google8protobuf5ArenaE:
 1968|  2.39k|    : ::google::protobuf::Message(arena) {
 1969|  2.39k|#endif  // PROTOBUF_CUSTOM_VTABLE
 1970|  2.39k|  SharedCtor(arena);
 1971|       |  // @@protoc_insertion_point(arena_constructor:json_proto.NumberInteger)
 1972|  2.39k|}
_ZN10json_proto13NumberIntegerD2Ev:
 1987|  2.39k|NumberInteger::~NumberInteger() {
 1988|       |  // @@protoc_insertion_point(destructor:json_proto.NumberInteger)
 1989|  2.39k|  SharedDtor(*this);
 1990|  2.39k|}
_ZNK10json_proto13NumberInteger12GetClassDataEv:
 2028|  14.4k|const ::google::protobuf::internal::ClassData* NumberInteger::GetClassData() const {
 2029|  14.4k|  ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
 2030|  14.4k|  ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
 2031|  14.4k|  return _class_data_.base();
 2032|  14.4k|}
_ZN10json_proto13NumberInteger5ClearEv:
 2067|  1.44k|PROTOBUF_NOINLINE void NumberInteger::Clear() {
 2068|       |// @@protoc_insertion_point(message_clear_start:json_proto.NumberInteger)
 2069|  1.44k|  ::google::protobuf::internal::TSanWrite(&_impl_);
 2070|  1.44k|  ::uint32_t cached_has_bits = 0;
 2071|       |  // Prevent compiler warnings about cached_has_bits being unused
 2072|  1.44k|  (void) cached_has_bits;
 2073|       |
 2074|  1.44k|  _impl_.value_ = ::int64_t{0};
 2075|  1.44k|  _impl_._has_bits_.Clear();
 2076|  1.44k|  _internal_metadata_.Clear<::google::protobuf::UnknownFieldSet>();
 2077|  1.44k|}
_ZN10json_proto13NumberInteger9MergeImplERN6google8protobuf11MessageLiteERKS3_:
 2137|    720|void NumberInteger::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
 2138|    720|  auto* const _this = static_cast<NumberInteger*>(&to_msg);
 2139|    720|  auto& from = static_cast<const NumberInteger&>(from_msg);
 2140|       |  // @@protoc_insertion_point(class_specific_merge_from_start:json_proto.NumberInteger)
 2141|    720|  ABSL_DCHECK_NE(&from, _this);
  ------------------
  |  |   76|    720|  ABSL_LOG_INTERNAL_DCHECK_NE_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   88|    720|  ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|    720|  while (false && ((void)(x), (void)(y), 0)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (56:10): [Folded - Ignored]
  |  |  |  |  |  |  |  Branch (56:19): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   57|    720|  ::absl::log_internal::NullStream().InternalStream()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2142|    720|  ::uint32_t cached_has_bits = 0;
 2143|    720|  (void) cached_has_bits;
 2144|       |
 2145|    720|  cached_has_bits = from._impl_._has_bits_[0];
 2146|    720|  if (cached_has_bits & 0x00000001u) {
  ------------------
  |  Branch (2146:7): [True: 0, False: 720]
  ------------------
 2147|      0|    _this->_impl_.value_ = from._impl_.value_;
 2148|      0|  }
 2149|    720|  _this->_impl_._has_bits_[0] |= cached_has_bits;
 2150|    720|  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
 2151|    720|}
_ZN10json_proto11NumberFloatC2EPN6google8protobuf5ArenaE:
 2196|    443|    : ::google::protobuf::Message(arena) {
 2197|    443|#endif  // PROTOBUF_CUSTOM_VTABLE
 2198|    443|  SharedCtor(arena);
 2199|       |  // @@protoc_insertion_point(arena_constructor:json_proto.NumberFloat)
 2200|    443|}
_ZN10json_proto11NumberFloatD2Ev:
 2215|    443|NumberFloat::~NumberFloat() {
 2216|       |  // @@protoc_insertion_point(destructor:json_proto.NumberFloat)
 2217|    443|  SharedDtor(*this);
 2218|    443|}
_ZNK10json_proto11NumberFloat12GetClassDataEv:
 2256|  4.34k|const ::google::protobuf::internal::ClassData* NumberFloat::GetClassData() const {
 2257|  4.34k|  ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
 2258|  4.34k|  ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
 2259|  4.34k|  return _class_data_.base();
 2260|  4.34k|}
_ZN10json_proto14NumberExponentC2EPN6google8protobuf5ArenaE:
 2423|  1.26k|    : ::google::protobuf::Message(arena) {
 2424|  1.26k|#endif  // PROTOBUF_CUSTOM_VTABLE
 2425|  1.26k|  SharedCtor(arena);
 2426|       |  // @@protoc_insertion_point(arena_constructor:json_proto.NumberExponent)
 2427|  1.26k|}
_ZN10json_proto14NumberExponentC2EPN6google8protobuf5ArenaERKS0_:
 2430|    612|    : NumberExponent(arena) {
 2431|    612|  MergeFrom(from);
 2432|    612|}
_ZN10json_proto14NumberExponentD2Ev:
 2447|  1.26k|NumberExponent::~NumberExponent() {
 2448|       |  // @@protoc_insertion_point(destructor:json_proto.NumberExponent)
 2449|  1.26k|  SharedDtor(*this);
 2450|  1.26k|}
_ZNK10json_proto14NumberExponent12GetClassDataEv:
 2488|  5.68k|const ::google::protobuf::internal::ClassData* NumberExponent::GetClassData() const {
 2489|  5.68k|  ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
 2490|  5.68k|  ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
 2491|  5.68k|  return _class_data_.base();
 2492|  5.68k|}
_ZN10json_proto14NumberExponent9MergeImplERN6google8protobuf11MessageLiteERKS3_:
 2639|    612|void NumberExponent::MergeImpl(::google::protobuf::MessageLite& to_msg, const ::google::protobuf::MessageLite& from_msg) {
 2640|    612|  auto* const _this = static_cast<NumberExponent*>(&to_msg);
 2641|    612|  auto& from = static_cast<const NumberExponent&>(from_msg);
 2642|       |  // @@protoc_insertion_point(class_specific_merge_from_start:json_proto.NumberExponent)
 2643|    612|  ABSL_DCHECK_NE(&from, _this);
  ------------------
  |  |   76|    612|  ABSL_LOG_INTERNAL_DCHECK_NE_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   88|    612|  ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|    612|  while (false && ((void)(x), (void)(y), 0)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (56:10): [Folded - Ignored]
  |  |  |  |  |  |  |  Branch (56:19): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   57|    612|  ::absl::log_internal::NullStream().InternalStream()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2644|    612|  ::uint32_t cached_has_bits = 0;
 2645|    612|  (void) cached_has_bits;
 2646|       |
 2647|    612|  cached_has_bits = from._impl_._has_bits_[0];
 2648|    612|  if (cached_has_bits & 0x00000007u) {
  ------------------
  |  Branch (2648:7): [True: 384, False: 228]
  ------------------
 2649|    384|    if (cached_has_bits & 0x00000001u) {
  ------------------
  |  Branch (2649:9): [True: 384, False: 0]
  ------------------
 2650|    384|      _this->_impl_.base_ = from._impl_.base_;
 2651|    384|    }
 2652|    384|    if (cached_has_bits & 0x00000002u) {
  ------------------
  |  Branch (2652:9): [True: 384, False: 0]
  ------------------
 2653|    384|      _this->_impl_.exponent_ = from._impl_.exponent_;
 2654|    384|    }
 2655|    384|    if (cached_has_bits & 0x00000004u) {
  ------------------
  |  Branch (2655:9): [True: 384, False: 0]
  ------------------
 2656|    384|      _this->_impl_.use_uppercase_ = from._impl_.use_uppercase_;
 2657|    384|    }
 2658|    384|  }
 2659|    612|  _this->_impl_._has_bits_[0] |= cached_has_bits;
 2660|    612|  _this->_internal_metadata_.MergeFrom<::google::protobuf::UnknownFieldSet>(from._internal_metadata_);
 2661|    612|}
_ZN10json_proto18NumberExponentFracC2EPN6google8protobuf5ArenaE:
 2711|    270|    : ::google::protobuf::Message(arena) {
 2712|    270|#endif  // PROTOBUF_CUSTOM_VTABLE
 2713|    270|  SharedCtor(arena);
 2714|       |  // @@protoc_insertion_point(arena_constructor:json_proto.NumberExponentFrac)
 2715|    270|}
_ZN10json_proto18NumberExponentFracD2Ev:
 2735|    270|NumberExponentFrac::~NumberExponentFrac() {
 2736|       |  // @@protoc_insertion_point(destructor:json_proto.NumberExponentFrac)
 2737|    270|  SharedDtor(*this);
 2738|    270|}
_ZNK10json_proto18NumberExponentFrac12GetClassDataEv:
 2776|  3.57k|const ::google::protobuf::internal::ClassData* NumberExponentFrac::GetClassData() const {
 2777|  3.57k|  ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
 2778|  3.57k|  ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
 2779|  3.57k|  return _class_data_.base();
 2780|  3.57k|}
_ZN10json_proto11NumberValueC2EPN6google8protobuf5ArenaE:
 3039|  2.28k|    : ::google::protobuf::Message(arena) {
 3040|  2.28k|#endif  // PROTOBUF_CUSTOM_VTABLE
 3041|  2.28k|  SharedCtor(arena);
 3042|       |  // @@protoc_insertion_point(arena_constructor:json_proto.NumberValue)
 3043|  2.28k|}
_ZN10json_proto11NumberValueD2Ev:
 3096|  2.28k|NumberValue::~NumberValue() {
 3097|       |  // @@protoc_insertion_point(destructor:json_proto.NumberValue)
 3098|  2.28k|  SharedDtor(*this);
 3099|  2.28k|}
_ZN10json_proto11NumberValue11clear_valueEv:
 3111|  1.37k|void NumberValue::clear_value() {
 3112|       |// @@protoc_insertion_point(one_of_clear_start:json_proto.NumberValue)
 3113|  1.37k|  ::google::protobuf::internal::TSanWrite(&_impl_);
 3114|  1.37k|  switch (value_case()) {
  ------------------
  |  Branch (3114:11): [True: 0, False: 1.37k]
  ------------------
 3115|    443|    case kFloatValue: {
  ------------------
  |  Branch (3115:5): [True: 443, False: 927]
  ------------------
 3116|    443|      if (GetArena() == nullptr) {
  ------------------
  |  Branch (3116:11): [True: 443, False: 0]
  ------------------
 3117|    443|        delete _impl_.value_.float_value_;
 3118|    443|      } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
  ------------------
  |  Branch (3118:18): [Folded - Ignored]
  ------------------
 3119|      0|        ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.value_.float_value_);
 3120|      0|      }
 3121|    443|      break;
 3122|      0|    }
 3123|    657|    case kExponentValue: {
  ------------------
  |  Branch (3123:5): [True: 657, False: 713]
  ------------------
 3124|    657|      if (GetArena() == nullptr) {
  ------------------
  |  Branch (3124:11): [True: 657, False: 0]
  ------------------
 3125|    657|        delete _impl_.value_.exponent_value_;
 3126|    657|      } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
  ------------------
  |  Branch (3126:18): [Folded - Ignored]
  ------------------
 3127|      0|        ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.value_.exponent_value_);
 3128|      0|      }
 3129|    657|      break;
 3130|      0|    }
 3131|    270|    case kExponentFracValue: {
  ------------------
  |  Branch (3131:5): [True: 270, False: 1.10k]
  ------------------
 3132|    270|      if (GetArena() == nullptr) {
  ------------------
  |  Branch (3132:11): [True: 270, False: 0]
  ------------------
 3133|    270|        delete _impl_.value_.exponent_frac_value_;
 3134|    270|      } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
  ------------------
  |  Branch (3134:18): [Folded - Ignored]
  ------------------
 3135|      0|        ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.value_.exponent_frac_value_);
 3136|      0|      }
 3137|    270|      break;
 3138|      0|    }
 3139|      0|    case VALUE_NOT_SET: {
  ------------------
  |  Branch (3139:5): [True: 0, False: 1.37k]
  ------------------
 3140|      0|      break;
 3141|      0|    }
 3142|  1.37k|  }
 3143|  1.37k|  _impl_._oneof_case_[0] = VALUE_NOT_SET;
 3144|  1.37k|}
_ZNK10json_proto11NumberValue12GetClassDataEv:
 3177|  22.5k|const ::google::protobuf::internal::ClassData* NumberValue::GetClassData() const {
 3178|  22.5k|  ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
 3179|  22.5k|  ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
 3180|  22.5k|  return _class_data_.base();
 3181|  22.5k|}
_ZN10json_proto11StringValueC2EPN6google8protobuf5ArenaE:
 3481|    728|    : ::google::protobuf::Message(arena) {
 3482|    728|#endif  // PROTOBUF_CUSTOM_VTABLE
 3483|    728|  SharedCtor(arena);
 3484|       |  // @@protoc_insertion_point(arena_constructor:json_proto.StringValue)
 3485|    728|}
_ZN10json_proto11StringValueD2Ev:
 3518|    728|StringValue::~StringValue() {
 3519|       |  // @@protoc_insertion_point(destructor:json_proto.StringValue)
 3520|    728|  SharedDtor(*this);
 3521|    728|}
_ZNK10json_proto11StringValue12GetClassDataEv:
 3560|  6.82k|const ::google::protobuf::internal::ClassData* StringValue::GetClassData() const {
 3561|  6.82k|  ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
 3562|  6.82k|  ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
 3563|  6.82k|  return _class_data_.base();
 3564|  6.82k|}
_ZN10json_proto12BooleanValueC2EPN6google8protobuf5ArenaE:
 3737|    457|    : ::google::protobuf::Message(arena) {
 3738|    457|#endif  // PROTOBUF_CUSTOM_VTABLE
 3739|    457|  SharedCtor(arena);
 3740|       |  // @@protoc_insertion_point(arena_constructor:json_proto.BooleanValue)
 3741|    457|}
_ZN10json_proto12BooleanValueD2Ev:
 3756|    457|BooleanValue::~BooleanValue() {
 3757|       |  // @@protoc_insertion_point(destructor:json_proto.BooleanValue)
 3758|    457|  SharedDtor(*this);
 3759|    457|}
_ZNK10json_proto12BooleanValue12GetClassDataEv:
 3797|  4.36k|const ::google::protobuf::internal::ClassData* BooleanValue::GetClassData() const {
 3798|  4.36k|  ::google::protobuf::internal::PrefetchToLocalCache(&_class_data_);
 3799|  4.36k|  ::google::protobuf::internal::PrefetchToLocalCache(_class_data_.tc_table);
 3800|  4.36k|  return _class_data_.base();
 3801|  4.36k|}
_ZN10json_proto12JsonParseAPI10SharedCtorEPN6google8protobuf5ArenaE:
  589|  3.16k|inline void JsonParseAPI::SharedCtor(::_pb::Arena* arena) {
  590|  3.16k|  new (&_impl_) Impl_(internal_visibility(), arena);
  591|  3.16k|  ::memset(reinterpret_cast<char *>(&_impl_) +
  592|  3.16k|               offsetof(Impl_, object_value_),
  593|  3.16k|           0,
  594|  3.16k|           offsetof(Impl_, settings_) -
  595|  3.16k|               offsetof(Impl_, object_value_) +
  596|  3.16k|               sizeof(Impl_::settings_));
  597|  3.16k|}
_ZN10json_proto12JsonParseAPI5Impl_C2EN6google8protobuf8internal18InternalVisibilityEPNS3_5ArenaE:
  587|  3.16k|      : _cached_size_{0} {}
_ZN10json_proto12JsonParseAPI10SharedDtorERN6google8protobuf11MessageLiteE:
  602|  3.16k|inline void JsonParseAPI::SharedDtor(MessageLite& self) {
  603|  3.16k|  JsonParseAPI& this_ = static_cast<JsonParseAPI&>(self);
  604|  3.16k|  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  605|  3.16k|  ABSL_DCHECK(this_.GetArena() == nullptr);
  ------------------
  |  |   47|  3.16k|  ABSL_LOG_INTERNAL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|  3.16k|  ABSL_LOG_INTERNAL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|  6.32k|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  172|  3.16k|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|  6.32k|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|  6.32k|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  606|  3.16k|  delete this_._impl_.object_value_;
  607|  3.16k|  this_._impl_.~Impl_();
  608|  3.16k|}
_ZN10json_proto10JsonObject10SharedCtorEPN6google8protobuf5ArenaE:
  891|  4.95k|inline void JsonObject::SharedCtor(::_pb::Arena* arena) {
  892|  4.95k|  new (&_impl_) Impl_(internal_visibility(), arena);
  893|  4.95k|  ::memset(reinterpret_cast<char *>(&_impl_) +
  894|  4.95k|               offsetof(Impl_, value_),
  895|  4.95k|           0,
  896|  4.95k|           offsetof(Impl_, settings_) -
  897|  4.95k|               offsetof(Impl_, value_) +
  898|  4.95k|               sizeof(Impl_::settings_));
  899|  4.95k|}
_ZN10json_proto10JsonObject5Impl_C2EN6google8protobuf8internal18InternalVisibilityEPNS3_5ArenaE:
  888|  4.95k|      : _cached_size_{0},
  889|  4.95k|        name_(arena) {}
_ZN10json_proto10JsonObject10SharedDtorERN6google8protobuf11MessageLiteE:
  904|  4.95k|inline void JsonObject::SharedDtor(MessageLite& self) {
  905|  4.95k|  JsonObject& this_ = static_cast<JsonObject&>(self);
  906|  4.95k|  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
  907|  4.95k|  ABSL_DCHECK(this_.GetArena() == nullptr);
  ------------------
  |  |   47|  4.95k|  ABSL_LOG_INTERNAL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|  4.95k|  ABSL_LOG_INTERNAL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|  9.90k|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  172|  4.95k|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|  9.90k|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|  9.90k|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  908|  4.95k|  this_._impl_.name_.Destroy();
  909|  4.95k|  delete this_._impl_.value_;
  910|  4.95k|  this_._impl_.~Impl_();
  911|  4.95k|}
_ZN10json_proto10JsonObject13PlacementNew_EPKvPvPN6google8protobuf5ArenaE:
  914|  4.95k|                                        ::google::protobuf::Arena* arena) {
  915|  4.95k|  return ::new (mem) JsonObject(arena);
  916|  4.95k|}
_ZN10json_proto9JsonValue10SharedCtorEPN6google8protobuf5ArenaE:
 1303|  15.2k|inline void JsonValue::SharedCtor(::_pb::Arena* arena) {
 1304|  15.2k|  new (&_impl_) Impl_(internal_visibility(), arena);
 1305|  15.2k|}
_ZN10json_proto9JsonValue5Impl_C2EN6google8protobuf8internal18InternalVisibilityEPNS3_5ArenaE:
 1299|  15.2k|      : value_{},
 1300|  15.2k|        _cached_size_{0},
 1301|  15.2k|        _oneof_case_{} {}
_ZN10json_proto9JsonValue10SharedDtorERN6google8protobuf11MessageLiteE:
 1310|  15.2k|inline void JsonValue::SharedDtor(MessageLite& self) {
 1311|  15.2k|  JsonValue& this_ = static_cast<JsonValue&>(self);
 1312|  15.2k|  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
 1313|  15.2k|  ABSL_DCHECK(this_.GetArena() == nullptr);
  ------------------
  |  |   47|  15.2k|  ABSL_LOG_INTERNAL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|  15.2k|  ABSL_LOG_INTERNAL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|  30.4k|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  172|  15.2k|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|  30.4k|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|  30.4k|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1314|  15.2k|  if (this_.has_value()) {
  ------------------
  |  Branch (1314:7): [True: 6.86k, False: 8.36k]
  ------------------
 1315|  6.86k|    this_.clear_value();
 1316|  6.86k|  }
 1317|  15.2k|  this_._impl_.~Impl_();
 1318|  15.2k|}
_ZN10json_proto9JsonValue13PlacementNew_EPKvPvPN6google8protobuf5ArenaE:
 1373|  15.2k|                                        ::google::protobuf::Arena* arena) {
 1374|  15.2k|  return ::new (mem) JsonValue(arena);
 1375|  15.2k|}
_ZN10json_proto10ArrayValue10SharedCtorEPN6google8protobuf5ArenaE:
 1745|  1.68k|inline void ArrayValue::SharedCtor(::_pb::Arena* arena) {
 1746|  1.68k|  new (&_impl_) Impl_(internal_visibility(), arena);
 1747|  1.68k|}
_ZN10json_proto10ArrayValue5Impl_C2EN6google8protobuf8internal18InternalVisibilityEPNS3_5ArenaE:
 1742|  1.68k|      : value_{visibility, arena},
 1743|  1.68k|        _cached_size_{0} {}
_ZN10json_proto10ArrayValue10SharedDtorERN6google8protobuf11MessageLiteE:
 1752|  1.68k|inline void ArrayValue::SharedDtor(MessageLite& self) {
 1753|  1.68k|  ArrayValue& this_ = static_cast<ArrayValue&>(self);
 1754|  1.68k|  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
 1755|  1.68k|  ABSL_DCHECK(this_.GetArena() == nullptr);
  ------------------
  |  |   47|  1.68k|  ABSL_LOG_INTERNAL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|  1.68k|  ABSL_LOG_INTERNAL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|  3.36k|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  172|  1.68k|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|  3.36k|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|  3.36k|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1756|  1.68k|  this_._impl_.~Impl_();
 1757|  1.68k|}
_ZN10json_proto10ArrayValue13PlacementNew_EPKvPvPN6google8protobuf5ArenaE:
 1760|  1.68k|                                        ::google::protobuf::Arena* arena) {
 1761|  1.68k|  return ::new (mem) ArrayValue(arena);
 1762|  1.68k|}
_ZN10json_proto13NumberInteger10SharedCtorEPN6google8protobuf5ArenaE:
 1983|  2.39k|inline void NumberInteger::SharedCtor(::_pb::Arena* arena) {
 1984|  2.39k|  new (&_impl_) Impl_(internal_visibility(), arena);
 1985|  2.39k|  _impl_.value_ = {};
 1986|  2.39k|}
_ZN10json_proto13NumberInteger5Impl_C2EN6google8protobuf8internal18InternalVisibilityEPNS3_5ArenaE:
 1981|  2.39k|      : _cached_size_{0} {}
_ZN10json_proto13NumberInteger10SharedDtorERN6google8protobuf11MessageLiteE:
 1991|  2.39k|inline void NumberInteger::SharedDtor(MessageLite& self) {
 1992|  2.39k|  NumberInteger& this_ = static_cast<NumberInteger&>(self);
 1993|  2.39k|  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
 1994|  2.39k|  ABSL_DCHECK(this_.GetArena() == nullptr);
  ------------------
  |  |   47|  2.39k|  ABSL_LOG_INTERNAL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|  2.39k|  ABSL_LOG_INTERNAL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|  4.78k|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  172|  2.39k|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|  4.78k|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|  4.78k|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1995|  2.39k|  this_._impl_.~Impl_();
 1996|  2.39k|}
_ZN10json_proto13NumberInteger13PlacementNew_EPKvPvPN6google8protobuf5ArenaE:
 1999|  2.39k|                                        ::google::protobuf::Arena* arena) {
 2000|  2.39k|  return ::new (mem) NumberInteger(arena);
 2001|  2.39k|}
_ZN10json_proto11NumberFloat10SharedCtorEPN6google8protobuf5ArenaE:
 2211|    443|inline void NumberFloat::SharedCtor(::_pb::Arena* arena) {
 2212|    443|  new (&_impl_) Impl_(internal_visibility(), arena);
 2213|    443|  _impl_.value_ = {};
 2214|    443|}
_ZN10json_proto11NumberFloat5Impl_C2EN6google8protobuf8internal18InternalVisibilityEPNS3_5ArenaE:
 2209|    443|      : _cached_size_{0} {}
_ZN10json_proto11NumberFloat10SharedDtorERN6google8protobuf11MessageLiteE:
 2219|    443|inline void NumberFloat::SharedDtor(MessageLite& self) {
 2220|    443|  NumberFloat& this_ = static_cast<NumberFloat&>(self);
 2221|    443|  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
 2222|    443|  ABSL_DCHECK(this_.GetArena() == nullptr);
  ------------------
  |  |   47|    443|  ABSL_LOG_INTERNAL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|    443|  ABSL_LOG_INTERNAL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|    886|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  172|    443|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|    886|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|    886|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2223|    443|  this_._impl_.~Impl_();
 2224|    443|}
_ZN10json_proto11NumberFloat13PlacementNew_EPKvPvPN6google8protobuf5ArenaE:
 2227|    443|                                        ::google::protobuf::Arena* arena) {
 2228|    443|  return ::new (mem) NumberFloat(arena);
 2229|    443|}
_ZN10json_proto14NumberExponent10SharedCtorEPN6google8protobuf5ArenaE:
 2438|  1.26k|inline void NumberExponent::SharedCtor(::_pb::Arena* arena) {
 2439|  1.26k|  new (&_impl_) Impl_(internal_visibility(), arena);
 2440|  1.26k|  ::memset(reinterpret_cast<char *>(&_impl_) +
 2441|  1.26k|               offsetof(Impl_, base_),
 2442|  1.26k|           0,
 2443|  1.26k|           offsetof(Impl_, use_uppercase_) -
 2444|  1.26k|               offsetof(Impl_, base_) +
 2445|  1.26k|               sizeof(Impl_::use_uppercase_));
 2446|  1.26k|}
_ZN10json_proto14NumberExponent5Impl_C2EN6google8protobuf8internal18InternalVisibilityEPNS3_5ArenaE:
 2436|  1.26k|      : _cached_size_{0} {}
_ZN10json_proto14NumberExponent10SharedDtorERN6google8protobuf11MessageLiteE:
 2451|  1.26k|inline void NumberExponent::SharedDtor(MessageLite& self) {
 2452|  1.26k|  NumberExponent& this_ = static_cast<NumberExponent&>(self);
 2453|  1.26k|  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
 2454|  1.26k|  ABSL_DCHECK(this_.GetArena() == nullptr);
  ------------------
  |  |   47|  1.26k|  ABSL_LOG_INTERNAL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|  1.26k|  ABSL_LOG_INTERNAL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|  2.53k|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  172|  1.26k|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|  2.53k|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|  2.53k|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2455|  1.26k|  this_._impl_.~Impl_();
 2456|  1.26k|}
_ZN10json_proto14NumberExponent13PlacementNew_EPKvPvPN6google8protobuf5ArenaE:
 2459|    657|                                        ::google::protobuf::Arena* arena) {
 2460|    657|  return ::new (mem) NumberExponent(arena);
 2461|    657|}
_ZN10json_proto18NumberExponentFrac10SharedCtorEPN6google8protobuf5ArenaE:
 2726|    270|inline void NumberExponentFrac::SharedCtor(::_pb::Arena* arena) {
 2727|    270|  new (&_impl_) Impl_(internal_visibility(), arena);
 2728|    270|  ::memset(reinterpret_cast<char *>(&_impl_) +
 2729|    270|               offsetof(Impl_, base_),
 2730|    270|           0,
 2731|    270|           offsetof(Impl_, use_uppercase_) -
 2732|    270|               offsetof(Impl_, base_) +
 2733|    270|               sizeof(Impl_::use_uppercase_));
 2734|    270|}
_ZN10json_proto18NumberExponentFrac5Impl_C2EN6google8protobuf8internal18InternalVisibilityEPNS3_5ArenaE:
 2724|    270|      : _cached_size_{0} {}
_ZN10json_proto18NumberExponentFrac10SharedDtorERN6google8protobuf11MessageLiteE:
 2739|    270|inline void NumberExponentFrac::SharedDtor(MessageLite& self) {
 2740|    270|  NumberExponentFrac& this_ = static_cast<NumberExponentFrac&>(self);
 2741|    270|  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
 2742|    270|  ABSL_DCHECK(this_.GetArena() == nullptr);
  ------------------
  |  |   47|    270|  ABSL_LOG_INTERNAL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|    270|  ABSL_LOG_INTERNAL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|    540|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  172|    270|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|    540|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|    540|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2743|    270|  this_._impl_.~Impl_();
 2744|    270|}
_ZN10json_proto18NumberExponentFrac13PlacementNew_EPKvPvPN6google8protobuf5ArenaE:
 2747|    270|                                        ::google::protobuf::Arena* arena) {
 2748|    270|  return ::new (mem) NumberExponentFrac(arena);
 2749|    270|}
_ZN10json_proto11NumberValue10SharedCtorEPN6google8protobuf5ArenaE:
 3092|  2.28k|inline void NumberValue::SharedCtor(::_pb::Arena* arena) {
 3093|  2.28k|  new (&_impl_) Impl_(internal_visibility(), arena);
 3094|  2.28k|  _impl_.integer_value_ = {};
 3095|  2.28k|}
_ZN10json_proto11NumberValue5Impl_C2EN6google8protobuf8internal18InternalVisibilityEPNS3_5ArenaE:
 3088|  2.28k|      : _cached_size_{0},
 3089|  2.28k|        value_{},
 3090|  2.28k|        _oneof_case_{} {}
_ZN10json_proto11NumberValue10SharedDtorERN6google8protobuf11MessageLiteE:
 3100|  2.28k|inline void NumberValue::SharedDtor(MessageLite& self) {
 3101|  2.28k|  NumberValue& this_ = static_cast<NumberValue&>(self);
 3102|  2.28k|  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
 3103|  2.28k|  ABSL_DCHECK(this_.GetArena() == nullptr);
  ------------------
  |  |   47|  2.28k|  ABSL_LOG_INTERNAL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|  2.28k|  ABSL_LOG_INTERNAL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|  4.57k|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  172|  2.28k|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|  4.57k|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|  4.57k|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3104|  2.28k|  delete this_._impl_.integer_value_;
 3105|  2.28k|  if (this_.has_value()) {
  ------------------
  |  Branch (3105:7): [True: 1.37k, False: 916]
  ------------------
 3106|  1.37k|    this_.clear_value();
 3107|  1.37k|  }
 3108|  2.28k|  this_._impl_.~Impl_();
 3109|  2.28k|}
_ZN10json_proto11NumberValue13PlacementNew_EPKvPvPN6google8protobuf5ArenaE:
 3148|  2.28k|                                        ::google::protobuf::Arena* arena) {
 3149|  2.28k|  return ::new (mem) NumberValue(arena);
 3150|  2.28k|}
_ZN10json_proto11StringValue10SharedCtorEPN6google8protobuf5ArenaE:
 3515|    728|inline void StringValue::SharedCtor(::_pb::Arena* arena) {
 3516|    728|  new (&_impl_) Impl_(internal_visibility(), arena);
 3517|    728|}
_ZN10json_proto11StringValue5Impl_C2EN6google8protobuf8internal18InternalVisibilityEPNS3_5ArenaE:
 3512|    728|      : _cached_size_{0},
 3513|    728|        value_(arena) {}
_ZN10json_proto11StringValue10SharedDtorERN6google8protobuf11MessageLiteE:
 3522|    728|inline void StringValue::SharedDtor(MessageLite& self) {
 3523|    728|  StringValue& this_ = static_cast<StringValue&>(self);
 3524|    728|  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
 3525|    728|  ABSL_DCHECK(this_.GetArena() == nullptr);
  ------------------
  |  |   47|    728|  ABSL_LOG_INTERNAL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|    728|  ABSL_LOG_INTERNAL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|  1.45k|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  172|    728|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|  1.45k|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|  1.45k|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3526|    728|  this_._impl_.value_.Destroy();
 3527|    728|  this_._impl_.~Impl_();
 3528|    728|}
_ZN10json_proto11StringValue13PlacementNew_EPKvPvPN6google8protobuf5ArenaE:
 3531|    728|                                        ::google::protobuf::Arena* arena) {
 3532|    728|  return ::new (mem) StringValue(arena);
 3533|    728|}
_ZN10json_proto12BooleanValue10SharedCtorEPN6google8protobuf5ArenaE:
 3752|    457|inline void BooleanValue::SharedCtor(::_pb::Arena* arena) {
 3753|    457|  new (&_impl_) Impl_(internal_visibility(), arena);
 3754|    457|  _impl_.value_ = {};
 3755|    457|}
_ZN10json_proto12BooleanValue5Impl_C2EN6google8protobuf8internal18InternalVisibilityEPNS3_5ArenaE:
 3750|    457|      : _cached_size_{0} {}
_ZN10json_proto12BooleanValue10SharedDtorERN6google8protobuf11MessageLiteE:
 3760|    457|inline void BooleanValue::SharedDtor(MessageLite& self) {
 3761|    457|  BooleanValue& this_ = static_cast<BooleanValue&>(self);
 3762|    457|  this_._internal_metadata_.Delete<::google::protobuf::UnknownFieldSet>();
 3763|    457|  ABSL_DCHECK(this_.GetArena() == nullptr);
  ------------------
  |  |   47|    457|  ABSL_LOG_INTERNAL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|    457|  ABSL_LOG_INTERNAL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|    914|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  172|    457|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|    914|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|    914|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   66|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3764|    457|  this_._impl_.~Impl_();
 3765|    457|}
_ZN10json_proto12BooleanValue13PlacementNew_EPKvPvPN6google8protobuf5ArenaE:
 3768|    457|                                        ::google::protobuf::Arena* arena) {
 3769|    457|  return ::new (mem) BooleanValue(arena);
 3770|    457|}

_ZN10json_proto12JsonParseAPIC2Ev:
 2371|  3.16k|  inline JsonParseAPI() : JsonParseAPI(nullptr) {}
_ZNK10json_proto12JsonParseAPI12object_valueEv:
 2641|  3.01k|inline const ::json_proto::JsonObject& JsonParseAPI::object_value() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
 2642|       |  // @@protoc_insertion_point(field_get:json_proto.JsonParseAPI.object_value)
 2643|  3.01k|  return _internal_object_value();
 2644|  3.01k|}
_ZNK10json_proto12JsonParseAPI22_internal_object_valueEv:
 2636|  3.01k|inline const ::json_proto::JsonObject& JsonParseAPI::_internal_object_value() const {
 2637|  3.01k|  ::google::protobuf::internal::TSanRead(&_impl_);
 2638|  3.01k|  const ::json_proto::JsonObject* p = _impl_.object_value_;
 2639|  3.01k|  return p != nullptr ? *p : reinterpret_cast<const ::json_proto::JsonObject&>(::json_proto::_JsonObject_default_instance_);
  ------------------
  |  Branch (2639:10): [True: 3.01k, False: 0]
  ------------------
 2640|  3.01k|}
_ZNK10json_proto12JsonParseAPI8settingsEv:
 2607|  3.01k|inline ::int32_t JsonParseAPI::settings() const {
 2608|       |  // @@protoc_insertion_point(field_get:json_proto.JsonParseAPI.settings)
 2609|  3.01k|  return _internal_settings();
 2610|  3.01k|}
_ZNK10json_proto12JsonParseAPI18_internal_settingsEv:
 2616|  3.01k|inline ::int32_t JsonParseAPI::_internal_settings() const {
 2617|  3.01k|  ::google::protobuf::internal::TSanRead(&_impl_);
 2618|  3.01k|  return _impl_.settings_;
 2619|  3.01k|}
_ZN10json_proto14NumberExponentC2ERKS0_:
  938|    612|  inline NumberExponent(const NumberExponent& from) : NumberExponent(nullptr, from) {}
_ZN10json_proto14NumberExponent9MergeFromERKS0_:
 1004|    612|  void MergeFrom(const NumberExponent& from) { NumberExponent::MergeImpl(*this, from); }
_ZN10json_proto11NumberValue5Impl_10ValueUnionC2Ev:
 1609|  2.28k|      constexpr ValueUnion() : _constinit_{} {}
_ZN10json_proto9JsonValue5Impl_10ValueUnionC2Ev:
 2351|  15.2k|      constexpr ValueUnion() : _constinit_{} {}
_ZNK10json_proto10JsonObject4nameEv:
 2764|  4.12k|    ABSL_ATTRIBUTE_LIFETIME_BOUND {
 2765|       |  // @@protoc_insertion_point(field_get:json_proto.JsonObject.name)
 2766|  4.12k|  return _internal_name();
 2767|  4.12k|}
_ZNK10json_proto10JsonObject14_internal_nameEv:
 2781|  4.12k|inline const std::string& JsonObject::_internal_name() const {
 2782|  4.12k|  ::google::protobuf::internal::TSanRead(&_impl_);
 2783|  4.12k|  return _impl_.name_.Get();
 2784|  4.12k|}
_ZNK10json_proto10JsonObject15_internal_valueEv:
 2833|  4.12k|inline const ::json_proto::JsonValue& JsonObject::_internal_value() const {
 2834|  4.12k|  ::google::protobuf::internal::TSanRead(&_impl_);
 2835|  4.12k|  const ::json_proto::JsonValue* p = _impl_.value_;
 2836|  4.12k|  return p != nullptr ? *p : reinterpret_cast<const ::json_proto::JsonValue&>(::json_proto::_JsonValue_default_instance_);
  ------------------
  |  Branch (2836:10): [True: 4.12k, False: 0]
  ------------------
 2837|  4.12k|}
_ZNK10json_proto10JsonObject5valueEv:
 2838|  4.12k|inline const ::json_proto::JsonValue& JsonObject::value() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
 2839|       |  // @@protoc_insertion_point(field_get:json_proto.JsonObject.value)
 2840|  4.12k|  return _internal_value();
 2841|  4.12k|}
_ZNK10json_proto9JsonValue16has_object_valueEv:
 2923|  11.6k|inline bool JsonValue::has_object_value() const {
 2924|  11.6k|  return value_case() == kObjectValue;
 2925|  11.6k|}
_ZNK10json_proto9JsonValue22_internal_object_valueEv:
 2957|  1.11k|inline const ::json_proto::JsonObject& JsonValue::_internal_object_value() const {
 2958|  1.11k|  return value_case() == kObjectValue ? *_impl_.value_.object_value_ : reinterpret_cast<::json_proto::JsonObject&>(::json_proto::_JsonObject_default_instance_);
  ------------------
  |  Branch (2958:10): [True: 1.11k, False: 0]
  ------------------
 2959|  1.11k|}
_ZNK10json_proto9JsonValue12object_valueEv:
 2960|  1.11k|inline const ::json_proto::JsonObject& JsonValue::object_value() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
 2961|       |  // @@protoc_insertion_point(field_get:json_proto.JsonValue.object_value)
 2962|  1.11k|  return _internal_object_value();
 2963|  1.11k|}
_ZNK10json_proto9JsonValue15has_array_valueEv:
 3002|  10.4k|inline bool JsonValue::has_array_value() const {
 3003|  10.4k|  return value_case() == kArrayValue;
 3004|  10.4k|}
_ZNK10json_proto9JsonValue21_internal_array_valueEv:
 3036|  1.22k|inline const ::json_proto::ArrayValue& JsonValue::_internal_array_value() const {
 3037|  1.22k|  return value_case() == kArrayValue ? *_impl_.value_.array_value_ : reinterpret_cast<::json_proto::ArrayValue&>(::json_proto::_ArrayValue_default_instance_);
  ------------------
  |  Branch (3037:10): [True: 1.22k, False: 0]
  ------------------
 3038|  1.22k|}
_ZNK10json_proto9JsonValue11array_valueEv:
 3039|  1.22k|inline const ::json_proto::ArrayValue& JsonValue::array_value() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
 3040|       |  // @@protoc_insertion_point(field_get:json_proto.JsonValue.array_value)
 3041|  1.22k|  return _internal_array_value();
 3042|  1.22k|}
_ZNK10json_proto9JsonValue16has_number_valueEv:
 3081|  9.26k|inline bool JsonValue::has_number_value() const {
 3082|  9.26k|  return value_case() == kNumberValue;
 3083|  9.26k|}
_ZNK10json_proto9JsonValue22_internal_number_valueEv:
 3115|  1.57k|inline const ::json_proto::NumberValue& JsonValue::_internal_number_value() const {
 3116|  1.57k|  return value_case() == kNumberValue ? *_impl_.value_.number_value_ : reinterpret_cast<::json_proto::NumberValue&>(::json_proto::_NumberValue_default_instance_);
  ------------------
  |  Branch (3116:10): [True: 1.57k, False: 0]
  ------------------
 3117|  1.57k|}
_ZNK10json_proto9JsonValue12number_valueEv:
 3118|  1.57k|inline const ::json_proto::NumberValue& JsonValue::number_value() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
 3119|       |  // @@protoc_insertion_point(field_get:json_proto.JsonValue.number_value)
 3120|  1.57k|  return _internal_number_value();
 3121|  1.57k|}
_ZNK10json_proto9JsonValue16has_string_valueEv:
 3160|  7.68k|inline bool JsonValue::has_string_value() const {
 3161|  7.68k|  return value_case() == kStringValue;
 3162|  7.68k|}
_ZNK10json_proto9JsonValue22_internal_string_valueEv:
 3194|    643|inline const ::json_proto::StringValue& JsonValue::_internal_string_value() const {
 3195|    643|  return value_case() == kStringValue ? *_impl_.value_.string_value_ : reinterpret_cast<::json_proto::StringValue&>(::json_proto::_StringValue_default_instance_);
  ------------------
  |  Branch (3195:10): [True: 643, False: 0]
  ------------------
 3196|    643|}
_ZNK10json_proto9JsonValue12string_valueEv:
 3197|    643|inline const ::json_proto::StringValue& JsonValue::string_value() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
 3198|       |  // @@protoc_insertion_point(field_get:json_proto.JsonValue.string_value)
 3199|    643|  return _internal_string_value();
 3200|    643|}
_ZNK10json_proto9JsonValue17has_boolean_valueEv:
 3239|  7.04k|inline bool JsonValue::has_boolean_value() const {
 3240|  7.04k|  return value_case() == kBooleanValue;
 3241|  7.04k|}
_ZNK10json_proto9JsonValue23_internal_boolean_valueEv:
 3273|    404|inline const ::json_proto::BooleanValue& JsonValue::_internal_boolean_value() const {
 3274|    404|  return value_case() == kBooleanValue ? *_impl_.value_.boolean_value_ : reinterpret_cast<::json_proto::BooleanValue&>(::json_proto::_BooleanValue_default_instance_);
  ------------------
  |  Branch (3274:10): [True: 404, False: 0]
  ------------------
 3275|    404|}
_ZNK10json_proto9JsonValue13boolean_valueEv:
 3276|    404|inline const ::json_proto::BooleanValue& JsonValue::boolean_value() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
 3277|       |  // @@protoc_insertion_point(field_get:json_proto.JsonValue.boolean_value)
 3278|    404|  return _internal_boolean_value();
 3279|    404|}
_ZNK10json_proto9JsonValue9has_valueEv:
 3317|  15.2k|inline bool JsonValue::has_value() const {
 3318|  15.2k|  return value_case() != VALUE_NOT_SET;
 3319|  15.2k|}
_ZNK10json_proto9JsonValue10value_caseEv:
 3323|  75.2k|inline JsonValue::ValueCase JsonValue::value_case() const {
 3324|  75.2k|  return JsonValue::ValueCase(_impl_._oneof_case_[0]);
 3325|  75.2k|}
_ZNK10json_proto10ArrayValue5valueEv:
 3364|  1.22k|    ABSL_ATTRIBUTE_LIFETIME_BOUND {
 3365|       |  // @@protoc_insertion_point(field_list:json_proto.ArrayValue.value)
 3366|  1.22k|  return _internal_value();
 3367|  1.22k|}
_ZNK10json_proto10ArrayValue15_internal_valueEv:
 3369|  1.22k|ArrayValue::_internal_value() const {
 3370|  1.22k|  ::google::protobuf::internal::TSanRead(&_impl_);
 3371|  1.22k|  return _impl_.value_;
 3372|  1.22k|}
_ZNK10json_proto13NumberInteger5valueEv:
 3393|    554|inline ::int64_t NumberInteger::value() const {
 3394|       |  // @@protoc_insertion_point(field_get:json_proto.NumberInteger.value)
 3395|    554|  return _internal_value();
 3396|    554|}
_ZNK10json_proto13NumberInteger15_internal_valueEv:
 3402|    554|inline ::int64_t NumberInteger::_internal_value() const {
 3403|    554|  ::google::protobuf::internal::TSanRead(&_impl_);
 3404|    554|  return _impl_.value_;
 3405|    554|}
_ZNK10json_proto11NumberFloat5valueEv:
 3425|    412|inline double NumberFloat::value() const {
 3426|       |  // @@protoc_insertion_point(field_get:json_proto.NumberFloat.value)
 3427|    412|  return _internal_value();
 3428|    412|}
_ZNK10json_proto11NumberFloat15_internal_valueEv:
 3434|    412|inline double NumberFloat::_internal_value() const {
 3435|    412|  ::google::protobuf::internal::TSanRead(&_impl_);
 3436|    412|  return _impl_.value_;
 3437|    412|}
_ZNK10json_proto14NumberExponent4baseEv:
 3457|    612|inline ::int32_t NumberExponent::base() const {
 3458|       |  // @@protoc_insertion_point(field_get:json_proto.NumberExponent.base)
 3459|    612|  return _internal_base();
 3460|    612|}
_ZNK10json_proto14NumberExponent14_internal_baseEv:
 3466|    612|inline ::int32_t NumberExponent::_internal_base() const {
 3467|    612|  ::google::protobuf::internal::TSanRead(&_impl_);
 3468|    612|  return _impl_.base_;
 3469|    612|}
_ZNK10json_proto14NumberExponent8exponentEv:
 3485|    612|inline ::int32_t NumberExponent::exponent() const {
 3486|       |  // @@protoc_insertion_point(field_get:json_proto.NumberExponent.exponent)
 3487|    612|  return _internal_exponent();
 3488|    612|}
_ZNK10json_proto14NumberExponent18_internal_exponentEv:
 3494|    612|inline ::int32_t NumberExponent::_internal_exponent() const {
 3495|    612|  ::google::protobuf::internal::TSanRead(&_impl_);
 3496|    612|  return _impl_.exponent_;
 3497|    612|}
_ZNK10json_proto14NumberExponent13use_uppercaseEv:
 3513|    612|inline bool NumberExponent::use_uppercase() const {
 3514|       |  // @@protoc_insertion_point(field_get:json_proto.NumberExponent.use_uppercase)
 3515|    612|  return _internal_use_uppercase();
 3516|    612|}
_ZNK10json_proto14NumberExponent23_internal_use_uppercaseEv:
 3522|    612|inline bool NumberExponent::_internal_use_uppercase() const {
 3523|    612|  ::google::protobuf::internal::TSanRead(&_impl_);
 3524|    612|  return _impl_.use_uppercase_;
 3525|    612|}
_ZNK10json_proto11NumberValue23_internal_integer_valueEv:
 3634|    554|inline const ::json_proto::NumberInteger& NumberValue::_internal_integer_value() const {
 3635|    554|  ::google::protobuf::internal::TSanRead(&_impl_);
 3636|    554|  const ::json_proto::NumberInteger* p = _impl_.integer_value_;
 3637|    554|  return p != nullptr ? *p : reinterpret_cast<const ::json_proto::NumberInteger&>(::json_proto::_NumberInteger_default_instance_);
  ------------------
  |  Branch (3637:10): [True: 554, False: 0]
  ------------------
 3638|    554|}
_ZNK10json_proto11NumberValue13integer_valueEv:
 3639|    554|inline const ::json_proto::NumberInteger& NumberValue::integer_value() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
 3640|       |  // @@protoc_insertion_point(field_get:json_proto.NumberValue.integer_value)
 3641|    554|  return _internal_integer_value();
 3642|    554|}
_ZNK10json_proto11NumberValue15has_float_valueEv:
 3720|  1.57k|inline bool NumberValue::has_float_value() const {
 3721|  1.57k|  return value_case() == kFloatValue;
 3722|  1.57k|}
_ZNK10json_proto11NumberValue21_internal_float_valueEv:
 3754|    412|inline const ::json_proto::NumberFloat& NumberValue::_internal_float_value() const {
 3755|    412|  return value_case() == kFloatValue ? *_impl_.value_.float_value_ : reinterpret_cast<::json_proto::NumberFloat&>(::json_proto::_NumberFloat_default_instance_);
  ------------------
  |  Branch (3755:10): [True: 412, False: 0]
  ------------------
 3756|    412|}
_ZNK10json_proto11NumberValue11float_valueEv:
 3757|    412|inline const ::json_proto::NumberFloat& NumberValue::float_value() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
 3758|       |  // @@protoc_insertion_point(field_get:json_proto.NumberValue.float_value)
 3759|    412|  return _internal_float_value();
 3760|    412|}
_ZNK10json_proto11NumberValue18has_exponent_valueEv:
 3799|  1.16k|inline bool NumberValue::has_exponent_value() const {
 3800|  1.16k|  return value_case() == kExponentValue;
 3801|  1.16k|}
_ZNK10json_proto11NumberValue24_internal_exponent_valueEv:
 3833|    612|inline const ::json_proto::NumberExponent& NumberValue::_internal_exponent_value() const {
 3834|    612|  return value_case() == kExponentValue ? *_impl_.value_.exponent_value_ : reinterpret_cast<::json_proto::NumberExponent&>(::json_proto::_NumberExponent_default_instance_);
  ------------------
  |  Branch (3834:10): [True: 384, False: 228]
  ------------------
 3835|    612|}
_ZNK10json_proto11NumberValue14exponent_valueEv:
 3836|    612|inline const ::json_proto::NumberExponent& NumberValue::exponent_value() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
 3837|       |  // @@protoc_insertion_point(field_get:json_proto.NumberValue.exponent_value)
 3838|    612|  return _internal_exponent_value();
 3839|    612|}
_ZNK10json_proto11NumberValue23has_exponent_frac_valueEv:
 3878|    782|inline bool NumberValue::has_exponent_frac_value() const {
 3879|    782|  return value_case() == kExponentFracValue;
 3880|    782|}
_ZNK10json_proto11NumberValue9has_valueEv:
 3956|  2.28k|inline bool NumberValue::has_value() const {
 3957|  2.28k|  return value_case() != VALUE_NOT_SET;
 3958|  2.28k|}
_ZNK10json_proto11NumberValue10value_caseEv:
 3962|  8.20k|inline NumberValue::ValueCase NumberValue::value_case() const {
 3963|  8.20k|  return NumberValue::ValueCase(_impl_._oneof_case_[0]);
 3964|  8.20k|}
_ZNK10json_proto11StringValue5valueEv:
 3980|    643|    ABSL_ATTRIBUTE_LIFETIME_BOUND {
 3981|       |  // @@protoc_insertion_point(field_get:json_proto.StringValue.value)
 3982|    643|  return _internal_value();
 3983|    643|}
_ZNK10json_proto11StringValue15_internal_valueEv:
 3997|    643|inline const std::string& StringValue::_internal_value() const {
 3998|    643|  ::google::protobuf::internal::TSanRead(&_impl_);
 3999|    643|  return _impl_.value_.Get();
 4000|    643|}
_ZNK10json_proto12BooleanValue5valueEv:
 4052|    404|inline bool BooleanValue::value() const {
 4053|       |  // @@protoc_insertion_point(field_get:json_proto.BooleanValue.value)
 4054|    404|  return _internal_value();
 4055|    404|}
_ZNK10json_proto12BooleanValue15_internal_valueEv:
 4061|    404|inline bool BooleanValue::_internal_value() const {
 4062|    404|  ::google::protobuf::internal::TSanRead(&_impl_);
 4063|    404|  return _impl_.value_;
 4064|    404|}

_ZN4Json10CharReaderC2ENSt3__110unique_ptrINS0_4ImplENS1_14default_deleteIS3_EEEE:
  296|  3.01k|  explicit CharReader(std::unique_ptr<Impl> impl) : _impl(std::move(impl)) {}
_ZN4Json10CharReader7FactoryD2Ev:
  280|  3.01k|    virtual ~Factory() = default;
_ZN4Json10CharReader4ImplD2Ev:
  290|  3.01k|    virtual ~Impl() = default;
_ZN4Json10CharReaderD2Ev:
  253|  3.01k|  virtual ~CharReader() = default;

_ZN4Json5Value7setTypeENS_9ValueTypeE:
  689|  4.99M|  void setType(ValueType v) {
  690|  4.99M|    bits_.value_type_ = static_cast<unsigned char>(v);
  691|  4.99M|  }
_ZNK4Json5Value11isAllocatedEv:
  692|  1.01k|  bool isAllocated() const { return bits_.allocated_; }
_ZN4Json5Value14setIsAllocatedEb:
  693|  4.99M|  void setIsAllocated(bool v) { bits_.allocated_ = v; }
_ZN4Json5Value8CommentsC2Ev:
  730|  7.42M|    Comments() = default;

_ZN4Json11OurFeatures3allEv:
  858|  3.01k|OurFeatures OurFeatures::all() { return {}; }
_ZN4Json9OurReader15containsNewLineEPKcS2_:
  975|  1.61k|                                OurReader::Location end) {
  976|  1.61k|  return std::any_of(begin, end, [](char b) { return b == '\n' || b == '\r'; });
  977|  1.61k|}
_ZN4Json9OurReaderC2ERKNS_11OurFeaturesE:
  979|  3.01k|OurReader::OurReader(OurFeatures const& features) : features_(features) {}
_ZN4Json9OurReader5parseEPKcS2_RNS_5ValueEb:
  982|  3.01k|                      bool collectComments) {
  983|  3.01k|  if (!features_.allowComments_) {
  ------------------
  |  Branch (983:7): [True: 0, False: 3.01k]
  ------------------
  984|      0|    collectComments = false;
  985|      0|  }
  986|       |
  987|  3.01k|  begin_ = beginDoc;
  988|  3.01k|  end_ = endDoc;
  989|  3.01k|  collectComments_ = collectComments;
  990|  3.01k|  current_ = begin_;
  991|  3.01k|  lastValueEnd_ = nullptr;
  992|  3.01k|  lastValue_ = nullptr;
  993|  3.01k|  commentsBefore_.clear();
  994|  3.01k|  errors_.clear();
  995|  3.01k|  while (!nodes_.empty())
  ------------------
  |  Branch (995:10): [True: 0, False: 3.01k]
  ------------------
  996|      0|    nodes_.pop();
  997|  3.01k|  nodes_.push(&root);
  998|       |
  999|       |  // skip byte order mark if it exists at the beginning of the UTF-8 text.
 1000|  3.01k|  skipBom(features_.skipBom_);
 1001|  3.01k|  bool successful = readValue();
 1002|  3.01k|  nodes_.pop();
 1003|  3.01k|  Token token;
 1004|  3.01k|  readTokenSkippingComments(token);
 1005|  3.01k|  if (features_.failIfExtra_ && (token.type_ != tokenEndOfStream)) {
  ------------------
  |  Branch (1005:7): [True: 546, False: 2.46k]
  |  Branch (1005:33): [True: 15, False: 531]
  ------------------
 1006|     15|    addError("Extra non-whitespace after JSON value.", token);
 1007|     15|    return false;
 1008|     15|  }
 1009|  2.99k|  if (collectComments_ && !commentsBefore_.empty())
  ------------------
  |  Branch (1009:7): [True: 274, False: 2.72k]
  |  Branch (1009:27): [True: 120, False: 154]
  ------------------
 1010|    120|    root.setComment(commentsBefore_, commentAfter);
 1011|  2.99k|  if (features_.strictRoot_) {
  ------------------
  |  Branch (1011:7): [True: 0, False: 2.99k]
  ------------------
 1012|      0|    if (!root.isArray() && !root.isObject()) {
  ------------------
  |  Branch (1012:9): [True: 0, False: 0]
  |  Branch (1012:28): [True: 0, False: 0]
  ------------------
 1013|       |      // Set error location to start of doc, ideally should be first token found
 1014|       |      // in doc
 1015|      0|      token.type_ = tokenError;
 1016|      0|      token.start_ = beginDoc;
 1017|      0|      token.end_ = endDoc;
 1018|      0|      addError(
 1019|      0|          "A valid JSON document must be either an array or an object value.",
 1020|      0|          token);
 1021|      0|      return false;
 1022|      0|    }
 1023|      0|  }
 1024|  2.99k|  return successful;
 1025|  2.99k|}
_ZN4Json9OurReader9readValueEv:
 1027|  1.22M|bool OurReader::readValue() {
 1028|       |  //  To preserve the old behaviour we cast size_t to int.
 1029|  1.22M|  if (nodes_.size() > features_.stackLimit_)
  ------------------
  |  Branch (1029:7): [True: 24, False: 1.22M]
  ------------------
 1030|     24|    throwRuntimeError("Exceeded stackLimit in readValue().");
 1031|  1.22M|  Token token;
 1032|  1.22M|  readTokenSkippingComments(token);
 1033|  1.22M|  bool successful = true;
 1034|       |
 1035|  1.22M|  if (collectComments_ && !commentsBefore_.empty()) {
  ------------------
  |  Branch (1035:7): [True: 3.49k, False: 1.21M]
  |  Branch (1035:27): [True: 1.76k, False: 1.73k]
  ------------------
 1036|  1.76k|    currentValue().setComment(commentsBefore_, commentBefore);
 1037|  1.76k|    commentsBefore_.clear();
 1038|  1.76k|  }
 1039|       |
 1040|  1.22M|  switch (token.type_) {
 1041|  18.0k|  case tokenObjectBegin:
  ------------------
  |  Branch (1041:3): [True: 18.0k, False: 1.20M]
  ------------------
 1042|  18.0k|    successful = readObject(token);
 1043|  18.0k|    currentValue().setOffsetLimit(current_ - begin_);
 1044|  18.0k|    break;
 1045|  58.6k|  case tokenArrayBegin:
  ------------------
  |  Branch (1045:3): [True: 58.6k, False: 1.16M]
  ------------------
 1046|  58.6k|    successful = readArray(token);
 1047|  58.6k|    currentValue().setOffsetLimit(current_ - begin_);
 1048|  58.6k|    break;
 1049|  1.13M|  case tokenNumber:
  ------------------
  |  Branch (1049:3): [True: 1.13M, False: 83.0k]
  ------------------
 1050|  1.13M|    successful = decodeNumber(token);
 1051|  1.13M|    break;
 1052|  1.03k|  case tokenString:
  ------------------
  |  Branch (1052:3): [True: 1.03k, False: 1.21M]
  ------------------
 1053|  1.03k|    successful = decodeString(token);
 1054|  1.03k|    break;
 1055|  1.48k|  case tokenTrue: {
  ------------------
  |  Branch (1055:3): [True: 1.48k, False: 1.21M]
  ------------------
 1056|  1.48k|    Value v(true);
 1057|  1.48k|    currentValue().swapPayload(v);
 1058|  1.48k|    currentValue().setOffsetStart(token.start_ - begin_);
 1059|  1.48k|    currentValue().setOffsetLimit(token.end_ - begin_);
 1060|  1.48k|  } break;
 1061|    239|  case tokenFalse: {
  ------------------
  |  Branch (1061:3): [True: 239, False: 1.22M]
  ------------------
 1062|    239|    Value v(false);
 1063|    239|    currentValue().swapPayload(v);
 1064|    239|    currentValue().setOffsetStart(token.start_ - begin_);
 1065|    239|    currentValue().setOffsetLimit(token.end_ - begin_);
 1066|    239|  } break;
 1067|  3.12k|  case tokenNull: {
  ------------------
  |  Branch (1067:3): [True: 3.12k, False: 1.21M]
  ------------------
 1068|  3.12k|    Value v;
 1069|  3.12k|    currentValue().swapPayload(v);
 1070|  3.12k|    currentValue().setOffsetStart(token.start_ - begin_);
 1071|  3.12k|    currentValue().setOffsetLimit(token.end_ - begin_);
 1072|  3.12k|  } break;
 1073|      0|  case tokenNaN: {
  ------------------
  |  Branch (1073:3): [True: 0, False: 1.22M]
  ------------------
 1074|      0|    Value v(std::numeric_limits<double>::quiet_NaN());
 1075|      0|    currentValue().swapPayload(v);
 1076|      0|    currentValue().setOffsetStart(token.start_ - begin_);
 1077|      0|    currentValue().setOffsetLimit(token.end_ - begin_);
 1078|      0|  } break;
 1079|      0|  case tokenPosInf: {
  ------------------
  |  Branch (1079:3): [True: 0, False: 1.22M]
  ------------------
 1080|      0|    Value v(std::numeric_limits<double>::infinity());
 1081|      0|    currentValue().swapPayload(v);
 1082|      0|    currentValue().setOffsetStart(token.start_ - begin_);
 1083|      0|    currentValue().setOffsetLimit(token.end_ - begin_);
 1084|      0|  } break;
 1085|      0|  case tokenNegInf: {
  ------------------
  |  Branch (1085:3): [True: 0, False: 1.22M]
  ------------------
 1086|      0|    Value v(-std::numeric_limits<double>::infinity());
 1087|      0|    currentValue().swapPayload(v);
 1088|      0|    currentValue().setOffsetStart(token.start_ - begin_);
 1089|      0|    currentValue().setOffsetLimit(token.end_ - begin_);
 1090|      0|  } break;
 1091|      8|  case tokenArraySeparator:
  ------------------
  |  Branch (1091:3): [True: 8, False: 1.22M]
  ------------------
 1092|     18|  case tokenObjectEnd:
  ------------------
  |  Branch (1092:3): [True: 10, False: 1.22M]
  ------------------
 1093|     22|  case tokenArrayEnd:
  ------------------
  |  Branch (1093:3): [True: 4, False: 1.22M]
  ------------------
 1094|     22|    if (features_.allowDroppedNullPlaceholders_) {
  ------------------
  |  Branch (1094:9): [True: 0, False: 22]
  ------------------
 1095|       |      // "Un-read" the current token and mark the current value as a null
 1096|       |      // token.
 1097|      0|      current_--;
 1098|      0|      Value v;
 1099|      0|      currentValue().swapPayload(v);
 1100|      0|      currentValue().setOffsetStart(current_ - begin_ - 1);
 1101|      0|      currentValue().setOffsetLimit(current_ - begin_);
 1102|      0|      break;
 1103|      0|    } // else, fall through ...
 1104|    432|  default:
  ------------------
  |  Branch (1104:3): [True: 410, False: 1.22M]
  ------------------
 1105|    432|    currentValue().setOffsetStart(token.start_ - begin_);
 1106|    432|    currentValue().setOffsetLimit(token.end_ - begin_);
 1107|    432|    return addError("Syntax error: value, object or array expected.", token);
 1108|  1.22M|  }
 1109|       |
 1110|  1.19M|  if (collectComments_) {
  ------------------
  |  Branch (1110:7): [True: 3.39k, False: 1.19M]
  ------------------
 1111|  3.39k|    lastValueEnd_ = current_;
 1112|  3.39k|    lastValueHasAComment_ = false;
 1113|  3.39k|    lastValue_ = &currentValue();
 1114|  3.39k|  }
 1115|       |
 1116|  1.19M|  return successful;
 1117|  1.22M|}
_ZN4Json9OurReader25readTokenSkippingCommentsERNS0_5TokenE:
 1119|  2.40M|bool OurReader::readTokenSkippingComments(Token& token) {
 1120|  2.40M|  bool success = readToken(token);
 1121|  2.40M|  if (features_.allowComments_) {
  ------------------
  |  Branch (1121:7): [True: 2.40M, False: 0]
  ------------------
 1122|  2.41M|    while (success && token.type_ == tokenComment) {
  ------------------
  |  Branch (1122:12): [True: 2.41M, False: 975]
  |  Branch (1122:23): [True: 4.20k, False: 2.40M]
  ------------------
 1123|  4.20k|      success = readToken(token);
 1124|  4.20k|    }
 1125|  2.40M|  }
 1126|  2.40M|  return success;
 1127|  2.40M|}
_ZN4Json9OurReader9readTokenERNS0_5TokenE:
 1129|  2.56M|bool OurReader::readToken(Token& token) {
 1130|  2.56M|  skipSpaces();
 1131|  2.56M|  token.start_ = current_;
 1132|  2.56M|  Char c = getNextChar();
 1133|  2.56M|  bool ok = true;
 1134|  2.56M|  switch (c) {
 1135|  18.5k|  case '{':
  ------------------
  |  Branch (1135:3): [True: 18.5k, False: 2.54M]
  ------------------
 1136|  18.5k|    token.type_ = tokenObjectBegin;
 1137|  18.5k|    break;
 1138|  4.16k|  case '}':
  ------------------
  |  Branch (1138:3): [True: 4.16k, False: 2.56M]
  ------------------
 1139|  4.16k|    token.type_ = tokenObjectEnd;
 1140|  4.16k|    break;
 1141|  59.2k|  case '[':
  ------------------
  |  Branch (1141:3): [True: 59.2k, False: 2.50M]
  ------------------
 1142|  59.2k|    token.type_ = tokenArrayBegin;
 1143|  59.2k|    break;
 1144|  2.18k|  case ']':
  ------------------
  |  Branch (1144:3): [True: 2.18k, False: 2.56M]
  ------------------
 1145|  2.18k|    token.type_ = tokenArrayEnd;
 1146|  2.18k|    break;
 1147|  39.9k|  case '"':
  ------------------
  |  Branch (1147:3): [True: 39.9k, False: 2.52M]
  ------------------
 1148|  39.9k|    token.type_ = tokenString;
 1149|  39.9k|    ok = readString();
 1150|  39.9k|    break;
 1151|    535|  case '\'':
  ------------------
  |  Branch (1151:3): [True: 535, False: 2.56M]
  ------------------
 1152|    535|    if (features_.allowSingleQuotes_) {
  ------------------
  |  Branch (1152:9): [True: 0, False: 535]
  ------------------
 1153|      0|      token.type_ = tokenString;
 1154|      0|      ok = readStringSingleQuote();
 1155|    535|    } else {
 1156|       |      // If we don't allow single quotes, this is a failure case.
 1157|    535|      ok = false;
 1158|    535|    }
 1159|    535|    break;
 1160|  5.93k|  case '/':
  ------------------
  |  Branch (1160:3): [True: 5.93k, False: 2.55M]
  ------------------
 1161|  5.93k|    token.type_ = tokenComment;
 1162|  5.93k|    ok = readComment();
 1163|  5.93k|    break;
 1164|  11.8k|  case '0':
  ------------------
  |  Branch (1164:3): [True: 11.8k, False: 2.55M]
  ------------------
 1165|  23.0k|  case '1':
  ------------------
  |  Branch (1165:3): [True: 11.1k, False: 2.55M]
  ------------------
 1166|  25.1k|  case '2':
  ------------------
  |  Branch (1166:3): [True: 2.13k, False: 2.56M]
  ------------------
 1167|  25.9k|  case '3':
  ------------------
  |  Branch (1167:3): [True: 761, False: 2.56M]
  ------------------
 1168|  1.02M|  case '4':
  ------------------
  |  Branch (1168:3): [True: 1.00M, False: 1.56M]
  ------------------
 1169|  1.02M|  case '5':
  ------------------
  |  Branch (1169:3): [True: 1.00k, False: 2.56M]
  ------------------
 1170|  1.03M|  case '6':
  ------------------
  |  Branch (1170:3): [True: 1.08k, False: 2.56M]
  ------------------
 1171|  1.03M|  case '7':
  ------------------
  |  Branch (1171:3): [True: 752, False: 2.56M]
  ------------------
 1172|  1.03M|  case '8':
  ------------------
  |  Branch (1172:3): [True: 482, False: 2.56M]
  ------------------
 1173|  1.03M|  case '9':
  ------------------
  |  Branch (1173:3): [True: 738, False: 2.56M]
  ------------------
 1174|  1.03M|    token.type_ = tokenNumber;
 1175|  1.03M|    readNumber(false);
 1176|  1.03M|    break;
 1177|   117k|  case '-':
  ------------------
  |  Branch (1177:3): [True: 117k, False: 2.44M]
  ------------------
 1178|   117k|    if (readNumber(true)) {
  ------------------
  |  Branch (1178:9): [True: 117k, False: 267]
  ------------------
 1179|   117k|      token.type_ = tokenNumber;
 1180|   117k|    } else {
 1181|    267|      token.type_ = tokenNegInf;
 1182|    267|      ok = features_.allowSpecialFloats_ && match("nfinity", 7);
  ------------------
  |  Branch (1182:12): [True: 0, False: 267]
  |  Branch (1182:45): [True: 0, False: 0]
  ------------------
 1183|    267|    }
 1184|   117k|    break;
 1185|  2.18k|  case '+':
  ------------------
  |  Branch (1185:3): [True: 2.18k, False: 2.56M]
  ------------------
 1186|  2.18k|    if (readNumber(true)) {
  ------------------
  |  Branch (1186:9): [True: 1.88k, False: 308]
  ------------------
 1187|  1.88k|      token.type_ = tokenNumber;
 1188|  1.88k|    } else {
 1189|    308|      token.type_ = tokenPosInf;
 1190|    308|      ok = features_.allowSpecialFloats_ && match("nfinity", 7);
  ------------------
  |  Branch (1190:12): [True: 0, False: 308]
  |  Branch (1190:45): [True: 0, False: 0]
  ------------------
 1191|    308|    }
 1192|  2.18k|    break;
 1193|  3.51k|  case 't':
  ------------------
  |  Branch (1193:3): [True: 3.51k, False: 2.56M]
  ------------------
 1194|  3.51k|    token.type_ = tokenTrue;
 1195|  3.51k|    ok = match("rue", 3);
 1196|  3.51k|    break;
 1197|  8.73k|  case 'f':
  ------------------
  |  Branch (1197:3): [True: 8.73k, False: 2.55M]
  ------------------
 1198|  8.73k|    token.type_ = tokenFalse;
 1199|  8.73k|    ok = match("alse", 4);
 1200|  8.73k|    break;
 1201|  9.11k|  case 'n':
  ------------------
  |  Branch (1201:3): [True: 9.11k, False: 2.55M]
  ------------------
 1202|  9.11k|    token.type_ = tokenNull;
 1203|  9.11k|    ok = match("ull", 3);
 1204|  9.11k|    break;
 1205|    415|  case 'N':
  ------------------
  |  Branch (1205:3): [True: 415, False: 2.56M]
  ------------------
 1206|    415|    if (features_.allowSpecialFloats_) {
  ------------------
  |  Branch (1206:9): [True: 0, False: 415]
  ------------------
 1207|      0|      token.type_ = tokenNaN;
 1208|      0|      ok = match("aN", 2);
 1209|    415|    } else {
 1210|    415|      ok = false;
 1211|    415|    }
 1212|    415|    break;
 1213|    568|  case 'I':
  ------------------
  |  Branch (1213:3): [True: 568, False: 2.56M]
  ------------------
 1214|    568|    if (features_.allowSpecialFloats_) {
  ------------------
  |  Branch (1214:9): [True: 0, False: 568]
  ------------------
 1215|      0|      token.type_ = tokenPosInf;
 1216|      0|      ok = match("nfinity", 7);
 1217|    568|    } else {
 1218|    568|      ok = false;
 1219|    568|    }
 1220|    568|    break;
 1221|  1.15M|  case ',':
  ------------------
  |  Branch (1221:3): [True: 1.15M, False: 1.41M]
  ------------------
 1222|  1.15M|    token.type_ = tokenArraySeparator;
 1223|  1.15M|    break;
 1224|  37.6k|  case ':':
  ------------------
  |  Branch (1224:3): [True: 37.6k, False: 2.52M]
  ------------------
 1225|  37.6k|    token.type_ = tokenMemberSeparator;
 1226|  37.6k|    break;
 1227|  50.2k|  case 0:
  ------------------
  |  Branch (1227:3): [True: 50.2k, False: 2.51M]
  ------------------
 1228|  50.2k|    token.type_ = tokenEndOfStream;
 1229|  50.2k|    break;
 1230|  21.2k|  default:
  ------------------
  |  Branch (1230:3): [True: 21.2k, False: 2.54M]
  ------------------
 1231|  21.2k|    ok = false;
 1232|  21.2k|    break;
 1233|  2.56M|  }
 1234|  2.56M|  if (!ok)
  ------------------
  |  Branch (1234:7): [True: 39.2k, False: 2.52M]
  ------------------
 1235|  39.2k|    token.type_ = tokenError;
 1236|  2.56M|  token.end_ = current_;
 1237|  2.56M|  return ok;
 1238|  2.56M|}
_ZN4Json9OurReader10skipSpacesEv:
 1240|  3.74M|void OurReader::skipSpaces() {
 1241|  3.76M|  while (current_ != end_) {
  ------------------
  |  Branch (1241:10): [True: 3.71M, False: 50.0k]
  ------------------
 1242|  3.71M|    Char c = *current_;
 1243|  3.71M|    if (c == ' ' || c == '\t' || c == '\r' || c == '\n')
  ------------------
  |  Branch (1243:9): [True: 10.3k, False: 3.70M]
  |  Branch (1243:21): [True: 698, False: 3.69M]
  |  Branch (1243:34): [True: 676, False: 3.69M]
  |  Branch (1243:47): [True: 528, False: 3.69M]
  ------------------
 1244|  12.2k|      ++current_;
 1245|  3.69M|    else
 1246|  3.69M|      break;
 1247|  3.71M|  }
 1248|  3.74M|}
_ZN4Json9OurReader7skipBomEb:
 1250|  3.01k|void OurReader::skipBom(bool skipBom) {
 1251|       |  // The default behavior is to skip BOM.
 1252|  3.01k|  if (skipBom) {
  ------------------
  |  Branch (1252:7): [True: 3.01k, False: 0]
  ------------------
 1253|  3.01k|    if ((end_ - begin_) >= 3 && strncmp(begin_, "\xEF\xBB\xBF", 3) == 0) {
  ------------------
  |  Branch (1253:9): [True: 3.01k, False: 0]
  |  Branch (1253:33): [True: 0, False: 3.01k]
  ------------------
 1254|      0|      begin_ += 3;
 1255|      0|      current_ = begin_;
 1256|      0|    }
 1257|  3.01k|  }
 1258|  3.01k|}
_ZN4Json9OurReader5matchEPKci:
 1260|  21.3k|bool OurReader::match(const Char* pattern, int patternLength) {
 1261|  21.3k|  if (end_ - current_ < patternLength)
  ------------------
  |  Branch (1261:7): [True: 11, False: 21.3k]
  ------------------
 1262|     11|    return false;
 1263|  21.3k|  int index = patternLength;
 1264|  55.6k|  while (index--)
  ------------------
  |  Branch (1264:10): [True: 48.0k, False: 7.53k]
  ------------------
 1265|  48.0k|    if (current_[index] != pattern[index])
  ------------------
  |  Branch (1265:9): [True: 13.8k, False: 34.2k]
  ------------------
 1266|  13.8k|      return false;
 1267|  7.53k|  current_ += patternLength;
 1268|  7.53k|  return true;
 1269|  21.3k|}
_ZN4Json9OurReader11readCommentEv:
 1271|  5.93k|bool OurReader::readComment() {
 1272|  5.93k|  const Location commentBegin = current_ - 1;
 1273|  5.93k|  const Char c = getNextChar();
 1274|  5.93k|  bool successful = false;
 1275|  5.93k|  bool cStyleWithEmbeddedNewline = false;
 1276|       |
 1277|  5.93k|  const bool isCStyleComment = (c == '*');
 1278|  5.93k|  const bool isCppStyleComment = (c == '/');
 1279|  5.93k|  if (isCStyleComment) {
  ------------------
  |  Branch (1279:7): [True: 1.71k, False: 4.22k]
  ------------------
 1280|  1.71k|    successful = readCStyleComment(&cStyleWithEmbeddedNewline);
 1281|  4.22k|  } else if (isCppStyleComment) {
  ------------------
  |  Branch (1281:14): [True: 3.81k, False: 408]
  ------------------
 1282|  3.81k|    successful = readCppStyleComment();
 1283|  3.81k|  }
 1284|       |
 1285|  5.93k|  if (!successful)
  ------------------
  |  Branch (1285:7): [True: 432, False: 5.50k]
  ------------------
 1286|    432|    return false;
 1287|       |
 1288|  5.50k|  if (collectComments_) {
  ------------------
  |  Branch (1288:7): [True: 4.01k, False: 1.49k]
  ------------------
 1289|  4.01k|    CommentPlacement placement = commentBefore;
 1290|       |
 1291|  4.01k|    if (!lastValueHasAComment_) {
  ------------------
  |  Branch (1291:9): [True: 3.48k, False: 527]
  ------------------
 1292|  3.48k|      if (lastValueEnd_ && !containsNewLine(lastValueEnd_, commentBegin)) {
  ------------------
  |  Branch (1292:11): [True: 1.61k, False: 1.87k]
  |  Branch (1292:28): [True: 1.29k, False: 318]
  ------------------
 1293|  1.29k|        if (isCppStyleComment || !cStyleWithEmbeddedNewline) {
  ------------------
  |  Branch (1293:13): [True: 429, False: 867]
  |  Branch (1293:34): [True: 666, False: 201]
  ------------------
 1294|  1.09k|          placement = commentAfterOnSameLine;
 1295|  1.09k|          lastValueHasAComment_ = true;
 1296|  1.09k|        }
 1297|  1.29k|      }
 1298|  3.48k|    }
 1299|       |
 1300|  4.01k|    addComment(commentBegin, current_, placement);
 1301|  4.01k|  }
 1302|  5.50k|  return true;
 1303|  5.93k|}
_ZN4Json9OurReader12normalizeEOLEPKcS2_:
 1306|  4.01k|                               OurReader::Location end) {
 1307|  4.01k|  String normalized;
 1308|  4.01k|  normalized.reserve(static_cast<size_t>(end - begin));
 1309|  4.01k|  OurReader::Location current = begin;
 1310|  2.58M|  while (current != end) {
  ------------------
  |  Branch (1310:10): [True: 2.58M, False: 4.01k]
  ------------------
 1311|  2.58M|    char c = *current++;
 1312|  2.58M|    if (c == '\r') {
  ------------------
  |  Branch (1312:9): [True: 2.65k, False: 2.58M]
  ------------------
 1313|  2.65k|      if (current != end && *current == '\n')
  ------------------
  |  Branch (1313:11): [True: 554, False: 2.10k]
  |  Branch (1313:29): [True: 213, False: 341]
  ------------------
 1314|       |        // convert dos EOL
 1315|    213|        ++current;
 1316|       |      // convert Mac EOL
 1317|  2.65k|      normalized += '\n';
 1318|  2.58M|    } else {
 1319|  2.58M|      normalized += c;
 1320|  2.58M|    }
 1321|  2.58M|  }
 1322|  4.01k|  return normalized;
 1323|  4.01k|}
_ZN4Json9OurReader10addCommentEPKcS2_NS_16CommentPlacementE:
 1326|  4.01k|                           CommentPlacement placement) {
 1327|  4.01k|  assert(collectComments_);
 1328|  4.01k|  const String& normalized = normalizeEOL(begin, end);
 1329|  4.01k|  if (placement == commentAfterOnSameLine) {
  ------------------
  |  Branch (1329:7): [True: 1.09k, False: 2.91k]
  ------------------
 1330|  1.09k|    assert(lastValue_ != nullptr);
 1331|  1.09k|    lastValue_->setComment(normalized, placement);
 1332|  2.91k|  } else {
 1333|  2.91k|    commentsBefore_ += normalized;
 1334|  2.91k|  }
 1335|  4.01k|}
_ZN4Json9OurReader17readCStyleCommentEPb:
 1337|  1.71k|bool OurReader::readCStyleComment(bool* containsNewLineResult) {
 1338|  1.71k|  *containsNewLineResult = false;
 1339|       |
 1340|   705k|  while ((current_ + 1) < end_) {
  ------------------
  |  Branch (1340:10): [True: 705k, False: 24]
  ------------------
 1341|   705k|    Char c = getNextChar();
 1342|   705k|    if (c == '*' && *current_ == '/')
  ------------------
  |  Branch (1342:9): [True: 3.58k, False: 702k]
  |  Branch (1342:21): [True: 1.69k, False: 1.89k]
  ------------------
 1343|  1.69k|      break;
 1344|   704k|    if (c == '\n')
  ------------------
  |  Branch (1344:9): [True: 615, False: 703k]
  ------------------
 1345|    615|      *containsNewLineResult = true;
 1346|   704k|  }
 1347|       |
 1348|  1.71k|  return getNextChar() == '/';
 1349|  1.71k|}
_ZN4Json9OurReader19readCppStyleCommentEv:
 1351|  3.81k|bool OurReader::readCppStyleComment() {
 1352|  2.85M|  while (current_ != end_) {
  ------------------
  |  Branch (1352:10): [True: 2.85M, False: 193]
  ------------------
 1353|  2.85M|    Char c = getNextChar();
 1354|  2.85M|    if (c == '\n')
  ------------------
  |  Branch (1354:9): [True: 492, False: 2.85M]
  ------------------
 1355|    492|      break;
 1356|  2.85M|    if (c == '\r') {
  ------------------
  |  Branch (1356:9): [True: 3.12k, False: 2.85M]
  ------------------
 1357|       |      // Consume DOS EOL. It will be normalized in addComment.
 1358|  3.12k|      if (current_ != end_ && *current_ == '\n')
  ------------------
  |  Branch (1358:11): [True: 3.12k, False: 0]
  |  Branch (1358:31): [True: 206, False: 2.92k]
  ------------------
 1359|    206|        getNextChar();
 1360|       |      // Break on Moc OS 9 EOL.
 1361|  3.12k|      break;
 1362|  3.12k|    }
 1363|  2.85M|  }
 1364|  3.81k|  return true;
 1365|  3.81k|}
_ZN4Json9OurReader10readNumberEb:
 1367|  1.15M|bool OurReader::readNumber(bool checkInf) {
 1368|  1.15M|  Location p = current_;
 1369|  1.15M|  if (checkInf && p != end_ && *p == 'I') {
  ------------------
  |  Branch (1369:7): [True: 119k, False: 1.03M]
  |  Branch (1369:19): [True: 119k, False: 0]
  |  Branch (1369:32): [True: 575, False: 118k]
  ------------------
 1370|    575|    current_ = ++p;
 1371|    575|    return false;
 1372|    575|  }
 1373|  1.15M|  char c = '0'; // stopgap for already consumed character
 1374|       |  // integral part
 1375|  10.0M|  while (c >= '0' && c <= '9')
  ------------------
  |  Branch (1375:10): [True: 8.87M, False: 1.14M]
  |  Branch (1375:22): [True: 8.86M, False: 5.89k]
  ------------------
 1376|  8.86M|    c = (current_ = p) < end_ ? *p++ : '\0';
  ------------------
  |  Branch (1376:9): [True: 8.86M, False: 0]
  ------------------
 1377|       |  // fractional part
 1378|  1.15M|  if (c == '.') {
  ------------------
  |  Branch (1378:7): [True: 1.79k, False: 1.14M]
  ------------------
 1379|  1.79k|    c = (current_ = p) < end_ ? *p++ : '\0';
  ------------------
  |  Branch (1379:9): [True: 1.79k, False: 0]
  ------------------
 1380|  4.56M|    while (c >= '0' && c <= '9')
  ------------------
  |  Branch (1380:12): [True: 4.56M, False: 1.27k]
  |  Branch (1380:24): [True: 4.56M, False: 515]
  ------------------
 1381|  4.56M|      c = (current_ = p) < end_ ? *p++ : '\0';
  ------------------
  |  Branch (1381:11): [True: 4.56M, False: 0]
  ------------------
 1382|  1.79k|  }
 1383|       |  // exponential part
 1384|  1.15M|  if (c == 'e' || c == 'E') {
  ------------------
  |  Branch (1384:7): [True: 2.42k, False: 1.14M]
  |  Branch (1384:19): [True: 1.41k, False: 1.14M]
  ------------------
 1385|  3.83k|    c = (current_ = p) < end_ ? *p++ : '\0';
  ------------------
  |  Branch (1385:9): [True: 3.83k, False: 0]
  ------------------
 1386|  3.83k|    if (c == '+' || c == '-')
  ------------------
  |  Branch (1386:9): [True: 691, False: 3.14k]
  |  Branch (1386:21): [True: 595, False: 2.55k]
  ------------------
 1387|  1.28k|      c = (current_ = p) < end_ ? *p++ : '\0';
  ------------------
  |  Branch (1387:11): [True: 1.28k, False: 0]
  ------------------
 1388|   181k|    while (c >= '0' && c <= '9')
  ------------------
  |  Branch (1388:12): [True: 178k, False: 2.42k]
  |  Branch (1388:24): [True: 177k, False: 1.41k]
  ------------------
 1389|   177k|      c = (current_ = p) < end_ ? *p++ : '\0';
  ------------------
  |  Branch (1389:11): [True: 177k, False: 0]
  ------------------
 1390|  3.83k|  }
 1391|  1.15M|  return true;
 1392|  1.15M|}
_ZN4Json9OurReader10readStringEv:
 1393|  39.9k|bool OurReader::readString() {
 1394|  39.9k|  Char c = 0;
 1395|  9.85M|  while (current_ != end_) {
  ------------------
  |  Branch (1395:10): [True: 9.85M, False: 1.63k]
  ------------------
 1396|  9.85M|    c = getNextChar();
 1397|  9.85M|    if (c == '\\')
  ------------------
  |  Branch (1397:9): [True: 4.10k, False: 9.84M]
  ------------------
 1398|  4.10k|      getNextChar();
 1399|  9.84M|    else if (c == '"')
  ------------------
  |  Branch (1399:14): [True: 38.3k, False: 9.80M]
  ------------------
 1400|  38.3k|      break;
 1401|  9.85M|  }
 1402|  39.9k|  return c == '"';
 1403|  39.9k|}
_ZN4Json9OurReader10readObjectERNS0_5TokenE:
 1417|  18.0k|bool OurReader::readObject(Token& token) {
 1418|  18.0k|  Token tokenName;
 1419|  18.0k|  String name;
 1420|  18.0k|  Value init(objectValue);
 1421|  18.0k|  currentValue().swapPayload(init);
 1422|  18.0k|  currentValue().setOffsetStart(token.start_ - begin_);
 1423|  40.1k|  while (readTokenSkippingComments(tokenName)) {
  ------------------
  |  Branch (1423:10): [True: 38.1k, False: 1.96k]
  ------------------
 1424|  38.1k|    if (tokenName.type_ == tokenObjectEnd &&
  ------------------
  |  Branch (1424:9): [True: 1.46k, False: 36.6k]
  ------------------
 1425|  38.1k|        (name.empty() ||
  ------------------
  |  Branch (1425:10): [True: 1.06k, False: 404]
  ------------------
 1426|  1.46k|         features_.allowTrailingCommas_)) // empty object or trailing comma
  ------------------
  |  Branch (1426:10): [True: 404, False: 0]
  ------------------
 1427|  1.46k|      return true;
 1428|  36.6k|    name.clear();
 1429|  36.6k|    if (tokenName.type_ == tokenString) {
  ------------------
  |  Branch (1429:9): [True: 36.6k, False: 31]
  ------------------
 1430|  36.6k|      if (!decodeString(tokenName, name))
  ------------------
  |  Branch (1430:11): [True: 166, False: 36.4k]
  ------------------
 1431|    166|        return recoverFromError(tokenObjectEnd);
 1432|  36.6k|    } else if (tokenName.type_ == tokenNumber && features_.allowNumericKeys_) {
  ------------------
  |  Branch (1432:16): [True: 12, False: 19]
  |  Branch (1432:50): [True: 0, False: 12]
  ------------------
 1433|      0|      Value numberName;
 1434|      0|      if (!decodeNumber(tokenName, numberName))
  ------------------
  |  Branch (1434:11): [True: 0, False: 0]
  ------------------
 1435|      0|        return recoverFromError(tokenObjectEnd);
 1436|      0|      name = numberName.asString();
 1437|     31|    } else {
 1438|     31|      break;
 1439|     31|    }
 1440|  36.4k|    if (name.length() >= (1U << 30))
  ------------------
  |  Branch (1440:9): [True: 0, False: 36.4k]
  ------------------
 1441|      0|      throwRuntimeError("keylength >= 2^30");
 1442|  36.4k|    if (features_.rejectDupKeys_ && currentValue().isMember(name)) {
  ------------------
  |  Branch (1442:9): [True: 0, False: 36.4k]
  |  Branch (1442:37): [True: 0, False: 0]
  ------------------
 1443|      0|      String msg = "Duplicate key: '" + name + "'";
 1444|      0|      return addErrorAndRecover(msg, tokenName, tokenObjectEnd);
 1445|      0|    }
 1446|       |
 1447|  36.4k|    Token colon;
 1448|  36.4k|    if (!readToken(colon) || colon.type_ != tokenMemberSeparator) {
  ------------------
  |  Branch (1448:9): [True: 230, False: 36.2k]
  |  Branch (1448:30): [True: 309, False: 35.9k]
  ------------------
 1449|    539|      return addErrorAndRecover("Missing ':' after object member name", colon,
 1450|    539|                                tokenObjectEnd);
 1451|    539|    }
 1452|  35.9k|    Value& value = currentValue()[name];
 1453|  35.9k|    nodes_.push(&value);
 1454|  35.9k|    bool ok = readValue();
 1455|  35.9k|    nodes_.pop();
 1456|  35.9k|    if (!ok) // error already set
  ------------------
  |  Branch (1456:9): [True: 11.4k, False: 24.5k]
  ------------------
 1457|  11.4k|      return recoverFromError(tokenObjectEnd);
 1458|       |
 1459|  24.5k|    Token comma;
 1460|  24.5k|    if (!readTokenSkippingComments(comma) ||
  ------------------
  |  Branch (1460:9): [True: 2.31k, False: 22.2k]
  ------------------
 1461|  24.5k|        (comma.type_ != tokenObjectEnd && comma.type_ != tokenArraySeparator)) {
  ------------------
  |  Branch (1461:10): [True: 20.3k, False: 1.87k]
  |  Branch (1461:43): [True: 183, False: 20.1k]
  ------------------
 1462|    575|      return addErrorAndRecover("Missing ',' or '}' in object declaration",
 1463|    575|                                comma, tokenObjectEnd);
 1464|    575|    }
 1465|  23.9k|    if (comma.type_ == tokenObjectEnd)
  ------------------
  |  Branch (1465:9): [True: 1.87k, False: 22.0k]
  ------------------
 1466|  1.87k|      return true;
 1467|  23.9k|  }
 1468|  1.99k|  return addErrorAndRecover("Missing '}' or object member name", tokenName,
 1469|  1.99k|                            tokenObjectEnd);
 1470|  18.0k|}
_ZN4Json9OurReader9readArrayERNS0_5TokenE:
 1472|  58.6k|bool OurReader::readArray(Token& token) {
 1473|  58.6k|  Value init(arrayValue);
 1474|  58.6k|  currentValue().swapPayload(init);
 1475|  58.6k|  currentValue().setOffsetStart(token.start_ - begin_);
 1476|  58.6k|  int index = 0;
 1477|  1.18M|  for (;;) {
 1478|  1.18M|    skipSpaces();
 1479|  1.18M|    if (current_ != end_ && *current_ == ']' &&
  ------------------
  |  Branch (1479:9): [True: 1.18M, False: 0]
  |  Branch (1479:29): [True: 873, False: 1.18M]
  ------------------
 1480|  1.18M|        (index == 0 ||
  ------------------
  |  Branch (1480:10): [True: 581, False: 292]
  ------------------
 1481|    873|         (features_.allowTrailingCommas_ &&
  ------------------
  |  Branch (1481:11): [True: 292, False: 0]
  ------------------
 1482|    292|          !features_.allowDroppedNullPlaceholders_))) // empty array or trailing
  ------------------
  |  Branch (1482:11): [True: 292, False: 0]
  ------------------
 1483|       |                                                      // comma
 1484|    873|    {
 1485|    873|      Token endArray;
 1486|    873|      readToken(endArray);
 1487|    873|      return true;
 1488|    873|    }
 1489|  1.18M|    Value& value = currentValue()[index++];
 1490|  1.18M|    nodes_.push(&value);
 1491|  1.18M|    bool ok = readValue();
 1492|  1.18M|    nodes_.pop();
 1493|  1.18M|    if (!ok) // error already set
  ------------------
  |  Branch (1493:9): [True: 34.4k, False: 1.14M]
  ------------------
 1494|  34.4k|      return recoverFromError(tokenArrayEnd);
 1495|       |
 1496|  1.14M|    Token currentToken;
 1497|       |    // Accept Comment after last item in the array.
 1498|  1.14M|    ok = readTokenSkippingComments(currentToken);
 1499|  1.14M|    bool badTokenType = (currentToken.type_ != tokenArraySeparator &&
  ------------------
  |  Branch (1499:26): [True: 1.24k, False: 1.14M]
  ------------------
 1500|  1.14M|                         currentToken.type_ != tokenArrayEnd);
  ------------------
  |  Branch (1500:26): [True: 246, False: 1.00k]
  ------------------
 1501|  1.14M|    if (!ok || badTokenType) {
  ------------------
  |  Branch (1501:9): [True: 22.2k, False: 1.12M]
  |  Branch (1501:16): [True: 71, False: 1.12M]
  ------------------
 1502|    246|      return addErrorAndRecover("Missing ',' or ']' in array declaration",
 1503|    246|                                currentToken, tokenArrayEnd);
 1504|    246|    }
 1505|  1.14M|    if (currentToken.type_ == tokenArrayEnd)
  ------------------
  |  Branch (1505:9): [True: 1.00k, False: 1.14M]
  ------------------
 1506|  1.00k|      break;
 1507|  1.14M|  }
 1508|  23.0k|  return true;
 1509|  58.6k|}
_ZN4Json9OurReader12decodeNumberERNS0_5TokenE:
 1511|  1.13M|bool OurReader::decodeNumber(Token& token) {
 1512|  1.13M|  Value decoded;
 1513|  1.13M|  if (!decodeNumber(token, decoded))
  ------------------
  |  Branch (1513:7): [True: 243, False: 1.13M]
  ------------------
 1514|    243|    return false;
 1515|  1.13M|  currentValue().swapPayload(decoded);
 1516|  1.13M|  currentValue().setOffsetStart(token.start_ - begin_);
 1517|  1.13M|  currentValue().setOffsetLimit(token.end_ - begin_);
 1518|  1.13M|  return true;
 1519|  1.13M|}
_ZN4Json9OurReader12decodeNumberERNS0_5TokenERNS_5ValueE:
 1521|  1.13M|bool OurReader::decodeNumber(Token& token, Value& decoded) {
 1522|       |  // Attempts to parse the number as an integer. If the number is
 1523|       |  // larger than the maximum supported value of an integer then
 1524|       |  // we decode the number as a double.
 1525|  1.13M|  Location current = token.start_;
 1526|  1.13M|  const bool isNegative = *current == '-';
 1527|  1.13M|  if (isNegative) {
  ------------------
  |  Branch (1527:7): [True: 114k, False: 1.02M]
  ------------------
 1528|   114k|    ++current;
 1529|   114k|  }
 1530|       |
 1531|       |  // We assume we can represent the largest and smallest integer types as
 1532|       |  // unsigned integers with separate sign. This is only true if they can fit
 1533|       |  // into an unsigned integer.
 1534|  1.13M|  static_assert(Value::maxLargestInt <= Value::maxLargestUInt,
 1535|  1.13M|                "Int must be smaller than UInt");
 1536|       |
 1537|       |  // We need to convert minLargestInt into a positive number. The easiest way
 1538|       |  // to do this conversion is to assume our "threshold" value of minLargestInt
 1539|       |  // divided by 10 can fit in maxLargestInt when absolute valued. This should
 1540|       |  // be a safe assumption.
 1541|  1.13M|  static_assert(Value::minLargestInt <= -Value::maxLargestInt,
 1542|  1.13M|                "The absolute value of minLargestInt must be greater than or "
 1543|  1.13M|                "equal to maxLargestInt");
 1544|  1.13M|  static_assert(Value::minLargestInt / 10 >= -Value::maxLargestInt,
 1545|  1.13M|                "The absolute value of minLargestInt must be only 1 magnitude "
 1546|  1.13M|                "larger than maxLargest Int");
 1547|       |
 1548|  1.13M|  static constexpr Value::LargestUInt positive_threshold =
 1549|  1.13M|      Value::maxLargestUInt / 10;
 1550|  1.13M|  static constexpr Value::UInt positive_last_digit = Value::maxLargestUInt % 10;
 1551|       |
 1552|       |  // For the negative values, we have to be more careful. Since typically
 1553|       |  // -Value::minLargestInt will cause an overflow, we first divide by 10 and
 1554|       |  // then take the inverse. This assumes that minLargestInt is only a single
 1555|       |  // power of 10 different in magnitude, which we check above. For the last
 1556|       |  // digit, we take the modulus before negating for the same reason.
 1557|  1.13M|  static constexpr auto negative_threshold =
 1558|  1.13M|      Value::LargestUInt(-(Value::minLargestInt / 10));
 1559|  1.13M|  static constexpr auto negative_last_digit =
 1560|  1.13M|      Value::UInt(-(Value::minLargestInt % 10));
 1561|       |
 1562|  1.13M|  const Value::LargestUInt threshold =
 1563|  1.13M|      isNegative ? negative_threshold : positive_threshold;
  ------------------
  |  Branch (1563:7): [True: 114k, False: 1.02M]
  ------------------
 1564|  1.13M|  const Value::UInt max_last_digit =
 1565|  1.13M|      isNegative ? negative_last_digit : positive_last_digit;
  ------------------
  |  Branch (1565:7): [True: 114k, False: 1.02M]
  ------------------
 1566|       |
 1567|  1.13M|  Value::LargestUInt value = 0;
 1568|  2.22M|  while (current < token.end_) {
  ------------------
  |  Branch (1568:10): [True: 1.08M, False: 1.13M]
  ------------------
 1569|  1.08M|    Char c = *current++;
 1570|  1.08M|    if (c < '0' || c > '9')
  ------------------
  |  Branch (1570:9): [True: 551, False: 1.08M]
  |  Branch (1570:20): [True: 897, False: 1.08M]
  ------------------
 1571|  1.44k|      return decodeDouble(token, decoded);
 1572|       |
 1573|  1.08M|    const auto digit(static_cast<Value::UInt>(c - '0'));
 1574|  1.08M|    if (value >= threshold) {
  ------------------
  |  Branch (1574:9): [True: 2.86k, False: 1.08M]
  ------------------
 1575|       |      // We've hit or exceeded the max value divided by 10 (rounded down). If
 1576|       |      // a) we've only just touched the limit, meaning value == threshold,
 1577|       |      // b) this is the last digit, or
 1578|       |      // c) it's small enough to fit in that rounding delta, we're okay.
 1579|       |      // Otherwise treat this number as a double to avoid overflow.
 1580|  2.86k|      if (value > threshold || current != token.end_ ||
  ------------------
  |  Branch (1580:11): [True: 2.23k, False: 629]
  |  Branch (1580:32): [True: 201, False: 428]
  ------------------
 1581|  2.86k|          digit > max_last_digit) {
  ------------------
  |  Branch (1581:11): [True: 194, False: 234]
  ------------------
 1582|  2.62k|        return decodeDouble(token, decoded);
 1583|  2.62k|      }
 1584|  2.86k|    }
 1585|  1.08M|    value = value * 10 + digit;
 1586|  1.08M|  }
 1587|       |
 1588|  1.13M|  if (isNegative) {
  ------------------
  |  Branch (1588:7): [True: 114k, False: 1.01M]
  ------------------
 1589|       |    // We use the same magnitude assumption here, just in case.
 1590|   114k|    const auto last_digit = static_cast<Value::UInt>(value % 10);
 1591|   114k|    decoded = -Value::LargestInt(value / 10) * 10 - last_digit;
 1592|  1.01M|  } else if (value <= Value::LargestUInt(Value::maxLargestInt)) {
  ------------------
  |  Branch (1592:14): [True: 1.01M, False: 315]
  ------------------
 1593|  1.01M|    decoded = Value::LargestInt(value);
 1594|  1.01M|  } else {
 1595|    315|    decoded = value;
 1596|    315|  }
 1597|       |
 1598|  1.13M|  return true;
 1599|  1.13M|}
_ZN4Json9OurReader12decodeDoubleERNS0_5TokenERNS_5ValueE:
 1611|  4.07k|bool OurReader::decodeDouble(Token& token, Value& decoded) {
 1612|  4.07k|  double value = 0;
 1613|  4.07k|  IStringStream is(String(token.start_, token.end_));
 1614|  4.07k|  if (!(is >> value)) {
  ------------------
  |  Branch (1614:7): [True: 485, False: 3.59k]
  ------------------
 1615|    485|    if (value == std::numeric_limits<double>::max())
  ------------------
  |  Branch (1615:9): [True: 0, False: 485]
  ------------------
 1616|      0|      value = std::numeric_limits<double>::infinity();
 1617|    485|    else if (value == std::numeric_limits<double>::lowest())
  ------------------
  |  Branch (1617:14): [True: 0, False: 485]
  ------------------
 1618|      0|      value = -std::numeric_limits<double>::infinity();
 1619|    485|    else if (!std::isinf(value))
  ------------------
  |  Branch (1619:14): [True: 243, False: 242]
  ------------------
 1620|    243|      return addError(
 1621|    243|          "'" + String(token.start_, token.end_) + "' is not a number.", token);
 1622|    485|  }
 1623|  3.83k|  decoded = value;
 1624|  3.83k|  return true;
 1625|  4.07k|}
_ZN4Json9OurReader12decodeStringERNS0_5TokenE:
 1627|  1.03k|bool OurReader::decodeString(Token& token) {
 1628|  1.03k|  String decoded_string;
 1629|  1.03k|  if (!decodeString(token, decoded_string))
  ------------------
  |  Branch (1629:7): [True: 11, False: 1.01k]
  ------------------
 1630|     11|    return false;
 1631|  1.01k|  Value decoded(decoded_string);
 1632|  1.01k|  currentValue().swapPayload(decoded);
 1633|  1.01k|  currentValue().setOffsetStart(token.start_ - begin_);
 1634|  1.01k|  currentValue().setOffsetLimit(token.end_ - begin_);
 1635|  1.01k|  return true;
 1636|  1.03k|}
_ZN4Json9OurReader12decodeStringERNS0_5TokenERNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEE:
 1638|  37.6k|bool OurReader::decodeString(Token& token, String& decoded) {
 1639|  37.6k|  decoded.reserve(static_cast<size_t>(token.end_ - token.start_ - 2));
 1640|  37.6k|  Location current = token.start_ + 1; // skip '"'
 1641|  37.6k|  Location end = token.end_ - 1;       // do not include '"'
 1642|  8.54M|  while (current != end) {
  ------------------
  |  Branch (1642:10): [True: 8.50M, False: 37.5k]
  ------------------
 1643|  8.50M|    Char c = *current++;
 1644|  8.50M|    if (c == '"')
  ------------------
  |  Branch (1644:9): [True: 0, False: 8.50M]
  ------------------
 1645|      0|      break;
 1646|  8.50M|    if (c == '\\') {
  ------------------
  |  Branch (1646:9): [True: 3.20k, False: 8.50M]
  ------------------
 1647|  3.20k|      if (current == end)
  ------------------
  |  Branch (1647:11): [True: 0, False: 3.20k]
  ------------------
 1648|      0|        return addError("Empty escape sequence in string", token, current);
 1649|  3.20k|      Char escape = *current++;
 1650|  3.20k|      switch (escape) {
 1651|    207|      case '"':
  ------------------
  |  Branch (1651:7): [True: 207, False: 2.99k]
  ------------------
 1652|    207|        decoded += '"';
 1653|    207|        break;
 1654|    234|      case '/':
  ------------------
  |  Branch (1654:7): [True: 234, False: 2.96k]
  ------------------
 1655|    234|        decoded += '/';
 1656|    234|        break;
 1657|    211|      case '\\':
  ------------------
  |  Branch (1657:7): [True: 211, False: 2.98k]
  ------------------
 1658|    211|        decoded += '\\';
 1659|    211|        break;
 1660|    281|      case 'b':
  ------------------
  |  Branch (1660:7): [True: 281, False: 2.91k]
  ------------------
 1661|    281|        decoded += '\b';
 1662|    281|        break;
 1663|    219|      case 'f':
  ------------------
  |  Branch (1663:7): [True: 219, False: 2.98k]
  ------------------
 1664|    219|        decoded += '\f';
 1665|    219|        break;
 1666|    219|      case 'n':
  ------------------
  |  Branch (1666:7): [True: 219, False: 2.98k]
  ------------------
 1667|    219|        decoded += '\n';
 1668|    219|        break;
 1669|    255|      case 'r':
  ------------------
  |  Branch (1669:7): [True: 255, False: 2.94k]
  ------------------
 1670|    255|        decoded += '\r';
 1671|    255|        break;
 1672|    220|      case 't':
  ------------------
  |  Branch (1672:7): [True: 220, False: 2.98k]
  ------------------
 1673|    220|        decoded += '\t';
 1674|    220|        break;
 1675|  1.33k|      case 'u': {
  ------------------
  |  Branch (1675:7): [True: 1.33k, False: 1.86k]
  ------------------
 1676|  1.33k|        unsigned int unicode;
 1677|  1.33k|        if (!decodeUnicodeCodePoint(token, current, end, unicode))
  ------------------
  |  Branch (1677:13): [True: 159, False: 1.17k]
  ------------------
 1678|    159|          return false;
 1679|  1.17k|        decoded += codePointToUTF8(unicode);
 1680|  1.17k|      } break;
 1681|     18|      default:
  ------------------
  |  Branch (1681:7): [True: 18, False: 3.18k]
  ------------------
 1682|     18|        return addError("Bad escape sequence in string", token, current);
 1683|  3.20k|      }
 1684|  8.50M|    } else {
 1685|  8.50M|      decoded += c;
 1686|  8.50M|    }
 1687|  8.50M|  }
 1688|  37.5k|  return true;
 1689|  37.6k|}
_ZN4Json9OurReader22decodeUnicodeCodePointERNS0_5TokenERPKcS4_Rj:
 1692|  1.33k|                                       Location end, unsigned int& unicode) {
 1693|       |
 1694|  1.33k|  if (!decodeUnicodeEscapeSequence(token, current, end, unicode))
  ------------------
  |  Branch (1694:7): [True: 105, False: 1.23k]
  ------------------
 1695|    105|    return false;
 1696|  1.23k|  if (unicode >= 0xD800 && unicode <= 0xDBFF) {
  ------------------
  |  Branch (1696:7): [True: 706, False: 525]
  |  Branch (1696:28): [True: 429, False: 277]
  ------------------
 1697|       |    // surrogate pairs
 1698|    429|    if (end - current < 6)
  ------------------
  |  Branch (1698:9): [True: 7, False: 422]
  ------------------
 1699|      7|      return addError(
 1700|      7|          "additional six characters expected to parse unicode surrogate pair.",
 1701|      7|          token, current);
 1702|    422|    if (*(current++) == '\\' && *(current++) == 'u') {
  ------------------
  |  Branch (1702:9): [True: 394, False: 28]
  |  Branch (1702:33): [True: 379, False: 15]
  ------------------
 1703|    379|      unsigned int surrogatePair;
 1704|    379|      if (decodeUnicodeEscapeSequence(token, current, end, surrogatePair)) {
  ------------------
  |  Branch (1704:11): [True: 375, False: 4]
  ------------------
 1705|    375|        unicode = 0x10000 + ((unicode & 0x3FF) << 10) + (surrogatePair & 0x3FF);
 1706|    375|      } else
 1707|      4|        return false;
 1708|    379|    } else
 1709|     43|      return addError("expecting another \\u token to begin the second half of "
 1710|     43|                      "a unicode surrogate pair",
 1711|     43|                      token, current);
 1712|    422|  }
 1713|  1.17k|  return true;
 1714|  1.23k|}
_ZN4Json9OurReader27decodeUnicodeEscapeSequenceERNS0_5TokenERPKcS4_Rj:
 1718|  1.71k|                                            unsigned int& ret_unicode) {
 1719|  1.71k|  if (end - current < 4)
  ------------------
  |  Branch (1719:7): [True: 8, False: 1.70k]
  ------------------
 1720|      8|    return addError(
 1721|      8|        "Bad unicode escape sequence in string: four digits expected.", token,
 1722|      8|        current);
 1723|  1.70k|  int unicode = 0;
 1724|  8.29k|  for (int index = 0; index < 4; ++index) {
  ------------------
  |  Branch (1724:23): [True: 6.68k, False: 1.60k]
  ------------------
 1725|  6.68k|    Char c = *current++;
 1726|  6.68k|    unicode *= 16;
 1727|  6.68k|    if (c >= '0' && c <= '9')
  ------------------
  |  Branch (1727:9): [True: 6.64k, False: 39]
  |  Branch (1727:21): [True: 2.03k, False: 4.60k]
  ------------------
 1728|  2.03k|      unicode += c - '0';
 1729|  4.64k|    else if (c >= 'a' && c <= 'f')
  ------------------
  |  Branch (1729:14): [True: 2.75k, False: 1.89k]
  |  Branch (1729:26): [True: 2.73k, False: 19]
  ------------------
 1730|  2.73k|      unicode += c - 'a' + 10;
 1731|  1.91k|    else if (c >= 'A' && c <= 'F')
  ------------------
  |  Branch (1731:14): [True: 1.86k, False: 54]
  |  Branch (1731:26): [True: 1.81k, False: 47]
  ------------------
 1732|  1.81k|      unicode += c - 'A' + 10;
 1733|    101|    else
 1734|    101|      return addError(
 1735|    101|          "Bad unicode escape sequence in string: hexadecimal digit expected.",
 1736|    101|          token, current);
 1737|  6.68k|  }
 1738|  1.60k|  ret_unicode = static_cast<unsigned int>(unicode);
 1739|  1.60k|  return true;
 1740|  1.70k|}
_ZN4Json9OurReader8addErrorERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEERNS0_5TokenEPKc:
 1742|  2.29k|bool OurReader::addError(const String& message, Token& token, Location extra) {
 1743|  2.29k|  ErrorInfo info;
 1744|  2.29k|  info.token_ = token;
 1745|  2.29k|  info.message_ = message;
 1746|  2.29k|  info.extra_ = extra;
 1747|  2.29k|  errors_.push_back(info);
 1748|  2.29k|  return false;
 1749|  2.29k|}
_ZN4Json9OurReader16recoverFromErrorENS0_9TokenTypeE:
 1751|  47.4k|bool OurReader::recoverFromError(TokenType skipUntilToken) {
 1752|  47.4k|  size_t errorCount = errors_.size();
 1753|  47.4k|  Token skip;
 1754|   114k|  for (;;) {
 1755|   114k|    if (!readToken(skip))
  ------------------
  |  Branch (1755:9): [True: 38.0k, False: 76.6k]
  ------------------
 1756|  38.0k|      errors_.resize(errorCount); // discard errors caused by recovery
 1757|   114k|    if (skip.type_ == skipUntilToken || skip.type_ == tokenEndOfStream)
  ------------------
  |  Branch (1757:9): [True: 349, False: 114k]
  |  Branch (1757:41): [True: 47.1k, False: 67.2k]
  ------------------
 1758|  47.4k|      break;
 1759|   114k|  }
 1760|  47.4k|  errors_.resize(errorCount);
 1761|  47.4k|  return false;
 1762|  47.4k|}
_ZN4Json9OurReader18addErrorAndRecoverERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEERNS0_5TokenENS0_9TokenTypeE:
 1765|  1.43k|                                   TokenType skipUntilToken) {
 1766|  1.43k|  addError(message, token);
 1767|  1.43k|  return recoverFromError(skipUntilToken);
 1768|  1.43k|}
_ZN4Json9OurReader12currentValueEv:
 1770|  4.85M|Value& OurReader::currentValue() { return *(nodes_.top()); }
_ZN4Json9OurReader11getNextCharEv:
 1772|  15.9M|OurReader::Char OurReader::getNextChar() {
 1773|  15.9M|  if (current_ == end_)
  ------------------
  |  Branch (1773:7): [True: 50.0k, False: 15.9M]
  ------------------
 1774|  50.0k|    return 0;
 1775|  15.9M|  return *current_++;
 1776|  15.9M|}
_ZN4Json17CharReaderBuilderC2Ev:
 1867|  3.01k|CharReaderBuilder::CharReaderBuilder() { setDefaults(&settings_); }
_ZN4Json17CharReaderBuilderD2Ev:
 1868|  3.01k|CharReaderBuilder::~CharReaderBuilder() = default;
_ZNK4Json17CharReaderBuilder13newCharReaderEv:
 1869|  3.01k|CharReader* CharReaderBuilder::newCharReader() const {
 1870|  3.01k|  bool collectComments = settings_["collectComments"].asBool();
 1871|  3.01k|  OurFeatures features = OurFeatures::all();
 1872|  3.01k|  features.allowComments_ = settings_["allowComments"].asBool();
 1873|  3.01k|  features.allowTrailingCommas_ = settings_["allowTrailingCommas"].asBool();
 1874|  3.01k|  features.strictRoot_ = settings_["strictRoot"].asBool();
 1875|  3.01k|  features.allowDroppedNullPlaceholders_ =
 1876|  3.01k|      settings_["allowDroppedNullPlaceholders"].asBool();
 1877|  3.01k|  features.allowNumericKeys_ = settings_["allowNumericKeys"].asBool();
 1878|  3.01k|  features.allowSingleQuotes_ = settings_["allowSingleQuotes"].asBool();
 1879|       |
 1880|       |  // Stack limit is always a size_t, so we get this as an unsigned int
 1881|       |  // regardless of it we have 64-bit integer support enabled.
 1882|  3.01k|  features.stackLimit_ = static_cast<size_t>(settings_["stackLimit"].asUInt());
 1883|  3.01k|  features.failIfExtra_ = settings_["failIfExtra"].asBool();
 1884|  3.01k|  features.rejectDupKeys_ = settings_["rejectDupKeys"].asBool();
 1885|  3.01k|  features.allowSpecialFloats_ = settings_["allowSpecialFloats"].asBool();
 1886|  3.01k|  features.skipBom_ = settings_["skipBom"].asBool();
 1887|  3.01k|  return new OurCharReader(collectComments, features);
 1888|  3.01k|}
_ZN4Json17CharReaderBuilder11setDefaultsEPNS_5ValueE:
 1937|  3.01k|void CharReaderBuilder::setDefaults(Json::Value* settings) {
 1938|       |  //! [CharReaderBuilderDefaults]
 1939|  3.01k|  (*settings)["collectComments"] = true;
 1940|  3.01k|  (*settings)["allowComments"] = true;
 1941|  3.01k|  (*settings)["allowTrailingCommas"] = true;
 1942|  3.01k|  (*settings)["strictRoot"] = false;
 1943|  3.01k|  (*settings)["allowDroppedNullPlaceholders"] = false;
 1944|  3.01k|  (*settings)["allowNumericKeys"] = false;
 1945|  3.01k|  (*settings)["allowSingleQuotes"] = false;
 1946|  3.01k|  (*settings)["stackLimit"] = 1000;
 1947|  3.01k|  (*settings)["failIfExtra"] = false;
 1948|  3.01k|  (*settings)["rejectDupKeys"] = false;
 1949|  3.01k|  (*settings)["allowSpecialFloats"] = false;
 1950|  3.01k|  (*settings)["skipBom"] = true;
 1951|       |  //! [CharReaderBuilderDefaults]
 1952|  3.01k|}
_ZN4Json10CharReader5parseEPKcS2_PNS_5ValueEPNSt3__112basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEE:
 1976|  3.01k|                       String* errs) {
 1977|  3.01k|  return _impl->parse(beginDoc, endDoc, root, errs);
 1978|  3.01k|}
_ZN4Json13OurCharReaderC2EbRKNS_11OurFeaturesE:
 1838|  3.01k|      : CharReader(
 1839|  3.01k|            std::unique_ptr<OurImpl>(new OurImpl(collectComments, features))) {}
_ZN4Json13OurCharReader7OurImplC2EbRKNS_11OurFeaturesE:
 1845|  3.01k|        : collectComments_(collectComments), reader_(features) {}
_ZN4Json13OurCharReader7OurImpl5parseEPKcS3_PNS_5ValueEPNSt3__112basic_stringIcNS6_11char_traitsIcEENS6_9allocatorIcEEEE:
 1848|  3.01k|               String* errs) override {
 1849|  3.01k|      bool ok = reader_.parse(beginDoc, endDoc, *root, collectComments_);
 1850|  3.01k|      if (errs) {
  ------------------
  |  Branch (1850:11): [True: 0, False: 3.01k]
  ------------------
 1851|      0|        *errs = reader_.getFormattedErrorMessages();
 1852|      0|      }
 1853|  3.01k|      return ok;
 1854|  3.01k|    }
json_reader.cpp:_ZZN4Json9OurReader15containsNewLineEPKcS2_ENK3$_0clEc:
  976|  1.74k|  return std::any_of(begin, end, [](char b) { return b == '\n' || b == '\r'; });
  ------------------
  |  Branch (976:54): [True: 93, False: 1.65k]
  |  Branch (976:67): [True: 225, False: 1.42k]
  ------------------

json_reader.cpp:_ZN4JsonL15codePointToUTF8Ej:
   39|  1.17k|static inline String codePointToUTF8(unsigned int cp) {
   40|  1.17k|  String result;
   41|       |
   42|       |  // based on description from http://en.wikipedia.org/wiki/UTF-8
   43|       |
   44|  1.17k|  if (cp <= 0x7f) {
  ------------------
  |  Branch (44:7): [True: 254, False: 923]
  ------------------
   45|    254|    result.resize(1);
   46|    254|    result[0] = static_cast<char>(cp);
   47|    923|  } else if (cp <= 0x7FF) {
  ------------------
  |  Branch (47:14): [True: 225, False: 698]
  ------------------
   48|    225|    result.resize(2);
   49|    225|    result[1] = static_cast<char>(0x80 | (0x3f & cp));
   50|    225|    result[0] = static_cast<char>(0xC0 | (0x1f & (cp >> 6)));
   51|    698|  } else if (cp <= 0xFFFF) {
  ------------------
  |  Branch (51:14): [True: 323, False: 375]
  ------------------
   52|    323|    result.resize(3);
   53|    323|    result[2] = static_cast<char>(0x80 | (0x3f & cp));
   54|    323|    result[1] = static_cast<char>(0x80 | (0x3f & (cp >> 6)));
   55|    323|    result[0] = static_cast<char>(0xE0 | (0xf & (cp >> 12)));
   56|    375|  } else if (cp <= 0x10FFFF) {
  ------------------
  |  Branch (56:14): [True: 375, False: 0]
  ------------------
   57|    375|    result.resize(4);
   58|    375|    result[3] = static_cast<char>(0x80 | (0x3f & cp));
   59|    375|    result[2] = static_cast<char>(0x80 | (0x3f & (cp >> 6)));
   60|    375|    result[1] = static_cast<char>(0x80 | (0x3f & (cp >> 12)));
   61|    375|    result[0] = static_cast<char>(0xF0 | (0x7 & (cp >> 18)));
   62|    375|  }
   63|       |
   64|  1.17k|  return result;
   65|  1.17k|}

_ZN4Json5Value13nullSingletonEv:
   74|  1.27M|Value const& Value::nullSingleton() {
   75|  1.27M|  static Value const nullStatic;
   76|  1.27M|  return nullStatic;
   77|  1.27M|}
_ZN4Json9ExceptionC2ENSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEE:
  209|     24|Exception::Exception(String msg) : msg_(std::move(msg)) {}
_ZN4Json9ExceptionD2Ev:
  210|     24|Exception::~Exception() noexcept = default;
_ZN4Json12RuntimeErrorC2ERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEE:
  212|     24|RuntimeError::RuntimeError(String const& msg) : Exception(msg) {}
_ZN4Json17throwRuntimeErrorERKNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEE:
  214|     24|JSONCPP_NORETURN void throwRuntimeError(String const& msg) {
  215|     24|  throw RuntimeError(msg);
  216|     24|}
_ZN4Json5Value8CZStringC2Ej:
  242|  1.18M|Value::CZString::CZString(ArrayIndex index) : cstr_(nullptr), index_(index) {}
_ZN4Json5Value8CZStringC2EPKcjNS1_17DuplicationPolicyE:
  246|   141k|    : cstr_(str) {
  247|       |  // allocate != duplicate
  248|   141k|  storage_.policy_ = allocate & 0x3;
  249|   141k|  storage_.length_ = length & 0x3FFFFFFF;
  250|   141k|}
_ZN4Json5Value8CZStringC2ERKS1_:
  252|  2.55M|Value::CZString::CZString(const CZString& other) {
  253|  2.55M|  cstr_ = (other.storage_.policy_ != noDuplication && other.cstr_ != nullptr
  ------------------
  |  Branch (253:12): [True: 1.87M, False: 675k]
  |  Branch (253:55): [True: 191k, False: 1.68M]
  ------------------
  254|  2.55M|               ? duplicateStringValue(other.cstr_, other.storage_.length_)
  255|  2.55M|               : other.cstr_);
  256|  2.55M|  storage_.policy_ =
  257|  2.55M|      static_cast<unsigned>(
  258|  2.55M|          other.cstr_
  ------------------
  |  Branch (258:11): [True: 191k, False: 2.36M]
  ------------------
  259|  2.55M|              ? (static_cast<DuplicationPolicy>(other.storage_.policy_) ==
  ------------------
  |  Branch (259:18): [True: 0, False: 191k]
  ------------------
  260|   191k|                         noDuplication
  261|   191k|                     ? noDuplication
  262|   191k|                     : duplicate)
  263|  2.55M|              : static_cast<DuplicationPolicy>(other.storage_.policy_)) &
  264|  2.55M|      3U;
  265|  2.55M|  storage_.length_ = other.storage_.length_;
  266|  2.55M|}
_ZN4Json5Value8CZStringD2Ev:
  273|  3.87M|Value::CZString::~CZString() {
  274|  3.87M|  if (cstr_ && storage_.policy_ == duplicate) {
  ------------------
  |  Branch (274:7): [True: 333k, False: 3.54M]
  |  Branch (274:16): [True: 191k, False: 141k]
  ------------------
  275|   191k|    releaseStringValue(const_cast<char*>(cstr_),
  276|   191k|                       storage_.length_ + 1U); // +1 for null terminating
  277|       |                                               // character for sake of
  278|       |                                               // completeness but not actually
  279|       |                                               // necessary
  280|   191k|  }
  281|  3.87M|}
_ZNK4Json5Value8CZStringltERKS1_:
  301|  33.0M|bool Value::CZString::operator<(const CZString& other) const {
  302|  33.0M|  if (!cstr_)
  ------------------
  |  Branch (302:7): [True: 32.4M, False: 624k]
  ------------------
  303|  32.4M|    return index_ < other.index_;
  304|       |  // return strcmp(cstr_, other.cstr_) < 0;
  305|       |  // Assume both are strings.
  306|   624k|  unsigned this_len = this->storage_.length_;
  307|   624k|  unsigned other_len = other.storage_.length_;
  308|   624k|  unsigned min_len = std::min<unsigned>(this_len, other_len);
  309|   624k|  JSON_ASSERT(this->cstr_ && other.cstr_);
  ------------------
  |  |   24|   624k|  do {                                                                         \
  |  |   25|  1.24M|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (25:11): [True: 624k, False: 0]
  |  |  |  Branch (25:11): [True: 624k, False: 0]
  |  |  ------------------
  |  |   26|      0|      Json::throwLogicError("assert json failed");                             \
  |  |   27|      0|    }                                                                          \
  |  |   28|   624k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (28:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  310|   624k|  int comp = memcmp(this->cstr_, other.cstr_, min_len);
  311|   624k|  if (comp < 0)
  ------------------
  |  Branch (311:7): [True: 318k, False: 306k]
  ------------------
  312|   318k|    return true;
  313|   306k|  if (comp > 0)
  ------------------
  |  Branch (313:7): [True: 155k, False: 150k]
  ------------------
  314|   155k|    return false;
  315|   150k|  return (this_len < other_len);
  316|   306k|}
_ZNK4Json5Value8CZStringeqERKS1_:
  318|  78.4k|bool Value::CZString::operator==(const CZString& other) const {
  319|  78.4k|  if (!cstr_)
  ------------------
  |  Branch (319:7): [True: 0, False: 78.4k]
  ------------------
  320|      0|    return index_ == other.index_;
  321|       |  // return strcmp(cstr_, other.cstr_) == 0;
  322|       |  // Assume both are strings.
  323|  78.4k|  unsigned this_len = this->storage_.length_;
  324|  78.4k|  unsigned other_len = other.storage_.length_;
  325|  78.4k|  if (this_len != other_len)
  ------------------
  |  Branch (325:7): [True: 47.6k, False: 30.8k]
  ------------------
  326|  47.6k|    return false;
  327|  30.8k|  JSON_ASSERT(this->cstr_ && other.cstr_);
  ------------------
  |  |   24|  30.8k|  do {                                                                         \
  |  |   25|  61.7k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (25:11): [True: 30.8k, False: 0]
  |  |  |  Branch (25:11): [True: 30.8k, False: 0]
  |  |  ------------------
  |  |   26|      0|      Json::throwLogicError("assert json failed");                             \
  |  |   27|      0|    }                                                                          \
  |  |   28|  30.8k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (28:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  328|  30.8k|  int comp = memcmp(this->cstr_, other.cstr_, this_len);
  329|  30.8k|  return comp == 0;
  330|  78.4k|}
_ZN4Json5ValueC2ENS_9ValueTypeE:
  353|  1.22M|Value::Value(ValueType type) {
  354|  1.22M|  static char const emptyString[] = "";
  355|  1.22M|  initBasic(type);
  356|  1.22M|  switch (type) {
  357|  1.14M|  case nullValue:
  ------------------
  |  Branch (357:3): [True: 1.14M, False: 79.7k]
  ------------------
  358|  1.14M|    break;
  359|      0|  case intValue:
  ------------------
  |  Branch (359:3): [True: 0, False: 1.22M]
  ------------------
  360|      0|  case uintValue:
  ------------------
  |  Branch (360:3): [True: 0, False: 1.22M]
  ------------------
  361|      0|    value_.int_ = 0;
  362|      0|    break;
  363|      0|  case realValue:
  ------------------
  |  Branch (363:3): [True: 0, False: 1.22M]
  ------------------
  364|      0|    value_.real_ = 0.0;
  365|      0|    break;
  366|      0|  case stringValue:
  ------------------
  |  Branch (366:3): [True: 0, False: 1.22M]
  ------------------
  367|       |    // allocated_ == false, so this is safe.
  368|      0|    value_.string_ = const_cast<char*>(static_cast<char const*>(emptyString));
  369|      0|    break;
  370|  58.6k|  case arrayValue:
  ------------------
  |  Branch (370:3): [True: 58.6k, False: 1.16M]
  ------------------
  371|  79.7k|  case objectValue:
  ------------------
  |  Branch (371:3): [True: 21.0k, False: 1.20M]
  ------------------
  372|  79.7k|    value_.map_ = new ObjectValues();
  373|  79.7k|    break;
  374|      0|  case booleanValue:
  ------------------
  |  Branch (374:3): [True: 0, False: 1.22M]
  ------------------
  375|      0|    value_.bool_ = false;
  376|      0|    break;
  377|      0|  default:
  ------------------
  |  Branch (377:3): [True: 0, False: 1.22M]
  ------------------
  378|      0|    JSON_ASSERT_UNREACHABLE;
  ------------------
  |  |   52|      0|#define JSON_ASSERT_UNREACHABLE assert(false)
  ------------------
  379|  1.22M|  }
  380|  1.22M|}
_ZN4Json5ValueC2Ei:
  382|  36.1k|Value::Value(Int value) {
  383|  36.1k|  initBasic(intValue);
  384|  36.1k|  value_.int_ = value;
  385|  36.1k|}
_ZN4Json5ValueC2El:
  392|  1.13M|Value::Value(Int64 value) {
  393|  1.13M|  initBasic(intValue);
  394|  1.13M|  value_.int_ = value;
  395|  1.13M|}
_ZN4Json5ValueC2Em:
  396|    315|Value::Value(UInt64 value) {
  397|    315|  initBasic(uintValue);
  398|    315|  value_.uint_ = value;
  399|    315|}
_ZN4Json5ValueC2Ed:
  402|  3.83k|Value::Value(double value) {
  403|  3.83k|  initBasic(realValue);
  404|  3.83k|  value_.real_ = value;
  405|  3.83k|}
_ZN4Json5ValueC2ERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEE:
  421|  1.01k|Value::Value(const String& value) {
  422|  1.01k|  initBasic(stringValue, true);
  423|  1.01k|  value_.string_ = duplicateAndPrefixStringValue(
  424|  1.01k|      value.data(), static_cast<unsigned>(value.length()));
  425|  1.01k|}
_ZN4Json5ValueC2Eb:
  440|  34.8k|Value::Value(bool value) {
  441|  34.8k|  initBasic(booleanValue);
  442|  34.8k|  value_.bool_ = value;
  443|  34.8k|}
_ZN4Json5ValueC2ERKS0_:
  445|  2.55M|Value::Value(const Value& other) {
  446|  2.55M|  dupPayload(other);
  447|  2.55M|  dupMeta(other);
  448|  2.55M|}
_ZN4Json5ValueD2Ev:
  455|  4.99M|Value::~Value() {
  456|  4.99M|  releasePayload();
  457|  4.99M|  value_.uint_ = 0;
  458|  4.99M|}
_ZN4Json5ValueaSEOS0_:
  465|  1.20M|Value& Value::operator=(Value&& other) noexcept {
  466|  1.20M|  other.swap(*this);
  467|  1.20M|  return *this;
  468|  1.20M|}
_ZN4Json5Value11swapPayloadERS0_:
  470|  2.42M|void Value::swapPayload(Value& other) {
  471|  2.42M|  std::swap(bits_, other.bits_);
  472|  2.42M|  std::swap(value_, other.value_);
  473|  2.42M|}
_ZN4Json5Value4swapERS0_:
  480|  1.20M|void Value::swap(Value& other) {
  481|  1.20M|  swapPayload(other);
  482|  1.20M|  std::swap(comments_, other.comments_);
  483|  1.20M|  std::swap(start_, other.start_);
  484|  1.20M|  std::swap(limit_, other.limit_);
  485|  1.20M|}
_ZNK4Json5Value4typeEv:
  492|  14.1M|ValueType Value::type() const {
  493|  14.1M|  return static_cast<ValueType>(bits_.value_type_);
  494|  14.1M|}
_ZNK4Json5Value6asUIntEv:
  705|  3.01k|Value::UInt Value::asUInt() const {
  706|  3.01k|  switch (type()) {
  707|  3.01k|  case intValue:
  ------------------
  |  Branch (707:3): [True: 3.01k, False: 0]
  ------------------
  708|  3.01k|    JSON_ASSERT_MESSAGE(isUInt(), "LargestInt out of UInt range");
  ------------------
  |  |   55|  3.01k|  do {                                                                         \
  |  |   56|  3.01k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (56:9): [True: 0, False: 3.01k]
  |  |  ------------------
  |  |   57|      0|      JSON_FAIL_MESSAGE(message);                                              \
  |  |  ------------------
  |  |  |  |   31|      0|  do {                                                                         \
  |  |  |  |   32|      0|    OStringStream oss;                                                         \
  |  |  |  |   33|      0|    oss << message;                                                            \
  |  |  |  |   34|      0|    Json::throwLogicError(oss.str());                                          \
  |  |  |  |   35|      0|    abort();                                                                   \
  |  |  |  |   36|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (36:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   58|      0|    }                                                                          \
  |  |   59|  3.01k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (59:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  709|  3.01k|    return UInt(value_.int_);
  710|      0|  case uintValue:
  ------------------
  |  Branch (710:3): [True: 0, False: 3.01k]
  ------------------
  711|      0|    JSON_ASSERT_MESSAGE(isUInt(), "LargestUInt out of UInt range");
  ------------------
  |  |   55|      0|  do {                                                                         \
  |  |   56|      0|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (56:9): [True: 0, False: 0]
  |  |  ------------------
  |  |   57|      0|      JSON_FAIL_MESSAGE(message);                                              \
  |  |  ------------------
  |  |  |  |   31|      0|  do {                                                                         \
  |  |  |  |   32|      0|    OStringStream oss;                                                         \
  |  |  |  |   33|      0|    oss << message;                                                            \
  |  |  |  |   34|      0|    Json::throwLogicError(oss.str());                                          \
  |  |  |  |   35|      0|    abort();                                                                   \
  |  |  |  |   36|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (36:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   58|      0|    }                                                                          \
  |  |   59|      0|  } while (0)
  |  |  ------------------
  |  |  |  Branch (59:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  712|      0|    return UInt(value_.uint_);
  713|      0|  case realValue:
  ------------------
  |  Branch (713:3): [True: 0, False: 3.01k]
  ------------------
  714|      0|    JSON_ASSERT_MESSAGE(InRange(value_.real_, 0u, maxUInt),
  ------------------
  |  |   55|      0|  do {                                                                         \
  |  |   56|      0|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (56:9): [True: 0, False: 0]
  |  |  ------------------
  |  |   57|      0|      JSON_FAIL_MESSAGE(message);                                              \
  |  |  ------------------
  |  |  |  |   31|      0|  do {                                                                         \
  |  |  |  |   32|      0|    OStringStream oss;                                                         \
  |  |  |  |   33|      0|    oss << message;                                                            \
  |  |  |  |   34|      0|    Json::throwLogicError(oss.str());                                          \
  |  |  |  |   35|      0|    abort();                                                                   \
  |  |  |  |   36|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (36:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   58|      0|    }                                                                          \
  |  |   59|      0|  } while (0)
  |  |  ------------------
  |  |  |  Branch (59:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  715|      0|                        "double out of UInt range");
  716|      0|    return UInt(value_.real_);
  717|      0|  case nullValue:
  ------------------
  |  Branch (717:3): [True: 0, False: 3.01k]
  ------------------
  718|      0|    return 0;
  719|      0|  case booleanValue:
  ------------------
  |  Branch (719:3): [True: 0, False: 3.01k]
  ------------------
  720|      0|    return value_.bool_ ? 1 : 0;
  ------------------
  |  Branch (720:12): [True: 0, False: 0]
  ------------------
  721|      0|  default:
  ------------------
  |  Branch (721:3): [True: 0, False: 3.01k]
  ------------------
  722|      0|    break;
  723|  3.01k|  }
  724|      0|  JSON_FAIL_MESSAGE("Value is not convertible to UInt.");
  ------------------
  |  |   31|      0|  do {                                                                         \
  |  |   32|      0|    OStringStream oss;                                                         \
  |  |   33|      0|    oss << message;                                                            \
  |  |   34|      0|    Json::throwLogicError(oss.str());                                          \
  |  |   35|      0|    abort();                                                                   \
  |  |   36|      0|  } while (0)
  |  |  ------------------
  |  |  |  Branch (36:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  725|      0|}
_ZNK4Json5Value6asBoolEv:
  838|  33.1k|bool Value::asBool() const {
  839|  33.1k|  switch (type()) {
  840|  27.1k|  case booleanValue:
  ------------------
  |  Branch (840:3): [True: 27.1k, False: 6.02k]
  ------------------
  841|  27.1k|    return value_.bool_;
  842|      0|  case nullValue:
  ------------------
  |  Branch (842:3): [True: 0, False: 33.1k]
  ------------------
  843|      0|    return false;
  844|  6.02k|  case intValue:
  ------------------
  |  Branch (844:3): [True: 6.02k, False: 27.1k]
  ------------------
  845|  6.02k|    return value_.int_ != 0;
  846|      0|  case uintValue:
  ------------------
  |  Branch (846:3): [True: 0, False: 33.1k]
  ------------------
  847|      0|    return value_.uint_ != 0;
  848|      0|  case realValue: {
  ------------------
  |  Branch (848:3): [True: 0, False: 33.1k]
  ------------------
  849|       |    // According to JavaScript language zero or NaN is regarded as false
  850|      0|    const auto value_classification = std::fpclassify(value_.real_);
  851|      0|    return value_classification != FP_ZERO && value_classification != FP_NAN;
  ------------------
  |  Branch (851:12): [True: 0, False: 0]
  |  Branch (851:47): [True: 0, False: 0]
  ------------------
  852|      0|  }
  853|      0|  default:
  ------------------
  |  Branch (853:3): [True: 0, False: 33.1k]
  ------------------
  854|      0|    break;
  855|  33.1k|  }
  856|      0|  JSON_FAIL_MESSAGE("Value is not convertible to bool.");
  ------------------
  |  |   31|      0|  do {                                                                         \
  |  |   32|      0|    OStringStream oss;                                                         \
  |  |   33|      0|    oss << message;                                                            \
  |  |   34|      0|    Json::throwLogicError(oss.str());                                          \
  |  |   35|      0|    abort();                                                                   \
  |  |   36|      0|  } while (0)
  |  |  ------------------
  |  |  |  Branch (36:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  857|      0|}
_ZN4Json5ValueixEj:
  959|  1.18M|Value& Value::operator[](ArrayIndex index) {
  960|  1.18M|  JSON_ASSERT_MESSAGE(
  ------------------
  |  |   55|  1.18M|  do {                                                                         \
  |  |   56|  2.36M|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (56:11): [True: 0, False: 1.18M]
  |  |  |  Branch (56:11): [True: 1.18M, False: 0]
  |  |  ------------------
  |  |   57|      0|      JSON_FAIL_MESSAGE(message);                                              \
  |  |  ------------------
  |  |  |  |   31|      0|  do {                                                                         \
  |  |  |  |   32|      0|    OStringStream oss;                                                         \
  |  |  |  |   33|      0|    oss << message;                                                            \
  |  |  |  |   34|      0|    Json::throwLogicError(oss.str());                                          \
  |  |  |  |   35|      0|    abort();                                                                   \
  |  |  |  |   36|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (36:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   58|      0|    }                                                                          \
  |  |   59|  1.18M|  } while (0)
  |  |  ------------------
  |  |  |  Branch (59:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  961|  1.18M|      type() == nullValue || type() == arrayValue,
  962|  1.18M|      "in Json::Value::operator[](ArrayIndex): requires arrayValue");
  963|  1.18M|  if (type() == nullValue)
  ------------------
  |  Branch (963:7): [True: 0, False: 1.18M]
  ------------------
  964|      0|    *this = Value(arrayValue);
  965|  1.18M|  CZString key(index);
  966|  1.18M|  auto it = value_.map_->lower_bound(key);
  967|  1.18M|  if (it != value_.map_->end() && (*it).first == key)
  ------------------
  |  Branch (967:7): [True: 0, False: 1.18M]
  |  Branch (967:7): [True: 0, False: 1.18M]
  |  Branch (967:35): [True: 0, False: 0]
  ------------------
  968|      0|    return (*it).second;
  969|       |
  970|  1.18M|  ObjectValues::value_type defaultValue(key, nullSingleton());
  971|  1.18M|  it = value_.map_->insert(it, defaultValue);
  972|  1.18M|  return (*it).second;
  973|  1.18M|}
_ZN4Json5ValueixEi:
  975|  1.18M|Value& Value::operator[](int index) {
  976|  1.18M|  JSON_ASSERT_MESSAGE(
  ------------------
  |  |   55|  1.18M|  do {                                                                         \
  |  |   56|  1.18M|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (56:9): [True: 0, False: 1.18M]
  |  |  ------------------
  |  |   57|      0|      JSON_FAIL_MESSAGE(message);                                              \
  |  |  ------------------
  |  |  |  |   31|      0|  do {                                                                         \
  |  |  |  |   32|      0|    OStringStream oss;                                                         \
  |  |  |  |   33|      0|    oss << message;                                                            \
  |  |  |  |   34|      0|    Json::throwLogicError(oss.str());                                          \
  |  |  |  |   35|      0|    abort();                                                                   \
  |  |  |  |   36|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (36:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   58|      0|    }                                                                          \
  |  |   59|  1.18M|  } while (0)
  |  |  ------------------
  |  |  |  Branch (59:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  977|  1.18M|      index >= 0,
  978|  1.18M|      "in Json::Value::operator[](int index): index cannot be negative");
  979|  1.18M|  return (*this)[ArrayIndex(index)];
  980|  1.18M|}
_ZN4Json5Value9initBasicENS_9ValueTypeEb:
 1002|  2.43M|void Value::initBasic(ValueType type, bool allocated) {
 1003|  2.43M|  setType(type);
 1004|  2.43M|  setIsAllocated(allocated);
 1005|  2.43M|  comments_ = Comments{};
 1006|  2.43M|  start_ = 0;
 1007|  2.43M|  limit_ = 0;
 1008|  2.43M|}
_ZN4Json5Value10dupPayloadERKS0_:
 1010|  2.55M|void Value::dupPayload(const Value& other) {
 1011|  2.55M|  setType(other.type());
 1012|  2.55M|  setIsAllocated(false);
 1013|  2.55M|  switch (type()) {
 1014|  2.55M|  case nullValue:
  ------------------
  |  Branch (1014:3): [True: 2.55M, False: 0]
  ------------------
 1015|  2.55M|  case intValue:
  ------------------
  |  Branch (1015:3): [True: 0, False: 2.55M]
  ------------------
 1016|  2.55M|  case uintValue:
  ------------------
  |  Branch (1016:3): [True: 0, False: 2.55M]
  ------------------
 1017|  2.55M|  case realValue:
  ------------------
  |  Branch (1017:3): [True: 0, False: 2.55M]
  ------------------
 1018|  2.55M|  case booleanValue:
  ------------------
  |  Branch (1018:3): [True: 0, False: 2.55M]
  ------------------
 1019|  2.55M|    value_ = other.value_;
 1020|  2.55M|    break;
 1021|      0|  case stringValue:
  ------------------
  |  Branch (1021:3): [True: 0, False: 2.55M]
  ------------------
 1022|      0|    if (other.value_.string_ && other.isAllocated()) {
  ------------------
  |  Branch (1022:9): [True: 0, False: 0]
  |  Branch (1022:33): [True: 0, False: 0]
  ------------------
 1023|      0|      unsigned len;
 1024|      0|      char const* str;
 1025|      0|      decodePrefixedString(other.isAllocated(), other.value_.string_, &len,
 1026|      0|                           &str);
 1027|      0|      value_.string_ = duplicateAndPrefixStringValue(str, len);
 1028|      0|      setIsAllocated(true);
 1029|      0|    } else {
 1030|      0|      value_.string_ = other.value_.string_;
 1031|      0|    }
 1032|      0|    break;
 1033|      0|  case arrayValue:
  ------------------
  |  Branch (1033:3): [True: 0, False: 2.55M]
  ------------------
 1034|      0|  case objectValue:
  ------------------
  |  Branch (1034:3): [True: 0, False: 2.55M]
  ------------------
 1035|      0|    value_.map_ = new ObjectValues(*other.value_.map_);
 1036|      0|    break;
 1037|      0|  default:
  ------------------
  |  Branch (1037:3): [True: 0, False: 2.55M]
  ------------------
 1038|      0|    JSON_ASSERT_UNREACHABLE;
  ------------------
  |  |   52|      0|#define JSON_ASSERT_UNREACHABLE assert(false)
  ------------------
 1039|  2.55M|  }
 1040|  2.55M|}
_ZN4Json5Value14releasePayloadEv:
 1042|  4.99M|void Value::releasePayload() {
 1043|  4.99M|  switch (type()) {
 1044|  3.70M|  case nullValue:
  ------------------
  |  Branch (1044:3): [True: 3.70M, False: 1.28M]
  ------------------
 1045|  4.87M|  case intValue:
  ------------------
  |  Branch (1045:3): [True: 1.16M, False: 3.82M]
  ------------------
 1046|  4.87M|  case uintValue:
  ------------------
  |  Branch (1046:3): [True: 315, False: 4.99M]
  ------------------
 1047|  4.87M|  case realValue:
  ------------------
  |  Branch (1047:3): [True: 3.83k, False: 4.98M]
  ------------------
 1048|  4.91M|  case booleanValue:
  ------------------
  |  Branch (1048:3): [True: 34.8k, False: 4.95M]
  ------------------
 1049|  4.91M|    break;
 1050|  1.01k|  case stringValue:
  ------------------
  |  Branch (1050:3): [True: 1.01k, False: 4.98M]
  ------------------
 1051|  1.01k|    if (isAllocated())
  ------------------
  |  Branch (1051:9): [True: 1.01k, False: 0]
  ------------------
 1052|  1.01k|      releasePrefixedStringValue(value_.string_);
 1053|  1.01k|    break;
 1054|  58.6k|  case arrayValue:
  ------------------
  |  Branch (1054:3): [True: 58.6k, False: 4.93M]
  ------------------
 1055|  79.7k|  case objectValue:
  ------------------
  |  Branch (1055:3): [True: 21.0k, False: 4.96M]
  ------------------
 1056|  79.7k|    delete value_.map_;
 1057|  79.7k|    break;
 1058|      0|  default:
  ------------------
  |  Branch (1058:3): [True: 0, False: 4.99M]
  ------------------
 1059|      0|    JSON_ASSERT_UNREACHABLE;
  ------------------
  |  |   52|      0|#define JSON_ASSERT_UNREACHABLE assert(false)
  ------------------
 1060|  4.99M|  }
 1061|  4.99M|}
_ZN4Json5Value7dupMetaERKS0_:
 1063|  2.55M|void Value::dupMeta(const Value& other) {
 1064|  2.55M|  comments_ = other.comments_;
 1065|  2.55M|  start_ = other.start_;
 1066|  2.55M|  limit_ = other.limit_;
 1067|  2.55M|}
_ZN4Json5Value16resolveReferenceEPKcS2_:
 1091|   105k|Value& Value::resolveReference(char const* key, char const* end) {
 1092|   105k|  JSON_ASSERT_MESSAGE(
  ------------------
  |  |   55|   105k|  do {                                                                         \
  |  |   56|   207k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (56:11): [True: 3.01k, False: 102k]
  |  |  |  Branch (56:11): [True: 102k, False: 0]
  |  |  ------------------
  |  |   57|      0|      JSON_FAIL_MESSAGE(message);                                              \
  |  |  ------------------
  |  |  |  |   31|      0|  do {                                                                         \
  |  |  |  |   32|      0|    OStringStream oss;                                                         \
  |  |  |  |   33|      0|    oss << message;                                                            \
  |  |  |  |   34|      0|    Json::throwLogicError(oss.str());                                          \
  |  |  |  |   35|      0|    abort();                                                                   \
  |  |  |  |   36|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (36:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   58|      0|    }                                                                          \
  |  |   59|   105k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (59:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
 1093|   105k|      type() == nullValue || type() == objectValue,
 1094|   105k|      "in Json::Value::resolveReference(key, end): requires objectValue");
 1095|   105k|  if (type() == nullValue)
  ------------------
  |  Branch (1095:7): [True: 3.01k, False: 102k]
  ------------------
 1096|  3.01k|    *this = Value(objectValue);
 1097|   105k|  CZString actualKey(key, static_cast<unsigned>(end - key),
 1098|   105k|                     CZString::duplicateOnCopy);
 1099|   105k|  auto it = value_.map_->lower_bound(actualKey);
 1100|   105k|  if (it != value_.map_->end() && (*it).first == actualKey)
  ------------------
  |  Branch (1100:7): [True: 78.4k, False: 26.7k]
  |  Branch (1100:7): [True: 9.43k, False: 95.8k]
  |  Branch (1100:35): [True: 9.43k, False: 69.0k]
  ------------------
 1101|  9.43k|    return (*it).second;
 1102|       |
 1103|  95.8k|  ObjectValues::value_type defaultValue(actualKey, nullSingleton());
 1104|  95.8k|  it = value_.map_->insert(it, defaultValue);
 1105|  95.8k|  Value& value = (*it).second;
 1106|  95.8k|  return value;
 1107|   105k|}
_ZNK4Json5Value4findEPKcS2_:
 1116|  36.1k|Value const* Value::find(char const* begin, char const* end) const {
 1117|  36.1k|  JSON_ASSERT_MESSAGE(type() == nullValue || type() == objectValue,
  ------------------
  |  |   55|  36.1k|  do {                                                                         \
  |  |   56|  72.3k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (56:11): [True: 0, False: 36.1k]
  |  |  |  Branch (56:11): [True: 36.1k, False: 0]
  |  |  ------------------
  |  |   57|      0|      JSON_FAIL_MESSAGE(message);                                              \
  |  |  ------------------
  |  |  |  |   31|      0|  do {                                                                         \
  |  |  |  |   32|      0|    OStringStream oss;                                                         \
  |  |  |  |   33|      0|    oss << message;                                                            \
  |  |  |  |   34|      0|    Json::throwLogicError(oss.str());                                          \
  |  |  |  |   35|      0|    abort();                                                                   \
  |  |  |  |   36|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (36:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   58|      0|    }                                                                          \
  |  |   59|  36.1k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (59:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
 1118|  36.1k|                      "in Json::Value::find(begin, end): requires "
 1119|  36.1k|                      "objectValue or nullValue");
 1120|  36.1k|  if (type() == nullValue)
  ------------------
  |  Branch (1120:7): [True: 0, False: 36.1k]
  ------------------
 1121|      0|    return nullptr;
 1122|  36.1k|  CZString actualKey(begin, static_cast<unsigned>(end - begin),
 1123|  36.1k|                     CZString::noDuplication);
 1124|  36.1k|  ObjectValues::const_iterator it = value_.map_->find(actualKey);
 1125|  36.1k|  if (it == value_.map_->end())
  ------------------
  |  Branch (1125:7): [True: 0, False: 36.1k]
  ------------------
 1126|      0|    return nullptr;
 1127|  36.1k|  return &(*it).second;
 1128|  36.1k|}
_ZNK4Json5ValueixENSt3__117basic_string_viewIcNS1_11char_traitsIcEEEE:
 1177|  36.1k|const Value& Value::operator[](std::string_view key) const {
 1178|  36.1k|  Value const* found = find(key.data(), key.data() + key.length());
 1179|  36.1k|  if (!found)
  ------------------
  |  Branch (1179:7): [True: 0, False: 36.1k]
  ------------------
 1180|      0|    return nullSingleton();
 1181|  36.1k|  return *found;
 1182|  36.1k|}
_ZN4Json5ValueixENSt3__117basic_string_viewIcNS1_11char_traitsIcEEEE:
 1183|   105k|Value& Value::operator[](std::string_view key) {
 1184|   105k|  return resolveReference(key.data(), key.data() + key.length());
 1185|   105k|}
_ZNK4Json5Value6isUIntEv:
 1396|  3.01k|bool Value::isUInt() const {
 1397|  3.01k|  switch (type()) {
 1398|  3.01k|  case intValue:
  ------------------
  |  Branch (1398:3): [True: 3.01k, False: 0]
  ------------------
 1399|  3.01k|#if defined(JSON_HAS_INT64)
 1400|  3.01k|    return value_.int_ >= 0 && LargestUInt(value_.int_) <= LargestUInt(maxUInt);
  ------------------
  |  Branch (1400:12): [True: 3.01k, False: 0]
  |  Branch (1400:32): [True: 3.01k, False: 0]
  ------------------
 1401|       |#else
 1402|       |    return value_.int_ >= 0;
 1403|       |#endif
 1404|      0|  case uintValue:
  ------------------
  |  Branch (1404:3): [True: 0, False: 3.01k]
  ------------------
 1405|      0|#if defined(JSON_HAS_INT64)
 1406|      0|    return value_.uint_ <= maxUInt;
 1407|       |#else
 1408|       |    return true;
 1409|       |#endif
 1410|      0|  case realValue:
  ------------------
  |  Branch (1410:3): [True: 0, False: 3.01k]
  ------------------
 1411|      0|    return value_.real_ >= 0 && value_.real_ <= maxUInt &&
  ------------------
  |  Branch (1411:12): [True: 0, False: 0]
  |  Branch (1411:33): [True: 0, False: 0]
  ------------------
 1412|      0|           IsIntegral(value_.real_);
  ------------------
  |  Branch (1412:12): [True: 0, False: 0]
  ------------------
 1413|      0|  default:
  ------------------
  |  Branch (1413:3): [True: 0, False: 3.01k]
  ------------------
 1414|      0|    break;
 1415|  3.01k|  }
 1416|      0|  return false;
 1417|  3.01k|}
_ZN4Json5Value8CommentsC2EOS1_:
 1505|  1.20M|    : ptr_{std::move(that.ptr_)} {}
_ZN4Json5Value8CommentsaSERKS1_:
 1507|  2.55M|Value::Comments& Value::Comments::operator=(const Comments& that) {
 1508|  2.55M|  ptr_ = cloneUnique(that.ptr_);
 1509|  2.55M|  return *this;
 1510|  2.55M|}
_ZN4Json5Value8CommentsaSEOS1_:
 1512|  4.85M|Value::Comments& Value::Comments::operator=(Comments&& that) noexcept {
 1513|  4.85M|  ptr_ = std::move(that.ptr_);
 1514|  4.85M|  return *this;
 1515|  4.85M|}
_ZN4Json5Value8Comments3setENS_16CommentPlacementENSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEE:
 1527|  2.98k|void Value::Comments::set(CommentPlacement slot, String comment) {
 1528|  2.98k|  if (slot >= CommentPlacement::numberOfCommentPlacement)
  ------------------
  |  Branch (1528:7): [True: 0, False: 2.98k]
  ------------------
 1529|      0|    return;
 1530|  2.98k|  if (!ptr_)
  ------------------
  |  Branch (1530:7): [True: 2.45k, False: 524]
  ------------------
 1531|  2.45k|    ptr_ = std::unique_ptr<Array>(new Array());
 1532|  2.98k|  (*ptr_)[slot] = std::move(comment);
 1533|  2.98k|}
_ZN4Json5Value10setCommentENSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS_16CommentPlacementE:
 1535|  2.98k|void Value::setComment(String comment, CommentPlacement placement) {
 1536|  2.98k|  if (!comment.empty() && (comment.back() == '\n')) {
  ------------------
  |  Branch (1536:7): [True: 2.98k, False: 0]
  |  Branch (1536:27): [True: 1.72k, False: 1.25k]
  ------------------
 1537|       |    // Always discard trailing newline, to aid indentation.
 1538|  1.72k|    comment.pop_back();
 1539|  1.72k|  }
 1540|  2.98k|  JSON_ASSERT_MESSAGE(
  ------------------
  |  |   55|  2.98k|  do {                                                                         \
  |  |   56|  5.96k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (56:11): [True: 0, False: 2.98k]
  |  |  |  Branch (56:11): [True: 2.98k, False: 0]
  |  |  ------------------
  |  |   57|      0|      JSON_FAIL_MESSAGE(message);                                              \
  |  |  ------------------
  |  |  |  |   31|      0|  do {                                                                         \
  |  |  |  |   32|      0|    OStringStream oss;                                                         \
  |  |  |  |   33|      0|    oss << message;                                                            \
  |  |  |  |   34|      0|    Json::throwLogicError(oss.str());                                          \
  |  |  |  |   35|      0|    abort();                                                                   \
  |  |  |  |   36|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (36:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   58|      0|    }                                                                          \
  |  |   59|  2.98k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (59:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
 1541|  2.98k|      comment.empty() || comment[0] == '/',
 1542|  2.98k|      "in Json::Value::setComment(): Comments must start with /");
 1543|  2.98k|  comments_.set(placement, std::move(comment));
 1544|  2.98k|}
_ZN4Json5Value14setOffsetStartEl:
 1554|  1.22M|void Value::setOffsetStart(ptrdiff_t start) { start_ = start; }
_ZN4Json5Value14setOffsetLimitEl:
 1556|  1.19M|void Value::setOffsetLimit(ptrdiff_t limit) { limit_ = limit; }
json_value.cpp:_ZN4JsonL20duplicateStringValueEPKcm:
  121|   191k|static inline char* duplicateStringValue(const char* value, size_t length) {
  122|       |  // Avoid an integer overflow in the call to malloc below by limiting length
  123|       |  // to a sane value.
  124|   191k|  if (length >= static_cast<size_t>(Value::maxInt))
  ------------------
  |  Branch (124:7): [True: 0, False: 191k]
  ------------------
  125|      0|    length = Value::maxInt - 1;
  126|       |
  127|   191k|  auto newString = static_cast<char*>(malloc(length + 1));
  128|   191k|  if (newString == nullptr) {
  ------------------
  |  Branch (128:7): [True: 0, False: 191k]
  ------------------
  129|      0|    throwRuntimeError("in Json::Value::duplicateStringValue(): "
  130|      0|                      "Failed to allocate string value buffer");
  131|      0|  }
  132|   191k|  memcpy(newString, value, length);
  133|   191k|  newString[length] = 0;
  134|   191k|  return newString;
  135|   191k|}
json_value.cpp:_ZN4JsonL18releaseStringValueEPcj:
  189|   191k|static inline void releaseStringValue(char* value, unsigned) { free(value); }
json_value.cpp:_ZN4JsonL29duplicateAndPrefixStringValueEPKcj:
  140|  1.01k|                                                  unsigned int length) {
  141|       |  // Avoid an integer overflow in the call to malloc below by limiting length
  142|       |  // to a sane value.
  143|  1.01k|  JSON_ASSERT_MESSAGE(length <= static_cast<unsigned>(Value::maxInt) -
  ------------------
  |  |   55|  1.01k|  do {                                                                         \
  |  |   56|  1.01k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (56:9): [True: 0, False: 1.01k]
  |  |  ------------------
  |  |   57|      0|      JSON_FAIL_MESSAGE(message);                                              \
  |  |  ------------------
  |  |  |  |   31|      0|  do {                                                                         \
  |  |  |  |   32|      0|    OStringStream oss;                                                         \
  |  |  |  |   33|      0|    oss << message;                                                            \
  |  |  |  |   34|      0|    Json::throwLogicError(oss.str());                                          \
  |  |  |  |   35|      0|    abort();                                                                   \
  |  |  |  |   36|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (36:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   58|      0|    }                                                                          \
  |  |   59|  1.01k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (59:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  144|  1.01k|                                    sizeof(unsigned) - 1U,
  145|  1.01k|                      "in Json::Value::duplicateAndPrefixStringValue(): "
  146|  1.01k|                      "length too big for prefixing");
  147|  1.01k|  size_t actualLength = sizeof(length) + length + 1;
  148|  1.01k|  auto newString = static_cast<char*>(malloc(actualLength));
  149|  1.01k|  if (newString == nullptr) {
  ------------------
  |  Branch (149:7): [True: 0, False: 1.01k]
  ------------------
  150|      0|    throwRuntimeError("in Json::Value::duplicateAndPrefixStringValue(): "
  151|      0|                      "Failed to allocate string value buffer");
  152|      0|  }
  153|  1.01k|  *reinterpret_cast<unsigned*>(newString) = length;
  154|  1.01k|  memcpy(newString + sizeof(unsigned), value, length);
  155|  1.01k|  newString[actualLength - 1U] =
  156|  1.01k|      0; // to avoid buffer over-run accidents by users later
  157|  1.01k|  return newString;
  158|  1.01k|}
json_value.cpp:_ZN4JsonL26releasePrefixedStringValueEPc:
  188|  1.01k|static inline void releasePrefixedStringValue(char* value) { free(value); }
json_value.cpp:_ZN4JsonL11cloneUniqueINSt3__15arrayINS1_12basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEELm3EEEEENS1_10unique_ptrIT_NS1_14default_deleteISB_EEEERKSE_:
   56|  2.55M|static std::unique_ptr<T> cloneUnique(const std::unique_ptr<T>& p) {
   57|  2.55M|  std::unique_ptr<T> r;
   58|  2.55M|  if (p) {
  ------------------
  |  Branch (58:7): [True: 0, False: 2.55M]
  ------------------
   59|      0|    r = std::unique_ptr<T>(new T(*p));
   60|      0|  }
   61|  2.55M|  return r;
   62|  2.55M|}

_Z8FuzzJsonNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEEi:
   36|  3.01k|void FuzzJson(std::string data_str, int32_t hash_settings) {
   37|  3.01k|  Json::CharReaderBuilder builder;
   38|       |
   39|  3.01k|  builder.settings_["failIfExtra"] = hash_settings & (1 << 0);
   40|  3.01k|  builder.settings_["allowComments_"] = hash_settings & (1 << 1);
   41|  3.01k|  builder.settings_["strictRoot_"] = hash_settings & (1 << 2);
   42|  3.01k|  builder.settings_["allowDroppedNullPlaceholders_"] = hash_settings & (1 << 3);
   43|  3.01k|  builder.settings_["allowNumericKeys_"] = hash_settings & (1 << 4);
   44|  3.01k|  builder.settings_["allowSingleQuotes_"] = hash_settings & (1 << 5);
   45|  3.01k|  builder.settings_["failIfExtra_"] = hash_settings & (1 << 6);
   46|  3.01k|  builder.settings_["rejectDupKeys_"] = hash_settings & (1 << 7);
   47|  3.01k|  builder.settings_["allowSpecialFloats_"] = hash_settings & (1 << 8);
   48|  3.01k|  builder.settings_["collectComments"] = hash_settings & (1 << 9);
   49|  3.01k|  builder.settings_["allowTrailingCommas_"] = hash_settings & (1 << 10);
   50|       |
   51|  3.01k|  std::unique_ptr<Json::CharReader> reader(builder.newCharReader());
   52|       |  
   53|  3.01k|  const char* begin = data_str.c_str();
   54|  3.01k|  const char* end = begin + data_str.length();
   55|       |
   56|  3.01k|  Json::Value root;
   57|  3.01k|  try {
   58|  3.01k|    reader->parse(begin, end, &root, nullptr);
   59|  3.01k|  } catch (Json::Exception const&) {
   60|     24|  }
   61|  3.01k|}
jsoncpp_fuzz_proto.cc:_ZL17TestOneProtoInputRKN10json_proto12JsonParseAPIE:
   63|  3.01k|DEFINE_PROTO_FUZZER(const json_proto::JsonParseAPI &json_proto) {
   64|  3.01k|  json_proto::JsonProtoConverter converter;
   65|  3.01k|  std::string data_str = converter.Convert(json_proto.object_value());
   66|  3.01k|  int32_t hash_settings = json_proto.settings();
   67|  3.01k|  FuzzJson(data_str, hash_settings);
   68|  3.01k|}

