_ZN6google3api4expr8v1alpha110ParsedExprC2EPNS_8protobuf5ArenaE:
  658|  12.5k|  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
  659|  12.5k|  SharedCtor(arena);
  660|       |  // @@protoc_insertion_point(arena_constructor:google.api.expr.v1alpha1.ParsedExpr)
  661|  12.5k|}
_ZN6google3api4expr8v1alpha110ParsedExprC2ERKS3_:
  663|  2.50k|  : ::PROTOBUF_NAMESPACE_ID::Message() {
  664|  2.50k|  ParsedExpr* const _this = this; (void)_this;
  665|  2.50k|  new (&_impl_) Impl_{
  666|  2.50k|      decltype(_impl_._has_bits_){from._impl_._has_bits_}
  667|  2.50k|    , /*decltype(_impl_._cached_size_)*/{}
  668|  2.50k|    , decltype(_impl_.expr_){nullptr}
  669|  2.50k|    , decltype(_impl_.source_info_){nullptr}};
  670|       |
  671|  2.50k|  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
  672|  2.50k|  if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) {
  ------------------
  |  Branch (672:7): [True: 2.50k, False: 0]
  ------------------
  673|  2.50k|    _this->_impl_.expr_ = new ::google::api::expr::v1alpha1::Expr(*from._impl_.expr_);
  674|  2.50k|  }
  675|  2.50k|  if ((from._impl_._has_bits_[0] & 0x00000002u) != 0) {
  ------------------
  |  Branch (675:7): [True: 2.50k, False: 0]
  ------------------
  676|  2.50k|    _this->_impl_.source_info_ = new ::google::api::expr::v1alpha1::SourceInfo(*from._impl_.source_info_);
  677|  2.50k|  }
  678|       |  // @@protoc_insertion_point(copy_constructor:google.api.expr.v1alpha1.ParsedExpr)
  679|  2.50k|}
_ZN6google3api4expr8v1alpha110ParsedExprD2Ev:
  691|  15.0k|ParsedExpr::~ParsedExpr() {
  692|       |  // @@protoc_insertion_point(destructor:google.api.expr.v1alpha1.ParsedExpr)
  693|  15.0k|  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  ------------------
  |  Branch (693:13): [True: 0, False: 15.0k]
  ------------------
  694|      0|  (void)arena;
  695|      0|    return;
  696|      0|  }
  697|  15.0k|  SharedDtor();
  698|  15.0k|}
_ZN6google3api4expr8v1alpha110ParsedExpr12InternalSwapEPS3_:
  877|  10.0k|void ParsedExpr::InternalSwap(ParsedExpr* other) {
  878|  10.0k|  using std::swap;
  879|  10.0k|  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  880|  10.0k|  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
  881|  10.0k|  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
  882|  10.0k|      PROTOBUF_FIELD_OFFSET(ParsedExpr, _impl_.source_info_)
  883|  10.0k|      + sizeof(ParsedExpr::_impl_.source_info_)
  884|  10.0k|      - PROTOBUF_FIELD_OFFSET(ParsedExpr, _impl_.expr_)>(
  885|  10.0k|          reinterpret_cast<char*>(&_impl_.expr_),
  886|  10.0k|          reinterpret_cast<char*>(&other->_impl_.expr_));
  887|  10.0k|}
_ZN6google3api4expr8v1alpha110Expr_IdentC2EPNS_8protobuf5ArenaE:
  901|  66.1M|  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
  902|  66.1M|  SharedCtor(arena);
  903|       |  // @@protoc_insertion_point(arena_constructor:google.api.expr.v1alpha1.Expr.Ident)
  904|  66.1M|}
_ZN6google3api4expr8v1alpha110Expr_IdentD2Ev:
  937|  66.1M|Expr_Ident::~Expr_Ident() {
  938|       |  // @@protoc_insertion_point(destructor:google.api.expr.v1alpha1.Expr.Ident)
  939|  66.1M|  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  ------------------
  |  Branch (939:13): [True: 0, False: 66.1M]
  ------------------
  940|      0|  (void)arena;
  941|      0|    return;
  942|      0|  }
  943|  66.1M|  SharedDtor();
  944|  66.1M|}
_ZN6google3api4expr8v1alpha110Expr_Ident9MergeImplERNS_8protobuf7MessageERKS5_:
 1051|  65.0M|void Expr_Ident::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
 1052|  65.0M|  auto* const _this = static_cast<Expr_Ident*>(&to_msg);
 1053|  65.0M|  auto& from = static_cast<const Expr_Ident&>(from_msg);
 1054|       |  // @@protoc_insertion_point(class_specific_merge_from_start:google.api.expr.v1alpha1.Expr.Ident)
 1055|  65.0M|  ABSL_DCHECK_NE(&from, _this);
  ------------------
  |  |   72|  65.0M|  ABSL_DCHECK_NE_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   88|  65.0M|  ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|  65.0M|  while (false && ((void)(x), (void)(y), 0)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (56:10): [Folded - Ignored]
  |  |  |  |  |  |  |  Branch (56:19): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   57|  65.0M|  ::absl::log_internal::NullStream().InternalStream()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1056|  65.0M|  ::uint32_t cached_has_bits = 0;
 1057|  65.0M|  (void) cached_has_bits;
 1058|       |
 1059|  65.0M|  if (!from._internal_name().empty()) {
  ------------------
  |  Branch (1059:7): [True: 65.0M, False: 0]
  ------------------
 1060|  65.0M|    _this->_internal_set_name(from._internal_name());
 1061|  65.0M|  }
 1062|  65.0M|  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
 1063|  65.0M|}
_ZN6google3api4expr8v1alpha111Expr_SelectC2EPNS_8protobuf5ArenaE:
 1108|   413k|  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
 1109|   413k|  SharedCtor(arena);
 1110|       |  // @@protoc_insertion_point(arena_constructor:google.api.expr.v1alpha1.Expr.Select)
 1111|   413k|}
_ZN6google3api4expr8v1alpha111Expr_SelectD2Ev:
 1156|   413k|Expr_Select::~Expr_Select() {
 1157|       |  // @@protoc_insertion_point(destructor:google.api.expr.v1alpha1.Expr.Select)
 1158|   413k|  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  ------------------
  |  Branch (1158:13): [True: 0, False: 413k]
  ------------------
 1159|      0|  (void)arena;
 1160|      0|    return;
 1161|      0|  }
 1162|   413k|  SharedDtor();
 1163|   413k|}
_ZN6google3api4expr8v1alpha111Expr_Select9MergeImplERNS_8protobuf7MessageERKS5_:
 1326|   404k|void Expr_Select::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
 1327|   404k|  auto* const _this = static_cast<Expr_Select*>(&to_msg);
 1328|   404k|  auto& from = static_cast<const Expr_Select&>(from_msg);
 1329|       |  // @@protoc_insertion_point(class_specific_merge_from_start:google.api.expr.v1alpha1.Expr.Select)
 1330|   404k|  ABSL_DCHECK_NE(&from, _this);
  ------------------
  |  |   72|   404k|  ABSL_DCHECK_NE_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   88|   404k|  ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|   404k|  while (false && ((void)(x), (void)(y), 0)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (56:10): [Folded - Ignored]
  |  |  |  |  |  |  |  Branch (56:19): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   57|   404k|  ::absl::log_internal::NullStream().InternalStream()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1331|   404k|  ::uint32_t cached_has_bits = 0;
 1332|   404k|  (void) cached_has_bits;
 1333|       |
 1334|   404k|  if (!from._internal_field().empty()) {
  ------------------
  |  Branch (1334:7): [True: 404k, False: 0]
  ------------------
 1335|   404k|    _this->_internal_set_field(from._internal_field());
 1336|   404k|  }
 1337|   404k|  if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) {
  ------------------
  |  Branch (1337:7): [True: 404k, False: 0]
  ------------------
 1338|   404k|    _this->_internal_mutable_operand()->::google::api::expr::v1alpha1::Expr::MergeFrom(
 1339|   404k|        from._internal_operand());
 1340|   404k|  }
 1341|   404k|  if (from._internal_test_only() != 0) {
  ------------------
  |  Branch (1341:7): [True: 796, False: 404k]
  ------------------
 1342|    796|    _this->_internal_set_test_only(from._internal_test_only());
 1343|    796|  }
 1344|   404k|  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
 1345|   404k|}
_ZN6google3api4expr8v1alpha19Expr_CallC2EPNS_8protobuf5ArenaE:
 1397|  93.7M|  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
 1398|  93.7M|  SharedCtor(arena);
 1399|       |  // @@protoc_insertion_point(arena_constructor:google.api.expr.v1alpha1.Expr.Call)
 1400|  93.7M|}
_ZN6google3api4expr8v1alpha19Expr_CallD2Ev:
 1442|  93.7M|Expr_Call::~Expr_Call() {
 1443|       |  // @@protoc_insertion_point(destructor:google.api.expr.v1alpha1.Expr.Call)
 1444|  93.7M|  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  ------------------
  |  Branch (1444:13): [True: 0, False: 93.7M]
  ------------------
 1445|      0|  (void)arena;
 1446|      0|    return;
 1447|      0|  }
 1448|  93.7M|  SharedDtor();
 1449|  93.7M|}
_ZN6google3api4expr8v1alpha19Expr_Call9MergeImplERNS_8protobuf7MessageERKS5_:
 1621|  92.9M|void Expr_Call::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
 1622|  92.9M|  auto* const _this = static_cast<Expr_Call*>(&to_msg);
 1623|  92.9M|  auto& from = static_cast<const Expr_Call&>(from_msg);
 1624|       |  // @@protoc_insertion_point(class_specific_merge_from_start:google.api.expr.v1alpha1.Expr.Call)
 1625|  92.9M|  ABSL_DCHECK_NE(&from, _this);
  ------------------
  |  |   72|  92.9M|  ABSL_DCHECK_NE_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   88|  92.9M|  ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|  92.9M|  while (false && ((void)(x), (void)(y), 0)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (56:10): [Folded - Ignored]
  |  |  |  |  |  |  |  Branch (56:19): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   57|  92.9M|  ::absl::log_internal::NullStream().InternalStream()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1626|  92.9M|  ::uint32_t cached_has_bits = 0;
 1627|  92.9M|  (void) cached_has_bits;
 1628|       |
 1629|  92.9M|  _this->_internal_mutable_args()->MergeFrom(from._internal_args());
 1630|  92.9M|  if (!from._internal_function().empty()) {
  ------------------
  |  Branch (1630:7): [True: 92.9M, False: 0]
  ------------------
 1631|  92.9M|    _this->_internal_set_function(from._internal_function());
 1632|  92.9M|  }
 1633|  92.9M|  if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) {
  ------------------
  |  Branch (1633:7): [True: 91.7k, False: 92.8M]
  ------------------
 1634|  91.7k|    _this->_internal_mutable_target()->::google::api::expr::v1alpha1::Expr::MergeFrom(
 1635|  91.7k|        from._internal_target());
 1636|  91.7k|  }
 1637|  92.9M|  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
 1638|  92.9M|}
_ZN6google3api4expr8v1alpha115Expr_CreateListC2EPNS_8protobuf5ArenaE:
 1675|   463k|  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
 1676|   463k|  SharedCtor(arena);
 1677|       |  // @@protoc_insertion_point(arena_constructor:google.api.expr.v1alpha1.Expr.CreateList)
 1678|   463k|}
_ZN6google3api4expr8v1alpha115Expr_CreateListD2Ev:
 1698|   463k|Expr_CreateList::~Expr_CreateList() {
 1699|       |  // @@protoc_insertion_point(destructor:google.api.expr.v1alpha1.Expr.CreateList)
 1700|   463k|  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  ------------------
  |  Branch (1700:13): [True: 0, False: 463k]
  ------------------
 1701|      0|  (void)arena;
 1702|      0|    return;
 1703|      0|  }
 1704|   463k|  SharedDtor();
 1705|   463k|}
_ZN6google3api4expr8v1alpha115Expr_CreateList9MergeImplERNS_8protobuf7MessageERKS5_:
 1816|   454k|void Expr_CreateList::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
 1817|   454k|  auto* const _this = static_cast<Expr_CreateList*>(&to_msg);
 1818|   454k|  auto& from = static_cast<const Expr_CreateList&>(from_msg);
 1819|       |  // @@protoc_insertion_point(class_specific_merge_from_start:google.api.expr.v1alpha1.Expr.CreateList)
 1820|   454k|  ABSL_DCHECK_NE(&from, _this);
  ------------------
  |  |   72|   454k|  ABSL_DCHECK_NE_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   88|   454k|  ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|   454k|  while (false && ((void)(x), (void)(y), 0)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (56:10): [Folded - Ignored]
  |  |  |  |  |  |  |  Branch (56:19): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   57|   454k|  ::absl::log_internal::NullStream().InternalStream()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1821|   454k|  ::uint32_t cached_has_bits = 0;
 1822|   454k|  (void) cached_has_bits;
 1823|       |
 1824|   454k|  _this->_internal_mutable_elements()->MergeFrom(from._internal_elements());
 1825|   454k|  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
 1826|   454k|}
_ZN6google3api4expr8v1alpha123Expr_CreateStruct_EntryC2EPNS_8protobuf5ArenaE:
 1890|  9.09M|  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
 1891|  9.09M|  SharedCtor(arena);
 1892|       |  // @@protoc_insertion_point(arena_constructor:google.api.expr.v1alpha1.Expr.CreateStruct.Entry)
 1893|  9.09M|}
_ZN6google3api4expr8v1alpha123Expr_CreateStruct_EntryD2Ev:
 1943|  9.09M|Expr_CreateStruct_Entry::~Expr_CreateStruct_Entry() {
 1944|       |  // @@protoc_insertion_point(destructor:google.api.expr.v1alpha1.Expr.CreateStruct.Entry)
 1945|  9.09M|  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  ------------------
  |  Branch (1945:13): [True: 0, False: 9.09M]
  ------------------
 1946|      0|  (void)arena;
 1947|      0|    return;
 1948|      0|  }
 1949|  9.09M|  SharedDtor();
 1950|  9.09M|}
_ZN6google3api4expr8v1alpha123Expr_CreateStruct_Entry14clear_key_kindEv:
 1964|  17.6M|void Expr_CreateStruct_Entry::clear_key_kind() {
 1965|       |// @@protoc_insertion_point(one_of_clear_start:google.api.expr.v1alpha1.Expr.CreateStruct.Entry)
 1966|  17.6M|  switch (key_kind_case()) {
  ------------------
  |  Branch (1966:11): [True: 0, False: 17.6M]
  ------------------
 1967|  61.0k|    case kFieldKey: {
  ------------------
  |  Branch (1967:5): [True: 61.0k, False: 17.6M]
  ------------------
 1968|  61.0k|      _impl_.key_kind_.field_key_.Destroy();
 1969|  61.0k|      break;
 1970|      0|    }
 1971|  8.53M|    case kMapKey: {
  ------------------
  |  Branch (1971:5): [True: 8.53M, False: 9.15M]
  ------------------
 1972|  8.53M|      if (GetArenaForAllocation() == nullptr) {
  ------------------
  |  Branch (1972:11): [True: 8.53M, False: 0]
  ------------------
 1973|  8.53M|        delete _impl_.key_kind_.map_key_;
 1974|  8.53M|      }
 1975|  8.53M|      break;
 1976|      0|    }
 1977|  9.09M|    case KEY_KIND_NOT_SET: {
  ------------------
  |  Branch (1977:5): [True: 9.09M, False: 8.59M]
  ------------------
 1978|  9.09M|      break;
 1979|      0|    }
 1980|  17.6M|  }
 1981|  17.6M|  _impl_._oneof_case_[0] = KEY_KIND_NOT_SET;
 1982|  17.6M|}
_ZN6google3api4expr8v1alpha123Expr_CreateStruct_Entry5ClearEv:
 1985|   499k|void Expr_CreateStruct_Entry::Clear() {
 1986|       |// @@protoc_insertion_point(message_clear_start:google.api.expr.v1alpha1.Expr.CreateStruct.Entry)
 1987|   499k|  ::uint32_t cached_has_bits = 0;
 1988|       |  // Prevent compiler warnings about cached_has_bits being unused
 1989|   499k|  (void) cached_has_bits;
 1990|       |
 1991|   499k|  cached_has_bits = _impl_._has_bits_[0];
 1992|   499k|  if (cached_has_bits & 0x00000001u) {
  ------------------
  |  Branch (1992:7): [True: 0, False: 499k]
  ------------------
 1993|      0|    ABSL_DCHECK(_impl_.value_ != nullptr);
  ------------------
  |  |   43|      0|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|      0|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      0|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  163|      0|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|      0|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1994|      0|    _impl_.value_->Clear();
 1995|      0|  }
 1996|   499k|  _impl_.id_ = ::int64_t{0};
 1997|   499k|  clear_key_kind();
 1998|   499k|  _impl_._has_bits_.Clear();
 1999|   499k|  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
 2000|   499k|}
_ZN6google3api4expr8v1alpha123Expr_CreateStruct_Entry9MergeImplERNS_8protobuf7MessageERKS5_:
 2166|  8.10M|void Expr_CreateStruct_Entry::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
 2167|  8.10M|  auto* const _this = static_cast<Expr_CreateStruct_Entry*>(&to_msg);
 2168|  8.10M|  auto& from = static_cast<const Expr_CreateStruct_Entry&>(from_msg);
 2169|       |  // @@protoc_insertion_point(class_specific_merge_from_start:google.api.expr.v1alpha1.Expr.CreateStruct.Entry)
 2170|  8.10M|  ABSL_DCHECK_NE(&from, _this);
  ------------------
  |  |   72|  8.10M|  ABSL_DCHECK_NE_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   88|  8.10M|  ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|  8.10M|  while (false && ((void)(x), (void)(y), 0)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (56:10): [Folded - Ignored]
  |  |  |  |  |  |  |  Branch (56:19): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   57|  8.10M|  ::absl::log_internal::NullStream().InternalStream()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2171|  8.10M|  ::uint32_t cached_has_bits = 0;
 2172|  8.10M|  (void) cached_has_bits;
 2173|       |
 2174|  8.10M|  if ((from._impl_._has_bits_[0] & 0x00000001u) != 0) {
  ------------------
  |  Branch (2174:7): [True: 8.10M, False: 3.13k]
  ------------------
 2175|  8.10M|    _this->_internal_mutable_value()->::google::api::expr::v1alpha1::Expr::MergeFrom(
 2176|  8.10M|        from._internal_value());
 2177|  8.10M|  }
 2178|  8.10M|  if (from._internal_id() != 0) {
  ------------------
  |  Branch (2178:7): [True: 8.10M, False: 3.13k]
  ------------------
 2179|  8.10M|    _this->_internal_set_id(from._internal_id());
 2180|  8.10M|  }
 2181|  8.10M|  switch (from.key_kind_case()) {
  ------------------
  |  Branch (2181:11): [True: 0, False: 8.10M]
  ------------------
 2182|  57.8k|    case kFieldKey: {
  ------------------
  |  Branch (2182:5): [True: 57.8k, False: 8.04M]
  ------------------
 2183|  57.8k|      _this->_internal_set_field_key(from._internal_field_key());
 2184|  57.8k|      break;
 2185|      0|    }
 2186|  8.04M|    case kMapKey: {
  ------------------
  |  Branch (2186:5): [True: 8.04M, False: 60.9k]
  ------------------
 2187|  8.04M|      _this->_internal_mutable_map_key()->::google::api::expr::v1alpha1::Expr::MergeFrom(
 2188|  8.04M|          from._internal_map_key());
 2189|  8.04M|      break;
 2190|      0|    }
 2191|  3.13k|    case KEY_KIND_NOT_SET: {
  ------------------
  |  Branch (2191:5): [True: 3.13k, False: 8.10M]
  ------------------
 2192|  3.13k|      break;
 2193|      0|    }
 2194|  8.10M|  }
 2195|  8.10M|  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
 2196|  8.10M|}
_ZN6google3api4expr8v1alpha123Expr_CreateStruct_Entry8CopyFromERKS3_:
 2198|   499k|void Expr_CreateStruct_Entry::CopyFrom(const Expr_CreateStruct_Entry& from) {
 2199|       |// @@protoc_insertion_point(class_specific_copy_from_start:google.api.expr.v1alpha1.Expr.CreateStruct.Entry)
 2200|   499k|  if (&from == this) return;
  ------------------
  |  Branch (2200:7): [True: 0, False: 499k]
  ------------------
 2201|   499k|  Clear();
 2202|   499k|  MergeFrom(from);
 2203|   499k|}
_ZN6google3api4expr8v1alpha123Expr_CreateStruct_Entry12InternalSwapEPS3_:
 2209|   492k|void Expr_CreateStruct_Entry::InternalSwap(Expr_CreateStruct_Entry* other) {
 2210|   492k|  using std::swap;
 2211|   492k|  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
 2212|   492k|  swap(_impl_._has_bits_[0], other->_impl_._has_bits_[0]);
 2213|   492k|  ::PROTOBUF_NAMESPACE_ID::internal::memswap<
 2214|   492k|      PROTOBUF_FIELD_OFFSET(Expr_CreateStruct_Entry, _impl_.id_)
 2215|   492k|      + sizeof(Expr_CreateStruct_Entry::_impl_.id_)
 2216|   492k|      - PROTOBUF_FIELD_OFFSET(Expr_CreateStruct_Entry, _impl_.value_)>(
 2217|   492k|          reinterpret_cast<char*>(&_impl_.value_),
 2218|   492k|          reinterpret_cast<char*>(&other->_impl_.value_));
 2219|   492k|  swap(_impl_.key_kind_, other->_impl_.key_kind_);
 2220|   492k|  swap(_impl_._oneof_case_[0], other->_impl_._oneof_case_[0]);
 2221|   492k|}
_ZN6google3api4expr8v1alpha117Expr_CreateStructC2EPNS_8protobuf5ArenaE:
 2235|  11.2M|  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
 2236|  11.2M|  SharedCtor(arena);
 2237|       |  // @@protoc_insertion_point(arena_constructor:google.api.expr.v1alpha1.Expr.CreateStruct)
 2238|  11.2M|}
_ZN6google3api4expr8v1alpha117Expr_CreateStructD2Ev:
 2273|  11.2M|Expr_CreateStruct::~Expr_CreateStruct() {
 2274|       |  // @@protoc_insertion_point(destructor:google.api.expr.v1alpha1.Expr.CreateStruct)
 2275|  11.2M|  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  ------------------
  |  Branch (2275:13): [True: 0, False: 11.2M]
  ------------------
 2276|      0|  (void)arena;
 2277|      0|    return;
 2278|      0|  }
 2279|  11.2M|  SharedDtor();
 2280|  11.2M|}
_ZN6google3api4expr8v1alpha117Expr_CreateStruct9MergeImplERNS_8protobuf7MessageERKS5_:
 2418|  10.5M|void Expr_CreateStruct::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
 2419|  10.5M|  auto* const _this = static_cast<Expr_CreateStruct*>(&to_msg);
 2420|  10.5M|  auto& from = static_cast<const Expr_CreateStruct&>(from_msg);
 2421|       |  // @@protoc_insertion_point(class_specific_merge_from_start:google.api.expr.v1alpha1.Expr.CreateStruct)
 2422|  10.5M|  ABSL_DCHECK_NE(&from, _this);
  ------------------
  |  |   72|  10.5M|  ABSL_DCHECK_NE_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   88|  10.5M|  ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|  10.5M|  while (false && ((void)(x), (void)(y), 0)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (56:10): [Folded - Ignored]
  |  |  |  |  |  |  |  Branch (56:19): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   57|  10.5M|  ::absl::log_internal::NullStream().InternalStream()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2423|  10.5M|  ::uint32_t cached_has_bits = 0;
 2424|  10.5M|  (void) cached_has_bits;
 2425|       |
 2426|  10.5M|  _this->_internal_mutable_entries()->MergeFrom(from._internal_entries());
 2427|  10.5M|  if (!from._internal_message_name().empty()) {
  ------------------
  |  Branch (2427:7): [True: 317k, False: 10.2M]
  ------------------
 2428|   317k|    _this->_internal_set_message_name(from._internal_message_name());
 2429|   317k|  }
 2430|  10.5M|  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
 2431|  10.5M|}
_ZN6google3api4expr8v1alpha118Expr_ComprehensionC2EPNS_8protobuf5ArenaE:
 2509|   169k|  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
 2510|   169k|  SharedCtor(arena);
 2511|       |  // @@protoc_insertion_point(arena_constructor:google.api.expr.v1alpha1.Expr.Comprehension)
 2512|   169k|}
_ZN6google3api4expr8v1alpha118Expr_ComprehensionD2Ev:
 2587|   169k|Expr_Comprehension::~Expr_Comprehension() {
 2588|       |  // @@protoc_insertion_point(destructor:google.api.expr.v1alpha1.Expr.Comprehension)
 2589|   169k|  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  ------------------
  |  Branch (2589:13): [True: 0, False: 169k]
  ------------------
 2590|      0|  (void)arena;
 2591|      0|    return;
 2592|      0|  }
 2593|   169k|  SharedDtor();
 2594|   169k|}
_ZN6google3api4expr8v1alpha118Expr_Comprehension9MergeImplERNS_8protobuf7MessageERKS5_:
 2878|   165k|void Expr_Comprehension::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
 2879|   165k|  auto* const _this = static_cast<Expr_Comprehension*>(&to_msg);
 2880|   165k|  auto& from = static_cast<const Expr_Comprehension&>(from_msg);
 2881|       |  // @@protoc_insertion_point(class_specific_merge_from_start:google.api.expr.v1alpha1.Expr.Comprehension)
 2882|   165k|  ABSL_DCHECK_NE(&from, _this);
  ------------------
  |  |   72|   165k|  ABSL_DCHECK_NE_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   88|   165k|  ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|   165k|  while (false && ((void)(x), (void)(y), 0)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (56:10): [Folded - Ignored]
  |  |  |  |  |  |  |  Branch (56:19): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   57|   165k|  ::absl::log_internal::NullStream().InternalStream()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2883|   165k|  ::uint32_t cached_has_bits = 0;
 2884|   165k|  (void) cached_has_bits;
 2885|       |
 2886|   165k|  if (!from._internal_iter_var().empty()) {
  ------------------
  |  Branch (2886:7): [True: 165k, False: 0]
  ------------------
 2887|   165k|    _this->_internal_set_iter_var(from._internal_iter_var());
 2888|   165k|  }
 2889|   165k|  if (!from._internal_accu_var().empty()) {
  ------------------
  |  Branch (2889:7): [True: 165k, False: 0]
  ------------------
 2890|   165k|    _this->_internal_set_accu_var(from._internal_accu_var());
 2891|   165k|  }
 2892|   165k|  cached_has_bits = from._impl_._has_bits_[0];
 2893|   165k|  if (cached_has_bits & 0x0000001fu) {
  ------------------
  |  Branch (2893:7): [True: 165k, False: 0]
  ------------------
 2894|   165k|    if (cached_has_bits & 0x00000001u) {
  ------------------
  |  Branch (2894:9): [True: 165k, False: 0]
  ------------------
 2895|   165k|      _this->_internal_mutable_iter_range()->::google::api::expr::v1alpha1::Expr::MergeFrom(
 2896|   165k|          from._internal_iter_range());
 2897|   165k|    }
 2898|   165k|    if (cached_has_bits & 0x00000002u) {
  ------------------
  |  Branch (2898:9): [True: 165k, False: 0]
  ------------------
 2899|   165k|      _this->_internal_mutable_accu_init()->::google::api::expr::v1alpha1::Expr::MergeFrom(
 2900|   165k|          from._internal_accu_init());
 2901|   165k|    }
 2902|   165k|    if (cached_has_bits & 0x00000004u) {
  ------------------
  |  Branch (2902:9): [True: 165k, False: 0]
  ------------------
 2903|   165k|      _this->_internal_mutable_loop_condition()->::google::api::expr::v1alpha1::Expr::MergeFrom(
 2904|   165k|          from._internal_loop_condition());
 2905|   165k|    }
 2906|   165k|    if (cached_has_bits & 0x00000008u) {
  ------------------
  |  Branch (2906:9): [True: 165k, False: 0]
  ------------------
 2907|   165k|      _this->_internal_mutable_loop_step()->::google::api::expr::v1alpha1::Expr::MergeFrom(
 2908|   165k|          from._internal_loop_step());
 2909|   165k|    }
 2910|   165k|    if (cached_has_bits & 0x00000010u) {
  ------------------
  |  Branch (2910:9): [True: 165k, False: 0]
  ------------------
 2911|   165k|      _this->_internal_mutable_result()->::google::api::expr::v1alpha1::Expr::MergeFrom(
 2912|   165k|          from._internal_result());
 2913|   165k|    }
 2914|   165k|  }
 2915|   165k|  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
 2916|   165k|}
_ZN6google3api4expr8v1alpha14ExprC2EPNS_8protobuf5ArenaE:
 3101|   243M|  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
 3102|   243M|  SharedCtor(arena);
 3103|       |  // @@protoc_insertion_point(arena_constructor:google.api.expr.v1alpha1.Expr)
 3104|   243M|}
_ZN6google3api4expr8v1alpha14ExprC2ERKS3_:
 3106|  3.05M|  : ::PROTOBUF_NAMESPACE_ID::Message() {
 3107|  3.05M|  Expr* const _this = this; (void)_this;
 3108|  3.05M|  new (&_impl_) Impl_{
 3109|  3.05M|      decltype(_impl_.id_) {}
 3110|       |
 3111|  3.05M|    , decltype(_impl_.expr_kind_){}
 3112|  3.05M|    , /*decltype(_impl_._cached_size_)*/{}
 3113|  3.05M|    , /*decltype(_impl_._oneof_case_)*/{}};
 3114|       |
 3115|  3.05M|  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
 3116|  3.05M|  _this->_impl_.id_ = from._impl_.id_;
 3117|  3.05M|  clear_has_expr_kind();
 3118|  3.05M|  switch (from.expr_kind_case()) {
  ------------------
  |  Branch (3118:11): [True: 0, False: 3.05M]
  ------------------
 3119|   213k|    case kConstExpr: {
  ------------------
  |  Branch (3119:5): [True: 213k, False: 2.83M]
  ------------------
 3120|   213k|      _this->_internal_mutable_const_expr()->::google::api::expr::v1alpha1::Constant::MergeFrom(
 3121|   213k|          from._internal_const_expr());
 3122|   213k|      break;
 3123|      0|    }
 3124|  1.30M|    case kIdentExpr: {
  ------------------
  |  Branch (3124:5): [True: 1.30M, False: 1.74M]
  ------------------
 3125|  1.30M|      _this->_internal_mutable_ident_expr()->::google::api::expr::v1alpha1::Expr_Ident::MergeFrom(
 3126|  1.30M|          from._internal_ident_expr());
 3127|  1.30M|      break;
 3128|      0|    }
 3129|  4.17k|    case kSelectExpr: {
  ------------------
  |  Branch (3129:5): [True: 4.17k, False: 3.04M]
  ------------------
 3130|  4.17k|      _this->_internal_mutable_select_expr()->::google::api::expr::v1alpha1::Expr_Select::MergeFrom(
 3131|  4.17k|          from._internal_select_expr());
 3132|  4.17k|      break;
 3133|      0|    }
 3134|  1.48M|    case kCallExpr: {
  ------------------
  |  Branch (3134:5): [True: 1.48M, False: 1.57M]
  ------------------
 3135|  1.48M|      _this->_internal_mutable_call_expr()->::google::api::expr::v1alpha1::Expr_Call::MergeFrom(
 3136|  1.48M|          from._internal_call_expr());
 3137|  1.48M|      break;
 3138|      0|    }
 3139|  7.58k|    case kListExpr: {
  ------------------
  |  Branch (3139:5): [True: 7.58k, False: 3.04M]
  ------------------
 3140|  7.58k|      _this->_internal_mutable_list_expr()->::google::api::expr::v1alpha1::Expr_CreateList::MergeFrom(
 3141|  7.58k|          from._internal_list_expr());
 3142|  7.58k|      break;
 3143|      0|    }
 3144|  8.27k|    case kStructExpr: {
  ------------------
  |  Branch (3144:5): [True: 8.27k, False: 3.04M]
  ------------------
 3145|  8.27k|      _this->_internal_mutable_struct_expr()->::google::api::expr::v1alpha1::Expr_CreateStruct::MergeFrom(
 3146|  8.27k|          from._internal_struct_expr());
 3147|  8.27k|      break;
 3148|      0|    }
 3149|  6.21k|    case kComprehensionExpr: {
  ------------------
  |  Branch (3149:5): [True: 6.21k, False: 3.04M]
  ------------------
 3150|  6.21k|      _this->_internal_mutable_comprehension_expr()->::google::api::expr::v1alpha1::Expr_Comprehension::MergeFrom(
 3151|  6.21k|          from._internal_comprehension_expr());
 3152|  6.21k|      break;
 3153|      0|    }
 3154|  25.7k|    case EXPR_KIND_NOT_SET: {
  ------------------
  |  Branch (3154:5): [True: 25.7k, False: 3.02M]
  ------------------
 3155|  25.7k|      break;
 3156|      0|    }
 3157|  3.05M|  }
 3158|       |  // @@protoc_insertion_point(copy_constructor:google.api.expr.v1alpha1.Expr)
 3159|  3.05M|}
_ZN6google3api4expr8v1alpha14ExprD2Ev:
 3173|   246M|Expr::~Expr() {
 3174|       |  // @@protoc_insertion_point(destructor:google.api.expr.v1alpha1.Expr)
 3175|   246M|  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  ------------------
  |  Branch (3175:13): [True: 0, False: 246M]
  ------------------
 3176|      0|  (void)arena;
 3177|      0|    return;
 3178|      0|  }
 3179|   246M|  SharedDtor();
 3180|   246M|}
_ZN6google3api4expr8v1alpha14Expr15clear_expr_kindEv:
 3193|   440M|void Expr::clear_expr_kind() {
 3194|       |// @@protoc_insertion_point(one_of_clear_start:google.api.expr.v1alpha1.Expr)
 3195|   440M|  switch (expr_kind_case()) {
  ------------------
  |  Branch (3195:11): [True: 0, False: 440M]
  ------------------
 3196|  45.9M|    case kConstExpr: {
  ------------------
  |  Branch (3196:5): [True: 45.9M, False: 394M]
  ------------------
 3197|  45.9M|      if (GetArenaForAllocation() == nullptr) {
  ------------------
  |  Branch (3197:11): [True: 45.9M, False: 0]
  ------------------
 3198|  45.9M|        delete _impl_.expr_kind_.const_expr_;
 3199|  45.9M|      }
 3200|  45.9M|      break;
 3201|      0|    }
 3202|  66.1M|    case kIdentExpr: {
  ------------------
  |  Branch (3202:5): [True: 66.1M, False: 374M]
  ------------------
 3203|  66.1M|      if (GetArenaForAllocation() == nullptr) {
  ------------------
  |  Branch (3203:11): [True: 66.1M, False: 0]
  ------------------
 3204|  66.1M|        delete _impl_.expr_kind_.ident_expr_;
 3205|  66.1M|      }
 3206|  66.1M|      break;
 3207|      0|    }
 3208|   413k|    case kSelectExpr: {
  ------------------
  |  Branch (3208:5): [True: 413k, False: 439M]
  ------------------
 3209|   413k|      if (GetArenaForAllocation() == nullptr) {
  ------------------
  |  Branch (3209:11): [True: 413k, False: 0]
  ------------------
 3210|   413k|        delete _impl_.expr_kind_.select_expr_;
 3211|   413k|      }
 3212|   413k|      break;
 3213|      0|    }
 3214|  93.7M|    case kCallExpr: {
  ------------------
  |  Branch (3214:5): [True: 93.7M, False: 346M]
  ------------------
 3215|  93.7M|      if (GetArenaForAllocation() == nullptr) {
  ------------------
  |  Branch (3215:11): [True: 93.7M, False: 0]
  ------------------
 3216|  93.7M|        delete _impl_.expr_kind_.call_expr_;
 3217|  93.7M|      }
 3218|  93.7M|      break;
 3219|      0|    }
 3220|   463k|    case kListExpr: {
  ------------------
  |  Branch (3220:5): [True: 463k, False: 439M]
  ------------------
 3221|   463k|      if (GetArenaForAllocation() == nullptr) {
  ------------------
  |  Branch (3221:11): [True: 463k, False: 0]
  ------------------
 3222|   463k|        delete _impl_.expr_kind_.list_expr_;
 3223|   463k|      }
 3224|   463k|      break;
 3225|      0|    }
 3226|  11.2M|    case kStructExpr: {
  ------------------
  |  Branch (3226:5): [True: 11.2M, False: 429M]
  ------------------
 3227|  11.2M|      if (GetArenaForAllocation() == nullptr) {
  ------------------
  |  Branch (3227:11): [True: 11.2M, False: 0]
  ------------------
 3228|  11.2M|        delete _impl_.expr_kind_.struct_expr_;
 3229|  11.2M|      }
 3230|  11.2M|      break;
 3231|      0|    }
 3232|   169k|    case kComprehensionExpr: {
  ------------------
  |  Branch (3232:5): [True: 169k, False: 440M]
  ------------------
 3233|   169k|      if (GetArenaForAllocation() == nullptr) {
  ------------------
  |  Branch (3233:11): [True: 169k, False: 0]
  ------------------
 3234|   169k|        delete _impl_.expr_kind_.comprehension_expr_;
 3235|   169k|      }
 3236|   169k|      break;
 3237|      0|    }
 3238|   222M|    case EXPR_KIND_NOT_SET: {
  ------------------
  |  Branch (3238:5): [True: 222M, False: 218M]
  ------------------
 3239|   222M|      break;
 3240|      0|    }
 3241|   440M|  }
 3242|   440M|  _impl_._oneof_case_[0] = EXPR_KIND_NOT_SET;
 3243|   440M|}
_ZN6google3api4expr8v1alpha14Expr5ClearEv:
 3246|  3.90M|void Expr::Clear() {
 3247|       |// @@protoc_insertion_point(message_clear_start:google.api.expr.v1alpha1.Expr)
 3248|  3.90M|  ::uint32_t cached_has_bits = 0;
 3249|       |  // Prevent compiler warnings about cached_has_bits being unused
 3250|  3.90M|  (void) cached_has_bits;
 3251|       |
 3252|  3.90M|  _impl_.id_ = ::int64_t{0};
 3253|  3.90M|  clear_expr_kind();
 3254|  3.90M|  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
 3255|  3.90M|}
_ZN6google3api4expr8v1alpha14Expr9MergeImplERNS_8protobuf7MessageERKS5_:
 3502|   213M|void Expr::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
 3503|   213M|  auto* const _this = static_cast<Expr*>(&to_msg);
 3504|   213M|  auto& from = static_cast<const Expr&>(from_msg);
 3505|       |  // @@protoc_insertion_point(class_specific_merge_from_start:google.api.expr.v1alpha1.Expr)
 3506|   213M|  ABSL_DCHECK_NE(&from, _this);
  ------------------
  |  |   72|   213M|  ABSL_DCHECK_NE_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   88|   213M|  ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|   213M|  while (false && ((void)(x), (void)(y), 0)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (56:10): [Folded - Ignored]
  |  |  |  |  |  |  |  Branch (56:19): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   57|   213M|  ::absl::log_internal::NullStream().InternalStream()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3507|   213M|  ::uint32_t cached_has_bits = 0;
 3508|   213M|  (void) cached_has_bits;
 3509|       |
 3510|   213M|  if (from._internal_id() != 0) {
  ------------------
  |  Branch (3510:7): [True: 213M, False: 0]
  ------------------
 3511|   213M|    _this->_internal_set_id(from._internal_id());
 3512|   213M|  }
 3513|   213M|  switch (from.expr_kind_case()) {
  ------------------
  |  Branch (3513:11): [True: 0, False: 213M]
  ------------------
 3514|  44.6M|    case kConstExpr: {
  ------------------
  |  Branch (3514:5): [True: 44.6M, False: 168M]
  ------------------
 3515|  44.6M|      _this->_internal_mutable_const_expr()->::google::api::expr::v1alpha1::Constant::MergeFrom(
 3516|  44.6M|          from._internal_const_expr());
 3517|  44.6M|      break;
 3518|      0|    }
 3519|  63.7M|    case kIdentExpr: {
  ------------------
  |  Branch (3519:5): [True: 63.7M, False: 149M]
  ------------------
 3520|  63.7M|      _this->_internal_mutable_ident_expr()->::google::api::expr::v1alpha1::Expr_Ident::MergeFrom(
 3521|  63.7M|          from._internal_ident_expr());
 3522|  63.7M|      break;
 3523|      0|    }
 3524|   400k|    case kSelectExpr: {
  ------------------
  |  Branch (3524:5): [True: 400k, False: 212M]
  ------------------
 3525|   400k|      _this->_internal_mutable_select_expr()->::google::api::expr::v1alpha1::Expr_Select::MergeFrom(
 3526|   400k|          from._internal_select_expr());
 3527|   400k|      break;
 3528|      0|    }
 3529|  91.4M|    case kCallExpr: {
  ------------------
  |  Branch (3529:5): [True: 91.4M, False: 121M]
  ------------------
 3530|  91.4M|      _this->_internal_mutable_call_expr()->::google::api::expr::v1alpha1::Expr_Call::MergeFrom(
 3531|  91.4M|          from._internal_call_expr());
 3532|  91.4M|      break;
 3533|      0|    }
 3534|   447k|    case kListExpr: {
  ------------------
  |  Branch (3534:5): [True: 447k, False: 212M]
  ------------------
 3535|   447k|      _this->_internal_mutable_list_expr()->::google::api::expr::v1alpha1::Expr_CreateList::MergeFrom(
 3536|   447k|          from._internal_list_expr());
 3537|   447k|      break;
 3538|      0|    }
 3539|  10.5M|    case kStructExpr: {
  ------------------
  |  Branch (3539:5): [True: 10.5M, False: 202M]
  ------------------
 3540|  10.5M|      _this->_internal_mutable_struct_expr()->::google::api::expr::v1alpha1::Expr_CreateStruct::MergeFrom(
 3541|  10.5M|          from._internal_struct_expr());
 3542|  10.5M|      break;
 3543|      0|    }
 3544|   159k|    case kComprehensionExpr: {
  ------------------
  |  Branch (3544:5): [True: 159k, False: 213M]
  ------------------
 3545|   159k|      _this->_internal_mutable_comprehension_expr()->::google::api::expr::v1alpha1::Expr_Comprehension::MergeFrom(
 3546|   159k|          from._internal_comprehension_expr());
 3547|   159k|      break;
 3548|      0|    }
 3549|  1.89M|    case EXPR_KIND_NOT_SET: {
  ------------------
  |  Branch (3549:5): [True: 1.89M, False: 211M]
  ------------------
 3550|  1.89M|      break;
 3551|      0|    }
 3552|   213M|  }
 3553|   213M|  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
 3554|   213M|}
_ZN6google3api4expr8v1alpha14Expr8CopyFromERKS3_:
 3556|  3.90M|void Expr::CopyFrom(const Expr& from) {
 3557|       |// @@protoc_insertion_point(class_specific_copy_from_start:google.api.expr.v1alpha1.Expr)
 3558|  3.90M|  if (&from == this) return;
  ------------------
  |  Branch (3558:7): [True: 0, False: 3.90M]
  ------------------
 3559|  3.90M|  Clear();
 3560|  3.90M|  MergeFrom(from);
 3561|  3.90M|}
_ZN6google3api4expr8v1alpha14Expr12InternalSwapEPS3_:
 3567|  23.7M|void Expr::InternalSwap(Expr* other) {
 3568|  23.7M|  using std::swap;
 3569|  23.7M|  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
 3570|       |
 3571|  23.7M|  swap(_impl_.id_, other->_impl_.id_);
 3572|  23.7M|  swap(_impl_.expr_kind_, other->_impl_.expr_kind_);
 3573|  23.7M|  swap(_impl_._oneof_case_[0], other->_impl_._oneof_case_[0]);
 3574|  23.7M|}
_ZN6google3api4expr8v1alpha18ConstantC2EPNS_8protobuf5ArenaE:
 3648|  45.9M|  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
 3649|  45.9M|  SharedCtor(arena);
 3650|       |  // @@protoc_insertion_point(arena_constructor:google.api.expr.v1alpha1.Constant)
 3651|  45.9M|}
_ZN6google3api4expr8v1alpha18ConstantD2Ev:
 3718|  45.9M|Constant::~Constant() {
 3719|       |  // @@protoc_insertion_point(destructor:google.api.expr.v1alpha1.Constant)
 3720|  45.9M|  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  ------------------
  |  Branch (3720:13): [True: 0, False: 45.9M]
  ------------------
 3721|      0|  (void)arena;
 3722|      0|    return;
 3723|      0|  }
 3724|  45.9M|  SharedDtor();
 3725|  45.9M|}
_ZN6google3api4expr8v1alpha18Constant19clear_constant_kindEv:
 3738|  91.8M|void Constant::clear_constant_kind() {
 3739|       |// @@protoc_insertion_point(one_of_clear_start:google.api.expr.v1alpha1.Constant)
 3740|  91.8M|  switch (constant_kind_case()) {
  ------------------
  |  Branch (3740:11): [True: 0, False: 91.8M]
  ------------------
 3741|  34.3k|    case kNullValue: {
  ------------------
  |  Branch (3741:5): [True: 34.3k, False: 91.8M]
  ------------------
 3742|       |      // No need to clear
 3743|  34.3k|      break;
 3744|      0|    }
 3745|   240k|    case kBoolValue: {
  ------------------
  |  Branch (3745:5): [True: 240k, False: 91.6M]
  ------------------
 3746|       |      // No need to clear
 3747|   240k|      break;
 3748|      0|    }
 3749|  33.6M|    case kInt64Value: {
  ------------------
  |  Branch (3749:5): [True: 33.6M, False: 58.2M]
  ------------------
 3750|       |      // No need to clear
 3751|  33.6M|      break;
 3752|      0|    }
 3753|  66.3k|    case kUint64Value: {
  ------------------
  |  Branch (3753:5): [True: 66.3k, False: 91.8M]
  ------------------
 3754|       |      // No need to clear
 3755|  66.3k|      break;
 3756|      0|    }
 3757|  2.08M|    case kDoubleValue: {
  ------------------
  |  Branch (3757:5): [True: 2.08M, False: 89.8M]
  ------------------
 3758|       |      // No need to clear
 3759|  2.08M|      break;
 3760|      0|    }
 3761|  9.66M|    case kStringValue: {
  ------------------
  |  Branch (3761:5): [True: 9.66M, False: 82.2M]
  ------------------
 3762|  9.66M|      _impl_.constant_kind_.string_value_.Destroy();
 3763|  9.66M|      break;
 3764|      0|    }
 3765|   220k|    case kBytesValue: {
  ------------------
  |  Branch (3765:5): [True: 220k, False: 91.6M]
  ------------------
 3766|   220k|      _impl_.constant_kind_.bytes_value_.Destroy();
 3767|   220k|      break;
 3768|      0|    }
 3769|      0|    case kDurationValue: {
  ------------------
  |  Branch (3769:5): [True: 0, False: 91.8M]
  ------------------
 3770|      0|      if (GetArenaForAllocation() == nullptr) {
  ------------------
  |  Branch (3770:11): [True: 0, False: 0]
  ------------------
 3771|      0|        delete _impl_.constant_kind_.duration_value_;
 3772|      0|      }
 3773|      0|      break;
 3774|      0|    }
 3775|      0|    case kTimestampValue: {
  ------------------
  |  Branch (3775:5): [True: 0, False: 91.8M]
  ------------------
 3776|      0|      if (GetArenaForAllocation() == nullptr) {
  ------------------
  |  Branch (3776:11): [True: 0, False: 0]
  ------------------
 3777|      0|        delete _impl_.constant_kind_.timestamp_value_;
 3778|      0|      }
 3779|      0|      break;
 3780|      0|    }
 3781|  45.9M|    case CONSTANT_KIND_NOT_SET: {
  ------------------
  |  Branch (3781:5): [True: 45.9M, False: 45.9M]
  ------------------
 3782|  45.9M|      break;
 3783|      0|    }
 3784|  91.8M|  }
 3785|  91.8M|  _impl_._oneof_case_[0] = CONSTANT_KIND_NOT_SET;
 3786|  91.8M|}
_ZN6google3api4expr8v1alpha18Constant9MergeImplERNS_8protobuf7MessageERKS5_:
 4061|  44.8M|void Constant::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
 4062|  44.8M|  auto* const _this = static_cast<Constant*>(&to_msg);
 4063|  44.8M|  auto& from = static_cast<const Constant&>(from_msg);
 4064|       |  // @@protoc_insertion_point(class_specific_merge_from_start:google.api.expr.v1alpha1.Constant)
 4065|  44.8M|  ABSL_DCHECK_NE(&from, _this);
  ------------------
  |  |   72|  44.8M|  ABSL_DCHECK_NE_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   88|  44.8M|  ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|  44.8M|  while (false && ((void)(x), (void)(y), 0)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (56:10): [Folded - Ignored]
  |  |  |  |  |  |  |  Branch (56:19): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   57|  44.8M|  ::absl::log_internal::NullStream().InternalStream()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4066|  44.8M|  ::uint32_t cached_has_bits = 0;
 4067|  44.8M|  (void) cached_has_bits;
 4068|       |
 4069|  44.8M|  switch (from.constant_kind_case()) {
  ------------------
  |  Branch (4069:11): [True: 0, False: 44.8M]
  ------------------
 4070|  34.0k|    case kNullValue: {
  ------------------
  |  Branch (4070:5): [True: 34.0k, False: 44.7M]
  ------------------
 4071|  34.0k|      _this->_internal_set_null_value(from._internal_null_value());
 4072|  34.0k|      break;
 4073|      0|    }
 4074|   235k|    case kBoolValue: {
  ------------------
  |  Branch (4074:5): [True: 235k, False: 44.5M]
  ------------------
 4075|   235k|      _this->_internal_set_bool_value(from._internal_bool_value());
 4076|   235k|      break;
 4077|      0|    }
 4078|  33.0M|    case kInt64Value: {
  ------------------
  |  Branch (4078:5): [True: 33.0M, False: 11.7M]
  ------------------
 4079|  33.0M|      _this->_internal_set_int64_value(from._internal_int64_value());
 4080|  33.0M|      break;
 4081|      0|    }
 4082|  65.2k|    case kUint64Value: {
  ------------------
  |  Branch (4082:5): [True: 65.2k, False: 44.7M]
  ------------------
 4083|  65.2k|      _this->_internal_set_uint64_value(from._internal_uint64_value());
 4084|  65.2k|      break;
 4085|      0|    }
 4086|  2.06M|    case kDoubleValue: {
  ------------------
  |  Branch (4086:5): [True: 2.06M, False: 42.7M]
  ------------------
 4087|  2.06M|      _this->_internal_set_double_value(from._internal_double_value());
 4088|  2.06M|      break;
 4089|      0|    }
 4090|  9.15M|    case kStringValue: {
  ------------------
  |  Branch (4090:5): [True: 9.15M, False: 35.6M]
  ------------------
 4091|  9.15M|      _this->_internal_set_string_value(from._internal_string_value());
 4092|  9.15M|      break;
 4093|      0|    }
 4094|   217k|    case kBytesValue: {
  ------------------
  |  Branch (4094:5): [True: 217k, False: 44.6M]
  ------------------
 4095|   217k|      _this->_internal_set_bytes_value(from._internal_bytes_value());
 4096|   217k|      break;
 4097|      0|    }
 4098|      0|    case kDurationValue: {
  ------------------
  |  Branch (4098:5): [True: 0, False: 44.8M]
  ------------------
 4099|      0|      _this->_internal_mutable_duration_value()->::PROTOBUF_NAMESPACE_ID::Duration::MergeFrom(
 4100|      0|          from._internal_duration_value());
 4101|      0|      break;
 4102|      0|    }
 4103|      0|    case kTimestampValue: {
  ------------------
  |  Branch (4103:5): [True: 0, False: 44.8M]
  ------------------
 4104|      0|      _this->_internal_mutable_timestamp_value()->::PROTOBUF_NAMESPACE_ID::Timestamp::MergeFrom(
 4105|      0|          from._internal_timestamp_value());
 4106|      0|      break;
 4107|      0|    }
 4108|      0|    case CONSTANT_KIND_NOT_SET: {
  ------------------
  |  Branch (4108:5): [True: 0, False: 44.8M]
  ------------------
 4109|      0|      break;
 4110|      0|    }
 4111|  44.8M|  }
 4112|  44.8M|  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
 4113|  44.8M|}
_ZN6google3api4expr8v1alpha110SourceInfoC2EPNS_8protobuf5ArenaE:
 4171|  5.00k|  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
 4172|  5.00k|  SharedCtor(arena);
 4173|       |  // @@protoc_insertion_point(arena_constructor:google.api.expr.v1alpha1.SourceInfo)
 4174|  5.00k|}
_ZN6google3api4expr8v1alpha110SourceInfoC2ERKS3_:
 4176|  2.50k|  : ::PROTOBUF_NAMESPACE_ID::Message() {
 4177|  2.50k|  SourceInfo* const _this = this; (void)_this;
 4178|  2.50k|  new (&_impl_) Impl_{
 4179|  2.50k|      decltype(_impl_.line_offsets_) { from._impl_.line_offsets_ }
 4180|  2.50k|    ,/* _impl_._line_offsets_cached_byte_size_ = */ { 0 }
 4181|       |
 4182|  2.50k|    , /*decltype(_impl_.positions_)*/{}
 4183|  2.50k|    , /*decltype(_impl_.macro_calls_)*/{}
 4184|  2.50k|    , decltype(_impl_.syntax_version_) {}
 4185|       |
 4186|  2.50k|    , decltype(_impl_.location_) {}
 4187|       |
 4188|  2.50k|    , /*decltype(_impl_._cached_size_)*/{}};
 4189|       |
 4190|  2.50k|  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
 4191|  2.50k|  _this->_impl_.positions_.MergeFrom(from._impl_.positions_);
 4192|  2.50k|  _this->_impl_.macro_calls_.MergeFrom(from._impl_.macro_calls_);
 4193|  2.50k|  _impl_.syntax_version_.InitDefault();
 4194|       |  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
 4195|       |        _impl_.syntax_version_.Set("", GetArenaForAllocation());
 4196|       |  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
 4197|  2.50k|  if (!from._internal_syntax_version().empty()) {
  ------------------
  |  Branch (4197:7): [True: 0, False: 2.50k]
  ------------------
 4198|      0|    _this->_impl_.syntax_version_.Set(from._internal_syntax_version(), _this->GetArenaForAllocation());
 4199|      0|  }
 4200|  2.50k|  _impl_.location_.InitDefault();
 4201|       |  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
 4202|       |        _impl_.location_.Set("", GetArenaForAllocation());
 4203|       |  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
 4204|  2.50k|  if (!from._internal_location().empty()) {
  ------------------
  |  Branch (4204:7): [True: 2.50k, False: 0]
  ------------------
 4205|  2.50k|    _this->_impl_.location_.Set(from._internal_location(), _this->GetArenaForAllocation());
 4206|  2.50k|  }
 4207|       |  // @@protoc_insertion_point(copy_constructor:google.api.expr.v1alpha1.SourceInfo)
 4208|  2.50k|}
_ZN6google3api4expr8v1alpha110SourceInfoD2Ev:
 4234|  7.50k|SourceInfo::~SourceInfo() {
 4235|       |  // @@protoc_insertion_point(destructor:google.api.expr.v1alpha1.SourceInfo)
 4236|  7.50k|  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  ------------------
  |  Branch (4236:13): [True: 0, False: 7.50k]
  ------------------
 4237|      0|  (void)arena;
 4238|      0|    return;
 4239|      0|  }
 4240|  7.50k|  SharedDtor();
 4241|  7.50k|}
_ZN6google3api4expr8v1alpha110SourceInfo12InternalSwapEPS3_:
 4527|  2.50k|void SourceInfo::InternalSwap(SourceInfo* other) {
 4528|  2.50k|  using std::swap;
 4529|  2.50k|  auto* lhs_arena = GetArenaForAllocation();
 4530|  2.50k|  auto* rhs_arena = other->GetArenaForAllocation();
 4531|  2.50k|  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
 4532|  2.50k|  _impl_.line_offsets_.InternalSwap(&other->_impl_.line_offsets_);
 4533|  2.50k|  _impl_.positions_.InternalSwap(&other->_impl_.positions_);
 4534|  2.50k|  _impl_.macro_calls_.InternalSwap(&other->_impl_.macro_calls_);
 4535|  2.50k|  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.syntax_version_, lhs_arena,
 4536|  2.50k|                                       &other->_impl_.syntax_version_, rhs_arena);
 4537|  2.50k|  ::_pbi::ArenaStringPtr::InternalSwap(&_impl_.location_, lhs_arena,
 4538|  2.50k|                                       &other->_impl_.location_, rhs_arena);
 4539|  2.50k|}
_ZN6google8protobuf5Arena18CreateMaybeMessageINS_3api4expr8v1alpha110Expr_IdentEJEEEPT_PS1_DpOT0_:
 4852|  66.1M|Arena::CreateMaybeMessage< ::google::api::expr::v1alpha1::Expr_Ident >(Arena* arena) {
 4853|  66.1M|  return Arena::CreateMessageInternal< ::google::api::expr::v1alpha1::Expr_Ident >(arena);
 4854|  66.1M|}
_ZN6google8protobuf5Arena18CreateMaybeMessageINS_3api4expr8v1alpha111Expr_SelectEJEEEPT_PS1_DpOT0_:
 4856|   413k|Arena::CreateMaybeMessage< ::google::api::expr::v1alpha1::Expr_Select >(Arena* arena) {
 4857|   413k|  return Arena::CreateMessageInternal< ::google::api::expr::v1alpha1::Expr_Select >(arena);
 4858|   413k|}
_ZN6google8protobuf5Arena18CreateMaybeMessageINS_3api4expr8v1alpha19Expr_CallEJEEEPT_PS1_DpOT0_:
 4860|  93.7M|Arena::CreateMaybeMessage< ::google::api::expr::v1alpha1::Expr_Call >(Arena* arena) {
 4861|  93.7M|  return Arena::CreateMessageInternal< ::google::api::expr::v1alpha1::Expr_Call >(arena);
 4862|  93.7M|}
_ZN6google8protobuf5Arena18CreateMaybeMessageINS_3api4expr8v1alpha115Expr_CreateListEJEEEPT_PS1_DpOT0_:
 4864|   463k|Arena::CreateMaybeMessage< ::google::api::expr::v1alpha1::Expr_CreateList >(Arena* arena) {
 4865|   463k|  return Arena::CreateMessageInternal< ::google::api::expr::v1alpha1::Expr_CreateList >(arena);
 4866|   463k|}
_ZN6google8protobuf5Arena18CreateMaybeMessageINS_3api4expr8v1alpha123Expr_CreateStruct_EntryEJEEEPT_PS1_DpOT0_:
 4868|  8.10M|Arena::CreateMaybeMessage< ::google::api::expr::v1alpha1::Expr_CreateStruct_Entry >(Arena* arena) {
 4869|  8.10M|  return Arena::CreateMessageInternal< ::google::api::expr::v1alpha1::Expr_CreateStruct_Entry >(arena);
 4870|  8.10M|}
_ZN6google8protobuf5Arena18CreateMaybeMessageINS_3api4expr8v1alpha117Expr_CreateStructEJEEEPT_PS1_DpOT0_:
 4872|  11.2M|Arena::CreateMaybeMessage< ::google::api::expr::v1alpha1::Expr_CreateStruct >(Arena* arena) {
 4873|  11.2M|  return Arena::CreateMessageInternal< ::google::api::expr::v1alpha1::Expr_CreateStruct >(arena);
 4874|  11.2M|}
_ZN6google8protobuf5Arena18CreateMaybeMessageINS_3api4expr8v1alpha118Expr_ComprehensionEJEEEPT_PS1_DpOT0_:
 4876|   169k|Arena::CreateMaybeMessage< ::google::api::expr::v1alpha1::Expr_Comprehension >(Arena* arena) {
 4877|   169k|  return Arena::CreateMessageInternal< ::google::api::expr::v1alpha1::Expr_Comprehension >(arena);
 4878|   169k|}
_ZN6google8protobuf5Arena18CreateMaybeMessageINS_3api4expr8v1alpha14ExprEJEEEPT_PS1_DpOT0_:
 4880|   213M|Arena::CreateMaybeMessage< ::google::api::expr::v1alpha1::Expr >(Arena* arena) {
 4881|   213M|  return Arena::CreateMessageInternal< ::google::api::expr::v1alpha1::Expr >(arena);
 4882|   213M|}
_ZN6google8protobuf5Arena18CreateMaybeMessageINS_3api4expr8v1alpha18ConstantEJEEEPT_PS1_DpOT0_:
 4884|  45.9M|Arena::CreateMaybeMessage< ::google::api::expr::v1alpha1::Constant >(Arena* arena) {
 4885|  45.9M|  return Arena::CreateMessageInternal< ::google::api::expr::v1alpha1::Constant >(arena);
 4886|  45.9M|}
_ZN6google8protobuf5Arena18CreateMaybeMessageINS_3api4expr8v1alpha110SourceInfoEJEEEPT_PS1_DpOT0_:
 4896|  2.50k|Arena::CreateMaybeMessage< ::google::api::expr::v1alpha1::SourceInfo >(Arena* arena) {
 4897|  2.50k|  return Arena::CreateMessageInternal< ::google::api::expr::v1alpha1::SourceInfo >(arena);
 4898|  2.50k|}
_ZN6google3api4expr8v1alpha110ParsedExpr10SharedCtorEPNS_8protobuf5ArenaE:
  681|  12.5k|inline void ParsedExpr::SharedCtor(::_pb::Arena* arena) {
  682|  12.5k|  (void)arena;
  683|  12.5k|  new (&_impl_) Impl_{
  684|  12.5k|      decltype(_impl_._has_bits_){}
  685|  12.5k|    , /*decltype(_impl_._cached_size_)*/{}
  686|  12.5k|    , decltype(_impl_.expr_){nullptr}
  687|  12.5k|    , decltype(_impl_.source_info_){nullptr}
  688|  12.5k|  };
  689|  12.5k|}
_ZN6google3api4expr8v1alpha110ParsedExpr10SharedDtorEv:
  700|  15.0k|inline void ParsedExpr::SharedDtor() {
  701|  15.0k|  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  ------------------
  |  |   43|  15.0k|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|  15.0k|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|  30.0k|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  163|  15.0k|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|  30.0k|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|  30.0k|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  702|  15.0k|  if (this != internal_default_instance()) delete _impl_.expr_;
  ------------------
  |  Branch (702:7): [True: 15.0k, False: 0]
  ------------------
  703|  15.0k|  if (this != internal_default_instance()) delete _impl_.source_info_;
  ------------------
  |  Branch (703:7): [True: 15.0k, False: 0]
  ------------------
  704|  15.0k|}
_ZN6google3api4expr8v1alpha110Expr_Ident10SharedCtorEPNS_8protobuf5ArenaE:
  924|  66.1M|inline void Expr_Ident::SharedCtor(::_pb::Arena* arena) {
  925|  66.1M|  (void)arena;
  926|  66.1M|  new (&_impl_) Impl_{
  927|  66.1M|      decltype(_impl_.name_) {}
  928|       |
  929|  66.1M|    , /*decltype(_impl_._cached_size_)*/{}
  930|  66.1M|  };
  931|  66.1M|  _impl_.name_.InitDefault();
  932|       |  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  933|       |        _impl_.name_.Set("", GetArenaForAllocation());
  934|       |  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  935|  66.1M|}
_ZN6google3api4expr8v1alpha110Expr_Ident10SharedDtorEv:
  946|  66.1M|inline void Expr_Ident::SharedDtor() {
  947|  66.1M|  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  ------------------
  |  |   43|  66.1M|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|  66.1M|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|   132M|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  163|  66.1M|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|   132M|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|   132M|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  948|  66.1M|  _impl_.name_.Destroy();
  949|  66.1M|}
_ZN6google3api4expr8v1alpha111Expr_Select10SharedCtorEPNS_8protobuf5ArenaE:
 1139|   413k|inline void Expr_Select::SharedCtor(::_pb::Arena* arena) {
 1140|   413k|  (void)arena;
 1141|   413k|  new (&_impl_) Impl_{
 1142|   413k|      decltype(_impl_._has_bits_){}
 1143|   413k|    , /*decltype(_impl_._cached_size_)*/{}
 1144|   413k|    , decltype(_impl_.field_) {}
 1145|       |
 1146|   413k|    , decltype(_impl_.operand_){nullptr}
 1147|   413k|    , decltype(_impl_.test_only_) { false }
 1148|       |
 1149|   413k|  };
 1150|   413k|  _impl_.field_.InitDefault();
 1151|       |  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
 1152|       |        _impl_.field_.Set("", GetArenaForAllocation());
 1153|       |  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
 1154|   413k|}
_ZN6google3api4expr8v1alpha111Expr_Select10SharedDtorEv:
 1165|   413k|inline void Expr_Select::SharedDtor() {
 1166|   413k|  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  ------------------
  |  |   43|   413k|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|   413k|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|   827k|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  163|   413k|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|   827k|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|   827k|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1167|   413k|  _impl_.field_.Destroy();
 1168|   413k|  if (this != internal_default_instance()) delete _impl_.operand_;
  ------------------
  |  Branch (1168:7): [True: 413k, False: 0]
  ------------------
 1169|   413k|}
_ZN6google3api4expr8v1alpha19Expr_Call10SharedCtorEPNS_8protobuf5ArenaE:
 1426|  93.7M|inline void Expr_Call::SharedCtor(::_pb::Arena* arena) {
 1427|  93.7M|  (void)arena;
 1428|  93.7M|  new (&_impl_) Impl_{
 1429|  93.7M|      decltype(_impl_._has_bits_){}
 1430|  93.7M|    , /*decltype(_impl_._cached_size_)*/{}
 1431|  93.7M|    , decltype(_impl_.args_){arena}
 1432|  93.7M|    , decltype(_impl_.function_) {}
 1433|       |
 1434|  93.7M|    , decltype(_impl_.target_){nullptr}
 1435|  93.7M|  };
 1436|  93.7M|  _impl_.function_.InitDefault();
 1437|       |  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
 1438|       |        _impl_.function_.Set("", GetArenaForAllocation());
 1439|       |  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
 1440|  93.7M|}
_ZN6google3api4expr8v1alpha19Expr_Call10SharedDtorEv:
 1451|  93.7M|inline void Expr_Call::SharedDtor() {
 1452|  93.7M|  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  ------------------
  |  |   43|  93.7M|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|  93.7M|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|   187M|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  163|  93.7M|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|   187M|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|   187M|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1453|  93.7M|  _internal_mutable_args()->~RepeatedPtrField();
 1454|  93.7M|  _impl_.function_.Destroy();
 1455|  93.7M|  if (this != internal_default_instance()) delete _impl_.target_;
  ------------------
  |  Branch (1455:7): [True: 93.7M, False: 0]
  ------------------
 1456|  93.7M|}
_ZN6google3api4expr8v1alpha115Expr_CreateList10SharedCtorEPNS_8protobuf5ArenaE:
 1690|   463k|inline void Expr_CreateList::SharedCtor(::_pb::Arena* arena) {
 1691|   463k|  (void)arena;
 1692|   463k|  new (&_impl_) Impl_{
 1693|   463k|      decltype(_impl_.elements_){arena}
 1694|   463k|    , /*decltype(_impl_._cached_size_)*/{}
 1695|   463k|  };
 1696|   463k|}
_ZN6google3api4expr8v1alpha115Expr_CreateList10SharedDtorEv:
 1707|   463k|inline void Expr_CreateList::SharedDtor() {
 1708|   463k|  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  ------------------
  |  |   43|   463k|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|   463k|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|   927k|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  163|   463k|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|   927k|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|   927k|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1709|   463k|  _internal_mutable_elements()->~RepeatedPtrField();
 1710|   463k|}
_ZN6google3api4expr8v1alpha123Expr_CreateStruct_Entry10SharedCtorEPNS_8protobuf5ArenaE:
 1929|  9.09M|inline void Expr_CreateStruct_Entry::SharedCtor(::_pb::Arena* arena) {
 1930|  9.09M|  (void)arena;
 1931|  9.09M|  new (&_impl_) Impl_{
 1932|  9.09M|      decltype(_impl_._has_bits_){}
 1933|  9.09M|    , /*decltype(_impl_._cached_size_)*/{}
 1934|  9.09M|    , decltype(_impl_.value_){nullptr}
 1935|  9.09M|    , decltype(_impl_.id_) { ::int64_t{0} }
 1936|       |
 1937|  9.09M|    , decltype(_impl_.key_kind_){}
 1938|  9.09M|    , /*decltype(_impl_._oneof_case_)*/{}
 1939|  9.09M|  };
 1940|  9.09M|  clear_has_key_kind();
 1941|  9.09M|}
_ZN6google3api4expr8v1alpha123Expr_CreateStruct_Entry10SharedDtorEv:
 1952|  9.09M|inline void Expr_CreateStruct_Entry::SharedDtor() {
 1953|  9.09M|  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  ------------------
  |  |   43|  9.09M|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|  9.09M|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|  18.1M|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  163|  9.09M|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|  18.1M|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|  18.1M|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1954|  9.09M|  if (this != internal_default_instance()) delete _impl_.value_;
  ------------------
  |  Branch (1954:7): [True: 9.09M, False: 0]
  ------------------
 1955|  9.09M|  if (has_key_kind()) {
  ------------------
  |  Branch (1955:7): [True: 8.59M, False: 495k]
  ------------------
 1956|  8.59M|    clear_key_kind();
 1957|  8.59M|  }
 1958|  9.09M|}
_ZN6google3api4expr8v1alpha117Expr_CreateStruct10SharedCtorEPNS_8protobuf5ArenaE:
 2259|  11.2M|inline void Expr_CreateStruct::SharedCtor(::_pb::Arena* arena) {
 2260|  11.2M|  (void)arena;
 2261|  11.2M|  new (&_impl_) Impl_{
 2262|  11.2M|      decltype(_impl_.entries_){arena}
 2263|  11.2M|    , decltype(_impl_.message_name_) {}
 2264|       |
 2265|  11.2M|    , /*decltype(_impl_._cached_size_)*/{}
 2266|  11.2M|  };
 2267|  11.2M|  _impl_.message_name_.InitDefault();
 2268|       |  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
 2269|       |        _impl_.message_name_.Set("", GetArenaForAllocation());
 2270|       |  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
 2271|  11.2M|}
_ZN6google3api4expr8v1alpha117Expr_CreateStruct10SharedDtorEv:
 2282|  11.2M|inline void Expr_CreateStruct::SharedDtor() {
 2283|  11.2M|  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  ------------------
  |  |   43|  11.2M|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|  11.2M|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|  22.4M|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  163|  11.2M|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|  22.4M|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|  22.4M|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2284|  11.2M|  _internal_mutable_entries()->~RepeatedPtrField();
 2285|  11.2M|  _impl_.message_name_.Destroy();
 2286|  11.2M|}
_ZN6google3api4expr8v1alpha118Expr_Comprehension10SharedCtorEPNS_8protobuf5ArenaE:
 2562|   169k|inline void Expr_Comprehension::SharedCtor(::_pb::Arena* arena) {
 2563|   169k|  (void)arena;
 2564|   169k|  new (&_impl_) Impl_{
 2565|   169k|      decltype(_impl_._has_bits_){}
 2566|   169k|    , /*decltype(_impl_._cached_size_)*/{}
 2567|   169k|    , decltype(_impl_.iter_var_) {}
 2568|       |
 2569|   169k|    , decltype(_impl_.accu_var_) {}
 2570|       |
 2571|   169k|    , decltype(_impl_.iter_range_){nullptr}
 2572|   169k|    , decltype(_impl_.accu_init_){nullptr}
 2573|   169k|    , decltype(_impl_.loop_condition_){nullptr}
 2574|   169k|    , decltype(_impl_.loop_step_){nullptr}
 2575|   169k|    , decltype(_impl_.result_){nullptr}
 2576|   169k|  };
 2577|   169k|  _impl_.iter_var_.InitDefault();
 2578|       |  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
 2579|       |        _impl_.iter_var_.Set("", GetArenaForAllocation());
 2580|       |  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
 2581|   169k|  _impl_.accu_var_.InitDefault();
 2582|       |  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
 2583|       |        _impl_.accu_var_.Set("", GetArenaForAllocation());
 2584|       |  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
 2585|   169k|}
_ZN6google3api4expr8v1alpha118Expr_Comprehension10SharedDtorEv:
 2596|   169k|inline void Expr_Comprehension::SharedDtor() {
 2597|   169k|  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  ------------------
  |  |   43|   169k|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|   169k|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|   339k|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  163|   169k|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|   339k|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|   339k|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2598|   169k|  _impl_.iter_var_.Destroy();
 2599|   169k|  _impl_.accu_var_.Destroy();
 2600|   169k|  if (this != internal_default_instance()) delete _impl_.iter_range_;
  ------------------
  |  Branch (2600:7): [True: 169k, False: 0]
  ------------------
 2601|   169k|  if (this != internal_default_instance()) delete _impl_.accu_init_;
  ------------------
  |  Branch (2601:7): [True: 169k, False: 0]
  ------------------
 2602|   169k|  if (this != internal_default_instance()) delete _impl_.loop_condition_;
  ------------------
  |  Branch (2602:7): [True: 169k, False: 0]
  ------------------
 2603|   169k|  if (this != internal_default_instance()) delete _impl_.loop_step_;
  ------------------
  |  Branch (2603:7): [True: 169k, False: 0]
  ------------------
 2604|   169k|  if (this != internal_default_instance()) delete _impl_.result_;
  ------------------
  |  Branch (2604:7): [True: 169k, False: 0]
  ------------------
 2605|   169k|}
_ZN6google3api4expr8v1alpha14Expr10SharedCtorEPNS_8protobuf5ArenaE:
 3161|   243M|inline void Expr::SharedCtor(::_pb::Arena* arena) {
 3162|   243M|  (void)arena;
 3163|   243M|  new (&_impl_) Impl_{
 3164|   243M|      decltype(_impl_.id_) { ::int64_t{0} }
 3165|       |
 3166|   243M|    , decltype(_impl_.expr_kind_){}
 3167|   243M|    , /*decltype(_impl_._cached_size_)*/{}
 3168|   243M|    , /*decltype(_impl_._oneof_case_)*/{}
 3169|   243M|  };
 3170|   243M|  clear_has_expr_kind();
 3171|   243M|}
_ZN6google3api4expr8v1alpha14Expr10SharedDtorEv:
 3182|   246M|inline void Expr::SharedDtor() {
 3183|   246M|  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  ------------------
  |  |   43|   246M|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|   246M|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|   493M|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  163|   246M|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|   493M|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|   493M|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3184|   246M|  if (has_expr_kind()) {
  ------------------
  |  Branch (3184:7): [True: 218M, False: 28.3M]
  ------------------
 3185|   218M|    clear_expr_kind();
 3186|   218M|  }
 3187|   246M|}
_ZN6google3api4expr8v1alpha18Constant10SharedCtorEPNS_8protobuf5ArenaE:
 3708|  45.9M|inline void Constant::SharedCtor(::_pb::Arena* arena) {
 3709|  45.9M|  (void)arena;
 3710|  45.9M|  new (&_impl_) Impl_{
 3711|  45.9M|      decltype(_impl_.constant_kind_){}
 3712|  45.9M|    , /*decltype(_impl_._cached_size_)*/{}
 3713|  45.9M|    , /*decltype(_impl_._oneof_case_)*/{}
 3714|  45.9M|  };
 3715|  45.9M|  clear_has_constant_kind();
 3716|  45.9M|}
_ZN6google3api4expr8v1alpha18Constant10SharedDtorEv:
 3727|  45.9M|inline void Constant::SharedDtor() {
 3728|  45.9M|  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  ------------------
  |  |   43|  45.9M|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|  45.9M|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|  91.8M|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  163|  45.9M|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|  91.8M|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|  91.8M|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3729|  45.9M|  if (has_constant_kind()) {
  ------------------
  |  Branch (3729:7): [True: 45.9M, False: 0]
  ------------------
 3730|  45.9M|    clear_constant_kind();
 3731|  45.9M|  }
 3732|  45.9M|}
_ZN6google3api4expr8v1alpha110SourceInfo10SharedCtorEPNS_8protobuf5ArenaE:
 4210|  5.00k|inline void SourceInfo::SharedCtor(::_pb::Arena* arena) {
 4211|  5.00k|  (void)arena;
 4212|  5.00k|  new (&_impl_) Impl_{
 4213|  5.00k|      decltype(_impl_.line_offsets_) { arena }
 4214|  5.00k|    ,/* _impl_._line_offsets_cached_byte_size_ = */ { 0 }
 4215|       |
 4216|  5.00k|    , /*decltype(_impl_.positions_)*/{::_pbi::ArenaInitialized(), arena}
 4217|  5.00k|    , /*decltype(_impl_.macro_calls_)*/{::_pbi::ArenaInitialized(), arena}
 4218|  5.00k|    , decltype(_impl_.syntax_version_) {}
 4219|       |
 4220|  5.00k|    , decltype(_impl_.location_) {}
 4221|       |
 4222|  5.00k|    , /*decltype(_impl_._cached_size_)*/{}
 4223|  5.00k|  };
 4224|  5.00k|  _impl_.syntax_version_.InitDefault();
 4225|       |  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
 4226|       |        _impl_.syntax_version_.Set("", GetArenaForAllocation());
 4227|       |  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
 4228|  5.00k|  _impl_.location_.InitDefault();
 4229|       |  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
 4230|       |        _impl_.location_.Set("", GetArenaForAllocation());
 4231|       |  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
 4232|  5.00k|}
_ZN6google3api4expr8v1alpha110SourceInfo10SharedDtorEv:
 4243|  7.50k|inline void SourceInfo::SharedDtor() {
 4244|  7.50k|  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  ------------------
  |  |   43|  7.50k|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|  7.50k|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|  15.0k|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  163|  7.50k|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|  15.0k|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|  15.0k|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4245|  7.50k|  _impl_.line_offsets_.~RepeatedField();
 4246|  7.50k|  _impl_.positions_.~MapField();
 4247|  7.50k|  _impl_.macro_calls_.~MapField();
 4248|  7.50k|  _impl_.syntax_version_.Destroy();
 4249|  7.50k|  _impl_.location_.Destroy();
 4250|  7.50k|}

_ZN6google3api4expr8v1alpha110ParsedExprC2Ev:
  153|  12.5k|  inline ParsedExpr() : ParsedExpr(nullptr) {}
_ZN6google3api4expr8v1alpha110ParsedExprC2EOS3_:
  159|  10.0k|    : ParsedExpr() {
  160|  10.0k|    *this = ::std::move(from);
  161|  10.0k|  }
_ZN6google3api4expr8v1alpha110ParsedExpraSEOS3_:
  167|  10.0k|  inline ParsedExpr& operator=(ParsedExpr&& from) noexcept {
  168|  10.0k|    if (this == &from) return *this;
  ------------------
  |  Branch (168:9): [True: 0, False: 10.0k]
  ------------------
  169|  10.0k|    if (GetOwningArena() == from.GetOwningArena()
  ------------------
  |  Branch (169:9): [True: 10.0k, False: 0]
  ------------------
  170|       |  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
  171|       |        && GetOwningArena() != nullptr
  172|       |  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
  173|  10.0k|    ) {
  174|  10.0k|      InternalSwap(&from);
  175|  10.0k|    } else {
  176|      0|      CopyFrom(from);
  177|      0|    }
  178|  10.0k|    return *this;
  179|  10.0k|  }
_ZN6google3api4expr8v1alpha110ParsedExpr25internal_default_instanceEv:
  200|  30.0k|  static inline const ParsedExpr* internal_default_instance() {
  201|  30.0k|    return reinterpret_cast<const ParsedExpr*>(
  202|  30.0k|               &_ParsedExpr_default_instance_);
  203|  30.0k|  }
_ZN6google3api4expr8v1alpha110Expr_Ident9MergeFromERKS3_:
  412|  65.0M|  void MergeFrom( const Expr_Ident& from) {
  413|  65.0M|    Expr_Ident::MergeImpl(*this, from);
  414|  65.0M|  }
_ZN6google3api4expr8v1alpha111Expr_Select25internal_default_instanceEv:
  539|   413k|  static inline const Expr_Select* internal_default_instance() {
  540|   413k|    return reinterpret_cast<const Expr_Select*>(
  541|   413k|               &_Expr_Select_default_instance_);
  542|   413k|  }
_ZN6google3api4expr8v1alpha111Expr_Select9MergeFromERKS3_:
  576|   404k|  void MergeFrom( const Expr_Select& from) {
  577|   404k|    Expr_Select::MergeImpl(*this, from);
  578|   404k|  }
_ZN6google3api4expr8v1alpha19Expr_Call25internal_default_instanceEv:
  732|  93.7M|  static inline const Expr_Call* internal_default_instance() {
  733|  93.7M|    return reinterpret_cast<const Expr_Call*>(
  734|  93.7M|               &_Expr_Call_default_instance_);
  735|  93.7M|  }
_ZN6google3api4expr8v1alpha19Expr_Call9MergeFromERKS3_:
  769|  92.9M|  void MergeFrom( const Expr_Call& from) {
  770|  92.9M|    Expr_Call::MergeImpl(*this, from);
  771|  92.9M|  }
_ZN6google3api4expr8v1alpha115Expr_CreateList9MergeFromERKS3_:
  972|   454k|  void MergeFrom( const Expr_CreateList& from) {
  973|   454k|    Expr_CreateList::MergeImpl(*this, from);
  974|   454k|  }
_ZN6google3api4expr8v1alpha123Expr_CreateStruct_EntryC2Ev:
 1052|   991k|  inline Expr_CreateStruct_Entry() : Expr_CreateStruct_Entry(nullptr) {}
_ZN6google3api4expr8v1alpha123Expr_CreateStruct_EntryaSERKS3_:
 1062|  3.19k|  inline Expr_CreateStruct_Entry& operator=(const Expr_CreateStruct_Entry& from) {
 1063|  3.19k|    CopyFrom(from);
 1064|  3.19k|    return *this;
 1065|  3.19k|  }
_ZN6google3api4expr8v1alpha123Expr_CreateStruct_EntryaSEOS3_:
 1066|   492k|  inline Expr_CreateStruct_Entry& operator=(Expr_CreateStruct_Entry&& from) noexcept {
 1067|   492k|    if (this == &from) return *this;
  ------------------
  |  Branch (1067:9): [True: 0, False: 492k]
  ------------------
 1068|   492k|    if (GetOwningArena() == from.GetOwningArena()
  ------------------
  |  Branch (1068:9): [True: 492k, False: 0]
  ------------------
 1069|       |  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
 1070|       |        && GetOwningArena() != nullptr
 1071|       |  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
 1072|   492k|    ) {
 1073|   492k|      InternalSwap(&from);
 1074|   492k|    } else {
 1075|      0|      CopyFrom(from);
 1076|      0|    }
 1077|   492k|    return *this;
 1078|   492k|  }
_ZN6google3api4expr8v1alpha123Expr_CreateStruct_Entry25internal_default_instanceEv:
 1105|  9.09M|  static inline const Expr_CreateStruct_Entry* internal_default_instance() {
 1106|  9.09M|    return reinterpret_cast<const Expr_CreateStruct_Entry*>(
 1107|  9.09M|               &_Expr_CreateStruct_Entry_default_instance_);
 1108|  9.09M|  }
_ZN6google3api4expr8v1alpha123Expr_CreateStruct_Entry9MergeFromERKS3_:
 1142|  8.10M|  void MergeFrom( const Expr_CreateStruct_Entry& from) {
 1143|  8.10M|    Expr_CreateStruct_Entry::MergeImpl(*this, from);
 1144|  8.10M|  }
_ZN6google3api4expr8v1alpha123Expr_CreateStruct_Entry5Impl_12KeyKindUnionC2Ev:
 1270|  9.09M|      constexpr KeyKindUnion() : _constinit_{} {}
_ZN6google3api4expr8v1alpha117Expr_CreateStruct9MergeFromERKS3_:
 1369|  10.5M|  void MergeFrom( const Expr_CreateStruct& from) {
 1370|  10.5M|    Expr_CreateStruct::MergeImpl(*this, from);
 1371|  10.5M|  }
_ZN6google3api4expr8v1alpha118Expr_Comprehension25internal_default_instanceEv:
 1520|   848k|  static inline const Expr_Comprehension* internal_default_instance() {
 1521|   848k|    return reinterpret_cast<const Expr_Comprehension*>(
 1522|   848k|               &_Expr_Comprehension_default_instance_);
 1523|   848k|  }
_ZN6google3api4expr8v1alpha118Expr_Comprehension9MergeFromERKS3_:
 1557|   165k|  void MergeFrom( const Expr_Comprehension& from) {
 1558|   165k|    Expr_Comprehension::MergeImpl(*this, from);
 1559|   165k|  }
_ZN6google3api4expr8v1alpha14ExprC2Ev:
 1740|  30.3M|  inline Expr() : Expr(nullptr) {}
_ZN6google3api4expr8v1alpha14ExprC2EOS3_:
 1746|  23.6M|    : Expr() {
 1747|  23.6M|    *this = ::std::move(from);
 1748|  23.6M|  }
_ZN6google3api4expr8v1alpha14ExpraSERKS3_:
 1750|  3.90M|  inline Expr& operator=(const Expr& from) {
 1751|  3.90M|    CopyFrom(from);
 1752|  3.90M|    return *this;
 1753|  3.90M|  }
_ZN6google3api4expr8v1alpha14ExpraSEOS3_:
 1754|  23.7M|  inline Expr& operator=(Expr&& from) noexcept {
 1755|  23.7M|    if (this == &from) return *this;
  ------------------
  |  Branch (1755:9): [True: 0, False: 23.7M]
  ------------------
 1756|  23.7M|    if (GetOwningArena() == from.GetOwningArena()
  ------------------
  |  Branch (1756:9): [True: 23.7M, False: 0]
  ------------------
 1757|       |  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
 1758|       |        && GetOwningArena() != nullptr
 1759|       |  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
 1760|  23.7M|    ) {
 1761|  23.7M|      InternalSwap(&from);
 1762|  23.7M|    } else {
 1763|      0|      CopyFrom(from);
 1764|      0|    }
 1765|  23.7M|    return *this;
 1766|  23.7M|  }
_ZN6google3api4expr8v1alpha14Expr16default_instanceEv:
 1784|   674k|  static const Expr& default_instance() {
 1785|   674k|    return *internal_default_instance();
 1786|   674k|  }
_ZN6google3api4expr8v1alpha14Expr25internal_default_instanceEv:
 1798|   674k|  static inline const Expr* internal_default_instance() {
 1799|   674k|    return reinterpret_cast<const Expr*>(
 1800|   674k|               &_Expr_default_instance_);
 1801|   674k|  }
_ZN6google3api4expr8v1alpha14Expr9MergeFromERKS3_:
 1835|   213M|  void MergeFrom( const Expr& from) {
 1836|   213M|    Expr::MergeImpl(*this, from);
 1837|   213M|  }
_ZN6google3api4expr8v1alpha14Expr5Impl_13ExprKindUnionC2Ev:
 2049|   246M|      constexpr ExprKindUnion() : _constinit_{} {}
_ZN6google3api4expr8v1alpha18Constant9MergeFromERKS3_:
 2167|  44.8M|  void MergeFrom( const Constant& from) {
 2168|  44.8M|    Constant::MergeImpl(*this, from);
 2169|  44.8M|  }
_ZN6google3api4expr8v1alpha18Constant5Impl_17ConstantKindUnionC2Ev:
 2373|  45.9M|      constexpr ConstantKindUnion() : _constinit_{} {}
_ZN6google3api4expr8v1alpha110SourceInfoC2Ev:
 2442|  2.50k|  inline SourceInfo() : SourceInfo(nullptr) {}
_ZN6google3api4expr8v1alpha110SourceInfoaSEOS3_:
 2456|  2.50k|  inline SourceInfo& operator=(SourceInfo&& from) noexcept {
 2457|  2.50k|    if (this == &from) return *this;
  ------------------
  |  Branch (2457:9): [True: 0, False: 2.50k]
  ------------------
 2458|  2.50k|    if (GetOwningArena() == from.GetOwningArena()
  ------------------
  |  Branch (2458:9): [True: 2.50k, False: 0]
  ------------------
 2459|       |  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
 2460|       |        && GetOwningArena() != nullptr
 2461|       |  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
 2462|  2.50k|    ) {
 2463|  2.50k|      InternalSwap(&from);
 2464|  2.50k|    } else {
 2465|      0|      CopyFrom(from);
 2466|      0|    }
 2467|  2.50k|    return *this;
 2468|  2.50k|  }
_ZN6google3api4expr8v1alpha110ParsedExpr22_internal_mutable_exprEv:
 2965|  2.50k|inline ::google::api::expr::v1alpha1::Expr* ParsedExpr::_internal_mutable_expr() {
 2966|  2.50k|  _impl_._has_bits_[0] |= 0x00000001u;
 2967|  2.50k|  if (_impl_.expr_ == nullptr) {
  ------------------
  |  Branch (2967:7): [True: 2.50k, False: 0]
  ------------------
 2968|  2.50k|    auto* p = CreateMaybeMessage<::google::api::expr::v1alpha1::Expr>(GetArenaForAllocation());
 2969|  2.50k|    _impl_.expr_ = p;
 2970|  2.50k|  }
 2971|  2.50k|  return _impl_.expr_;
 2972|  2.50k|}
_ZN6google3api4expr8v1alpha110ParsedExpr12mutable_exprEv:
 2973|  2.50k|inline ::google::api::expr::v1alpha1::Expr* ParsedExpr::mutable_expr() {
 2974|  2.50k|  ::google::api::expr::v1alpha1::Expr* _msg = _internal_mutable_expr();
 2975|       |  // @@protoc_insertion_point(field_mutable:google.api.expr.v1alpha1.ParsedExpr.expr)
 2976|  2.50k|  return _msg;
 2977|  2.50k|}
_ZN6google3api4expr8v1alpha110ParsedExpr29_internal_mutable_source_infoEv:
 3052|  2.50k|inline ::google::api::expr::v1alpha1::SourceInfo* ParsedExpr::_internal_mutable_source_info() {
 3053|  2.50k|  _impl_._has_bits_[0] |= 0x00000002u;
 3054|  2.50k|  if (_impl_.source_info_ == nullptr) {
  ------------------
  |  Branch (3054:7): [True: 2.50k, False: 0]
  ------------------
 3055|  2.50k|    auto* p = CreateMaybeMessage<::google::api::expr::v1alpha1::SourceInfo>(GetArenaForAllocation());
 3056|  2.50k|    _impl_.source_info_ = p;
 3057|  2.50k|  }
 3058|  2.50k|  return _impl_.source_info_;
 3059|  2.50k|}
_ZN6google3api4expr8v1alpha110ParsedExpr19mutable_source_infoEv:
 3060|  2.50k|inline ::google::api::expr::v1alpha1::SourceInfo* ParsedExpr::mutable_source_info() {
 3061|  2.50k|  ::google::api::expr::v1alpha1::SourceInfo* _msg = _internal_mutable_source_info();
 3062|       |  // @@protoc_insertion_point(field_mutable:google.api.expr.v1alpha1.ParsedExpr.source_info)
 3063|  2.50k|  return _msg;
 3064|  2.50k|}
_ZNK6google3api4expr8v1alpha110Expr_Ident4nameEv:
 3093|  7.13k|inline const std::string& Expr_Ident::name() const {
 3094|       |  // @@protoc_insertion_point(field_get:google.api.expr.v1alpha1.Expr.Ident.name)
 3095|  7.13k|  return _internal_name();
 3096|  7.13k|}
_ZNK6google3api4expr8v1alpha110Expr_Ident14_internal_nameEv:
 3109|   130M|inline const std::string& Expr_Ident::_internal_name() const {
 3110|   130M|  return _impl_.name_.Get();
 3111|   130M|}
_ZN6google3api4expr8v1alpha110Expr_Ident18_internal_set_nameERKNSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEE:
 3112|  65.0M|inline void Expr_Ident::_internal_set_name(const std::string& value) {
 3113|  65.0M|  ;
 3114|       |
 3115|       |
 3116|  65.0M|  _impl_.name_.Set(value, GetArenaForAllocation());
 3117|  65.0M|}
_ZNK6google3api4expr8v1alpha111Expr_Select17_internal_operandEv:
 3150|   409k|inline const ::google::api::expr::v1alpha1::Expr& Expr_Select::_internal_operand() const {
 3151|   409k|  const ::google::api::expr::v1alpha1::Expr* p = _impl_.operand_;
 3152|   409k|  return p != nullptr ? *p : reinterpret_cast<const ::google::api::expr::v1alpha1::Expr&>(
  ------------------
  |  Branch (3152:10): [True: 409k, False: 0]
  ------------------
 3153|      0|      ::google::api::expr::v1alpha1::_Expr_default_instance_);
 3154|   409k|}
_ZNK6google3api4expr8v1alpha111Expr_Select7operandEv:
 3155|  4.98k|inline const ::google::api::expr::v1alpha1::Expr& Expr_Select::operand() const {
 3156|       |  // @@protoc_insertion_point(field_get:google.api.expr.v1alpha1.Expr.Select.operand)
 3157|  4.98k|  return _internal_operand();
 3158|  4.98k|}
_ZN6google3api4expr8v1alpha111Expr_Select25_internal_mutable_operandEv:
 3194|   413k|inline ::google::api::expr::v1alpha1::Expr* Expr_Select::_internal_mutable_operand() {
 3195|   413k|  _impl_._has_bits_[0] |= 0x00000001u;
 3196|   413k|  if (_impl_.operand_ == nullptr) {
  ------------------
  |  Branch (3196:7): [True: 413k, False: 0]
  ------------------
 3197|   413k|    auto* p = CreateMaybeMessage<::google::api::expr::v1alpha1::Expr>(GetArenaForAllocation());
 3198|   413k|    _impl_.operand_ = p;
 3199|   413k|  }
 3200|   413k|  return _impl_.operand_;
 3201|   413k|}
_ZN6google3api4expr8v1alpha111Expr_Select15mutable_operandEv:
 3202|  9.03k|inline ::google::api::expr::v1alpha1::Expr* Expr_Select::mutable_operand() {
 3203|  9.03k|  ::google::api::expr::v1alpha1::Expr* _msg = _internal_mutable_operand();
 3204|       |  // @@protoc_insertion_point(field_mutable:google.api.expr.v1alpha1.Expr.Select.operand)
 3205|  9.03k|  return _msg;
 3206|  9.03k|}
_ZNK6google3api4expr8v1alpha111Expr_Select5fieldEv:
 3231|  2.97k|inline const std::string& Expr_Select::field() const {
 3232|       |  // @@protoc_insertion_point(field_get:google.api.expr.v1alpha1.Expr.Select.field)
 3233|  2.97k|  return _internal_field();
 3234|  2.97k|}
_ZNK6google3api4expr8v1alpha111Expr_Select15_internal_fieldEv:
 3247|   812k|inline const std::string& Expr_Select::_internal_field() const {
 3248|   812k|  return _impl_.field_.Get();
 3249|   812k|}
_ZN6google3api4expr8v1alpha111Expr_Select19_internal_set_fieldERKNSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEE:
 3250|   404k|inline void Expr_Select::_internal_set_field(const std::string& value) {
 3251|   404k|  ;
 3252|       |
 3253|       |
 3254|   404k|  _impl_.field_.Set(value, GetArenaForAllocation());
 3255|   404k|}
_ZN6google3api4expr8v1alpha111Expr_Select13set_test_onlyEb:
 3282|    379|inline void Expr_Select::set_test_only(bool value) {
 3283|    379|  _internal_set_test_only(value);
 3284|       |  // @@protoc_insertion_point(field_set:google.api.expr.v1alpha1.Expr.Select.test_only)
 3285|    379|}
_ZNK6google3api4expr8v1alpha111Expr_Select19_internal_test_onlyEv:
 3286|   405k|inline bool Expr_Select::_internal_test_only() const {
 3287|   405k|  return _impl_.test_only_;
 3288|   405k|}
_ZN6google3api4expr8v1alpha111Expr_Select23_internal_set_test_onlyEb:
 3289|  1.17k|inline void Expr_Select::_internal_set_test_only(bool value) {
 3290|  1.17k|  ;
 3291|  1.17k|  _impl_.test_only_ = value;
 3292|  1.17k|}
_ZNK6google3api4expr8v1alpha19Expr_Call16_internal_targetEv:
 3308|  91.7k|inline const ::google::api::expr::v1alpha1::Expr& Expr_Call::_internal_target() const {
 3309|  91.7k|  const ::google::api::expr::v1alpha1::Expr* p = _impl_.target_;
 3310|  91.7k|  return p != nullptr ? *p : reinterpret_cast<const ::google::api::expr::v1alpha1::Expr&>(
  ------------------
  |  Branch (3310:10): [True: 91.7k, False: 0]
  ------------------
 3311|      0|      ::google::api::expr::v1alpha1::_Expr_default_instance_);
 3312|  91.7k|}
_ZN6google3api4expr8v1alpha19Expr_Call24_internal_mutable_targetEv:
 3352|  94.7k|inline ::google::api::expr::v1alpha1::Expr* Expr_Call::_internal_mutable_target() {
 3353|  94.7k|  _impl_._has_bits_[0] |= 0x00000001u;
 3354|  94.7k|  if (_impl_.target_ == nullptr) {
  ------------------
  |  Branch (3354:7): [True: 94.7k, False: 0]
  ------------------
 3355|  94.7k|    auto* p = CreateMaybeMessage<::google::api::expr::v1alpha1::Expr>(GetArenaForAllocation());
 3356|  94.7k|    _impl_.target_ = p;
 3357|  94.7k|  }
 3358|  94.7k|  return _impl_.target_;
 3359|  94.7k|}
_ZN6google3api4expr8v1alpha19Expr_Call14mutable_targetEv:
 3360|  2.96k|inline ::google::api::expr::v1alpha1::Expr* Expr_Call::mutable_target() {
 3361|  2.96k|  ::google::api::expr::v1alpha1::Expr* _msg = _internal_mutable_target();
 3362|       |  // @@protoc_insertion_point(field_mutable:google.api.expr.v1alpha1.Expr.Call.target)
 3363|  2.96k|  return _msg;
 3364|  2.96k|}
_ZNK6google3api4expr8v1alpha19Expr_Call18_internal_functionEv:
 3405|   185M|inline const std::string& Expr_Call::_internal_function() const {
 3406|   185M|  return _impl_.function_.Get();
 3407|   185M|}
_ZN6google3api4expr8v1alpha19Expr_Call22_internal_set_functionERKNSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEE:
 3408|  92.9M|inline void Expr_Call::_internal_set_function(const std::string& value) {
 3409|  92.9M|  ;
 3410|       |
 3411|       |
 3412|  92.9M|  _impl_.function_.Set(value, GetArenaForAllocation());
 3413|  92.9M|}
_ZN6google3api4expr8v1alpha19Expr_Call18_internal_add_argsEv:
 3458|  2.03M|inline ::google::api::expr::v1alpha1::Expr* Expr_Call::_internal_add_args() {
 3459|  2.03M|  return _internal_mutable_args()->Add();
 3460|  2.03M|}
_ZN6google3api4expr8v1alpha19Expr_Call8add_argsEv:
 3461|  2.03M|inline ::google::api::expr::v1alpha1::Expr* Expr_Call::add_args() {
 3462|  2.03M|  ::google::api::expr::v1alpha1::Expr* _add = _internal_add_args();
 3463|       |  // @@protoc_insertion_point(field_add:google.api.expr.v1alpha1.Expr.Call.args)
 3464|  2.03M|  return _add;
 3465|  2.03M|}
_ZNK6google3api4expr8v1alpha19Expr_Call14_internal_argsEv:
 3472|  92.9M|Expr_Call::_internal_args() const {
 3473|  92.9M|  return _impl_.args_;
 3474|  92.9M|}
_ZN6google3api4expr8v1alpha19Expr_Call22_internal_mutable_argsEv:
 3476|   188M|Expr_Call::_internal_mutable_args() {
 3477|   188M|  return &_impl_.args_;
 3478|   188M|}
_ZN6google3api4expr8v1alpha115Expr_CreateList22_internal_add_elementsEv:
 3510|   694k|inline ::google::api::expr::v1alpha1::Expr* Expr_CreateList::_internal_add_elements() {
 3511|   694k|  return _internal_mutable_elements()->Add();
 3512|   694k|}
_ZN6google3api4expr8v1alpha115Expr_CreateList12add_elementsEv:
 3513|   694k|inline ::google::api::expr::v1alpha1::Expr* Expr_CreateList::add_elements() {
 3514|   694k|  ::google::api::expr::v1alpha1::Expr* _add = _internal_add_elements();
 3515|       |  // @@protoc_insertion_point(field_add:google.api.expr.v1alpha1.Expr.CreateList.elements)
 3516|   694k|  return _add;
 3517|   694k|}
_ZNK6google3api4expr8v1alpha115Expr_CreateList18_internal_elementsEv:
 3524|   454k|Expr_CreateList::_internal_elements() const {
 3525|   454k|  return _impl_.elements_;
 3526|   454k|}
_ZN6google3api4expr8v1alpha115Expr_CreateList26_internal_mutable_elementsEv:
 3528|  1.61M|Expr_CreateList::_internal_mutable_elements() {
 3529|  1.61M|  return &_impl_.elements_;
 3530|  1.61M|}
_ZN6google3api4expr8v1alpha123Expr_CreateStruct_Entry6set_idEl:
 3544|   495k|inline void Expr_CreateStruct_Entry::set_id(::int64_t value) {
 3545|   495k|  _internal_set_id(value);
 3546|       |  // @@protoc_insertion_point(field_set:google.api.expr.v1alpha1.Expr.CreateStruct.Entry.id)
 3547|   495k|}
_ZNK6google3api4expr8v1alpha123Expr_CreateStruct_Entry12_internal_idEv:
 3548|  16.2M|inline ::int64_t Expr_CreateStruct_Entry::_internal_id() const {
 3549|  16.2M|  return _impl_.id_;
 3550|  16.2M|}
_ZN6google3api4expr8v1alpha123Expr_CreateStruct_Entry16_internal_set_idEl:
 3551|  8.59M|inline void Expr_CreateStruct_Entry::_internal_set_id(::int64_t value) {
 3552|  8.59M|  ;
 3553|  8.59M|  _impl_.id_ = value;
 3554|  8.59M|}
_ZN6google3api4expr8v1alpha123Expr_CreateStruct_Entry17set_has_field_keyEv:
 3560|  61.0k|inline void Expr_CreateStruct_Entry::set_has_field_key() {
 3561|  61.0k|  _impl_._oneof_case_[0] = kFieldKey;
 3562|  61.0k|}
_ZNK6google3api4expr8v1alpha123Expr_CreateStruct_Entry19_internal_field_keyEv:
 3590|  57.8k|inline const std::string& Expr_CreateStruct_Entry::_internal_field_key() const {
 3591|  57.8k|  if (key_kind_case() != kFieldKey) {
  ------------------
  |  Branch (3591:7): [True: 0, False: 57.8k]
  ------------------
 3592|      0|    return ::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited();
 3593|      0|  }
 3594|  57.8k|  return _impl_.key_kind_.field_key_.Get();
 3595|  57.8k|}
_ZN6google3api4expr8v1alpha123Expr_CreateStruct_Entry23_internal_set_field_keyERKNSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEE:
 3596|  57.8k|inline void Expr_CreateStruct_Entry::_internal_set_field_key(const std::string& value) {
 3597|  57.8k|  if (key_kind_case() != kFieldKey) {
  ------------------
  |  Branch (3597:7): [True: 57.8k, False: 0]
  ------------------
 3598|  57.8k|    clear_key_kind();
 3599|       |
 3600|  57.8k|    set_has_field_key();
 3601|  57.8k|    _impl_.key_kind_.field_key_.InitDefault();
 3602|  57.8k|  }
 3603|       |
 3604|       |
 3605|  57.8k|  _impl_.key_kind_.field_key_.Set(value, GetArenaForAllocation());
 3606|  57.8k|}
_ZN6google3api4expr8v1alpha123Expr_CreateStruct_Entry15set_has_map_keyEv:
 3642|  8.53M|inline void Expr_CreateStruct_Entry::set_has_map_key() {
 3643|  8.53M|  _impl_._oneof_case_[0] = kMapKey;
 3644|  8.53M|}
_ZNK6google3api4expr8v1alpha123Expr_CreateStruct_Entry17_internal_map_keyEv:
 3667|  8.04M|inline const ::google::api::expr::v1alpha1::Expr& Expr_CreateStruct_Entry::_internal_map_key() const {
 3668|  8.04M|  return key_kind_case() == kMapKey
  ------------------
  |  Branch (3668:10): [True: 8.04M, False: 0]
  ------------------
 3669|  8.04M|      ? *_impl_.key_kind_.map_key_
 3670|  8.04M|      : reinterpret_cast<::google::api::expr::v1alpha1::Expr&>(::google::api::expr::v1alpha1::_Expr_default_instance_);
 3671|  8.04M|}
_ZN6google3api4expr8v1alpha123Expr_CreateStruct_Entry25_internal_mutable_map_keyEv:
 3695|  8.53M|inline ::google::api::expr::v1alpha1::Expr* Expr_CreateStruct_Entry::_internal_mutable_map_key() {
 3696|  8.53M|  if (key_kind_case() != kMapKey) {
  ------------------
  |  Branch (3696:7): [True: 8.53M, False: 0]
  ------------------
 3697|  8.53M|    clear_key_kind();
 3698|  8.53M|    set_has_map_key();
 3699|  8.53M|    _impl_.key_kind_.map_key_ = CreateMaybeMessage< ::google::api::expr::v1alpha1::Expr >(GetArenaForAllocation());
 3700|  8.53M|  }
 3701|  8.53M|  return _impl_.key_kind_.map_key_;
 3702|  8.53M|}
_ZN6google3api4expr8v1alpha123Expr_CreateStruct_Entry15mutable_map_keyEv:
 3703|   492k|inline ::google::api::expr::v1alpha1::Expr* Expr_CreateStruct_Entry::mutable_map_key() {
 3704|   492k|  ::google::api::expr::v1alpha1::Expr* _msg = _internal_mutable_map_key();
 3705|       |  // @@protoc_insertion_point(field_mutable:google.api.expr.v1alpha1.Expr.CreateStruct.Entry.map_key)
 3706|   492k|  return _msg;
 3707|   492k|}
_ZNK6google3api4expr8v1alpha123Expr_CreateStruct_Entry15_internal_valueEv:
 3719|  8.10M|inline const ::google::api::expr::v1alpha1::Expr& Expr_CreateStruct_Entry::_internal_value() const {
 3720|  8.10M|  const ::google::api::expr::v1alpha1::Expr* p = _impl_.value_;
 3721|  8.10M|  return p != nullptr ? *p : reinterpret_cast<const ::google::api::expr::v1alpha1::Expr&>(
  ------------------
  |  Branch (3721:10): [True: 8.10M, False: 0]
  ------------------
 3722|      0|      ::google::api::expr::v1alpha1::_Expr_default_instance_);
 3723|  8.10M|}
_ZN6google3api4expr8v1alpha123Expr_CreateStruct_Entry23_internal_mutable_valueEv:
 3763|  8.59M|inline ::google::api::expr::v1alpha1::Expr* Expr_CreateStruct_Entry::_internal_mutable_value() {
 3764|  8.59M|  _impl_._has_bits_[0] |= 0x00000001u;
 3765|  8.59M|  if (_impl_.value_ == nullptr) {
  ------------------
  |  Branch (3765:7): [True: 8.59M, False: 0]
  ------------------
 3766|  8.59M|    auto* p = CreateMaybeMessage<::google::api::expr::v1alpha1::Expr>(GetArenaForAllocation());
 3767|  8.59M|    _impl_.value_ = p;
 3768|  8.59M|  }
 3769|  8.59M|  return _impl_.value_;
 3770|  8.59M|}
_ZN6google3api4expr8v1alpha123Expr_CreateStruct_Entry13mutable_valueEv:
 3771|   495k|inline ::google::api::expr::v1alpha1::Expr* Expr_CreateStruct_Entry::mutable_value() {
 3772|   495k|  ::google::api::expr::v1alpha1::Expr* _msg = _internal_mutable_value();
 3773|       |  // @@protoc_insertion_point(field_mutable:google.api.expr.v1alpha1.Expr.CreateStruct.Entry.value)
 3774|   495k|  return _msg;
 3775|   495k|}
_ZNK6google3api4expr8v1alpha123Expr_CreateStruct_Entry12has_key_kindEv:
 3796|  9.09M|inline bool Expr_CreateStruct_Entry::has_key_kind() const {
 3797|  9.09M|  return key_kind_case() != KEY_KIND_NOT_SET;
 3798|  9.09M|}
_ZN6google3api4expr8v1alpha123Expr_CreateStruct_Entry18clear_has_key_kindEv:
 3799|  9.09M|inline void Expr_CreateStruct_Entry::clear_has_key_kind() {
 3800|  9.09M|  _impl_._oneof_case_[0] = KEY_KIND_NOT_SET;
 3801|  9.09M|}
_ZNK6google3api4expr8v1alpha123Expr_CreateStruct_Entry13key_kind_caseEv:
 3802|  51.5M|inline Expr_CreateStruct_Entry::KeyKindCase Expr_CreateStruct_Entry::key_kind_case() const {
 3803|  51.5M|  return Expr_CreateStruct_Entry::KeyKindCase(_impl_._oneof_case_[0]);
 3804|  51.5M|}
_ZNK6google3api4expr8v1alpha117Expr_CreateStruct22_internal_message_nameEv:
 3829|  10.8M|inline const std::string& Expr_CreateStruct::_internal_message_name() const {
 3830|  10.8M|  return _impl_.message_name_.Get();
 3831|  10.8M|}
_ZN6google3api4expr8v1alpha117Expr_CreateStruct26_internal_set_message_nameERKNSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEE:
 3832|   317k|inline void Expr_CreateStruct::_internal_set_message_name(const std::string& value) {
 3833|   317k|  ;
 3834|       |
 3835|       |
 3836|   317k|  _impl_.message_name_.Set(value, GetArenaForAllocation());
 3837|   317k|}
_ZN6google3api4expr8v1alpha117Expr_CreateStruct21_internal_add_entriesEv:
 3882|   495k|inline ::google::api::expr::v1alpha1::Expr_CreateStruct_Entry* Expr_CreateStruct::_internal_add_entries() {
 3883|   495k|  return _internal_mutable_entries()->Add();
 3884|   495k|}
_ZN6google3api4expr8v1alpha117Expr_CreateStruct11add_entriesEv:
 3885|   495k|inline ::google::api::expr::v1alpha1::Expr_CreateStruct_Entry* Expr_CreateStruct::add_entries() {
 3886|   495k|  ::google::api::expr::v1alpha1::Expr_CreateStruct_Entry* _add = _internal_add_entries();
 3887|       |  // @@protoc_insertion_point(field_add:google.api.expr.v1alpha1.Expr.CreateStruct.entries)
 3888|   495k|  return _add;
 3889|   495k|}
_ZNK6google3api4expr8v1alpha117Expr_CreateStruct17_internal_entriesEv:
 3896|  10.5M|Expr_CreateStruct::_internal_entries() const {
 3897|  10.5M|  return _impl_.entries_;
 3898|  10.5M|}
_ZN6google3api4expr8v1alpha117Expr_CreateStruct25_internal_mutable_entriesEv:
 3900|  22.3M|Expr_CreateStruct::_internal_mutable_entries() {
 3901|  22.3M|  return &_impl_.entries_;
 3902|  22.3M|}
_ZNK6google3api4expr8v1alpha118Expr_Comprehension18_internal_iter_varEv:
 3928|   331k|inline const std::string& Expr_Comprehension::_internal_iter_var() const {
 3929|   331k|  return _impl_.iter_var_.Get();
 3930|   331k|}
_ZN6google3api4expr8v1alpha118Expr_Comprehension22_internal_set_iter_varERKNSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEE:
 3931|   165k|inline void Expr_Comprehension::_internal_set_iter_var(const std::string& value) {
 3932|   165k|  ;
 3933|       |
 3934|       |
 3935|   165k|  _impl_.iter_var_.Set(value, GetArenaForAllocation());
 3936|   165k|}
_ZNK6google3api4expr8v1alpha118Expr_Comprehension20_internal_iter_rangeEv:
 3965|   165k|inline const ::google::api::expr::v1alpha1::Expr& Expr_Comprehension::_internal_iter_range() const {
 3966|   165k|  const ::google::api::expr::v1alpha1::Expr* p = _impl_.iter_range_;
 3967|   165k|  return p != nullptr ? *p : reinterpret_cast<const ::google::api::expr::v1alpha1::Expr&>(
  ------------------
  |  Branch (3967:10): [True: 165k, False: 0]
  ------------------
 3968|      0|      ::google::api::expr::v1alpha1::_Expr_default_instance_);
 3969|   165k|}
_ZN6google3api4expr8v1alpha118Expr_Comprehension28_internal_mutable_iter_rangeEv:
 4009|   169k|inline ::google::api::expr::v1alpha1::Expr* Expr_Comprehension::_internal_mutable_iter_range() {
 4010|   169k|  _impl_._has_bits_[0] |= 0x00000001u;
 4011|   169k|  if (_impl_.iter_range_ == nullptr) {
  ------------------
  |  Branch (4011:7): [True: 169k, False: 0]
  ------------------
 4012|   169k|    auto* p = CreateMaybeMessage<::google::api::expr::v1alpha1::Expr>(GetArenaForAllocation());
 4013|   169k|    _impl_.iter_range_ = p;
 4014|   169k|  }
 4015|   169k|  return _impl_.iter_range_;
 4016|   169k|}
_ZN6google3api4expr8v1alpha118Expr_Comprehension18mutable_iter_rangeEv:
 4017|  3.66k|inline ::google::api::expr::v1alpha1::Expr* Expr_Comprehension::mutable_iter_range() {
 4018|  3.66k|  ::google::api::expr::v1alpha1::Expr* _msg = _internal_mutable_iter_range();
 4019|       |  // @@protoc_insertion_point(field_mutable:google.api.expr.v1alpha1.Expr.Comprehension.iter_range)
 4020|  3.66k|  return _msg;
 4021|  3.66k|}
_ZNK6google3api4expr8v1alpha118Expr_Comprehension18_internal_accu_varEv:
 4062|   331k|inline const std::string& Expr_Comprehension::_internal_accu_var() const {
 4063|   331k|  return _impl_.accu_var_.Get();
 4064|   331k|}
_ZN6google3api4expr8v1alpha118Expr_Comprehension22_internal_set_accu_varERKNSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEE:
 4065|   165k|inline void Expr_Comprehension::_internal_set_accu_var(const std::string& value) {
 4066|   165k|  ;
 4067|       |
 4068|       |
 4069|   165k|  _impl_.accu_var_.Set(value, GetArenaForAllocation());
 4070|   165k|}
_ZNK6google3api4expr8v1alpha118Expr_Comprehension19_internal_accu_initEv:
 4099|   165k|inline const ::google::api::expr::v1alpha1::Expr& Expr_Comprehension::_internal_accu_init() const {
 4100|   165k|  const ::google::api::expr::v1alpha1::Expr* p = _impl_.accu_init_;
 4101|   165k|  return p != nullptr ? *p : reinterpret_cast<const ::google::api::expr::v1alpha1::Expr&>(
  ------------------
  |  Branch (4101:10): [True: 165k, False: 0]
  ------------------
 4102|      0|      ::google::api::expr::v1alpha1::_Expr_default_instance_);
 4103|   165k|}
_ZN6google3api4expr8v1alpha118Expr_Comprehension27_internal_mutable_accu_initEv:
 4143|   169k|inline ::google::api::expr::v1alpha1::Expr* Expr_Comprehension::_internal_mutable_accu_init() {
 4144|   169k|  _impl_._has_bits_[0] |= 0x00000002u;
 4145|   169k|  if (_impl_.accu_init_ == nullptr) {
  ------------------
  |  Branch (4145:7): [True: 169k, False: 0]
  ------------------
 4146|   169k|    auto* p = CreateMaybeMessage<::google::api::expr::v1alpha1::Expr>(GetArenaForAllocation());
 4147|   169k|    _impl_.accu_init_ = p;
 4148|   169k|  }
 4149|   169k|  return _impl_.accu_init_;
 4150|   169k|}
_ZN6google3api4expr8v1alpha118Expr_Comprehension17mutable_accu_initEv:
 4151|  3.66k|inline ::google::api::expr::v1alpha1::Expr* Expr_Comprehension::mutable_accu_init() {
 4152|  3.66k|  ::google::api::expr::v1alpha1::Expr* _msg = _internal_mutable_accu_init();
 4153|       |  // @@protoc_insertion_point(field_mutable:google.api.expr.v1alpha1.Expr.Comprehension.accu_init)
 4154|  3.66k|  return _msg;
 4155|  3.66k|}
_ZNK6google3api4expr8v1alpha118Expr_Comprehension24_internal_loop_conditionEv:
 4186|   165k|inline const ::google::api::expr::v1alpha1::Expr& Expr_Comprehension::_internal_loop_condition() const {
 4187|   165k|  const ::google::api::expr::v1alpha1::Expr* p = _impl_.loop_condition_;
 4188|   165k|  return p != nullptr ? *p : reinterpret_cast<const ::google::api::expr::v1alpha1::Expr&>(
  ------------------
  |  Branch (4188:10): [True: 165k, False: 0]
  ------------------
 4189|      0|      ::google::api::expr::v1alpha1::_Expr_default_instance_);
 4190|   165k|}
_ZN6google3api4expr8v1alpha118Expr_Comprehension32_internal_mutable_loop_conditionEv:
 4230|   169k|inline ::google::api::expr::v1alpha1::Expr* Expr_Comprehension::_internal_mutable_loop_condition() {
 4231|   169k|  _impl_._has_bits_[0] |= 0x00000004u;
 4232|   169k|  if (_impl_.loop_condition_ == nullptr) {
  ------------------
  |  Branch (4232:7): [True: 169k, False: 0]
  ------------------
 4233|   169k|    auto* p = CreateMaybeMessage<::google::api::expr::v1alpha1::Expr>(GetArenaForAllocation());
 4234|   169k|    _impl_.loop_condition_ = p;
 4235|   169k|  }
 4236|   169k|  return _impl_.loop_condition_;
 4237|   169k|}
_ZN6google3api4expr8v1alpha118Expr_Comprehension22mutable_loop_conditionEv:
 4238|  3.66k|inline ::google::api::expr::v1alpha1::Expr* Expr_Comprehension::mutable_loop_condition() {
 4239|  3.66k|  ::google::api::expr::v1alpha1::Expr* _msg = _internal_mutable_loop_condition();
 4240|       |  // @@protoc_insertion_point(field_mutable:google.api.expr.v1alpha1.Expr.Comprehension.loop_condition)
 4241|  3.66k|  return _msg;
 4242|  3.66k|}
_ZNK6google3api4expr8v1alpha118Expr_Comprehension19_internal_loop_stepEv:
 4273|   165k|inline const ::google::api::expr::v1alpha1::Expr& Expr_Comprehension::_internal_loop_step() const {
 4274|   165k|  const ::google::api::expr::v1alpha1::Expr* p = _impl_.loop_step_;
 4275|   165k|  return p != nullptr ? *p : reinterpret_cast<const ::google::api::expr::v1alpha1::Expr&>(
  ------------------
  |  Branch (4275:10): [True: 165k, False: 0]
  ------------------
 4276|      0|      ::google::api::expr::v1alpha1::_Expr_default_instance_);
 4277|   165k|}
_ZN6google3api4expr8v1alpha118Expr_Comprehension27_internal_mutable_loop_stepEv:
 4317|   169k|inline ::google::api::expr::v1alpha1::Expr* Expr_Comprehension::_internal_mutable_loop_step() {
 4318|   169k|  _impl_._has_bits_[0] |= 0x00000008u;
 4319|   169k|  if (_impl_.loop_step_ == nullptr) {
  ------------------
  |  Branch (4319:7): [True: 169k, False: 0]
  ------------------
 4320|   169k|    auto* p = CreateMaybeMessage<::google::api::expr::v1alpha1::Expr>(GetArenaForAllocation());
 4321|   169k|    _impl_.loop_step_ = p;
 4322|   169k|  }
 4323|   169k|  return _impl_.loop_step_;
 4324|   169k|}
_ZN6google3api4expr8v1alpha118Expr_Comprehension17mutable_loop_stepEv:
 4325|  3.66k|inline ::google::api::expr::v1alpha1::Expr* Expr_Comprehension::mutable_loop_step() {
 4326|  3.66k|  ::google::api::expr::v1alpha1::Expr* _msg = _internal_mutable_loop_step();
 4327|       |  // @@protoc_insertion_point(field_mutable:google.api.expr.v1alpha1.Expr.Comprehension.loop_step)
 4328|  3.66k|  return _msg;
 4329|  3.66k|}
_ZNK6google3api4expr8v1alpha118Expr_Comprehension16_internal_resultEv:
 4360|   165k|inline const ::google::api::expr::v1alpha1::Expr& Expr_Comprehension::_internal_result() const {
 4361|   165k|  const ::google::api::expr::v1alpha1::Expr* p = _impl_.result_;
 4362|   165k|  return p != nullptr ? *p : reinterpret_cast<const ::google::api::expr::v1alpha1::Expr&>(
  ------------------
  |  Branch (4362:10): [True: 165k, False: 0]
  ------------------
 4363|      0|      ::google::api::expr::v1alpha1::_Expr_default_instance_);
 4364|   165k|}
_ZN6google3api4expr8v1alpha118Expr_Comprehension24_internal_mutable_resultEv:
 4404|   169k|inline ::google::api::expr::v1alpha1::Expr* Expr_Comprehension::_internal_mutable_result() {
 4405|   169k|  _impl_._has_bits_[0] |= 0x00000010u;
 4406|   169k|  if (_impl_.result_ == nullptr) {
  ------------------
  |  Branch (4406:7): [True: 169k, False: 0]
  ------------------
 4407|   169k|    auto* p = CreateMaybeMessage<::google::api::expr::v1alpha1::Expr>(GetArenaForAllocation());
 4408|   169k|    _impl_.result_ = p;
 4409|   169k|  }
 4410|   169k|  return _impl_.result_;
 4411|   169k|}
_ZN6google3api4expr8v1alpha118Expr_Comprehension14mutable_resultEv:
 4412|  3.66k|inline ::google::api::expr::v1alpha1::Expr* Expr_Comprehension::mutable_result() {
 4413|  3.66k|  ::google::api::expr::v1alpha1::Expr* _msg = _internal_mutable_result();
 4414|       |  // @@protoc_insertion_point(field_mutable:google.api.expr.v1alpha1.Expr.Comprehension.result)
 4415|  3.66k|  return _msg;
 4416|  3.66k|}
_ZNK6google3api4expr8v1alpha14Expr2idEv:
 4445|  1.36M|inline ::int64_t Expr::id() const {
 4446|       |  // @@protoc_insertion_point(field_get:google.api.expr.v1alpha1.Expr.id)
 4447|  1.36M|  return _internal_id();
 4448|  1.36M|}
_ZN6google3api4expr8v1alpha14Expr6set_idEl:
 4449|  5.74M|inline void Expr::set_id(::int64_t value) {
 4450|  5.74M|  _internal_set_id(value);
 4451|       |  // @@protoc_insertion_point(field_set:google.api.expr.v1alpha1.Expr.id)
 4452|  5.74M|}
_ZNK6google3api4expr8v1alpha14Expr12_internal_idEv:
 4453|   428M|inline ::int64_t Expr::_internal_id() const {
 4454|   428M|  return _impl_.id_;
 4455|   428M|}
_ZN6google3api4expr8v1alpha14Expr16_internal_set_idEl:
 4456|   219M|inline void Expr::_internal_set_id(::int64_t value) {
 4457|   219M|  ;
 4458|   219M|  _impl_.id_ = value;
 4459|   219M|}
_ZN6google3api4expr8v1alpha14Expr18set_has_const_exprEv:
 4468|  45.9M|inline void Expr::set_has_const_expr() {
 4469|  45.9M|  _impl_._oneof_case_[0] = kConstExpr;
 4470|  45.9M|}
_ZNK6google3api4expr8v1alpha14Expr20_internal_const_exprEv:
 4493|  44.8M|inline const ::google::api::expr::v1alpha1::Constant& Expr::_internal_const_expr() const {
 4494|  44.8M|  return expr_kind_case() == kConstExpr
  ------------------
  |  Branch (4494:10): [True: 44.8M, False: 0]
  ------------------
 4495|  44.8M|      ? *_impl_.expr_kind_.const_expr_
 4496|  44.8M|      : reinterpret_cast<::google::api::expr::v1alpha1::Constant&>(::google::api::expr::v1alpha1::_Constant_default_instance_);
 4497|  44.8M|}
_ZN6google3api4expr8v1alpha14Expr28_internal_mutable_const_exprEv:
 4521|  45.9M|inline ::google::api::expr::v1alpha1::Constant* Expr::_internal_mutable_const_expr() {
 4522|  45.9M|  if (expr_kind_case() != kConstExpr) {
  ------------------
  |  Branch (4522:7): [True: 45.9M, False: 0]
  ------------------
 4523|  45.9M|    clear_expr_kind();
 4524|  45.9M|    set_has_const_expr();
 4525|  45.9M|    _impl_.expr_kind_.const_expr_ = CreateMaybeMessage< ::google::api::expr::v1alpha1::Constant >(GetArenaForAllocation());
 4526|  45.9M|  }
 4527|  45.9M|  return _impl_.expr_kind_.const_expr_;
 4528|  45.9M|}
_ZN6google3api4expr8v1alpha14Expr18mutable_const_exprEv:
 4529|  1.12M|inline ::google::api::expr::v1alpha1::Constant* Expr::mutable_const_expr() {
 4530|  1.12M|  ::google::api::expr::v1alpha1::Constant* _msg = _internal_mutable_const_expr();
 4531|       |  // @@protoc_insertion_point(field_mutable:google.api.expr.v1alpha1.Expr.const_expr)
 4532|  1.12M|  return _msg;
 4533|  1.12M|}
_ZNK6google3api4expr8v1alpha14Expr14has_ident_exprEv:
 4536|  4.87k|inline bool Expr::has_ident_expr() const {
 4537|  4.87k|  return expr_kind_case() == kIdentExpr;
 4538|  4.87k|}
_ZN6google3api4expr8v1alpha14Expr18set_has_ident_exprEv:
 4542|  66.1M|inline void Expr::set_has_ident_expr() {
 4543|  66.1M|  _impl_._oneof_case_[0] = kIdentExpr;
 4544|  66.1M|}
_ZNK6google3api4expr8v1alpha14Expr20_internal_ident_exprEv:
 4567|  65.0M|inline const ::google::api::expr::v1alpha1::Expr_Ident& Expr::_internal_ident_expr() const {
 4568|  65.0M|  return expr_kind_case() == kIdentExpr
  ------------------
  |  Branch (4568:10): [True: 65.0M, False: 0]
  ------------------
 4569|  65.0M|      ? *_impl_.expr_kind_.ident_expr_
 4570|  65.0M|      : reinterpret_cast<::google::api::expr::v1alpha1::Expr_Ident&>(::google::api::expr::v1alpha1::_Expr_Ident_default_instance_);
 4571|  65.0M|}
_ZNK6google3api4expr8v1alpha14Expr10ident_exprEv:
 4572|  7.13k|inline const ::google::api::expr::v1alpha1::Expr_Ident& Expr::ident_expr() const {
 4573|       |  // @@protoc_insertion_point(field_get:google.api.expr.v1alpha1.Expr.ident_expr)
 4574|  7.13k|  return _internal_ident_expr();
 4575|  7.13k|}
_ZN6google3api4expr8v1alpha14Expr28_internal_mutable_ident_exprEv:
 4595|  66.1M|inline ::google::api::expr::v1alpha1::Expr_Ident* Expr::_internal_mutable_ident_expr() {
 4596|  66.1M|  if (expr_kind_case() != kIdentExpr) {
  ------------------
  |  Branch (4596:7): [True: 66.1M, False: 0]
  ------------------
 4597|  66.1M|    clear_expr_kind();
 4598|  66.1M|    set_has_ident_expr();
 4599|  66.1M|    _impl_.expr_kind_.ident_expr_ = CreateMaybeMessage< ::google::api::expr::v1alpha1::Expr_Ident >(GetArenaForAllocation());
 4600|  66.1M|  }
 4601|  66.1M|  return _impl_.expr_kind_.ident_expr_;
 4602|  66.1M|}
_ZN6google3api4expr8v1alpha14Expr18mutable_ident_exprEv:
 4603|  1.10M|inline ::google::api::expr::v1alpha1::Expr_Ident* Expr::mutable_ident_expr() {
 4604|  1.10M|  ::google::api::expr::v1alpha1::Expr_Ident* _msg = _internal_mutable_ident_expr();
 4605|       |  // @@protoc_insertion_point(field_mutable:google.api.expr.v1alpha1.Expr.ident_expr)
 4606|  1.10M|  return _msg;
 4607|  1.10M|}
_ZNK6google3api4expr8v1alpha14Expr15has_select_exprEv:
 4610|    551|inline bool Expr::has_select_expr() const {
 4611|    551|  return expr_kind_case() == kSelectExpr;
 4612|    551|}
_ZN6google3api4expr8v1alpha14Expr19set_has_select_exprEv:
 4616|   413k|inline void Expr::set_has_select_expr() {
 4617|   413k|  _impl_._oneof_case_[0] = kSelectExpr;
 4618|   413k|}
_ZNK6google3api4expr8v1alpha14Expr21_internal_select_exprEv:
 4641|   409k|inline const ::google::api::expr::v1alpha1::Expr_Select& Expr::_internal_select_expr() const {
 4642|   409k|  return expr_kind_case() == kSelectExpr
  ------------------
  |  Branch (4642:10): [True: 409k, False: 0]
  ------------------
 4643|   409k|      ? *_impl_.expr_kind_.select_expr_
 4644|   409k|      : reinterpret_cast<::google::api::expr::v1alpha1::Expr_Select&>(::google::api::expr::v1alpha1::_Expr_Select_default_instance_);
 4645|   409k|}
_ZNK6google3api4expr8v1alpha14Expr11select_exprEv:
 4646|  4.98k|inline const ::google::api::expr::v1alpha1::Expr_Select& Expr::select_expr() const {
 4647|       |  // @@protoc_insertion_point(field_get:google.api.expr.v1alpha1.Expr.select_expr)
 4648|  4.98k|  return _internal_select_expr();
 4649|  4.98k|}
_ZN6google3api4expr8v1alpha14Expr29_internal_mutable_select_exprEv:
 4669|   413k|inline ::google::api::expr::v1alpha1::Expr_Select* Expr::_internal_mutable_select_expr() {
 4670|   413k|  if (expr_kind_case() != kSelectExpr) {
  ------------------
  |  Branch (4670:7): [True: 413k, False: 0]
  ------------------
 4671|   413k|    clear_expr_kind();
 4672|   413k|    set_has_select_expr();
 4673|   413k|    _impl_.expr_kind_.select_expr_ = CreateMaybeMessage< ::google::api::expr::v1alpha1::Expr_Select >(GetArenaForAllocation());
 4674|   413k|  }
 4675|   413k|  return _impl_.expr_kind_.select_expr_;
 4676|   413k|}
_ZN6google3api4expr8v1alpha14Expr19mutable_select_exprEv:
 4677|  9.03k|inline ::google::api::expr::v1alpha1::Expr_Select* Expr::mutable_select_expr() {
 4678|  9.03k|  ::google::api::expr::v1alpha1::Expr_Select* _msg = _internal_mutable_select_expr();
 4679|       |  // @@protoc_insertion_point(field_mutable:google.api.expr.v1alpha1.Expr.select_expr)
 4680|  9.03k|  return _msg;
 4681|  9.03k|}
_ZN6google3api4expr8v1alpha14Expr17set_has_call_exprEv:
 4690|  93.7M|inline void Expr::set_has_call_expr() {
 4691|  93.7M|  _impl_._oneof_case_[0] = kCallExpr;
 4692|  93.7M|}
_ZNK6google3api4expr8v1alpha14Expr19_internal_call_exprEv:
 4715|  92.9M|inline const ::google::api::expr::v1alpha1::Expr_Call& Expr::_internal_call_expr() const {
 4716|  92.9M|  return expr_kind_case() == kCallExpr
  ------------------
  |  Branch (4716:10): [True: 92.9M, False: 0]
  ------------------
 4717|  92.9M|      ? *_impl_.expr_kind_.call_expr_
 4718|  92.9M|      : reinterpret_cast<::google::api::expr::v1alpha1::Expr_Call&>(::google::api::expr::v1alpha1::_Expr_Call_default_instance_);
 4719|  92.9M|}
_ZN6google3api4expr8v1alpha14Expr27_internal_mutable_call_exprEv:
 4743|  93.7M|inline ::google::api::expr::v1alpha1::Expr_Call* Expr::_internal_mutable_call_expr() {
 4744|  93.7M|  if (expr_kind_case() != kCallExpr) {
  ------------------
  |  Branch (4744:7): [True: 93.7M, False: 0]
  ------------------
 4745|  93.7M|    clear_expr_kind();
 4746|  93.7M|    set_has_call_expr();
 4747|  93.7M|    _impl_.expr_kind_.call_expr_ = CreateMaybeMessage< ::google::api::expr::v1alpha1::Expr_Call >(GetArenaForAllocation());
 4748|  93.7M|  }
 4749|  93.7M|  return _impl_.expr_kind_.call_expr_;
 4750|  93.7M|}
_ZN6google3api4expr8v1alpha14Expr17mutable_call_exprEv:
 4751|   830k|inline ::google::api::expr::v1alpha1::Expr_Call* Expr::mutable_call_expr() {
 4752|   830k|  ::google::api::expr::v1alpha1::Expr_Call* _msg = _internal_mutable_call_expr();
 4753|       |  // @@protoc_insertion_point(field_mutable:google.api.expr.v1alpha1.Expr.call_expr)
 4754|   830k|  return _msg;
 4755|   830k|}
_ZN6google3api4expr8v1alpha14Expr17set_has_list_exprEv:
 4764|   463k|inline void Expr::set_has_list_expr() {
 4765|   463k|  _impl_._oneof_case_[0] = kListExpr;
 4766|   463k|}
_ZNK6google3api4expr8v1alpha14Expr19_internal_list_exprEv:
 4789|   454k|inline const ::google::api::expr::v1alpha1::Expr_CreateList& Expr::_internal_list_expr() const {
 4790|   454k|  return expr_kind_case() == kListExpr
  ------------------
  |  Branch (4790:10): [True: 454k, False: 0]
  ------------------
 4791|   454k|      ? *_impl_.expr_kind_.list_expr_
 4792|   454k|      : reinterpret_cast<::google::api::expr::v1alpha1::Expr_CreateList&>(::google::api::expr::v1alpha1::_Expr_CreateList_default_instance_);
 4793|   454k|}
_ZN6google3api4expr8v1alpha14Expr27_internal_mutable_list_exprEv:
 4817|   463k|inline ::google::api::expr::v1alpha1::Expr_CreateList* Expr::_internal_mutable_list_expr() {
 4818|   463k|  if (expr_kind_case() != kListExpr) {
  ------------------
  |  Branch (4818:7): [True: 463k, False: 0]
  ------------------
 4819|   463k|    clear_expr_kind();
 4820|   463k|    set_has_list_expr();
 4821|   463k|    _impl_.expr_kind_.list_expr_ = CreateMaybeMessage< ::google::api::expr::v1alpha1::Expr_CreateList >(GetArenaForAllocation());
 4822|   463k|  }
 4823|   463k|  return _impl_.expr_kind_.list_expr_;
 4824|   463k|}
_ZN6google3api4expr8v1alpha14Expr17mutable_list_exprEv:
 4825|  9.33k|inline ::google::api::expr::v1alpha1::Expr_CreateList* Expr::mutable_list_expr() {
 4826|  9.33k|  ::google::api::expr::v1alpha1::Expr_CreateList* _msg = _internal_mutable_list_expr();
 4827|       |  // @@protoc_insertion_point(field_mutable:google.api.expr.v1alpha1.Expr.list_expr)
 4828|  9.33k|  return _msg;
 4829|  9.33k|}
_ZN6google3api4expr8v1alpha14Expr19set_has_struct_exprEv:
 4838|  11.2M|inline void Expr::set_has_struct_expr() {
 4839|  11.2M|  _impl_._oneof_case_[0] = kStructExpr;
 4840|  11.2M|}
_ZNK6google3api4expr8v1alpha14Expr21_internal_struct_exprEv:
 4863|  10.5M|inline const ::google::api::expr::v1alpha1::Expr_CreateStruct& Expr::_internal_struct_expr() const {
 4864|  10.5M|  return expr_kind_case() == kStructExpr
  ------------------
  |  Branch (4864:10): [True: 10.5M, False: 0]
  ------------------
 4865|  10.5M|      ? *_impl_.expr_kind_.struct_expr_
 4866|  10.5M|      : reinterpret_cast<::google::api::expr::v1alpha1::Expr_CreateStruct&>(::google::api::expr::v1alpha1::_Expr_CreateStruct_default_instance_);
 4867|  10.5M|}
_ZN6google3api4expr8v1alpha14Expr29_internal_mutable_struct_exprEv:
 4891|  11.2M|inline ::google::api::expr::v1alpha1::Expr_CreateStruct* Expr::_internal_mutable_struct_expr() {
 4892|  11.2M|  if (expr_kind_case() != kStructExpr) {
  ------------------
  |  Branch (4892:7): [True: 11.2M, False: 0]
  ------------------
 4893|  11.2M|    clear_expr_kind();
 4894|  11.2M|    set_has_struct_expr();
 4895|  11.2M|    _impl_.expr_kind_.struct_expr_ = CreateMaybeMessage< ::google::api::expr::v1alpha1::Expr_CreateStruct >(GetArenaForAllocation());
 4896|  11.2M|  }
 4897|  11.2M|  return _impl_.expr_kind_.struct_expr_;
 4898|  11.2M|}
_ZN6google3api4expr8v1alpha14Expr19mutable_struct_exprEv:
 4899|   662k|inline ::google::api::expr::v1alpha1::Expr_CreateStruct* Expr::mutable_struct_expr() {
 4900|   662k|  ::google::api::expr::v1alpha1::Expr_CreateStruct* _msg = _internal_mutable_struct_expr();
 4901|       |  // @@protoc_insertion_point(field_mutable:google.api.expr.v1alpha1.Expr.struct_expr)
 4902|   662k|  return _msg;
 4903|   662k|}
_ZN6google3api4expr8v1alpha14Expr26set_has_comprehension_exprEv:
 4912|   169k|inline void Expr::set_has_comprehension_expr() {
 4913|   169k|  _impl_._oneof_case_[0] = kComprehensionExpr;
 4914|   169k|}
_ZNK6google3api4expr8v1alpha14Expr28_internal_comprehension_exprEv:
 4937|   165k|inline const ::google::api::expr::v1alpha1::Expr_Comprehension& Expr::_internal_comprehension_expr() const {
 4938|   165k|  return expr_kind_case() == kComprehensionExpr
  ------------------
  |  Branch (4938:10): [True: 165k, False: 0]
  ------------------
 4939|   165k|      ? *_impl_.expr_kind_.comprehension_expr_
 4940|   165k|      : reinterpret_cast<::google::api::expr::v1alpha1::Expr_Comprehension&>(::google::api::expr::v1alpha1::_Expr_Comprehension_default_instance_);
 4941|   165k|}
_ZN6google3api4expr8v1alpha14Expr36_internal_mutable_comprehension_exprEv:
 4965|   169k|inline ::google::api::expr::v1alpha1::Expr_Comprehension* Expr::_internal_mutable_comprehension_expr() {
 4966|   169k|  if (expr_kind_case() != kComprehensionExpr) {
  ------------------
  |  Branch (4966:7): [True: 169k, False: 0]
  ------------------
 4967|   169k|    clear_expr_kind();
 4968|   169k|    set_has_comprehension_expr();
 4969|   169k|    _impl_.expr_kind_.comprehension_expr_ = CreateMaybeMessage< ::google::api::expr::v1alpha1::Expr_Comprehension >(GetArenaForAllocation());
 4970|   169k|  }
 4971|   169k|  return _impl_.expr_kind_.comprehension_expr_;
 4972|   169k|}
_ZN6google3api4expr8v1alpha14Expr26mutable_comprehension_exprEv:
 4973|  3.66k|inline ::google::api::expr::v1alpha1::Expr_Comprehension* Expr::mutable_comprehension_expr() {
 4974|  3.66k|  ::google::api::expr::v1alpha1::Expr_Comprehension* _msg = _internal_mutable_comprehension_expr();
 4975|       |  // @@protoc_insertion_point(field_mutable:google.api.expr.v1alpha1.Expr.comprehension_expr)
 4976|  3.66k|  return _msg;
 4977|  3.66k|}
_ZNK6google3api4expr8v1alpha14Expr13has_expr_kindEv:
 4979|   246M|inline bool Expr::has_expr_kind() const {
 4980|   246M|  return expr_kind_case() != EXPR_KIND_NOT_SET;
 4981|   246M|}
_ZN6google3api4expr8v1alpha14Expr19clear_has_expr_kindEv:
 4982|   246M|inline void Expr::clear_has_expr_kind() {
 4983|   246M|  _impl_._oneof_case_[0] = EXPR_KIND_NOT_SET;
 4984|   246M|}
_ZNK6google3api4expr8v1alpha14Expr14expr_kind_caseEv:
 4985|  1.33G|inline Expr::ExprKindCase Expr::expr_kind_case() const {
 4986|  1.33G|  return Expr::ExprKindCase(_impl_._oneof_case_[0]);
 4987|  1.33G|}
_ZN6google3api4expr8v1alpha18Constant18set_has_null_valueEv:
 4996|  34.3k|inline void Constant::set_has_null_value() {
 4997|  34.3k|  _impl_._oneof_case_[0] = kNullValue;
 4998|  34.3k|}
_ZN6google3api4expr8v1alpha18Constant14set_null_valueENS_8protobuf9NullValueE:
 5009|    259|inline void Constant::set_null_value(::PROTOBUF_NAMESPACE_ID::NullValue value) {
 5010|    259|   _internal_set_null_value(value);
 5011|       |  // @@protoc_insertion_point(field_set:google.api.expr.v1alpha1.Constant.null_value)
 5012|    259|}
_ZNK6google3api4expr8v1alpha18Constant20_internal_null_valueEv:
 5013|  34.0k|inline ::PROTOBUF_NAMESPACE_ID::NullValue Constant::_internal_null_value() const {
 5014|  34.0k|  if (constant_kind_case() == kNullValue) {
  ------------------
  |  Branch (5014:7): [True: 34.0k, False: 0]
  ------------------
 5015|  34.0k|    return static_cast<::PROTOBUF_NAMESPACE_ID::NullValue>(_impl_.constant_kind_.null_value_);
 5016|  34.0k|  }
 5017|      0|  return static_cast<::PROTOBUF_NAMESPACE_ID::NullValue>(0);
 5018|  34.0k|}
_ZN6google3api4expr8v1alpha18Constant24_internal_set_null_valueENS_8protobuf9NullValueE:
 5019|  34.3k|inline void Constant::_internal_set_null_value(::PROTOBUF_NAMESPACE_ID::NullValue value) {
 5020|  34.3k|  if (constant_kind_case() != kNullValue) {
  ------------------
  |  Branch (5020:7): [True: 34.3k, False: 0]
  ------------------
 5021|  34.3k|    clear_constant_kind();
 5022|  34.3k|    set_has_null_value();
 5023|  34.3k|  }
 5024|  34.3k|  _impl_.constant_kind_.null_value_ = value;
 5025|  34.3k|}
_ZN6google3api4expr8v1alpha18Constant18set_has_bool_valueEv:
 5031|   240k|inline void Constant::set_has_bool_value() {
 5032|   240k|  _impl_._oneof_case_[0] = kBoolValue;
 5033|   240k|}
_ZN6google3api4expr8v1alpha18Constant14set_bool_valueEb:
 5044|  4.54k|inline void Constant::set_bool_value(bool value) {
 5045|  4.54k|  _internal_set_bool_value(value);
 5046|       |  // @@protoc_insertion_point(field_set:google.api.expr.v1alpha1.Constant.bool_value)
 5047|  4.54k|}
_ZNK6google3api4expr8v1alpha18Constant20_internal_bool_valueEv:
 5048|   235k|inline bool Constant::_internal_bool_value() const {
 5049|   235k|  if (constant_kind_case() == kBoolValue) {
  ------------------
  |  Branch (5049:7): [True: 235k, False: 0]
  ------------------
 5050|   235k|    return _impl_.constant_kind_.bool_value_;
 5051|   235k|  }
 5052|      0|  return false;
 5053|   235k|}
_ZN6google3api4expr8v1alpha18Constant24_internal_set_bool_valueEb:
 5054|   240k|inline void Constant::_internal_set_bool_value(bool value) {
 5055|   240k|  if (constant_kind_case() != kBoolValue) {
  ------------------
  |  Branch (5055:7): [True: 240k, False: 0]
  ------------------
 5056|   240k|    clear_constant_kind();
 5057|   240k|    set_has_bool_value();
 5058|   240k|  }
 5059|   240k|  _impl_.constant_kind_.bool_value_ = value;
 5060|   240k|}
_ZN6google3api4expr8v1alpha18Constant19set_has_int64_valueEv:
 5066|  33.6M|inline void Constant::set_has_int64_value() {
 5067|  33.6M|  _impl_._oneof_case_[0] = kInt64Value;
 5068|  33.6M|}
_ZN6google3api4expr8v1alpha18Constant15set_int64_valueEl:
 5079|   595k|inline void Constant::set_int64_value(::int64_t value) {
 5080|   595k|  _internal_set_int64_value(value);
 5081|       |  // @@protoc_insertion_point(field_set:google.api.expr.v1alpha1.Constant.int64_value)
 5082|   595k|}
_ZNK6google3api4expr8v1alpha18Constant21_internal_int64_valueEv:
 5083|  33.0M|inline ::int64_t Constant::_internal_int64_value() const {
 5084|  33.0M|  if (constant_kind_case() == kInt64Value) {
  ------------------
  |  Branch (5084:7): [True: 33.0M, False: 0]
  ------------------
 5085|  33.0M|    return _impl_.constant_kind_.int64_value_;
 5086|  33.0M|  }
 5087|      0|  return ::int64_t{0};
 5088|  33.0M|}
_ZN6google3api4expr8v1alpha18Constant25_internal_set_int64_valueEl:
 5089|  33.6M|inline void Constant::_internal_set_int64_value(::int64_t value) {
 5090|  33.6M|  if (constant_kind_case() != kInt64Value) {
  ------------------
  |  Branch (5090:7): [True: 33.6M, False: 0]
  ------------------
 5091|  33.6M|    clear_constant_kind();
 5092|  33.6M|    set_has_int64_value();
 5093|  33.6M|  }
 5094|  33.6M|  _impl_.constant_kind_.int64_value_ = value;
 5095|  33.6M|}
_ZN6google3api4expr8v1alpha18Constant20set_has_uint64_valueEv:
 5101|  66.3k|inline void Constant::set_has_uint64_value() {
 5102|  66.3k|  _impl_._oneof_case_[0] = kUint64Value;
 5103|  66.3k|}
_ZN6google3api4expr8v1alpha18Constant16set_uint64_valueEm:
 5114|  1.04k|inline void Constant::set_uint64_value(::uint64_t value) {
 5115|  1.04k|  _internal_set_uint64_value(value);
 5116|       |  // @@protoc_insertion_point(field_set:google.api.expr.v1alpha1.Constant.uint64_value)
 5117|  1.04k|}
_ZNK6google3api4expr8v1alpha18Constant22_internal_uint64_valueEv:
 5118|  65.2k|inline ::uint64_t Constant::_internal_uint64_value() const {
 5119|  65.2k|  if (constant_kind_case() == kUint64Value) {
  ------------------
  |  Branch (5119:7): [True: 65.2k, False: 0]
  ------------------
 5120|  65.2k|    return _impl_.constant_kind_.uint64_value_;
 5121|  65.2k|  }
 5122|      0|  return ::uint64_t{0u};
 5123|  65.2k|}
_ZN6google3api4expr8v1alpha18Constant26_internal_set_uint64_valueEm:
 5124|  66.3k|inline void Constant::_internal_set_uint64_value(::uint64_t value) {
 5125|  66.3k|  if (constant_kind_case() != kUint64Value) {
  ------------------
  |  Branch (5125:7): [True: 66.3k, False: 0]
  ------------------
 5126|  66.3k|    clear_constant_kind();
 5127|  66.3k|    set_has_uint64_value();
 5128|  66.3k|  }
 5129|  66.3k|  _impl_.constant_kind_.uint64_value_ = value;
 5130|  66.3k|}
_ZN6google3api4expr8v1alpha18Constant20set_has_double_valueEv:
 5136|  2.08M|inline void Constant::set_has_double_value() {
 5137|  2.08M|  _impl_._oneof_case_[0] = kDoubleValue;
 5138|  2.08M|}
_ZN6google3api4expr8v1alpha18Constant16set_double_valueEd:
 5149|  19.9k|inline void Constant::set_double_value(double value) {
 5150|  19.9k|  _internal_set_double_value(value);
 5151|       |  // @@protoc_insertion_point(field_set:google.api.expr.v1alpha1.Constant.double_value)
 5152|  19.9k|}
_ZNK6google3api4expr8v1alpha18Constant22_internal_double_valueEv:
 5153|  2.06M|inline double Constant::_internal_double_value() const {
 5154|  2.06M|  if (constant_kind_case() == kDoubleValue) {
  ------------------
  |  Branch (5154:7): [True: 2.06M, False: 0]
  ------------------
 5155|  2.06M|    return _impl_.constant_kind_.double_value_;
 5156|  2.06M|  }
 5157|      0|  return 0;
 5158|  2.06M|}
_ZN6google3api4expr8v1alpha18Constant26_internal_set_double_valueEd:
 5159|  2.08M|inline void Constant::_internal_set_double_value(double value) {
 5160|  2.08M|  if (constant_kind_case() != kDoubleValue) {
  ------------------
  |  Branch (5160:7): [True: 2.08M, False: 0]
  ------------------
 5161|  2.08M|    clear_constant_kind();
 5162|  2.08M|    set_has_double_value();
 5163|  2.08M|  }
 5164|  2.08M|  _impl_.constant_kind_.double_value_ = value;
 5165|  2.08M|}
_ZN6google3api4expr8v1alpha18Constant20set_has_string_valueEv:
 5171|  9.66M|inline void Constant::set_has_string_value() {
 5172|  9.66M|  _impl_._oneof_case_[0] = kStringValue;
 5173|  9.66M|}
_ZNK6google3api4expr8v1alpha18Constant22_internal_string_valueEv:
 5201|  9.15M|inline const std::string& Constant::_internal_string_value() const {
 5202|  9.15M|  if (constant_kind_case() != kStringValue) {
  ------------------
  |  Branch (5202:7): [True: 0, False: 9.15M]
  ------------------
 5203|      0|    return ::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited();
 5204|      0|  }
 5205|  9.15M|  return _impl_.constant_kind_.string_value_.Get();
 5206|  9.15M|}
_ZN6google3api4expr8v1alpha18Constant26_internal_set_string_valueERKNSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEE:
 5207|  9.15M|inline void Constant::_internal_set_string_value(const std::string& value) {
 5208|  9.15M|  if (constant_kind_case() != kStringValue) {
  ------------------
  |  Branch (5208:7): [True: 9.15M, False: 0]
  ------------------
 5209|  9.15M|    clear_constant_kind();
 5210|       |
 5211|  9.15M|    set_has_string_value();
 5212|  9.15M|    _impl_.constant_kind_.string_value_.InitDefault();
 5213|  9.15M|  }
 5214|       |
 5215|       |
 5216|  9.15M|  _impl_.constant_kind_.string_value_.Set(value, GetArenaForAllocation());
 5217|  9.15M|}
_ZN6google3api4expr8v1alpha18Constant19set_has_bytes_valueEv:
 5250|   220k|inline void Constant::set_has_bytes_value() {
 5251|   220k|  _impl_._oneof_case_[0] = kBytesValue;
 5252|   220k|}
_ZNK6google3api4expr8v1alpha18Constant21_internal_bytes_valueEv:
 5280|   217k|inline const std::string& Constant::_internal_bytes_value() const {
 5281|   217k|  if (constant_kind_case() != kBytesValue) {
  ------------------
  |  Branch (5281:7): [True: 0, False: 217k]
  ------------------
 5282|      0|    return ::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited();
 5283|      0|  }
 5284|   217k|  return _impl_.constant_kind_.bytes_value_.Get();
 5285|   217k|}
_ZN6google3api4expr8v1alpha18Constant25_internal_set_bytes_valueERKNSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEE:
 5286|   217k|inline void Constant::_internal_set_bytes_value(const std::string& value) {
 5287|   217k|  if (constant_kind_case() != kBytesValue) {
  ------------------
  |  Branch (5287:7): [True: 217k, False: 0]
  ------------------
 5288|   217k|    clear_constant_kind();
 5289|       |
 5290|   217k|    set_has_bytes_value();
 5291|   217k|    _impl_.constant_kind_.bytes_value_.InitDefault();
 5292|   217k|  }
 5293|       |
 5294|       |
 5295|   217k|  _impl_.constant_kind_.bytes_value_.Set(value, GetArenaForAllocation());
 5296|   217k|}
_ZNK6google3api4expr8v1alpha18Constant17has_constant_kindEv:
 5457|  45.9M|inline bool Constant::has_constant_kind() const {
 5458|  45.9M|  return constant_kind_case() != CONSTANT_KIND_NOT_SET;
 5459|  45.9M|}
_ZN6google3api4expr8v1alpha18Constant23clear_has_constant_kindEv:
 5460|  45.9M|inline void Constant::clear_has_constant_kind() {
 5461|  45.9M|  _impl_._oneof_case_[0] = CONSTANT_KIND_NOT_SET;
 5462|  45.9M|}
_ZNK6google3api4expr8v1alpha18Constant18constant_kind_caseEv:
 5463|   273M|inline Constant::ConstantKindCase Constant::constant_kind_case() const {
 5464|   273M|  return Constant::ConstantKindCase(_impl_._oneof_case_[0]);
 5465|   273M|}
_ZNK6google3api4expr8v1alpha110SourceInfo24_internal_syntax_versionEv:
 5494|  2.50k|inline const std::string& SourceInfo::_internal_syntax_version() const {
 5495|  2.50k|  return _impl_.syntax_version_.Get();
 5496|  2.50k|}
_ZNK6google3api4expr8v1alpha110SourceInfo18_internal_locationEv:
 5541|  5.00k|inline const std::string& SourceInfo::_internal_location() const {
 5542|  5.00k|  return _impl_.location_.Get();
 5543|  5.00k|}
_ZN6google3api4expr8v1alpha110SourceInfo16add_line_offsetsEi:
 5586|   671k|inline void SourceInfo::add_line_offsets(::int32_t value) {
 5587|   671k|  _internal_add_line_offsets(value);
 5588|       |  // @@protoc_insertion_point(field_add:google.api.expr.v1alpha1.SourceInfo.line_offsets)
 5589|   671k|}
_ZN6google3api4expr8v1alpha110SourceInfo26_internal_add_line_offsetsEi:
 5602|   671k|inline void SourceInfo::_internal_add_line_offsets(::int32_t value) {
 5603|   671k|  _internal_mutable_line_offsets()->Add(value);
 5604|   671k|}
_ZN6google3api4expr8v1alpha110SourceInfo30_internal_mutable_line_offsetsEv:
 5608|   671k|inline ::PROTOBUF_NAMESPACE_ID::RepeatedField<::int32_t>* SourceInfo::_internal_mutable_line_offsets() {
 5609|   671k|  return &_impl_.line_offsets_;
 5610|   671k|}
_ZN6google3api4expr8v1alpha110SourceInfo27_internal_mutable_positionsEv:
 5632|  2.50k|SourceInfo::_internal_mutable_positions() {
 5633|  2.50k|  return _impl_.positions_.MutableMap();
 5634|  2.50k|}
_ZN6google3api4expr8v1alpha110SourceInfo17mutable_positionsEv:
 5636|  2.50k|SourceInfo::mutable_positions() {
 5637|       |  // @@protoc_insertion_point(field_mutable_map:google.api.expr.v1alpha1.SourceInfo.positions)
 5638|  2.50k|  return _internal_mutable_positions();
 5639|  2.50k|}
_ZN6google3api4expr8v1alpha19Expr_Call12set_functionIRKNSt3__112basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEJEEEvOT_DpT0_:
 3395|   830k|                                                     Args_... args) {
 3396|   830k|  ;
 3397|   830k|  _impl_.function_.Set(static_cast<Arg_&&>(arg), args..., GetArenaForAllocation());
 3398|       |  // @@protoc_insertion_point(field_set:google.api.expr.v1alpha1.Expr.Call.function)
 3399|   830k|}
_ZN6google3api4expr8v1alpha110Expr_Ident8set_nameIRKNSt3__112basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEJEEEvOT_DpT0_:
 3099|  1.10M|                                                     Args_... args) {
 3100|  1.10M|  ;
 3101|  1.10M|  _impl_.name_.Set(static_cast<Arg_&&>(arg), args..., GetArenaForAllocation());
 3102|       |  // @@protoc_insertion_point(field_set:google.api.expr.v1alpha1.Expr.Ident.name)
 3103|  1.10M|}
_ZN6google3api4expr8v1alpha111Expr_Select9set_fieldIRKNSt3__112basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEJEEEvOT_DpT0_:
 3237|  9.03k|                                                     Args_... args) {
 3238|  9.03k|  ;
 3239|  9.03k|  _impl_.field_.Set(static_cast<Arg_&&>(arg), args..., GetArenaForAllocation());
 3240|       |  // @@protoc_insertion_point(field_set:google.api.expr.v1alpha1.Expr.Select.field)
 3241|  9.03k|}
_ZN6google3api4expr8v1alpha117Expr_CreateStruct16set_message_nameIRKNSt3__112basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEJEEEvOT_DpT0_:
 3819|  3.46k|                                                     Args_... args) {
 3820|  3.46k|  ;
 3821|  3.46k|  _impl_.message_name_.Set(static_cast<Arg_&&>(arg), args..., GetArenaForAllocation());
 3822|       |  // @@protoc_insertion_point(field_set:google.api.expr.v1alpha1.Expr.CreateStruct.message_name)
 3823|  3.46k|}
_ZN6google3api4expr8v1alpha123Expr_CreateStruct_Entry13set_field_keyIRKNSt3__112basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEJEEEvOT_DpT0_:
 3575|  3.19k|                                                     Args_... args) {
 3576|  3.19k|  if (key_kind_case() != kFieldKey) {
  ------------------
  |  Branch (3576:7): [True: 3.19k, False: 0]
  ------------------
 3577|  3.19k|    clear_key_kind();
 3578|       |
 3579|  3.19k|    set_has_field_key();
 3580|  3.19k|    _impl_.key_kind_.field_key_.InitDefault();
 3581|  3.19k|  }
 3582|  3.19k|  _impl_.key_kind_.field_key_.Set(static_cast<Arg_&&>(arg), args..., GetArenaForAllocation());
 3583|       |  // @@protoc_insertion_point(field_set:google.api.expr.v1alpha1.Expr.CreateStruct.Entry.field_key)
 3584|  3.19k|}
_ZN6google3api4expr8v1alpha118Expr_Comprehension12set_iter_varIRKNSt3__112basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEJEEEvOT_DpT0_:
 3918|  3.66k|                                                     Args_... args) {
 3919|  3.66k|  ;
 3920|  3.66k|  _impl_.iter_var_.Set(static_cast<Arg_&&>(arg), args..., GetArenaForAllocation());
 3921|       |  // @@protoc_insertion_point(field_set:google.api.expr.v1alpha1.Expr.Comprehension.iter_var)
 3922|  3.66k|}
_ZN6google3api4expr8v1alpha118Expr_Comprehension12set_accu_varIRKNSt3__112basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEJEEEvOT_DpT0_:
 4052|  3.66k|                                                     Args_... args) {
 4053|  3.66k|  ;
 4054|  3.66k|  _impl_.accu_var_.Set(static_cast<Arg_&&>(arg), args..., GetArenaForAllocation());
 4055|       |  // @@protoc_insertion_point(field_set:google.api.expr.v1alpha1.Expr.Comprehension.accu_var)
 4056|  3.66k|}
_ZN6google3api4expr8v1alpha18Constant16set_string_valueIRKNSt3__112basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEJEEEvOT_DpT0_:
 5186|   503k|                                                     Args_... args) {
 5187|   503k|  if (constant_kind_case() != kStringValue) {
  ------------------
  |  Branch (5187:7): [True: 503k, False: 0]
  ------------------
 5188|   503k|    clear_constant_kind();
 5189|       |
 5190|   503k|    set_has_string_value();
 5191|   503k|    _impl_.constant_kind_.string_value_.InitDefault();
 5192|   503k|  }
 5193|   503k|  _impl_.constant_kind_.string_value_.Set(static_cast<Arg_&&>(arg), args..., GetArenaForAllocation());
 5194|       |  // @@protoc_insertion_point(field_set:google.api.expr.v1alpha1.Constant.string_value)
 5195|   503k|}
_ZN6google3api4expr8v1alpha18Constant15set_bytes_valueIRKNSt3__112basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEJEEEvOT_DpT0_:
 5265|  2.29k|                                                     Args_... args) {
 5266|  2.29k|  if (constant_kind_case() != kBytesValue) {
  ------------------
  |  Branch (5266:7): [True: 2.29k, False: 0]
  ------------------
 5267|  2.29k|    clear_constant_kind();
 5268|       |
 5269|  2.29k|    set_has_bytes_value();
 5270|  2.29k|    _impl_.constant_kind_.bytes_value_.InitDefault();
 5271|  2.29k|  }
 5272|  2.29k|  _impl_.constant_kind_.bytes_value_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArenaForAllocation());
 5273|       |  // @@protoc_insertion_point(field_set:google.api.expr.v1alpha1.Constant.bytes_value)
 5274|  2.29k|}
_ZN6google3api4expr8v1alpha110SourceInfo12set_locationIRA8_KcJEEEvOT_DpT0_:
 5531|  2.50k|                                                     Args_... args) {
 5532|  2.50k|  ;
 5533|  2.50k|  _impl_.location_.Set(static_cast<Arg_&&>(arg), args..., GetArenaForAllocation());
 5534|       |  // @@protoc_insertion_point(field_set:google.api.expr.v1alpha1.SourceInfo.location)
 5535|  2.50k|}

_ZN6google8protobuf5Arena6CreateINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJEEEPT_PS1_DpOT0_:
  274|      6|  PROTOBUF_NDEBUG_INLINE static T* Create(Arena* arena, Args&&... args) {
  275|      6|    if (PROTOBUF_PREDICT_FALSE(arena == nullptr)) {
  ------------------
  |  |  539|      6|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (539:36): [True: 6, False: 0]
  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  Branch (539:63): [True: 6, False: 0]
  |  |  ------------------
  ------------------
  276|      6|      return new T(std::forward<Args>(args)...);
  277|      6|    }
  278|      0|    return new (arena->AllocateInternal<T>()) T(std::forward<Args>(args)...);
  279|      6|  }
_ZN6google8protobuf5Arena20CreateInArenaStorageIlJlEEEvPT_PS1_DpOT0_:
  616|  2.32M|  static void CreateInArenaStorage(T* ptr, Arena* arena, Args&&... args) {
  617|  2.32M|    CreateInArenaStorageInternal(ptr, arena, is_arena_constructable<T>(),
  618|  2.32M|                                 std::forward<Args>(args)...);
  619|  2.32M|    if (PROTOBUF_PREDICT_TRUE(arena != nullptr)) {
  ------------------
  |  |  538|  2.32M|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 0, False: 2.32M]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 0, False: 2.32M]
  |  |  ------------------
  ------------------
  620|      0|      RegisterDestructorInternal(ptr, arena, is_destructor_skippable<T>());
  621|      0|    }
  622|  2.32M|  }
_ZN6google8protobuf5Arena28CreateInArenaStorageInternalIlJlEEEvPT_PS1_NSt3__117integral_constantIbLb0EEEDpOT0_:
  631|  2.32M|                                           std::false_type, Args&&... args) {
  632|  2.32M|    new (ptr) T(std::forward<Args>(args)...);
  633|  2.32M|  }
_ZN6google8protobuf5Arena20CreateInArenaStorageIiJiEEEvPT_PS1_DpOT0_:
  616|  2.32M|  static void CreateInArenaStorage(T* ptr, Arena* arena, Args&&... args) {
  617|  2.32M|    CreateInArenaStorageInternal(ptr, arena, is_arena_constructable<T>(),
  618|  2.32M|                                 std::forward<Args>(args)...);
  619|  2.32M|    if (PROTOBUF_PREDICT_TRUE(arena != nullptr)) {
  ------------------
  |  |  538|  2.32M|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 0, False: 2.32M]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 0, False: 2.32M]
  |  |  ------------------
  ------------------
  620|      0|      RegisterDestructorInternal(ptr, arena, is_destructor_skippable<T>());
  621|      0|    }
  622|  2.32M|  }
_ZN6google8protobuf5Arena28CreateInArenaStorageInternalIiJiEEEvPT_PS1_NSt3__117integral_constantIbLb0EEEDpOT0_:
  631|  2.32M|                                           std::false_type, Args&&... args) {
  632|  2.32M|    new (ptr) T(std::forward<Args>(args)...);
  633|  2.32M|  }
_ZN6google8protobuf5Arena6CreateIN4absl9btree_mapImPNS0_8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEEEEJSA_SF_EEEPT_PS1_DpOT0_:
  274|  4.82k|  PROTOBUF_NDEBUG_INLINE static T* Create(Arena* arena, Args&&... args) {
  275|  4.82k|    if (PROTOBUF_PREDICT_FALSE(arena == nullptr)) {
  ------------------
  |  |  539|  4.82k|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (539:36): [True: 4.82k, False: 0]
  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  Branch (539:63): [True: 4.82k, False: 0]
  |  |  ------------------
  ------------------
  276|  4.82k|      return new T(std::forward<Args>(args)...);
  277|  4.82k|    }
  278|      0|    return new (arena->AllocateInternal<T>()) T(std::forward<Args>(args)...);
  279|  4.82k|  }
_ZN6google8protobuf5Arena20CreateInArenaStorageIlJRKlEEEvPT_PS1_DpOT0_:
  616|  2.32M|  static void CreateInArenaStorage(T* ptr, Arena* arena, Args&&... args) {
  617|  2.32M|    CreateInArenaStorageInternal(ptr, arena, is_arena_constructable<T>(),
  618|  2.32M|                                 std::forward<Args>(args)...);
  619|  2.32M|    if (PROTOBUF_PREDICT_TRUE(arena != nullptr)) {
  ------------------
  |  |  538|  2.32M|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 0, False: 2.32M]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 0, False: 2.32M]
  |  |  ------------------
  ------------------
  620|      0|      RegisterDestructorInternal(ptr, arena, is_destructor_skippable<T>());
  621|      0|    }
  622|  2.32M|  }
_ZN6google8protobuf5Arena28CreateInArenaStorageInternalIlJRKlEEEvPT_PS1_NSt3__117integral_constantIbLb0EEEDpOT0_:
  631|  2.32M|                                           std::false_type, Args&&... args) {
  632|  2.32M|    new (ptr) T(std::forward<Args>(args)...);
  633|  2.32M|  }
_ZN6google8protobuf5Arena20CreateInArenaStorageIiJEEEvPT_PS1_DpOT0_:
  616|  2.32M|  static void CreateInArenaStorage(T* ptr, Arena* arena, Args&&... args) {
  617|  2.32M|    CreateInArenaStorageInternal(ptr, arena, is_arena_constructable<T>(),
  618|  2.32M|                                 std::forward<Args>(args)...);
  619|  2.32M|    if (PROTOBUF_PREDICT_TRUE(arena != nullptr)) {
  ------------------
  |  |  538|  2.32M|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 0, False: 2.32M]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 0, False: 2.32M]
  |  |  ------------------
  ------------------
  620|      0|      RegisterDestructorInternal(ptr, arena, is_destructor_skippable<T>());
  621|      0|    }
  622|  2.32M|  }
_ZN6google8protobuf5Arena28CreateInArenaStorageInternalIiJEEEvPT_PS1_NSt3__117integral_constantIbLb0EEEDpOT0_:
  631|  2.32M|                                           std::false_type, Args&&... args) {
  632|  2.32M|    new (ptr) T(std::forward<Args>(args)...);
  633|  2.32M|  }
_ZN6google8protobuf5Arena21CreateMessageInternalINS_3api4expr8v1alpha110Expr_IdentEEEPT_PS1_:
  556|  66.1M|  PROTOBUF_NDEBUG_INLINE static T* CreateMessageInternal(Arena* arena) {
  557|  66.1M|    static_assert(
  558|  66.1M|        is_arena_constructable<T>::value,
  559|  66.1M|        "CreateMessage can only construct types that are ArenaConstructable");
  560|  66.1M|    if (PROTOBUF_PREDICT_FALSE(arena == nullptr)) {
  ------------------
  |  |  539|  66.1M|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (539:36): [True: 66.1M, False: 0]
  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  Branch (539:63): [True: 66.1M, False: 0]
  |  |  ------------------
  ------------------
  561|       |      // Generated arena constructor T(Arena*) is protected. Call via
  562|       |      // InternalHelper.
  563|  66.1M|      return InternalHelper<T>::New();
  564|  66.1M|    } else {
  565|      0|      return arena->DoCreateMessage<T>();
  566|      0|    }
  567|  66.1M|  }
_ZN6google8protobuf5Arena14InternalHelperINS_3api4expr8v1alpha110Expr_IdentEE3NewEv:
  492|  66.1M|    static inline PROTOBUF_ALWAYS_INLINE T* New() {
  493|  66.1M|      return new T(nullptr);
  494|  66.1M|    }
_ZN6google8protobuf5Arena21CreateMessageInternalINS_3api4expr8v1alpha111Expr_SelectEEEPT_PS1_:
  556|   413k|  PROTOBUF_NDEBUG_INLINE static T* CreateMessageInternal(Arena* arena) {
  557|   413k|    static_assert(
  558|   413k|        is_arena_constructable<T>::value,
  559|   413k|        "CreateMessage can only construct types that are ArenaConstructable");
  560|   413k|    if (PROTOBUF_PREDICT_FALSE(arena == nullptr)) {
  ------------------
  |  |  539|   413k|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (539:36): [True: 413k, False: 0]
  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  Branch (539:63): [True: 413k, False: 0]
  |  |  ------------------
  ------------------
  561|       |      // Generated arena constructor T(Arena*) is protected. Call via
  562|       |      // InternalHelper.
  563|   413k|      return InternalHelper<T>::New();
  564|   413k|    } else {
  565|      0|      return arena->DoCreateMessage<T>();
  566|      0|    }
  567|   413k|  }
_ZN6google8protobuf5Arena14InternalHelperINS_3api4expr8v1alpha111Expr_SelectEE3NewEv:
  492|   413k|    static inline PROTOBUF_ALWAYS_INLINE T* New() {
  493|   413k|      return new T(nullptr);
  494|   413k|    }
_ZN6google8protobuf5Arena21CreateMessageInternalINS_3api4expr8v1alpha19Expr_CallEEEPT_PS1_:
  556|  93.7M|  PROTOBUF_NDEBUG_INLINE static T* CreateMessageInternal(Arena* arena) {
  557|  93.7M|    static_assert(
  558|  93.7M|        is_arena_constructable<T>::value,
  559|  93.7M|        "CreateMessage can only construct types that are ArenaConstructable");
  560|  93.7M|    if (PROTOBUF_PREDICT_FALSE(arena == nullptr)) {
  ------------------
  |  |  539|  93.7M|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (539:36): [True: 93.7M, False: 0]
  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  Branch (539:63): [True: 93.7M, False: 0]
  |  |  ------------------
  ------------------
  561|       |      // Generated arena constructor T(Arena*) is protected. Call via
  562|       |      // InternalHelper.
  563|  93.7M|      return InternalHelper<T>::New();
  564|  93.7M|    } else {
  565|      0|      return arena->DoCreateMessage<T>();
  566|      0|    }
  567|  93.7M|  }
_ZN6google8protobuf5Arena14InternalHelperINS_3api4expr8v1alpha19Expr_CallEE3NewEv:
  492|  93.7M|    static inline PROTOBUF_ALWAYS_INLINE T* New() {
  493|  93.7M|      return new T(nullptr);
  494|  93.7M|    }
_ZN6google8protobuf5Arena21CreateMessageInternalINS_3api4expr8v1alpha115Expr_CreateListEEEPT_PS1_:
  556|   463k|  PROTOBUF_NDEBUG_INLINE static T* CreateMessageInternal(Arena* arena) {
  557|   463k|    static_assert(
  558|   463k|        is_arena_constructable<T>::value,
  559|   463k|        "CreateMessage can only construct types that are ArenaConstructable");
  560|   463k|    if (PROTOBUF_PREDICT_FALSE(arena == nullptr)) {
  ------------------
  |  |  539|   463k|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (539:36): [True: 463k, False: 0]
  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  Branch (539:63): [True: 463k, False: 0]
  |  |  ------------------
  ------------------
  561|       |      // Generated arena constructor T(Arena*) is protected. Call via
  562|       |      // InternalHelper.
  563|   463k|      return InternalHelper<T>::New();
  564|   463k|    } else {
  565|      0|      return arena->DoCreateMessage<T>();
  566|      0|    }
  567|   463k|  }
_ZN6google8protobuf5Arena14InternalHelperINS_3api4expr8v1alpha115Expr_CreateListEE3NewEv:
  492|   463k|    static inline PROTOBUF_ALWAYS_INLINE T* New() {
  493|   463k|      return new T(nullptr);
  494|   463k|    }
_ZN6google8protobuf5Arena21CreateMessageInternalINS_3api4expr8v1alpha123Expr_CreateStruct_EntryEEEPT_PS1_:
  556|  8.10M|  PROTOBUF_NDEBUG_INLINE static T* CreateMessageInternal(Arena* arena) {
  557|  8.10M|    static_assert(
  558|  8.10M|        is_arena_constructable<T>::value,
  559|  8.10M|        "CreateMessage can only construct types that are ArenaConstructable");
  560|  8.10M|    if (PROTOBUF_PREDICT_FALSE(arena == nullptr)) {
  ------------------
  |  |  539|  8.10M|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (539:36): [True: 8.10M, False: 0]
  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  Branch (539:63): [True: 8.10M, False: 0]
  |  |  ------------------
  ------------------
  561|       |      // Generated arena constructor T(Arena*) is protected. Call via
  562|       |      // InternalHelper.
  563|  8.10M|      return InternalHelper<T>::New();
  564|  8.10M|    } else {
  565|      0|      return arena->DoCreateMessage<T>();
  566|      0|    }
  567|  8.10M|  }
_ZN6google8protobuf5Arena14InternalHelperINS_3api4expr8v1alpha123Expr_CreateStruct_EntryEE3NewEv:
  492|  8.10M|    static inline PROTOBUF_ALWAYS_INLINE T* New() {
  493|  8.10M|      return new T(nullptr);
  494|  8.10M|    }
_ZN6google8protobuf5Arena21CreateMessageInternalINS_3api4expr8v1alpha117Expr_CreateStructEEEPT_PS1_:
  556|  11.2M|  PROTOBUF_NDEBUG_INLINE static T* CreateMessageInternal(Arena* arena) {
  557|  11.2M|    static_assert(
  558|  11.2M|        is_arena_constructable<T>::value,
  559|  11.2M|        "CreateMessage can only construct types that are ArenaConstructable");
  560|  11.2M|    if (PROTOBUF_PREDICT_FALSE(arena == nullptr)) {
  ------------------
  |  |  539|  11.2M|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (539:36): [True: 11.2M, False: 0]
  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  Branch (539:63): [True: 11.2M, False: 0]
  |  |  ------------------
  ------------------
  561|       |      // Generated arena constructor T(Arena*) is protected. Call via
  562|       |      // InternalHelper.
  563|  11.2M|      return InternalHelper<T>::New();
  564|  11.2M|    } else {
  565|      0|      return arena->DoCreateMessage<T>();
  566|      0|    }
  567|  11.2M|  }
_ZN6google8protobuf5Arena14InternalHelperINS_3api4expr8v1alpha117Expr_CreateStructEE3NewEv:
  492|  11.2M|    static inline PROTOBUF_ALWAYS_INLINE T* New() {
  493|  11.2M|      return new T(nullptr);
  494|  11.2M|    }
_ZN6google8protobuf5Arena21CreateMessageInternalINS_3api4expr8v1alpha118Expr_ComprehensionEEEPT_PS1_:
  556|   169k|  PROTOBUF_NDEBUG_INLINE static T* CreateMessageInternal(Arena* arena) {
  557|   169k|    static_assert(
  558|   169k|        is_arena_constructable<T>::value,
  559|   169k|        "CreateMessage can only construct types that are ArenaConstructable");
  560|   169k|    if (PROTOBUF_PREDICT_FALSE(arena == nullptr)) {
  ------------------
  |  |  539|   169k|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (539:36): [True: 169k, False: 0]
  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  Branch (539:63): [True: 169k, False: 0]
  |  |  ------------------
  ------------------
  561|       |      // Generated arena constructor T(Arena*) is protected. Call via
  562|       |      // InternalHelper.
  563|   169k|      return InternalHelper<T>::New();
  564|   169k|    } else {
  565|      0|      return arena->DoCreateMessage<T>();
  566|      0|    }
  567|   169k|  }
_ZN6google8protobuf5Arena14InternalHelperINS_3api4expr8v1alpha118Expr_ComprehensionEE3NewEv:
  492|   169k|    static inline PROTOBUF_ALWAYS_INLINE T* New() {
  493|   169k|      return new T(nullptr);
  494|   169k|    }
_ZN6google8protobuf5Arena21CreateMessageInternalINS_3api4expr8v1alpha14ExprEEEPT_PS1_:
  556|   213M|  PROTOBUF_NDEBUG_INLINE static T* CreateMessageInternal(Arena* arena) {
  557|   213M|    static_assert(
  558|   213M|        is_arena_constructable<T>::value,
  559|   213M|        "CreateMessage can only construct types that are ArenaConstructable");
  560|   213M|    if (PROTOBUF_PREDICT_FALSE(arena == nullptr)) {
  ------------------
  |  |  539|   213M|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (539:36): [True: 213M, False: 0]
  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  Branch (539:63): [True: 213M, False: 0]
  |  |  ------------------
  ------------------
  561|       |      // Generated arena constructor T(Arena*) is protected. Call via
  562|       |      // InternalHelper.
  563|   213M|      return InternalHelper<T>::New();
  564|   213M|    } else {
  565|      0|      return arena->DoCreateMessage<T>();
  566|      0|    }
  567|   213M|  }
_ZN6google8protobuf5Arena14InternalHelperINS_3api4expr8v1alpha14ExprEE3NewEv:
  492|   213M|    static inline PROTOBUF_ALWAYS_INLINE T* New() {
  493|   213M|      return new T(nullptr);
  494|   213M|    }
_ZN6google8protobuf5Arena21CreateMessageInternalINS_3api4expr8v1alpha18ConstantEEEPT_PS1_:
  556|  45.9M|  PROTOBUF_NDEBUG_INLINE static T* CreateMessageInternal(Arena* arena) {
  557|  45.9M|    static_assert(
  558|  45.9M|        is_arena_constructable<T>::value,
  559|  45.9M|        "CreateMessage can only construct types that are ArenaConstructable");
  560|  45.9M|    if (PROTOBUF_PREDICT_FALSE(arena == nullptr)) {
  ------------------
  |  |  539|  45.9M|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (539:36): [True: 45.9M, False: 0]
  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  Branch (539:63): [True: 45.9M, False: 0]
  |  |  ------------------
  ------------------
  561|       |      // Generated arena constructor T(Arena*) is protected. Call via
  562|       |      // InternalHelper.
  563|  45.9M|      return InternalHelper<T>::New();
  564|  45.9M|    } else {
  565|      0|      return arena->DoCreateMessage<T>();
  566|      0|    }
  567|  45.9M|  }
_ZN6google8protobuf5Arena14InternalHelperINS_3api4expr8v1alpha18ConstantEE3NewEv:
  492|  45.9M|    static inline PROTOBUF_ALWAYS_INLINE T* New() {
  493|  45.9M|      return new T(nullptr);
  494|  45.9M|    }
_ZN6google8protobuf5Arena21CreateMessageInternalINS_3api4expr8v1alpha110SourceInfoEEEPT_PS1_:
  556|  2.50k|  PROTOBUF_NDEBUG_INLINE static T* CreateMessageInternal(Arena* arena) {
  557|  2.50k|    static_assert(
  558|  2.50k|        is_arena_constructable<T>::value,
  559|  2.50k|        "CreateMessage can only construct types that are ArenaConstructable");
  560|  2.50k|    if (PROTOBUF_PREDICT_FALSE(arena == nullptr)) {
  ------------------
  |  |  539|  2.50k|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (539:36): [True: 2.50k, False: 0]
  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  Branch (539:63): [True: 2.50k, False: 0]
  |  |  ------------------
  ------------------
  561|       |      // Generated arena constructor T(Arena*) is protected. Call via
  562|       |      // InternalHelper.
  563|  2.50k|      return InternalHelper<T>::New();
  564|  2.50k|    } else {
  565|      0|      return arena->DoCreateMessage<T>();
  566|      0|    }
  567|  2.50k|  }
_ZN6google8protobuf5Arena14InternalHelperINS_3api4expr8v1alpha110SourceInfoEE3NewEv:
  492|  2.50k|    static inline PROTOBUF_ALWAYS_INLINE T* New() {
  493|  2.50k|      return new T(nullptr);
  494|  2.50k|    }
_ZN6google8protobuf5Arena21CreateMessageInternalINS0_30DescriptorProto_ExtensionRangeEEEPT_PS1_:
  556|     18|  PROTOBUF_NDEBUG_INLINE static T* CreateMessageInternal(Arena* arena) {
  557|     18|    static_assert(
  558|     18|        is_arena_constructable<T>::value,
  559|     18|        "CreateMessage can only construct types that are ArenaConstructable");
  560|     18|    if (PROTOBUF_PREDICT_FALSE(arena == nullptr)) {
  ------------------
  |  |  539|     18|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (539:36): [True: 18, False: 0]
  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  Branch (539:63): [True: 18, False: 0]
  |  |  ------------------
  ------------------
  561|       |      // Generated arena constructor T(Arena*) is protected. Call via
  562|       |      // InternalHelper.
  563|     18|      return InternalHelper<T>::New();
  564|     18|    } else {
  565|      0|      return arena->DoCreateMessage<T>();
  566|      0|    }
  567|     18|  }
_ZN6google8protobuf5Arena14InternalHelperINS0_30DescriptorProto_ExtensionRangeEE3NewEv:
  492|     18|    static inline PROTOBUF_ALWAYS_INLINE T* New() {
  493|     18|      return new T(nullptr);
  494|     18|    }
_ZN6google8protobuf5Arena21CreateMessageInternalINS0_29DescriptorProto_ReservedRangeEEEPT_PS1_:
  556|     16|  PROTOBUF_NDEBUG_INLINE static T* CreateMessageInternal(Arena* arena) {
  557|     16|    static_assert(
  558|     16|        is_arena_constructable<T>::value,
  559|     16|        "CreateMessage can only construct types that are ArenaConstructable");
  560|     16|    if (PROTOBUF_PREDICT_FALSE(arena == nullptr)) {
  ------------------
  |  |  539|     16|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (539:36): [True: 16, False: 0]
  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  Branch (539:63): [True: 16, False: 0]
  |  |  ------------------
  ------------------
  561|       |      // Generated arena constructor T(Arena*) is protected. Call via
  562|       |      // InternalHelper.
  563|     16|      return InternalHelper<T>::New();
  564|     16|    } else {
  565|      0|      return arena->DoCreateMessage<T>();
  566|      0|    }
  567|     16|  }
_ZN6google8protobuf5Arena14InternalHelperINS0_29DescriptorProto_ReservedRangeEE3NewEv:
  492|     16|    static inline PROTOBUF_ALWAYS_INLINE T* New() {
  493|     16|      return new T(nullptr);
  494|     16|    }
_ZN6google8protobuf5Arena21CreateMessageInternalINS0_15DescriptorProtoEEEPT_PS1_:
  556|     96|  PROTOBUF_NDEBUG_INLINE static T* CreateMessageInternal(Arena* arena) {
  557|     96|    static_assert(
  558|     96|        is_arena_constructable<T>::value,
  559|     96|        "CreateMessage can only construct types that are ArenaConstructable");
  560|     96|    if (PROTOBUF_PREDICT_FALSE(arena == nullptr)) {
  ------------------
  |  |  539|     96|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (539:36): [True: 96, False: 0]
  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  Branch (539:63): [True: 96, False: 0]
  |  |  ------------------
  ------------------
  561|       |      // Generated arena constructor T(Arena*) is protected. Call via
  562|       |      // InternalHelper.
  563|     96|      return InternalHelper<T>::New();
  564|     96|    } else {
  565|      0|      return arena->DoCreateMessage<T>();
  566|      0|    }
  567|     96|  }
_ZN6google8protobuf5Arena14InternalHelperINS0_15DescriptorProtoEE3NewEv:
  492|     96|    static inline PROTOBUF_ALWAYS_INLINE T* New() {
  493|     96|      return new T(nullptr);
  494|     96|    }
_ZN6google8protobuf5Arena21CreateMessageInternalINS0_20FieldDescriptorProtoEEEPT_PS1_:
  556|    418|  PROTOBUF_NDEBUG_INLINE static T* CreateMessageInternal(Arena* arena) {
  557|    418|    static_assert(
  558|    418|        is_arena_constructable<T>::value,
  559|    418|        "CreateMessage can only construct types that are ArenaConstructable");
  560|    418|    if (PROTOBUF_PREDICT_FALSE(arena == nullptr)) {
  ------------------
  |  |  539|    418|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (539:36): [True: 418, False: 0]
  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  Branch (539:63): [True: 418, False: 0]
  |  |  ------------------
  ------------------
  561|       |      // Generated arena constructor T(Arena*) is protected. Call via
  562|       |      // InternalHelper.
  563|    418|      return InternalHelper<T>::New();
  564|    418|    } else {
  565|      0|      return arena->DoCreateMessage<T>();
  566|      0|    }
  567|    418|  }
_ZN6google8protobuf5Arena14InternalHelperINS0_20FieldDescriptorProtoEE3NewEv:
  492|    418|    static inline PROTOBUF_ALWAYS_INLINE T* New() {
  493|    418|      return new T(nullptr);
  494|    418|    }
_ZN6google8protobuf5Arena21CreateMessageInternalINS0_20OneofDescriptorProtoEEEPT_PS1_:
  556|      8|  PROTOBUF_NDEBUG_INLINE static T* CreateMessageInternal(Arena* arena) {
  557|      8|    static_assert(
  558|      8|        is_arena_constructable<T>::value,
  559|      8|        "CreateMessage can only construct types that are ArenaConstructable");
  560|      8|    if (PROTOBUF_PREDICT_FALSE(arena == nullptr)) {
  ------------------
  |  |  539|      8|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (539:36): [True: 8, False: 0]
  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  Branch (539:63): [True: 8, False: 0]
  |  |  ------------------
  ------------------
  561|       |      // Generated arena constructor T(Arena*) is protected. Call via
  562|       |      // InternalHelper.
  563|      8|      return InternalHelper<T>::New();
  564|      8|    } else {
  565|      0|      return arena->DoCreateMessage<T>();
  566|      0|    }
  567|      8|  }
_ZN6google8protobuf5Arena14InternalHelperINS0_20OneofDescriptorProtoEE3NewEv:
  492|      8|    static inline PROTOBUF_ALWAYS_INLINE T* New() {
  493|      8|      return new T(nullptr);
  494|      8|    }
_ZN6google8protobuf5Arena21CreateMessageInternalINS0_19EnumDescriptorProtoEEEPT_PS1_:
  556|     22|  PROTOBUF_NDEBUG_INLINE static T* CreateMessageInternal(Arena* arena) {
  557|     22|    static_assert(
  558|     22|        is_arena_constructable<T>::value,
  559|     22|        "CreateMessage can only construct types that are ArenaConstructable");
  560|     22|    if (PROTOBUF_PREDICT_FALSE(arena == nullptr)) {
  ------------------
  |  |  539|     22|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (539:36): [True: 22, False: 0]
  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  Branch (539:63): [True: 22, False: 0]
  |  |  ------------------
  ------------------
  561|       |      // Generated arena constructor T(Arena*) is protected. Call via
  562|       |      // InternalHelper.
  563|     22|      return InternalHelper<T>::New();
  564|     22|    } else {
  565|      0|      return arena->DoCreateMessage<T>();
  566|      0|    }
  567|     22|  }
_ZN6google8protobuf5Arena14InternalHelperINS0_19EnumDescriptorProtoEE3NewEv:
  492|     22|    static inline PROTOBUF_ALWAYS_INLINE T* New() {
  493|     22|      return new T(nullptr);
  494|     22|    }
_ZN6google8protobuf5Arena21CreateMessageInternalINS0_24EnumValueDescriptorProtoEEEPT_PS1_:
  556|    104|  PROTOBUF_NDEBUG_INLINE static T* CreateMessageInternal(Arena* arena) {
  557|    104|    static_assert(
  558|    104|        is_arena_constructable<T>::value,
  559|    104|        "CreateMessage can only construct types that are ArenaConstructable");
  560|    104|    if (PROTOBUF_PREDICT_FALSE(arena == nullptr)) {
  ------------------
  |  |  539|    104|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (539:36): [True: 104, False: 0]
  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  Branch (539:63): [True: 104, False: 0]
  |  |  ------------------
  ------------------
  561|       |      // Generated arena constructor T(Arena*) is protected. Call via
  562|       |      // InternalHelper.
  563|    104|      return InternalHelper<T>::New();
  564|    104|    } else {
  565|      0|      return arena->DoCreateMessage<T>();
  566|      0|    }
  567|    104|  }
_ZN6google8protobuf5Arena14InternalHelperINS0_24EnumValueDescriptorProtoEE3NewEv:
  492|    104|    static inline PROTOBUF_ALWAYS_INLINE T* New() {
  493|    104|      return new T(nullptr);
  494|    104|    }
_ZN6google8protobuf5Arena21CreateMessageInternalINS0_11FileOptionsEEEPT_PS1_:
  556|     10|  PROTOBUF_NDEBUG_INLINE static T* CreateMessageInternal(Arena* arena) {
  557|     10|    static_assert(
  558|     10|        is_arena_constructable<T>::value,
  559|     10|        "CreateMessage can only construct types that are ArenaConstructable");
  560|     10|    if (PROTOBUF_PREDICT_FALSE(arena == nullptr)) {
  ------------------
  |  |  539|     10|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (539:36): [True: 10, False: 0]
  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  Branch (539:63): [True: 10, False: 0]
  |  |  ------------------
  ------------------
  561|       |      // Generated arena constructor T(Arena*) is protected. Call via
  562|       |      // InternalHelper.
  563|     10|      return InternalHelper<T>::New();
  564|     10|    } else {
  565|      0|      return arena->DoCreateMessage<T>();
  566|      0|    }
  567|     10|  }
_ZN6google8protobuf5Arena14InternalHelperINS0_11FileOptionsEE3NewEv:
  492|     10|    static inline PROTOBUF_ALWAYS_INLINE T* New() {
  493|     10|      return new T(nullptr);
  494|     10|    }
_ZN6google8protobuf5Arena21CreateMessageInternalINS0_14MessageOptionsEEEPT_PS1_:
  556|      6|  PROTOBUF_NDEBUG_INLINE static T* CreateMessageInternal(Arena* arena) {
  557|      6|    static_assert(
  558|      6|        is_arena_constructable<T>::value,
  559|      6|        "CreateMessage can only construct types that are ArenaConstructable");
  560|      6|    if (PROTOBUF_PREDICT_FALSE(arena == nullptr)) {
  ------------------
  |  |  539|      6|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (539:36): [True: 6, False: 0]
  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  Branch (539:63): [True: 6, False: 0]
  |  |  ------------------
  ------------------
  561|       |      // Generated arena constructor T(Arena*) is protected. Call via
  562|       |      // InternalHelper.
  563|      6|      return InternalHelper<T>::New();
  564|      6|    } else {
  565|      0|      return arena->DoCreateMessage<T>();
  566|      0|    }
  567|      6|  }
_ZN6google8protobuf5Arena14InternalHelperINS0_14MessageOptionsEE3NewEv:
  492|      6|    static inline PROTOBUF_ALWAYS_INLINE T* New() {
  493|      6|      return new T(nullptr);
  494|      6|    }
_ZN6google8protobuf5Arena21CreateMessageInternalINS0_12FieldOptionsEEEPT_PS1_:
  556|     22|  PROTOBUF_NDEBUG_INLINE static T* CreateMessageInternal(Arena* arena) {
  557|     22|    static_assert(
  558|     22|        is_arena_constructable<T>::value,
  559|     22|        "CreateMessage can only construct types that are ArenaConstructable");
  560|     22|    if (PROTOBUF_PREDICT_FALSE(arena == nullptr)) {
  ------------------
  |  |  539|     22|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (539:36): [True: 22, False: 0]
  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  Branch (539:63): [True: 22, False: 0]
  |  |  ------------------
  ------------------
  561|       |      // Generated arena constructor T(Arena*) is protected. Call via
  562|       |      // InternalHelper.
  563|     22|      return InternalHelper<T>::New();
  564|     22|    } else {
  565|      0|      return arena->DoCreateMessage<T>();
  566|      0|    }
  567|     22|  }
_ZN6google8protobuf5Arena14InternalHelperINS0_12FieldOptionsEE3NewEv:
  492|     22|    static inline PROTOBUF_ALWAYS_INLINE T* New() {
  493|     22|      return new T(nullptr);
  494|     22|    }
_ZN6google8protobuf5Arena6CreateINS0_8internal12MapFieldBase17ReflectionPayloadEJRPS1_EEEPT_S6_DpOT0_:
  274|  7.50k|  PROTOBUF_NDEBUG_INLINE static T* Create(Arena* arena, Args&&... args) {
  275|  7.50k|    if (PROTOBUF_PREDICT_FALSE(arena == nullptr)) {
  ------------------
  |  |  539|  7.50k|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (539:36): [True: 7.50k, False: 0]
  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  Branch (539:63): [True: 7.50k, False: 0]
  |  |  ------------------
  ------------------
  276|  7.50k|      return new T(std::forward<Args>(args)...);
  277|  7.50k|    }
  278|      0|    return new (arena->AllocateInternal<T>()) T(std::forward<Args>(args)...);
  279|  7.50k|  }

_ZN6google8protobuf8internal15TaggedStringPtrC2EPNS1_21ExplicitlyConstructedINSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEELm8EEE:
  133|   181M|      : ptr_(ptr) {}
_ZN6google8protobuf8internal15TaggedStringPtr12SetAllocatedEPNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEE:
  144|   171M|  inline std::string* SetAllocated(std::string* p) {
  145|   171M|    return TagAs(kAllocated, p);
  146|   171M|  }
_ZNK6google8protobuf8internal15TaggedStringPtr9IsMutableEv:
  163|    940|  inline bool IsMutable() const { return as_int() & kMutableBit; }
_ZNK6google8protobuf8internal15TaggedStringPtr9IsDefaultEv:
  166|   171M|  inline bool IsDefault() const { return (as_int() & kMask) == kDefault; }
_ZNK6google8protobuf8internal15TaggedStringPtr14GetIfAllocatedEv:
  170|   181M|  inline std::string* GetIfAllocated() const {
  171|   181M|    auto allocated = as_int() ^ kAllocated;
  172|   181M|    if (allocated & kMask) return nullptr;
  ------------------
  |  Branch (172:9): [True: 10.9M, False: 171M]
  ------------------
  173|       |
  174|   171M|    auto ptr = reinterpret_cast<std::string*>(allocated);
  175|   171M|    PROTOBUF_ASSUME(ptr != nullptr);
  ------------------
  |  | 1082|   171M|#define PROTOBUF_ASSUME(pred) __builtin_assume(pred)
  ------------------
  176|   171M|    return ptr;
  177|   181M|  }
_ZNK6google8protobuf8internal15TaggedStringPtr3GetEv:
  189|   337M|  inline std::string* Get() const {
  190|   337M|    return reinterpret_cast<std::string*>(as_int() & ~kMask);
  191|   337M|  }
_ZN6google8protobuf8internal15TaggedStringPtr14assert_alignedEPKv:
  199|   171M|  static inline void assert_aligned(const void* p) {
  200|   171M|    ABSL_DCHECK_EQ(reinterpret_cast<uintptr_t>(p) & kMask, 0UL);
  ------------------
  |  |   70|   171M|  ABSL_DCHECK_EQ_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   86|   171M|  ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|   171M|  while (false && ((void)(x), (void)(y), 0)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (56:10): [Folded - Ignored]
  |  |  |  |  |  |  |  Branch (56:19): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   57|   171M|  ::absl::log_internal::NullStream().InternalStream()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  201|   171M|  }
_ZN6google8protobuf8internal15TaggedStringPtr5TagAsENS2_4TypeEPNSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEE:
  203|   171M|  inline std::string* TagAs(Type type, std::string* p) {
  204|   171M|    ABSL_DCHECK(p != nullptr);
  ------------------
  |  |   43|   171M|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|   171M|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|   342M|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  163|   171M|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|   342M|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|   342M|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  205|   171M|    assert_aligned(p);
  206|   171M|    ptr_ = reinterpret_cast<void*>(reinterpret_cast<uintptr_t>(p) | type);
  207|   171M|    return p;
  208|   171M|  }
_ZNK6google8protobuf8internal15TaggedStringPtr6as_intEv:
  210|   690M|  uintptr_t as_int() const { return reinterpret_cast<uintptr_t>(ptr_); }
_ZNK6google8protobuf8internal14ArenaStringPtr3GetEv:
  299|   337M|  PROTOBUF_NDEBUG_INLINE const std::string& Get() const {
  300|       |    // Unconditionally mask away the tag.
  301|   337M|    return *tagged_ptr_.Get();
  302|   337M|  }
_ZNK6google8protobuf8internal14ArenaStringPtr9IsDefaultEv:
  357|   171M|  inline bool IsDefault() const { return tagged_ptr_.IsDefault(); }
_ZN6google8protobuf8internal14ArenaStringPtr11InitDefaultEv:
  395|   181M|inline void ArenaStringPtr::InitDefault() {
  396|   181M|  tagged_ptr_ = TaggedStringPtr(&fixed_address_empty_string);
  397|   181M|}
_ZN6google8protobuf8internal14ArenaStringPtr3SetEPKcPNS0_5ArenaE:
  412|  2.50k|inline void ArenaStringPtr::Set(const char* s, Arena* arena) {
  413|  2.50k|  Set(absl::string_view{s}, arena);
  414|  2.50k|}
_ZN6google8protobuf8internal14ArenaStringPtr8SetBytesIJEEEvRKNSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEPNS0_5ArenaE:
  429|  2.29k|inline void ArenaStringPtr::SetBytes(const std::string& value, Arena* arena) {
  430|  2.29k|  Set(value, arena);
  431|  2.29k|}
_ZN6google8protobuf8internal14ArenaStringPtr12InternalSwapEPS2_PNS0_5ArenaES3_S5_:
  448|  5.00k|    ArenaStringPtr* lhs, Arena* lhs_arena) {
  449|       |  // Silence unused variable warnings in release buildls.
  450|  5.00k|  (void)rhs_arena;
  451|  5.00k|  (void)lhs_arena;
  452|  5.00k|  std::swap(lhs->tagged_ptr_, rhs->tagged_ptr_);
  453|       |#ifdef PROTOBUF_FORCE_COPY_IN_SWAP
  454|       |  auto force_realloc = [](ArenaStringPtr* p, Arena* arena) {
  455|       |    if (p->IsDefault()) return;
  456|       |    std::string* old_value = p->tagged_ptr_.Get();
  457|       |    std::string* new_value =
  458|       |        p->IsFixedSizeArena()
  459|       |            ? Arena::Create<std::string>(arena, *old_value)
  460|       |            : Arena::Create<std::string>(arena, std::move(*old_value));
  461|       |    if (arena == nullptr) {
  462|       |      delete old_value;
  463|       |      p->tagged_ptr_.SetAllocated(new_value);
  464|       |    } else {
  465|       |      p->tagged_ptr_.SetMutableArena(new_value);
  466|       |    }
  467|       |  };
  468|       |  // Because, at this point, tagged_ptr_ has been swapped, arena should also be
  469|       |  // swapped.
  470|       |  force_realloc(lhs, rhs_arena);
  471|       |  force_realloc(rhs, lhs_arena);
  472|       |#endif  // PROTOBUF_FORCE_COPY_IN_SWAP
  473|  5.00k|}
_ZN6google8protobuf8internal14ArenaStringPtr9NewStringIJEEEPNSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEPNS0_5ArenaEDpOT_:
  361|    940|  inline std::string* NewString(Arena* arena, Args&&... args) {
  362|    940|    if (arena == nullptr) {
  ------------------
  |  Branch (362:9): [True: 940, False: 0]
  ------------------
  363|    940|      auto* s = new std::string(std::forward<Args>(args)...);
  364|    940|      return tagged_ptr_.SetAllocated(s);
  365|    940|    } else {
  366|      0|      auto* s = Arena::Create<std::string>(arena, std::forward<Args>(args)...);
  367|      0|      return tagged_ptr_.SetMutableArena(s);
  368|      0|    }
  369|    940|  }

_ZN6google8protobuf8internal21ExplicitlyConstructedINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEELm8EE16DefaultConstructEv:
   63|      2|  void DefaultConstruct() { new (&union_) T(); }
_ZN6google8protobuf8internal21ExplicitlyConstructedINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEELm8EE11get_mutableEv:
   73|      2|  T* get_mutable() { return reinterpret_cast<T*>(&union_); }

_ZN6google8protobuf8internal12ExtensionSetC2ENS1_16ArenaInitializedEPNS0_5ArenaE:
  189|     38|  ExtensionSet(ArenaInitialized, Arena* arena) : ExtensionSet(arena) {}
_ZNK6google8protobuf8internal12ExtensionSet8is_largeEv:
  713|    114|  bool is_large() const { return static_cast<int16_t>(flat_size_) < 0; }
_ZN6google8protobuf8internal12ExtensionSet10flat_beginEv:
  890|     38|  KeyValue* flat_begin() {
  891|     38|    assert(!is_large());
  892|     38|    return map_.flat;
  893|     38|  }
_ZNK6google8protobuf8internal12ExtensionSet10flat_beginEv:
  894|     38|  const KeyValue* flat_begin() const {
  895|     38|    assert(!is_large());
  896|     38|    return map_.flat;
  897|     38|  }
_ZN6google8protobuf8internal12ExtensionSet8flat_endEv:
  898|     38|  KeyValue* flat_end() {
  899|     38|    assert(!is_large());
  900|     38|    return map_.flat + flat_size_;
  901|     38|  }
_ZNK6google8protobuf8internal12ExtensionSet8flat_endEv:
  902|     38|  const KeyValue* flat_end() const {
  903|     38|    assert(!is_large());
  904|     38|    return map_.flat + flat_size_;
  905|     38|  }
extension_set.cc:_ZN6google8protobuf8internal12ExtensionSet7ForEachIZNS2_D1EvE3$_0EET_S5_:
  734|     38|  KeyValueFunctor ForEach(KeyValueFunctor func) {
  735|     38|    if (PROTOBUF_PREDICT_FALSE(is_large())) {
  ------------------
  |  |  539|     38|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (539:36): [True: 0, False: 38]
  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  Branch (539:63): [True: 0, False: 38]
  |  |  ------------------
  ------------------
  736|      0|      return ForEach(map_.large->begin(), map_.large->end(), std::move(func));
  737|      0|    }
  738|     38|    return ForEach(flat_begin(), flat_end(), std::move(func));
  739|     38|  }
extension_set.cc:_ZN6google8protobuf8internal12ExtensionSet7ForEachIPNS2_8KeyValueEZNS2_D1EvE3$_0EET0_T_S8_S7_:
  727|     38|                                 KeyValueFunctor func) {
  728|     38|    for (Iterator it = begin; it != end; ++it) func(it->first, it->second);
  ------------------
  |  Branch (728:31): [True: 0, False: 38]
  ------------------
  729|     38|    return std::move(func);
  730|     38|  }

_ZN6google8protobuf8internal10CachedSizeC2Ev:
  210|   473M|  constexpr CachedSize() noexcept : atom_(Scalar{}) {}
_ZN6google8protobuf8internal10CachedSizeC2Ei:
  212|  7.50k|  constexpr CachedSize(Scalar desired) noexcept : atom_(desired) {}
_ZN6google8protobuf8internal20InitProtobufDefaultsEv:
   87|     10|PROTOBUF_EXPORT inline void InitProtobufDefaults() {
   88|     10|  if (PROTOBUF_PREDICT_FALSE(
  ------------------
  |  |  539|     10|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (539:36): [True: 0, False: 10]
  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  Branch (539:63): [True: 0, False: 10]
  |  |  ------------------
  ------------------
   89|     10|          !init_protobuf_defaults_state.load(std::memory_order_acquire))) {
   90|      0|    InitProtobufDefaultsSlow();
   91|      0|  }
   92|     10|}
_ZN6google8protobuf8internal23OnShutdownDestroyStringEPKNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEE:
  254|      2|inline void OnShutdownDestroyString(const std::string* ptr) {
  255|      2|  OnShutdownRun(DestroyString, ptr);
  256|      2|}
_ZN6google8protobuf8internal17AllAreInitializedINS0_15DescriptorProtoEEEbRKNS0_16RepeatedPtrFieldIT_EE:
  119|    106|bool AllAreInitialized(const RepeatedPtrField<Msg>& t) {
  120|    202|  for (int i = t.size(); --i >= 0;) {
  ------------------
  |  Branch (120:26): [True: 96, False: 106]
  ------------------
  121|     96|    if (!t.Get(i).IsInitialized()) return false;
  ------------------
  |  Branch (121:9): [True: 0, False: 96]
  ------------------
  122|     96|  }
  123|    106|  return true;
  124|    106|}
_ZN6google8protobuf8internal17AllAreInitializedINS0_19EnumDescriptorProtoEEEbRKNS0_16RepeatedPtrFieldIT_EE:
  119|    106|bool AllAreInitialized(const RepeatedPtrField<Msg>& t) {
  120|    128|  for (int i = t.size(); --i >= 0;) {
  ------------------
  |  Branch (120:26): [True: 22, False: 106]
  ------------------
  121|     22|    if (!t.Get(i).IsInitialized()) return false;
  ------------------
  |  Branch (121:9): [True: 0, False: 22]
  ------------------
  122|     22|  }
  123|    106|  return true;
  124|    106|}
_ZN6google8protobuf8internal17AllAreInitializedINS0_22ServiceDescriptorProtoEEEbRKNS0_16RepeatedPtrFieldIT_EE:
  119|     10|bool AllAreInitialized(const RepeatedPtrField<Msg>& t) {
  120|     10|  for (int i = t.size(); --i >= 0;) {
  ------------------
  |  Branch (120:26): [True: 0, False: 10]
  ------------------
  121|      0|    if (!t.Get(i).IsInitialized()) return false;
  ------------------
  |  Branch (121:9): [True: 0, False: 0]
  ------------------
  122|      0|  }
  123|     10|  return true;
  124|     10|}
_ZN6google8protobuf8internal17AllAreInitializedINS0_20FieldDescriptorProtoEEEbRKNS0_16RepeatedPtrFieldIT_EE:
  119|    202|bool AllAreInitialized(const RepeatedPtrField<Msg>& t) {
  120|    620|  for (int i = t.size(); --i >= 0;) {
  ------------------
  |  Branch (120:26): [True: 418, False: 202]
  ------------------
  121|    418|    if (!t.Get(i).IsInitialized()) return false;
  ------------------
  |  Branch (121:9): [True: 0, False: 418]
  ------------------
  122|    418|  }
  123|    202|  return true;
  124|    202|}
_ZN6google8protobuf8internal17AllAreInitializedINS0_30DescriptorProto_ExtensionRangeEEEbRKNS0_16RepeatedPtrFieldIT_EE:
  119|     96|bool AllAreInitialized(const RepeatedPtrField<Msg>& t) {
  120|    114|  for (int i = t.size(); --i >= 0;) {
  ------------------
  |  Branch (120:26): [True: 18, False: 96]
  ------------------
  121|     18|    if (!t.Get(i).IsInitialized()) return false;
  ------------------
  |  Branch (121:9): [True: 0, False: 18]
  ------------------
  122|     18|  }
  123|     96|  return true;
  124|     96|}
_ZN6google8protobuf8internal17AllAreInitializedINS0_20OneofDescriptorProtoEEEbRKNS0_16RepeatedPtrFieldIT_EE:
  119|     96|bool AllAreInitialized(const RepeatedPtrField<Msg>& t) {
  120|    104|  for (int i = t.size(); --i >= 0;) {
  ------------------
  |  Branch (120:26): [True: 8, False: 96]
  ------------------
  121|      8|    if (!t.Get(i).IsInitialized()) return false;
  ------------------
  |  Branch (121:9): [True: 0, False: 8]
  ------------------
  122|      8|  }
  123|     96|  return true;
  124|     96|}
_ZN6google8protobuf8internal17AllAreInitializedINS0_19UninterpretedOptionEEEbRKNS0_16RepeatedPtrFieldIT_EE:
  119|     38|bool AllAreInitialized(const RepeatedPtrField<Msg>& t) {
  120|     38|  for (int i = t.size(); --i >= 0;) {
  ------------------
  |  Branch (120:26): [True: 0, False: 38]
  ------------------
  121|      0|    if (!t.Get(i).IsInitialized()) return false;
  ------------------
  |  Branch (121:9): [True: 0, False: 0]
  ------------------
  122|      0|  }
  123|     38|  return true;
  124|     38|}
_ZN6google8protobuf8internal17AllAreInitializedINS0_24EnumValueDescriptorProtoEEEbRKNS0_16RepeatedPtrFieldIT_EE:
  119|     22|bool AllAreInitialized(const RepeatedPtrField<Msg>& t) {
  120|    126|  for (int i = t.size(); --i >= 0;) {
  ------------------
  |  Branch (120:26): [True: 104, False: 22]
  ------------------
  121|    104|    if (!t.Get(i).IsInitialized()) return false;
  ------------------
  |  Branch (121:9): [True: 0, False: 104]
  ------------------
  122|    104|  }
  123|     22|  return true;
  124|     22|}

_ZNK6google8protobuf8internal7HasBitsILm1EEixEi:
   61|   101M|  PROTOBUF_NDEBUG_INLINE const uint32_t& operator[](int index) const {
   62|   101M|    return has_bits_[index];
   63|   101M|  }
_ZN6google8protobuf8internal7HasBitsILm1EEixEi:
   57|  11.4M|  PROTOBUF_NDEBUG_INLINE uint32_t& operator[](int index) {
   58|  11.4M|    return has_bits_[index];
   59|  11.4M|  }
_ZN6google8protobuf8internal7HasBitsILm1EEC2Ev:
   51|   103M|  PROTOBUF_NDEBUG_INLINE constexpr HasBits() : has_bits_{} {}
_ZN6google8protobuf8internal7HasBitsILm1EE5ClearEv:
   53|   499k|  PROTOBUF_NDEBUG_INLINE void Clear() {
   54|   499k|    memset(has_bits_, 0, sizeof(has_bits_));
   55|   499k|  }
_ZN6google8protobuf8internal7HasBitsILm1EE2OrERKS3_:
   73|    730|  void Or(const HasBits<doublewords>& rhs) {
   74|  1.46k|    for (size_t i = 0; i < doublewords; i++) has_bits_[i] |= rhs[i];
  ------------------
  |  Branch (74:24): [True: 730, False: 730]
  ------------------
   75|    730|  }

_ZNK6google8protobuf8internal8NodeBase10GetVoidKeyEv:
  315|  19.3M|  const void* GetVoidKey() const { return this + 1; }
_ZN6google8protobuf8internal14UntypedMapBaseC2EPNS0_5ArenaE:
  470|  15.0k|        alloc_(arena) {}
_ZN6google8protobuf8internal14UntypedMapBase4SwapEPS2_:
  481|  5.00k|  void Swap(UntypedMapBase* other) {
  482|  5.00k|    std::swap(num_elements_, other->num_elements_);
  483|  5.00k|    std::swap(num_buckets_, other->num_buckets_);
  484|  5.00k|    std::swap(seed_, other->seed_);
  485|  5.00k|    std::swap(index_of_first_non_null_, other->index_of_first_non_null_);
  486|  5.00k|    std::swap(table_, other->table_);
  487|  5.00k|    std::swap(alloc_, other->alloc_);
  488|  5.00k|  }
_ZN6google8protobuf8internal14UntypedMapBase8max_sizeEv:
  490|  9.50k|  static size_type max_size() {
  491|  9.50k|    return static_cast<size_type>(1) << (sizeof(void**) >= 8 ? 60 : 28);
  ------------------
  |  Branch (491:42): [Folded - Ignored]
  ------------------
  492|  9.50k|  }
_ZN6google8protobuf8internal14UntypedMapBase21ShouldInsertAfterHeadEPv:
  509|  7.94M|  bool ShouldInsertAfterHead(void* node) {
  510|  7.94M|#ifdef NDEBUG
  511|  7.94M|    (void)node;
  512|  7.94M|    return false;
  513|       |#else
  514|       |    // Doing modulo with a prime mixes the bits more.
  515|       |    return (reinterpret_cast<uintptr_t>(node) ^ seed_) % 13 > 6;
  516|       |#endif
  517|  7.94M|  }
_ZN6google8protobuf8internal14UntypedMapBase18InsertUniqueInListEmPNS1_8NodeBaseE:
  521|  12.8M|  void InsertUniqueInList(size_type b, NodeBase* node) {
  522|  12.8M|    if (!TableEntryIsEmpty(b) && ShouldInsertAfterHead(node)) {
  ------------------
  |  Branch (522:9): [True: 7.94M, False: 4.92M]
  |  Branch (522:34): [True: 0, False: 7.94M]
  ------------------
  523|      0|      auto* first = TableEntryToNode(table_[b]);
  524|      0|      node->next = first->next;
  525|      0|      first->next = node;
  526|  12.8M|    } else {
  527|  12.8M|      node->next = TableEntryToNode(table_[b]);
  528|  12.8M|      table_[b] = NodeToTableEntry(node);
  529|  12.8M|    }
  530|  12.8M|  }
_ZNK6google8protobuf8internal14UntypedMapBase17TableEntryIsEmptyEm:
  532|  25.7M|  bool TableEntryIsEmpty(size_type b) const {
  533|  25.7M|    return internal::TableEntryIsEmpty(table_[b]);
  534|  25.7M|  }
_ZNK6google8protobuf8internal14UntypedMapBase24TableEntryIsNonEmptyListEm:
  535|  23.6M|  bool TableEntryIsNonEmptyList(size_type b) const {
  536|  23.6M|    return internal::TableEntryIsNonEmptyList(table_[b]);
  537|  23.6M|  }
_ZNK6google8protobuf8internal14UntypedMapBase16TableEntryIsTreeEm:
  538|  10.4M|  bool TableEntryIsTree(size_type b) const {
  539|  10.4M|    return internal::TableEntryIsTree(table_[b]);
  540|  10.4M|  }
_ZN6google8protobuf8internal14UntypedMapBase19TableEntryIsTooLongEm:
  547|  7.95M|  bool TableEntryIsTooLong(size_type b) {
  548|  7.95M|    return internal::TableEntryIsTooLong(TableEntryToNode(table_[b]));
  549|  7.95M|  }
_ZN6google8protobuf8internal14UntypedMapBase9AllocNodeEm:
  567|  4.64M|  NodeBase* AllocNode(size_t node_size) {
  568|  4.64M|    PROTOBUF_ASSUME(node_size % sizeof(NodeBase) == 0);
  ------------------
  |  | 1082|  4.64M|#define PROTOBUF_ASSUME(pred) __builtin_assume(pred)
  ------------------
  569|  4.64M|    return AllocFor<NodeBase>(alloc_).allocate(node_size / sizeof(NodeBase));
  570|  4.64M|  }
_ZN6google8protobuf8internal14UntypedMapBase11DeallocNodeEPNS1_8NodeBaseEm:
  576|  4.64M|  void DeallocNode(NodeBase* node, size_t node_size) {
  577|  4.64M|    PROTOBUF_ASSUME(node_size % sizeof(NodeBase) == 0);
  ------------------
  |  | 1082|  4.64M|#define PROTOBUF_ASSUME(pred) __builtin_assume(pred)
  ------------------
  578|  4.64M|    AllocFor<NodeBase>(alloc_).deallocate(node, node_size / sizeof(NodeBase));
  579|  4.64M|  }
_ZN6google8protobuf8internal14UntypedMapBase11DeleteTableEPNS1_13TableEntryPtrEm:
  581|  9.50k|  void DeleteTable(TableEntryPtr* table, size_type n) {
  582|  9.50k|    AllocFor<TableEntryPtr>(alloc_).deallocate(table, n);
  583|  9.50k|  }
_ZN6google8protobuf8internal14UntypedMapBase16CreateEmptyTableEm:
  585|  9.50k|  TableEntryPtr* CreateEmptyTable(size_type n) {
  586|  9.50k|    ABSL_DCHECK_GE(n, size_type{kMinTableSize});
  ------------------
  |  |   78|  9.50k|  ABSL_DCHECK_GE_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   94|  9.50k|  ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|  9.50k|  while (false && ((void)(x), (void)(y), 0)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (56:10): [Folded - Ignored]
  |  |  |  |  |  |  |  Branch (56:19): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   57|  9.50k|  ::absl::log_internal::NullStream().InternalStream()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  587|  9.50k|    ABSL_DCHECK_EQ(n & (n - 1), 0u);
  ------------------
  |  |   70|  9.50k|  ABSL_DCHECK_EQ_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   86|  9.50k|  ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|  9.50k|  while (false && ((void)(x), (void)(y), 0)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (56:10): [Folded - Ignored]
  |  |  |  |  |  |  |  Branch (56:19): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   57|  9.50k|  ::absl::log_internal::NullStream().InternalStream()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  588|  9.50k|    TableEntryPtr* result = AllocFor<TableEntryPtr>(alloc_).allocate(n);
  589|  9.50k|    memset(result, 0, n * sizeof(result[0]));
  590|  9.50k|    return result;
  591|  9.50k|  }
_ZNK6google8protobuf8internal14UntypedMapBase4SeedEv:
  594|  5.00k|  size_type Seed() const {
  595|       |    // We get a little bit of randomness from the address of the map. The
  596|       |    // lower bits are not very random, due to alignment, so we discard them
  597|       |    // and shift the higher bits into their place.
  598|  5.00k|    size_type s = reinterpret_cast<uintptr_t>(this) >> 4;
  599|  5.00k|#if !defined(GOOGLE_PROTOBUF_NO_RDTSC)
  600|       |#if defined(__APPLE__)
  601|       |    // Use a commpage-based fast time function on Apple environments (MacOS,
  602|       |    // iOS, tvOS, watchOS, etc).
  603|       |    s += mach_absolute_time();
  604|       |#elif defined(__x86_64__) && defined(__GNUC__)
  605|  5.00k|    uint32_t hi, lo;
  606|  5.00k|    asm volatile("rdtsc" : "=a"(lo), "=d"(hi));
  607|  5.00k|    s += ((static_cast<uint64_t>(hi) << 32) | lo);
  608|       |#elif defined(__aarch64__) && defined(__GNUC__)
  609|       |    // There is no rdtsc on ARMv8. CNTVCT_EL0 is the virtual counter of the
  610|       |    // system timer. It runs at a different frequency than the CPU's, but is
  611|       |    // the best source of time-based entropy we get.
  612|       |    uint64_t virtual_timer_value;
  613|       |    asm volatile("mrs %0, cntvct_el0" : "=r"(virtual_timer_value));
  614|       |    s += virtual_timer_value;
  615|       |#endif
  616|  5.00k|#endif  // !defined(GOOGLE_PROTOBUF_NO_RDTSC)
  617|  5.00k|    return s;
  618|  5.00k|  }
_ZN6google8protobuf8internal19TableEntryIsTooLongEPNS1_8NodeBaseE:
  331|  7.95M|inline bool TableEntryIsTooLong(NodeBase* node) {
  332|  7.95M|  const size_t kMaxLength = 8;
  333|  7.95M|  size_t count = 0;
  334|  18.5M|  do {
  335|  18.5M|    ++count;
  336|  18.5M|    node = node->next;
  337|  18.5M|  } while (node != nullptr);
  ------------------
  |  Branch (337:12): [True: 10.6M, False: 7.95M]
  ------------------
  338|       |  // Invariant: no linked list ever is more than kMaxLength in length.
  339|  7.95M|  ABSL_DCHECK_LE(count, kMaxLength);
  ------------------
  |  |   74|  7.95M|  ABSL_DCHECK_LE_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   90|  7.95M|  ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|  7.95M|  while (false && ((void)(x), (void)(y), 0)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (56:10): [Folded - Ignored]
  |  |  |  |  |  |  |  Branch (56:19): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   57|  7.95M|  ::absl::log_internal::NullStream().InternalStream()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  340|  7.95M|  return count >= kMaxLength;
  341|  7.95M|}
_ZN6google8protobuf8internal17TableEntryIsEmptyENS1_13TableEntryPtrE:
  365|  60.3M|inline bool TableEntryIsEmpty(TableEntryPtr entry) {
  366|  60.3M|  return entry == TableEntryPtr{};
  367|  60.3M|}
_ZN6google8protobuf8internal16TableEntryIsTreeENS1_13TableEntryPtrE:
  368|  35.4M|inline bool TableEntryIsTree(TableEntryPtr entry) {
  369|  35.4M|  return (static_cast<uintptr_t>(entry) & 1) == 1;
  370|  35.4M|}
_ZN6google8protobuf8internal16TableEntryIsListENS1_13TableEntryPtrE:
  371|  17.3M|inline bool TableEntryIsList(TableEntryPtr entry) {
  372|  17.3M|  return !TableEntryIsTree(entry);
  373|  17.3M|}
_ZN6google8protobuf8internal24TableEntryIsNonEmptyListENS1_13TableEntryPtrE:
  374|  34.6M|inline bool TableEntryIsNonEmptyList(TableEntryPtr entry) {
  375|  34.6M|  return !TableEntryIsEmpty(entry) && TableEntryIsList(entry);
  ------------------
  |  Branch (375:10): [True: 16.4M, False: 18.1M]
  |  Branch (375:39): [True: 16.4M, False: 4.82k]
  ------------------
  376|  34.6M|}
_ZN6google8protobuf8internal16TableEntryToNodeENS1_13TableEntryPtrE:
  377|  30.1M|inline NodeBase* TableEntryToNode(TableEntryPtr entry) {
  378|  30.1M|  ABSL_DCHECK(TableEntryIsList(entry));
  ------------------
  |  |   43|  30.1M|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|  30.1M|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|  60.3M|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  163|  30.1M|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|  60.3M|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|  60.3M|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  379|  30.1M|  return reinterpret_cast<NodeBase*>(static_cast<uintptr_t>(entry));
  380|  30.1M|}
_ZN6google8protobuf8internal16NodeToTableEntryEPNS1_8NodeBaseE:
  381|  12.8M|inline TableEntryPtr NodeToTableEntry(NodeBase* node) {
  382|  12.8M|  ABSL_DCHECK((reinterpret_cast<uintptr_t>(node) & 1) == 0);
  ------------------
  |  |   43|  12.8M|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|  12.8M|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|  25.7M|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  163|  12.8M|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|  25.7M|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|  25.7M|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  383|  12.8M|  return static_cast<TableEntryPtr>(reinterpret_cast<uintptr_t>(node));
  384|  12.8M|}
_ZNK6google8protobuf8internal12MapAllocatorIPvE5arenaEv:
  197|  27.8M|  Arena* arena() const { return arena_; }
_ZN6google8protobuf8internal12MapAllocatorINS1_8NodeBaseEE8allocateEmPKv:
  135|  4.64M|  pointer allocate(size_type n, const void* /* hint */ = nullptr) {
  136|       |    // If arena is not given, malloc needs to be called which doesn't
  137|       |    // construct element object.
  138|  4.64M|    if (arena_ == nullptr) {
  ------------------
  |  Branch (138:9): [True: 4.64M, False: 0]
  ------------------
  139|  4.64M|      return static_cast<pointer>(::operator new(n * sizeof(value_type)));
  140|  4.64M|    } else {
  141|      0|      return reinterpret_cast<pointer>(
  142|      0|          Arena::CreateArray<uint8_t>(arena_, n * sizeof(value_type)));
  143|      0|    }
  144|  4.64M|  }
_ZN6google8protobuf8internal12MapAllocatorINS1_8NodeBaseEE10deallocateEPS3_m:
  146|  4.64M|  void deallocate(pointer p, size_type n) {
  147|  4.64M|    if (arena_ == nullptr) {
  ------------------
  |  Branch (147:9): [True: 4.64M, False: 0]
  ------------------
  148|  4.64M|      internal::SizedDelete(p, n * sizeof(value_type));
  149|  4.64M|    }
  150|  4.64M|  }
_ZN6google8protobuf8internal12MapAllocatorINS1_13TableEntryPtrEE10deallocateEPS3_m:
  146|  9.50k|  void deallocate(pointer p, size_type n) {
  147|  9.50k|    if (arena_ == nullptr) {
  ------------------
  |  Branch (147:9): [True: 9.50k, False: 0]
  ------------------
  148|  9.50k|      internal::SizedDelete(p, n * sizeof(value_type));
  149|  9.50k|    }
  150|  9.50k|  }
_ZN6google8protobuf8internal12MapAllocatorINS1_13TableEntryPtrEE8allocateEmPKv:
  135|  9.50k|  pointer allocate(size_type n, const void* /* hint */ = nullptr) {
  136|       |    // If arena is not given, malloc needs to be called which doesn't
  137|       |    // construct element object.
  138|  9.50k|    if (arena_ == nullptr) {
  ------------------
  |  Branch (138:9): [True: 9.50k, False: 0]
  ------------------
  139|  9.50k|      return static_cast<pointer>(::operator new(n * sizeof(value_type)));
  140|  9.50k|    } else {
  141|      0|      return reinterpret_cast<pointer>(
  142|      0|          Arena::CreateArray<uint8_t>(arena_, n * sizeof(value_type)));
  143|      0|    }
  144|  9.50k|  }
_ZN6google8protobuf8internal12MapAllocatorIN4absl18container_internal11AlignedTypeILm8EEEE10deallocateEPS6_m:
  146|  24.1k|  void deallocate(pointer p, size_type n) {
  147|  24.1k|    if (arena_ == nullptr) {
  ------------------
  |  Branch (147:9): [True: 24.1k, False: 0]
  ------------------
  148|  24.1k|      internal::SizedDelete(p, n * sizeof(value_type));
  149|  24.1k|    }
  150|  24.1k|  }
_ZN6google8protobuf3MapIliE5clearEv:
 1441|  5.00k|  void clear() {
 1442|  11.0M|    for (size_type b = 0; b < this->num_buckets_; b++) {
  ------------------
  |  Branch (1442:27): [True: 11.0M, False: 5.00k]
  ------------------
 1443|  11.0M|      internal::NodeBase* node;
 1444|  11.0M|      if (this->TableEntryIsNonEmptyList(b)) {
  ------------------
  |  Branch (1444:11): [True: 1.62M, False: 9.39M]
  ------------------
 1445|  1.62M|        node = internal::TableEntryToNode(this->table_[b]);
 1446|  1.62M|        this->table_[b] = TableEntryPtr{};
 1447|  9.39M|      } else if (this->TableEntryIsTree(b)) {
  ------------------
  |  Branch (1447:18): [True: 0, False: 9.39M]
  ------------------
 1448|      0|        Tree* tree = internal::TableEntryToTree<Tree>(this->table_[b]);
 1449|      0|        this->table_[b] = TableEntryPtr{};
 1450|      0|        node = NodeFromTreeIterator(tree->begin());
 1451|      0|        this->DestroyTree(tree);
 1452|  9.39M|      } else {
 1453|  9.39M|        continue;
 1454|  9.39M|      }
 1455|  4.64M|      do {
 1456|  4.64M|        auto* next = node->next;
 1457|  4.64M|        DestroyNode(static_cast<Node*>(node));
 1458|  4.64M|        node = next;
 1459|  4.64M|      } while (node != nullptr);
  ------------------
  |  Branch (1459:16): [True: 3.01M, False: 1.62M]
  ------------------
 1460|  1.62M|    }
 1461|  5.00k|    this->num_elements_ = 0;
 1462|  5.00k|    this->index_of_first_non_null_ = this->num_buckets_;
 1463|  5.00k|  }
_ZN6google8protobuf8internal16TableEntryToTreeIN4absl9btree_mapImPNS1_8NodeBaseENSt3__14lessImEENS1_12MapAllocatorINS7_4pairIKmS6_EEEEEEEEPT_NS1_13TableEntryPtrE:
  386|  9.65k|Tree* TableEntryToTree(TableEntryPtr entry) {
  387|  9.65k|  ABSL_DCHECK(TableEntryIsTree(entry));
  ------------------
  |  |   43|  9.65k|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|  9.65k|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|  19.3k|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  163|  9.65k|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|  19.3k|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|  19.3k|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  388|  9.65k|  return reinterpret_cast<Tree*>(static_cast<uintptr_t>(entry) - 1);
  389|  9.65k|}
_ZN6google8protobuf8internal10KeyMapBaseImE11DestroyTreeEPN4absl9btree_mapImPNS1_8NodeBaseENSt3__14lessImEENS1_12MapAllocatorINS8_4pairIKmS7_EEEEEE:
 1037|  4.82k|  void DestroyTree(Tree* tree) {
 1038|  4.82k|    if (alloc_.arena() == nullptr) {
  ------------------
  |  Branch (1038:9): [True: 4.82k, False: 0]
  ------------------
 1039|  4.82k|      delete tree;
 1040|  4.82k|    }
 1041|  4.82k|  }
_ZN6google8protobuf8internal12MapAllocatorINSt3__14pairIKmPNS1_8NodeBaseEEEE7destroyINS4_ImS7_EEEEvPT_:
  165|  43.4k|  void destroy(NodeType* p) {
  166|  43.4k|    p->~NodeType();
  167|  43.4k|  }
_ZNK6google8protobuf8internal12MapAllocatorINSt3__14pairIKmPNS1_8NodeBaseEEEE5arenaEv:
  197|  48.2k|  Arena* arena() const { return arena_; }
_ZN6google8protobuf3MapIliE11DestroyNodeEPNS2_4NodeE:
 1520|  4.64M|  void DestroyNode(Node* node) {
 1521|  4.64M|    if (this->alloc_.arena() == nullptr) {
  ------------------
  |  Branch (1521:9): [True: 4.64M, False: 0]
  ------------------
 1522|  4.64M|      node->kv.first.~key_type();
 1523|  4.64M|      node->kv.second.~mapped_type();
 1524|  4.64M|      this->DeallocNode(node, sizeof(Node));
 1525|  4.64M|    }
 1526|  4.64M|  }
_ZN6google8protobuf3MapIliE6insertEONSt3__14pairIliEE:
 1386|  2.32M|  std::pair<iterator, bool> insert(init_type&& value) {
 1387|  2.32M|    return try_emplace(std::move(value.first), std::move(value.second));
 1388|  2.32M|  }
_ZN6google8protobuf3MapIliE11try_emplaceIlJiEEENSt3__14pairINS2_8iteratorEbEEOT_DpOT0_:
 1374|  2.32M|  std::pair<iterator, bool> try_emplace(K&& k, Args&&... args) {
 1375|       |    // Inserts a new element into the container if there is no element with the
 1376|       |    // key in the container.
 1377|       |    // The new element is:
 1378|       |    //  (1) Constructed in-place with the given args, if mapped_type is not
 1379|       |    //      arena constructible.
 1380|       |    //  (2) Constructed in-place with the arena and then assigned with a
 1381|       |    //      mapped_type temporary constructed with the given args, otherwise.
 1382|  2.32M|    return ArenaAwareTryEmplace(Arena::is_arena_constructable<mapped_type>(),
 1383|  2.32M|                                std::forward<K>(k),
 1384|  2.32M|                                std::forward<Args>(args)...);
 1385|  2.32M|  }
_ZN6google8protobuf3MapIliE20ArenaAwareTryEmplaceIJliEEENSt3__14pairINS2_8iteratorEbEENS4_17integral_constantIbLb0EEEDpOT_:
 1621|  2.32M|                                                 Args&&... args) {
 1622|  2.32M|    return TryEmplaceInternal(std::forward<Args>(args)...);
 1623|  2.32M|  }
_ZN6google8protobuf3MapIliE18TryEmplaceInternalIlJiEEENSt3__14pairINS2_8iteratorEbEEOT_DpOT0_:
 1548|  2.32M|  std::pair<iterator, bool> TryEmplaceInternal(K&& k, Args&&... args) {
 1549|  2.32M|    auto p = this->FindHelper(k);
 1550|       |    // Case 1: key was already present.
 1551|  2.32M|    if (p.node != nullptr)
  ------------------
  |  Branch (1551:9): [True: 0, False: 2.32M]
  ------------------
 1552|      0|      return std::make_pair(
 1553|      0|          iterator(static_cast<Node*>(p.node), this, p.bucket), false);
 1554|       |    // Case 2: insert.
 1555|  2.32M|    if (this->ResizeIfLoadIsOutOfRange(this->num_elements_ + 1)) {
  ------------------
  |  Branch (1555:9): [True: 4.75k, False: 2.31M]
  ------------------
 1556|  4.75k|      p = this->FindHelper(k);
 1557|  4.75k|    }
 1558|  2.32M|    const size_type b = p.bucket;  // bucket number
 1559|       |    // If K is not key_type, make the conversion to key_type explicit.
 1560|  2.32M|    using TypeToInit = typename std::conditional<
 1561|  2.32M|        std::is_same<typename std::decay<K>::type, key_type>::value, K&&,
 1562|  2.32M|        key_type>::type;
 1563|  2.32M|    Node* node = static_cast<Node*>(this->AllocNode(sizeof(Node)));
 1564|       |
 1565|       |    // Even when arena is nullptr, CreateInArenaStorage is still used to
 1566|       |    // ensure the arena of submessage will be consistent. Otherwise,
 1567|       |    // submessage may have its own arena when message-owned arena is enabled.
 1568|       |    // Note: This only works if `Key` is not arena constructible.
 1569|  2.32M|    if (!internal::InitializeMapKey(const_cast<Key*>(&node->kv.first),
  ------------------
  |  Branch (1569:9): [True: 2.32M, False: 0]
  ------------------
 1570|  2.32M|                                    std::forward<K>(k), this->alloc_.arena())) {
 1571|  2.32M|      Arena::CreateInArenaStorage(const_cast<Key*>(&node->kv.first),
 1572|  2.32M|                                  this->alloc_.arena(),
 1573|  2.32M|                                  static_cast<TypeToInit>(std::forward<K>(k)));
 1574|  2.32M|    }
 1575|       |    // Note: if `T` is arena constructible, `Args` needs to be empty.
 1576|  2.32M|    Arena::CreateInArenaStorage(&node->kv.second, this->alloc_.arena(),
 1577|  2.32M|                                std::forward<Args>(args)...);
 1578|       |
 1579|  2.32M|    this->InsertUnique(b, node);
 1580|  2.32M|    ++this->num_elements_;
 1581|  2.32M|    return std::make_pair(iterator(node, this, b), true);
 1582|  2.32M|  }
_ZNK6google8protobuf8internal10KeyMapBaseImE10FindHelperIlEENS1_14UntypedMapBase13NodeAndBucketERKT_PN4absl18container_internal14btree_iteratorINSB_10btree_nodeINSB_10map_paramsImPNS1_8NodeBaseENSt3__14lessImEENS1_12MapAllocatorINSH_4pairIKmSG_EEEELi256ELb0EEEEERSN_PSN_EE:
  822|  4.64M|  NodeAndBucket FindHelper(const K& k, TreeIterator* it = nullptr) const {
  823|  4.64M|    size_type b = BucketNumber(k);
  824|  4.64M|    if (TableEntryIsNonEmptyList(b)) {
  ------------------
  |  Branch (824:9): [True: 3.61M, False: 1.03M]
  ------------------
  825|  3.61M|      auto* node = internal::TableEntryToNode(table_[b]);
  826|  11.0M|      do {
  827|  11.0M|        if (internal::TransparentSupport<Key>::Equals(
  ------------------
  |  Branch (827:13): [True: 0, False: 11.0M]
  ------------------
  828|  11.0M|                static_cast<KeyNode*>(node)->key(), k)) {
  829|      0|          return {node, b};
  830|  11.0M|        } else {
  831|  11.0M|          node = node->next;
  832|  11.0M|        }
  833|  11.0M|      } while (node != nullptr);
  ------------------
  |  Branch (833:16): [True: 7.43M, False: 3.61M]
  ------------------
  834|  3.61M|    } else if (TableEntryIsTree(b)) {
  ------------------
  |  Branch (834:16): [True: 0, False: 1.03M]
  ------------------
  835|      0|      Tree* tree = internal::TableEntryToTree<Tree>(table_[b]);
  836|      0|      auto tree_it = tree->find(k);
  837|      0|      if (it != nullptr) *it = tree_it;
  ------------------
  |  Branch (837:11): [True: 0, False: 0]
  ------------------
  838|      0|      if (tree_it != tree->end()) {
  ------------------
  |  Branch (838:11): [True: 0, False: 0]
  ------------------
  839|      0|        return {tree_it->second, b};
  840|      0|      }
  841|      0|    }
  842|  4.64M|    return {nullptr, b};
  843|  4.64M|  }
_ZNK6google8protobuf8internal10KeyMapBaseImE12BucketNumberIlEEmRKT_:
 1025|  4.64M|  size_type BucketNumber(const K& k) const {
 1026|       |    // We xor the hash value against the random seed so that we effectively
 1027|       |    // have a random hash function.
 1028|  4.64M|    uint64_t h = hash_function()(k) ^ seed_;
 1029|       |
 1030|       |    // We use the multiplication method to determine the bucket number from
 1031|       |    // the hash value. The constant kPhi (suggested by Knuth) is roughly
 1032|       |    // (sqrt(5) - 1) / 2 * 2^64.
 1033|  4.64M|    constexpr uint64_t kPhi = uint64_t{0x9e3779b97f4a7c15};
 1034|  4.64M|    return (MultiplyWithOverflow(kPhi, h) >> 32) & (num_buckets_ - 1);
 1035|  4.64M|  }
_ZNK6google8protobuf8internal10KeyMapBaseImE13hash_functionEv:
  782|  12.8M|  hasher hash_function() const { return {}; }
_ZN6google8protobuf8internal20MultiplyWithOverflowImEET_S3_S3_:
  660|  12.8M|N MultiplyWithOverflow(N a, N b) {
  661|  12.8M|#if defined(PROTOBUF_HAS_BUILTIN_MUL_OVERFLOW)
  662|  12.8M|  N res;
  663|  12.8M|  (void)__builtin_mul_overflow(a, b, &res);
  664|  12.8M|  return res;
  665|       |#else
  666|       |  return a * b;
  667|       |#endif
  668|  12.8M|}
_ZN6google8protobuf8internal18TransparentSupportImE6EqualsERKmS5_:
  226|  11.0M|  static bool Equals(const key_type& a, const key_type& b) { return a == b; }
_ZNK6google8protobuf8internal7KeyNodeImE3keyEv:
  655|  19.3M|  decltype(auto) key() const { return ReadKey<Key>(GetVoidKey()); }
_ZN6google8protobuf8internal7ReadKeyImLi0EEET_PKv:
  641|  19.3M|T ReadKey(const void* ptr) {
  642|  19.3M|  T out;
  643|  19.3M|  memcpy(&out, ptr, sizeof(T));
  644|  19.3M|  return out;
  645|  19.3M|}
_ZN6google8protobuf8internal10KeyMapBaseImE15KeyIteratorBaseC2EPNS1_7KeyNodeImEEPKS3_m:
  732|  4.64M|        : node_(n), m_(m), bucket_index_(index) {}
_ZN6google8protobuf8internal10KeyMapBaseImE24ResizeIfLoadIsOutOfRangeEm:
  915|  4.64M|  bool ResizeIfLoadIsOutOfRange(size_type new_size) {
  916|  4.64M|    const size_type kMaxMapLoadTimes16 = 12;  // controls RAM vs CPU tradeoff
  917|  4.64M|    const size_type hi_cutoff = num_buckets_ * kMaxMapLoadTimes16 / 16;
  918|  4.64M|    const size_type lo_cutoff = hi_cutoff / 4;
  919|       |    // We don't care how many elements are in trees.  If a lot are,
  920|       |    // we may resize even though there are many empty buckets.  In
  921|       |    // practice, this seems fine.
  922|  4.64M|    if (PROTOBUF_PREDICT_FALSE(new_size >= hi_cutoff)) {
  ------------------
  |  |  539|  4.64M|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (539:36): [True: 9.50k, False: 4.63M]
  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  Branch (539:63): [True: 9.50k, False: 4.63M]
  |  |  ------------------
  ------------------
  923|  9.50k|      if (num_buckets_ <= max_size() / 2) {
  ------------------
  |  Branch (923:11): [True: 9.50k, False: 0]
  ------------------
  924|  9.50k|        Resize(num_buckets_ * 2);
  925|  9.50k|        return true;
  926|  9.50k|      }
  927|  4.63M|    } else if (PROTOBUF_PREDICT_FALSE(new_size <= lo_cutoff &&
  ------------------
  |  |  539|  4.63M|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (539:36): [True: 0, False: 4.63M]
  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  Branch (539:64): [True: 0, False: 4.63M]
  |  |  |  Branch (539:64): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  928|  4.63M|                                      num_buckets_ > kMinTableSize)) {
  929|      0|      size_type lg2_of_size_reduction_factor = 1;
  930|       |      // It's possible we want to shrink a lot here... size() could even be 0.
  931|       |      // So, estimate how much to shrink by making sure we don't shrink so
  932|       |      // much that we would need to grow the table after a few inserts.
  933|      0|      const size_type hypothetical_size = new_size * 5 / 4 + 1;
  934|      0|      while ((hypothetical_size << lg2_of_size_reduction_factor) < hi_cutoff) {
  ------------------
  |  Branch (934:14): [True: 0, False: 0]
  ------------------
  935|      0|        ++lg2_of_size_reduction_factor;
  936|      0|      }
  937|      0|      size_type new_num_buckets = std::max<size_type>(
  938|      0|          kMinTableSize, num_buckets_ >> lg2_of_size_reduction_factor);
  939|      0|      if (new_num_buckets != num_buckets_) {
  ------------------
  |  Branch (939:11): [True: 0, False: 0]
  ------------------
  940|      0|        Resize(new_num_buckets);
  941|      0|        return true;
  942|      0|      }
  943|      0|    }
  944|  4.63M|    return false;
  945|  4.64M|  }
_ZN6google8protobuf8internal10KeyMapBaseImE6ResizeEm:
  948|  9.50k|  void Resize(size_t new_num_buckets) {
  949|  9.50k|    if (num_buckets_ == kGlobalEmptyTableSize) {
  ------------------
  |  Branch (949:9): [True: 5.00k, False: 4.50k]
  ------------------
  950|       |      // This is the global empty array.
  951|       |      // Just overwrite with a new one. No need to transfer or free anything.
  952|  5.00k|      num_buckets_ = index_of_first_non_null_ = kMinTableSize;
  953|  5.00k|      table_ = CreateEmptyTable(num_buckets_);
  954|  5.00k|      seed_ = Seed();
  955|  5.00k|      return;
  956|  5.00k|    }
  957|       |
  958|  4.50k|    ABSL_DCHECK_GE(new_num_buckets, kMinTableSize);
  ------------------
  |  |   78|  4.50k|  ABSL_DCHECK_GE_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   94|  4.50k|  ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|  4.50k|  while (false && ((void)(x), (void)(y), 0)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (56:10): [Folded - Ignored]
  |  |  |  |  |  |  |  Branch (56:19): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   57|  4.50k|  ::absl::log_internal::NullStream().InternalStream()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  959|  4.50k|    const auto old_table = table_;
  960|  4.50k|    const size_type old_table_size = num_buckets_;
  961|  4.50k|    num_buckets_ = new_num_buckets;
  962|  4.50k|    table_ = CreateEmptyTable(num_buckets_);
  963|  4.50k|    const size_type start = index_of_first_non_null_;
  964|  4.50k|    index_of_first_non_null_ = num_buckets_;
  965|  10.9M|    for (size_type i = start; i < old_table_size; ++i) {
  ------------------
  |  Branch (965:31): [True: 10.9M, False: 4.50k]
  ------------------
  966|  10.9M|      if (internal::TableEntryIsNonEmptyList(old_table[i])) {
  ------------------
  |  Branch (966:11): [True: 3.29M, False: 7.68M]
  ------------------
  967|  3.29M|        TransferList(static_cast<KeyNode*>(TableEntryToNode(old_table[i])));
  968|  7.68M|      } else if (internal::TableEntryIsTree(old_table[i])) {
  ------------------
  |  Branch (968:18): [True: 4.82k, False: 7.68M]
  ------------------
  969|  4.82k|        TransferTree(TableEntryToTree<Tree>(old_table[i]));
  970|  4.82k|      }
  971|  10.9M|    }
  972|  4.50k|    DeleteTable(old_table, old_table_size);
  973|  4.50k|  }
_ZN6google8protobuf8internal12MapAllocatorINS1_13TableEntryPtrEEC2IPvEERKNS2_IT_EE:
  128|  19.0k|      : arena_(allocator.arena()) {}
_ZN6google8protobuf8internal10KeyMapBaseImE12TransferListEPNS1_7KeyNodeImEE:
  976|  3.29M|  void TransferList(KeyNode* node) {
  977|  8.23M|    do {
  978|  8.23M|      auto* next = static_cast<KeyNode*>(node->next);
  979|  8.23M|      InsertUnique(BucketNumber(node->key()), node);
  980|  8.23M|      node = next;
  981|  8.23M|    } while (node != nullptr);
  ------------------
  |  Branch (981:14): [True: 4.93M, False: 3.29M]
  ------------------
  982|  3.29M|  }
_ZNK6google8protobuf8internal10KeyMapBaseImE12BucketNumberImEEmRKT_:
 1025|  8.23M|  size_type BucketNumber(const K& k) const {
 1026|       |    // We xor the hash value against the random seed so that we effectively
 1027|       |    // have a random hash function.
 1028|  8.23M|    uint64_t h = hash_function()(k) ^ seed_;
 1029|       |
 1030|       |    // We use the multiplication method to determine the bucket number from
 1031|       |    // the hash value. The constant kPhi (suggested by Knuth) is roughly
 1032|       |    // (sqrt(5) - 1) / 2 * 2^64.
 1033|  8.23M|    constexpr uint64_t kPhi = uint64_t{0x9e3779b97f4a7c15};
 1034|  8.23M|    return (MultiplyWithOverflow(kPhi, h) >> 32) & (num_buckets_ - 1);
 1035|  8.23M|  }
_ZN6google8protobuf8internal10KeyMapBaseImE12TransferTreeEPN4absl9btree_mapImPNS1_8NodeBaseENSt3__14lessImEENS1_12MapAllocatorINS8_4pairIKmS7_EEEEEE:
  985|  4.82k|  void TransferTree(Tree* tree) {
  986|  4.82k|    auto* node = tree->begin()->second;
  987|  4.82k|    DestroyTree(tree);
  988|  4.82k|    TransferList(static_cast<KeyNode*>(node));
  989|  4.82k|  }
_ZN6google8protobuf8internal12MapAllocatorIN4absl18container_internal11AlignedTypeILm8EEEEC2INSt3__14pairIKmPNS1_8NodeBaseEEEEERKNS2_IT_EE:
  128|  48.2k|      : arena_(allocator.arena()) {}
_ZN6google8protobuf8internal12MapAllocatorINS1_8NodeBaseEEC2IPvEERKNS2_IT_EE:
  128|  9.28M|      : arena_(allocator.arena()) {}
_ZN6google8protobuf8internal16InitializeMapKeyIllEEbPT_OT0_PNS0_5ArenaE:
 1074|  2.32M|bool InitializeMapKey(T*, K&&, Arena*) {
 1075|  2.32M|  return false;
 1076|  2.32M|}
_ZN6google8protobuf8internal10KeyMapBaseImE12InsertUniqueEmPNS1_7KeyNodeImEE:
  868|  12.8M|  void InsertUnique(size_type b, KeyNode* node) {
  869|  12.8M|    ABSL_DCHECK(index_of_first_non_null_ == num_buckets_ ||
  ------------------
  |  |   43|  12.8M|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|  12.8M|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|  25.7M|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  163|  12.8M|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|  25.7M|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|  25.7M|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  870|  12.8M|                !TableEntryIsEmpty(index_of_first_non_null_));
  871|       |    // In practice, the code that led to this point may have already
  872|       |    // determined whether we are inserting into an empty list, a short list,
  873|       |    // or whatever.  But it's probably cheap enough to recompute that here;
  874|       |    // it's likely that we're inserting into an empty or short list.
  875|  12.8M|    ABSL_DCHECK(FindHelper(node->key()).node == nullptr);
  ------------------
  |  |   43|  12.8M|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|  12.8M|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|  38.6M|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  163|  12.8M|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|  38.6M|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|  38.6M|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  876|  12.8M|    if (TableEntryIsEmpty(b)) {
  ------------------
  |  Branch (876:9): [True: 4.92M, False: 7.95M]
  ------------------
  877|  4.92M|      InsertUniqueInList(b, node);
  878|  4.92M|      index_of_first_non_null_ = (std::min)(index_of_first_non_null_, b);
  879|  7.95M|    } else if (TableEntryIsNonEmptyList(b) && !TableEntryIsTooLong(b)) {
  ------------------
  |  Branch (879:16): [True: 7.95M, False: 0]
  |  Branch (879:47): [True: 7.94M, False: 4.82k]
  ------------------
  880|  7.94M|      InsertUniqueInList(b, node);
  881|  7.94M|    } else {
  882|  4.82k|      if (TableEntryIsNonEmptyList(b)) {
  ------------------
  |  Branch (882:11): [True: 4.82k, False: 0]
  ------------------
  883|  4.82k|        TreeConvert(b);
  884|  4.82k|      }
  885|  9.65k|      ABSL_DCHECK(TableEntryIsTree(b))
  ------------------
  |  |   43|      0|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|  4.82k|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      0|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  163|  4.82k|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|  4.82k|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|  4.82k|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  886|  9.65k|          << (void*)table_[b] << " " << (uintptr_t)table_[b];
  887|  4.82k|      InsertUniqueInTree(b, node);
  888|  4.82k|      index_of_first_non_null_ = (std::min)(index_of_first_non_null_, b);
  889|  4.82k|    }
  890|  12.8M|  }
_ZN6google8protobuf8internal10KeyMapBaseImE11TreeConvertEm:
  991|  4.82k|  void TreeConvert(size_type b) {
  992|  4.82k|    ABSL_DCHECK(!TableEntryIsTree(b));
  ------------------
  |  |   43|  4.82k|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|  4.82k|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|  9.65k|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  163|  4.82k|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|  9.65k|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|  9.65k|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  993|  4.82k|    Tree* tree =
  994|  4.82k|        Arena::Create<Tree>(alloc_.arena(), typename Tree::key_compare(),
  995|  4.82k|                            typename Tree::allocator_type(alloc_));
  996|  4.82k|    size_type count = CopyListToTree(b, tree);
  997|  4.82k|    ABSL_DCHECK_EQ(count, tree->size());
  ------------------
  |  |   70|  4.82k|  ABSL_DCHECK_EQ_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   86|  4.82k|  ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|  4.82k|  while (false && ((void)(x), (void)(y), 0)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (56:10): [Folded - Ignored]
  |  |  |  |  |  |  |  Branch (56:19): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   57|  4.82k|  ::absl::log_internal::NullStream().InternalStream()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  998|  4.82k|    table_[b] = TreeToTableEntry(tree);
  999|       |    // Relink the nodes.
 1000|  4.82k|    NodeBase* next = nullptr;
 1001|  4.82k|    auto it = tree->end();
 1002|  38.6k|    do {
 1003|  38.6k|      auto* node = (--it)->second;
 1004|  38.6k|      node->next = next;
 1005|  38.6k|      next = node;
 1006|  38.6k|    } while (it != tree->begin());
  ------------------
  |  Branch (1006:14): [True: 33.8k, False: 4.82k]
  ------------------
 1007|  4.82k|  }
_ZN6google8protobuf8internal12MapAllocatorINSt3__14pairIKmPNS1_8NodeBaseEEEEC2IPvEERKNS2_IT_EE:
  128|  4.82k|      : arena_(allocator.arena()) {}
_ZN6google8protobuf8internal10KeyMapBaseImE14CopyListToTreeEmPN4absl9btree_mapImPNS1_8NodeBaseENSt3__14lessImEENS1_12MapAllocatorINS8_4pairIKmS7_EEEEEE:
 1011|  4.82k|  size_type CopyListToTree(size_type b, Tree* tree) {
 1012|  4.82k|    size_type count = 0;
 1013|  4.82k|    auto* node = TableEntryToNode(table_[b]);
 1014|  43.4k|    while (node != nullptr) {
  ------------------
  |  Branch (1014:12): [True: 38.6k, False: 4.82k]
  ------------------
 1015|  38.6k|      tree->insert({static_cast<KeyNode*>(node)->key(), node});
 1016|  38.6k|      ++count;
 1017|  38.6k|      auto* next = node->next;
 1018|  38.6k|      node->next = nullptr;
 1019|  38.6k|      node = next;
 1020|  38.6k|    }
 1021|  4.82k|    return count;
 1022|  4.82k|  }
_ZN6google8protobuf8internal12MapAllocatorIN4absl18container_internal11AlignedTypeILm8EEEE8allocateEmPKv:
  135|  24.1k|  pointer allocate(size_type n, const void* /* hint */ = nullptr) {
  136|       |    // If arena is not given, malloc needs to be called which doesn't
  137|       |    // construct element object.
  138|  24.1k|    if (arena_ == nullptr) {
  ------------------
  |  Branch (138:9): [True: 24.1k, False: 0]
  ------------------
  139|  24.1k|      return static_cast<pointer>(::operator new(n * sizeof(value_type)));
  140|  24.1k|    } else {
  141|      0|      return reinterpret_cast<pointer>(
  142|      0|          Arena::CreateArray<uint8_t>(arena_, n * sizeof(value_type)));
  143|      0|    }
  144|  24.1k|  }
_ZN6google8protobuf8internal12MapAllocatorINSt3__14pairIKmPNS1_8NodeBaseEEEE9constructINS4_ImS7_EEJS8_EEEvPT_DpOT0_:
  155|  43.4k|  void construct(NodeType* p, Args&&... args) {
  156|       |    // Clang 3.6 doesn't compile static casting to void* directly. (Issue
  157|       |    // #1266) According C++ standard 5.2.9/1: "The static_cast operator shall
  158|       |    // not cast away constness". So first the maybe const pointer is casted to
  159|       |    // const void* and after the const void* is const casted.
  160|  43.4k|    new (const_cast<void*>(static_cast<const void*>(p)))
  161|  43.4k|        NodeType(std::forward<Args>(args)...);
  162|  43.4k|  }
_ZN6google8protobuf8internal16TreeToTableEntryIN4absl9btree_mapImPNS1_8NodeBaseENSt3__14lessImEENS1_12MapAllocatorINS7_4pairIKmS6_EEEEEEEENS1_13TableEntryPtrEPT_:
  391|  4.82k|TableEntryPtr TreeToTableEntry(Tree* node) {
  392|  4.82k|  ABSL_DCHECK((reinterpret_cast<uintptr_t>(node) & 1) == 0);
  ------------------
  |  |   43|  4.82k|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|  4.82k|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|  9.65k|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  163|  4.82k|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|  9.65k|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|  9.65k|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  393|  4.82k|  return static_cast<TableEntryPtr>(reinterpret_cast<uintptr_t>(node) | 1);
  394|  4.82k|}
_ZN6google8protobuf8internal10KeyMapBaseImE18InsertUniqueInTreeEmPNS1_7KeyNodeImEE:
  894|  4.82k|  void InsertUniqueInTree(size_type b, KeyNode* node) {
  895|  4.82k|    auto* tree = TableEntryToTree<Tree>(table_[b]);
  896|  4.82k|    auto it = tree->insert({node->key(), node}).first;
  897|       |    // Maintain the linked list of the nodes in the tree.
  898|       |    // For simplicity, they are in the same order as the tree iteration.
  899|  4.82k|    if (it != tree->begin()) {
  ------------------
  |  Branch (899:9): [True: 4.16k, False: 668]
  ------------------
  900|  4.16k|      auto* prev = std::prev(it)->second;
  901|  4.16k|      prev->next = node;
  902|  4.16k|    }
  903|  4.82k|    auto next = std::next(it);
  904|  4.82k|    node->next = next != tree->end() ? next->second : nullptr;
  ------------------
  |  Branch (904:18): [True: 4.34k, False: 483]
  ------------------
  905|  4.82k|  }
_ZN6google8protobuf3MapIliEC2Ev:
 1113|  2.50k|  constexpr Map() : Base(nullptr) { StaticValidityCheck(); }
_ZN6google8protobuf8internal12MapAllocatorIPvEC2EPNS0_5ArenaE:
  125|  15.0k|  explicit constexpr MapAllocator(Arena* arena) : arena_(arena) {}
_ZN6google8protobuf3MapIliE19StaticValidityCheckEv:
 1167|  15.0k|  static constexpr PROTOBUF_ALWAYS_INLINE void StaticValidityCheck() {
 1168|  15.0k|    static_assert(alignof(internal::NodeBase) >= alignof(mapped_type),
 1169|  15.0k|                  "Alignment of mapped type is too high.");
 1170|  15.0k|    static_assert(
 1171|  15.0k|        absl::disjunction<internal::is_supported_integral_type<key_type>,
 1172|  15.0k|                          internal::is_supported_string_type<key_type>,
 1173|  15.0k|                          internal::is_internal_map_key_type<key_type>>::value,
 1174|  15.0k|        "We only support integer, string, or designated internal key "
 1175|  15.0k|        "types.");
 1176|  15.0k|    static_assert(absl::disjunction<
 1177|  15.0k|                      internal::is_supported_scalar_type<mapped_type>,
 1178|  15.0k|                      is_proto_enum<mapped_type>,
 1179|  15.0k|                      internal::is_supported_message_type<mapped_type>,
 1180|  15.0k|                      internal::is_internal_map_value_type<mapped_type>>::value,
 1181|  15.0k|                  "We only support scalar, Message, and designated internal "
 1182|  15.0k|                  "mapped types.");
 1183|  15.0k|  }
_ZN6google8protobuf3MapIlNS_3api4expr8v1alpha14ExprEEC2Ev:
 1113|  2.50k|  constexpr Map() : Base(nullptr) { StaticValidityCheck(); }
_ZN6google8protobuf3MapIlNS_3api4expr8v1alpha14ExprEE19StaticValidityCheckEv:
 1167|  15.0k|  static constexpr PROTOBUF_ALWAYS_INLINE void StaticValidityCheck() {
 1168|  15.0k|    static_assert(alignof(internal::NodeBase) >= alignof(mapped_type),
 1169|  15.0k|                  "Alignment of mapped type is too high.");
 1170|  15.0k|    static_assert(
 1171|  15.0k|        absl::disjunction<internal::is_supported_integral_type<key_type>,
 1172|  15.0k|                          internal::is_supported_string_type<key_type>,
 1173|  15.0k|                          internal::is_internal_map_key_type<key_type>>::value,
 1174|  15.0k|        "We only support integer, string, or designated internal key "
 1175|  15.0k|        "types.");
 1176|  15.0k|    static_assert(absl::disjunction<
 1177|  15.0k|                      internal::is_supported_scalar_type<mapped_type>,
 1178|  15.0k|                      is_proto_enum<mapped_type>,
 1179|  15.0k|                      internal::is_supported_message_type<mapped_type>,
 1180|  15.0k|                      internal::is_internal_map_value_type<mapped_type>>::value,
 1181|  15.0k|                  "We only support scalar, Message, and designated internal "
 1182|  15.0k|                  "mapped types.");
 1183|  15.0k|  }
_ZN6google8protobuf3MapIliEC2EPNS0_5ArenaE:
 1114|  5.00k|  explicit Map(Arena* arena) : Base(arena) { StaticValidityCheck(); }
_ZN6google8protobuf3MapIlNS_3api4expr8v1alpha14ExprEEC2EPNS0_5ArenaE:
 1114|  5.00k|  explicit Map(Arena* arena) : Base(arena) { StaticValidityCheck(); }
_ZN6google8protobuf3MapIlNS_3api4expr8v1alpha14ExprEED2Ev:
 1142|  7.50k|  ~Map() {
 1143|       |    // Fail-safe in case we miss calling this in a constructor.  Note: this one
 1144|       |    // won't trigger for leaked maps that never get destructed.
 1145|  7.50k|    StaticValidityCheck();
 1146|       |
 1147|  7.50k|    if (this->alloc_.arena() == nullptr &&
  ------------------
  |  Branch (1147:9): [True: 7.50k, False: 0]
  ------------------
 1148|  7.50k|        this->num_buckets_ != internal::kGlobalEmptyTableSize) {
  ------------------
  |  Branch (1148:9): [True: 0, False: 7.50k]
  ------------------
 1149|      0|      clear();
 1150|      0|      this->DeleteTable(this->table_, this->num_buckets_);
 1151|      0|    }
 1152|  7.50k|  }
_ZN6google8protobuf3MapIliED2Ev:
 1142|  7.50k|  ~Map() {
 1143|       |    // Fail-safe in case we miss calling this in a constructor.  Note: this one
 1144|       |    // won't trigger for leaked maps that never get destructed.
 1145|  7.50k|    StaticValidityCheck();
 1146|       |
 1147|  7.50k|    if (this->alloc_.arena() == nullptr &&
  ------------------
  |  Branch (1147:9): [True: 7.50k, False: 0]
  ------------------
 1148|  7.50k|        this->num_buckets_ != internal::kGlobalEmptyTableSize) {
  ------------------
  |  Branch (1148:9): [True: 5.00k, False: 2.50k]
  ------------------
 1149|  5.00k|      clear();
 1150|  5.00k|      this->DeleteTable(this->table_, this->num_buckets_);
 1151|  5.00k|    }
 1152|  7.50k|  }
_ZN6google8protobuf8internal12MapMergeFromIJliEEEvRNS0_3MapIDpT_EERKS6_:
 1642|  2.50k|PROTOBUF_NOINLINE void MapMergeFrom(Map<T...>& dest, const Map<T...>& src) {
 1643|  2.32M|  for (const auto& elem : src) {
  ------------------
  |  Branch (1643:25): [True: 2.32M, False: 2.50k]
  ------------------
 1644|  2.32M|    dest[elem.first] = elem.second;
 1645|  2.32M|  }
 1646|  2.50k|}
_ZN6google8protobuf3MapIliEixIlEERiRKl:
 1303|  2.32M|  T& operator[](const key_arg<K>& key) {
 1304|  2.32M|    return try_emplace(key).first->second;
 1305|  2.32M|  }
_ZN6google8protobuf3MapIliE11try_emplaceIRKlJEEENSt3__14pairINS2_8iteratorEbEEOT_DpOT0_:
 1374|  2.32M|  std::pair<iterator, bool> try_emplace(K&& k, Args&&... args) {
 1375|       |    // Inserts a new element into the container if there is no element with the
 1376|       |    // key in the container.
 1377|       |    // The new element is:
 1378|       |    //  (1) Constructed in-place with the given args, if mapped_type is not
 1379|       |    //      arena constructible.
 1380|       |    //  (2) Constructed in-place with the arena and then assigned with a
 1381|       |    //      mapped_type temporary constructed with the given args, otherwise.
 1382|  2.32M|    return ArenaAwareTryEmplace(Arena::is_arena_constructable<mapped_type>(),
 1383|  2.32M|                                std::forward<K>(k),
 1384|  2.32M|                                std::forward<Args>(args)...);
 1385|  2.32M|  }
_ZN6google8protobuf3MapIliE20ArenaAwareTryEmplaceIJRKlEEENSt3__14pairINS2_8iteratorEbEENS6_17integral_constantIbLb0EEEDpOT_:
 1621|  2.32M|                                                 Args&&... args) {
 1622|  2.32M|    return TryEmplaceInternal(std::forward<Args>(args)...);
 1623|  2.32M|  }
_ZN6google8protobuf3MapIliE18TryEmplaceInternalIRKlJEEENSt3__14pairINS2_8iteratorEbEEOT_DpOT0_:
 1548|  2.32M|  std::pair<iterator, bool> TryEmplaceInternal(K&& k, Args&&... args) {
 1549|  2.32M|    auto p = this->FindHelper(k);
 1550|       |    // Case 1: key was already present.
 1551|  2.32M|    if (p.node != nullptr)
  ------------------
  |  Branch (1551:9): [True: 0, False: 2.32M]
  ------------------
 1552|      0|      return std::make_pair(
 1553|      0|          iterator(static_cast<Node*>(p.node), this, p.bucket), false);
 1554|       |    // Case 2: insert.
 1555|  2.32M|    if (this->ResizeIfLoadIsOutOfRange(this->num_elements_ + 1)) {
  ------------------
  |  Branch (1555:9): [True: 4.75k, False: 2.31M]
  ------------------
 1556|  4.75k|      p = this->FindHelper(k);
 1557|  4.75k|    }
 1558|  2.32M|    const size_type b = p.bucket;  // bucket number
 1559|       |    // If K is not key_type, make the conversion to key_type explicit.
 1560|  2.32M|    using TypeToInit = typename std::conditional<
 1561|  2.32M|        std::is_same<typename std::decay<K>::type, key_type>::value, K&&,
 1562|  2.32M|        key_type>::type;
 1563|  2.32M|    Node* node = static_cast<Node*>(this->AllocNode(sizeof(Node)));
 1564|       |
 1565|       |    // Even when arena is nullptr, CreateInArenaStorage is still used to
 1566|       |    // ensure the arena of submessage will be consistent. Otherwise,
 1567|       |    // submessage may have its own arena when message-owned arena is enabled.
 1568|       |    // Note: This only works if `Key` is not arena constructible.
 1569|  2.32M|    if (!internal::InitializeMapKey(const_cast<Key*>(&node->kv.first),
  ------------------
  |  Branch (1569:9): [True: 2.32M, False: 0]
  ------------------
 1570|  2.32M|                                    std::forward<K>(k), this->alloc_.arena())) {
 1571|  2.32M|      Arena::CreateInArenaStorage(const_cast<Key*>(&node->kv.first),
 1572|  2.32M|                                  this->alloc_.arena(),
 1573|  2.32M|                                  static_cast<TypeToInit>(std::forward<K>(k)));
 1574|  2.32M|    }
 1575|       |    // Note: if `T` is arena constructible, `Args` needs to be empty.
 1576|  2.32M|    Arena::CreateInArenaStorage(&node->kv.second, this->alloc_.arena(),
 1577|  2.32M|                                std::forward<Args>(args)...);
 1578|       |
 1579|  2.32M|    this->InsertUnique(b, node);
 1580|  2.32M|    ++this->num_elements_;
 1581|  2.32M|    return std::make_pair(iterator(node, this, b), true);
 1582|  2.32M|  }
_ZN6google8protobuf8internal16InitializeMapKeyIlRKlEEbPT_OT0_PNS0_5ArenaE:
 1074|  2.32M|bool InitializeMapKey(T*, K&&, Arena*) {
 1075|  2.32M|  return false;
 1076|  2.32M|}
_ZNK6google8protobuf3MapIliE8iteratorptEv:
 1262|  2.32M|    pointer operator->() const { return &(operator*()); }
_ZNK6google8protobuf3MapIliE8iteratordeEv:
 1261|  2.32M|    reference operator*() const { return static_cast<Node*>(this->node_)->kv; }
_ZN6google8protobuf8internal12MapMergeFromIJlNS_3api4expr8v1alpha14ExprEEEEvRNS0_3MapIDpT_EERKSA_:
 1642|  2.50k|PROTOBUF_NOINLINE void MapMergeFrom(Map<T...>& dest, const Map<T...>& src) {
 1643|  2.50k|  for (const auto& elem : src) {
  ------------------
  |  Branch (1643:25): [True: 0, False: 2.50k]
  ------------------
 1644|      0|    dest[elem.first] = elem.second;
 1645|      0|  }
 1646|  2.50k|}
_ZNK6google8protobuf8internal10KeyMapBaseImE15KeyIteratorBase6EqualsERKS4_:
  762|  2.32M|    bool Equals(const KeyIteratorBase& other) const {
  763|  2.32M|      return node_ == other.node_;
  764|  2.32M|    }
_ZN6google8protobuf8internal10KeyMapBaseImE15KeyIteratorBaseC2Ev:
  725|  5.00k|    KeyIteratorBase() : node_(nullptr), m_(nullptr), bucket_index_(0) {}
_ZN6google8protobuf8internal10KeyMapBaseImE15KeyIteratorBase8PlusPlusEv:
  768|  2.32M|    void PlusPlus() {
  769|  2.32M|      if (node_->next == nullptr) {
  ------------------
  |  Branch (769:11): [True: 813k, False: 1.50M]
  ------------------
  770|   813k|        SearchFrom(bucket_index_ + 1);
  771|  1.50M|      } else {
  772|  1.50M|        node_ = static_cast<KeyNode*>(node_->next);
  773|  1.50M|      }
  774|  2.32M|    }
_ZN6google8protobuf8internal10KeyMapBaseImE15KeyIteratorBase10SearchFromEm:
  739|   818k|    void SearchFrom(size_type start_bucket) {
  740|   818k|      ABSL_DCHECK(m_->index_of_first_non_null_ == m_->num_buckets_ ||
  ------------------
  |  |   43|   818k|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|   818k|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|  1.63M|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  163|   818k|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|  1.63M|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|  1.63M|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  741|   818k|                  !m_->TableEntryIsEmpty(m_->index_of_first_non_null_));
  742|  5.50M|      for (size_type i = start_bucket; i < m_->num_buckets_; ++i) {
  ------------------
  |  Branch (742:40): [True: 5.50M, False: 5.00k]
  ------------------
  743|  5.50M|        TableEntryPtr entry = m_->table_[i];
  744|  5.50M|        if (entry == TableEntryPtr{}) continue;
  ------------------
  |  Branch (744:13): [True: 4.69M, False: 813k]
  ------------------
  745|   813k|        bucket_index_ = i;
  746|   813k|        if (PROTOBUF_PREDICT_TRUE(internal::TableEntryIsList(entry))) {
  ------------------
  |  |  538|   813k|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 813k, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 813k, False: 0]
  |  |  ------------------
  ------------------
  747|   813k|          node_ = static_cast<KeyNode*>(TableEntryToNode(entry));
  748|   813k|        } else {
  749|      0|          Tree* tree = TableEntryToTree<Tree>(entry);
  750|      0|          ABSL_DCHECK(!tree->empty());
  ------------------
  |  |   43|      0|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|      0|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      0|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  163|      0|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|      0|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  751|      0|          node_ = static_cast<KeyNode*>(tree->begin()->second);
  752|      0|        }
  753|   813k|        return;
  754|   813k|      }
  755|  5.00k|      node_ = nullptr;
  756|  5.00k|      bucket_index_ = 0;
  757|  5.00k|    }
_ZNK6google8protobuf3MapIliE5beginEv:
 1293|  2.50k|  const_iterator begin() const { return const_iterator(this); }
_ZN6google8protobuf8internal10KeyMapBaseImE15KeyIteratorBaseC2EPKS3_:
  727|  5.00k|    explicit KeyIteratorBase(const KeyMapBase* m) : m_(m) {
  728|  5.00k|      SearchFrom(m->index_of_first_non_null_);
  729|  5.00k|    }
_ZNK6google8protobuf3MapIliE3endEv:
 1294|  2.50k|  const_iterator end() const { return const_iterator(); }
_ZN6google8protobuf3MapIliE14const_iteratorC2Ev:
 1217|  2.50k|    const_iterator() {}
_ZN6google8protobufneERKNS0_3MapIliE14const_iteratorES5_:
 1237|  2.32M|    friend bool operator!=(const const_iterator& a, const const_iterator& b) {
 1238|  2.32M|      return !a.Equals(b);
 1239|  2.32M|    }
_ZN6google8protobuf3MapIliE14const_iteratorppEv:
 1224|  2.32M|    const_iterator& operator++() {
 1225|  2.32M|      this->PlusPlus();
 1226|  2.32M|      return *this;
 1227|  2.32M|    }
_ZNK6google8protobuf3MapIliE14const_iteratordeEv:
 1221|  2.32M|    reference operator*() const { return static_cast<Node*>(this->node_)->kv; }
_ZNK6google8protobuf3MapIlNS_3api4expr8v1alpha14ExprEE5beginEv:
 1293|  2.50k|  const_iterator begin() const { return const_iterator(this); }
_ZNK6google8protobuf3MapIlNS_3api4expr8v1alpha14ExprEE3endEv:
 1294|  2.50k|  const_iterator end() const { return const_iterator(); }
_ZN6google8protobuf3MapIlNS_3api4expr8v1alpha14ExprEE14const_iteratorC2Ev:
 1217|  2.50k|    const_iterator() {}
_ZN6google8protobufneERKNS0_3MapIlNS_3api4expr8v1alpha14ExprEE14const_iteratorES9_:
 1237|  2.50k|    friend bool operator!=(const const_iterator& a, const const_iterator& b) {
 1238|  2.50k|      return !a.Equals(b);
 1239|  2.50k|    }
_ZN6google8protobuf3MapIliE12InternalSwapEPS2_:
 1487|  2.50k|  void InternalSwap(Map* other) { this->Swap(other); }
_ZN6google8protobuf3MapIlNS_3api4expr8v1alpha14ExprEE12InternalSwapEPS6_:
 1487|  2.50k|  void InternalSwap(Map* other) { this->Swap(other); }

_ZN6google8protobuf8internal12MapFieldLiteINS_3api4expr8v1alpha134SourceInfo_PositionsEntry_DoNotUseEliLNS1_14WireFormatLite9FieldTypeE3ELS8_5EE10MutableMapEv:
   90|  2.50k|  Map<Key, T>* MutableMap() { return &map_; }
_ZN6google8protobuf8internal12MapFieldLiteINS_3api4expr8v1alpha134SourceInfo_PositionsEntry_DoNotUseEliLNS1_14WireFormatLite9FieldTypeE3ELS8_5EEC2Ev:
   70|  2.50k|  constexpr MapFieldLite() : map_() {}
_ZN6google8protobuf8internal12MapFieldLiteINS_3api4expr8v1alpha135SourceInfo_MacroCallsEntry_DoNotUseElNS5_4ExprELNS1_14WireFormatLite9FieldTypeE3ELS9_11EEC2Ev:
   70|  2.50k|  constexpr MapFieldLite() : map_() {}
_ZN6google8protobuf8internal12MapFieldLiteINS_3api4expr8v1alpha134SourceInfo_PositionsEntry_DoNotUseEliLNS1_14WireFormatLite9FieldTypeE3ELS8_5EEC2EPNS0_5ArenaE:
   71|  5.00k|  explicit MapFieldLite(Arena* arena) : map_(arena) {}
_ZN6google8protobuf8internal12MapFieldLiteINS_3api4expr8v1alpha135SourceInfo_MacroCallsEntry_DoNotUseElNS5_4ExprELNS1_14WireFormatLite9FieldTypeE3ELS9_11EEC2EPNS0_5ArenaE:
   71|  5.00k|  explicit MapFieldLite(Arena* arena) : map_(arena) {}
_ZN6google8protobuf8internal12MapFieldLiteINS_3api4expr8v1alpha135SourceInfo_MacroCallsEntry_DoNotUseElNS5_4ExprELNS1_14WireFormatLite9FieldTypeE3ELS9_11EED2Ev:
   75|  7.50k|  ~MapFieldLite() { map_.~Map(); }
_ZN6google8protobuf8internal12MapFieldLiteINS_3api4expr8v1alpha134SourceInfo_PositionsEntry_DoNotUseEliLNS1_14WireFormatLite9FieldTypeE3ELS8_5EED2Ev:
   75|  7.50k|  ~MapFieldLite() { map_.~Map(); }
_ZN6google8protobuf8internal12MapFieldLiteINS_3api4expr8v1alpha134SourceInfo_PositionsEntry_DoNotUseEliLNS1_14WireFormatLite9FieldTypeE3ELS8_5EE9MergeFromERKS9_:
   95|  2.50k|  void MergeFrom(const MapFieldLite& other) {
   96|  2.50k|    internal::MapMergeFrom(map_, other.map_);
   97|  2.50k|  }
_ZN6google8protobuf8internal12MapFieldLiteINS_3api4expr8v1alpha135SourceInfo_MacroCallsEntry_DoNotUseElNS5_4ExprELNS1_14WireFormatLite9FieldTypeE3ELS9_11EE9MergeFromERKSA_:
   95|  2.50k|  void MergeFrom(const MapFieldLite& other) {
   96|  2.50k|    internal::MapMergeFrom(map_, other.map_);
   97|  2.50k|  }
_ZN6google8protobuf8internal12MapFieldLiteINS_3api4expr8v1alpha134SourceInfo_PositionsEntry_DoNotUseEliLNS1_14WireFormatLite9FieldTypeE3ELS8_5EE12InternalSwapEPS9_:
   99|  2.50k|  void InternalSwap(MapFieldLite* other) { map_.InternalSwap(&other->map_); }
_ZN6google8protobuf8internal12MapFieldLiteINS_3api4expr8v1alpha135SourceInfo_MacroCallsEntry_DoNotUseElNS5_4ExprELNS1_14WireFormatLite9FieldTypeE3ELS9_11EE12InternalSwapEPSA_:
   99|  2.50k|  void InternalSwap(MapFieldLite* other) { map_.InternalSwap(&other->map_); }

_ZN6google8protobuf11MessageLiteC2Ev:
  172|  3.05M|  constexpr MessageLite() {}
_ZN6google8protobuf11MessageLiteC2EPNS0_5ArenaE:
  469|   470M|  inline explicit MessageLite(Arena* arena) : _internal_metadata_(arena) {}
_ZNK6google8protobuf11MessageLite14GetOwningArenaEv:
  476|  48.5M|  Arena* GetOwningArena() const { return _internal_metadata_.arena(); }
_ZNK6google8protobuf11MessageLite21GetArenaForAllocationEv:
  480|   634M|  Arena* GetArenaForAllocation() const { return _internal_metadata_.arena(); }
_ZNK6google8protobuf11MessageLite23IsInitializedWithErrorsEv:
  505|     10|  bool IsInitializedWithErrors() const {
  506|     10|    if (IsInitialized()) return true;
  ------------------
  |  Branch (506:9): [True: 10, False: 0]
  ------------------
  507|      0|    LogInitializationErrorMessage();
  508|      0|    return false;
  509|     10|  }
_ZN6google8protobuf11MessageLite18CreateMaybeMessageINS_3api4expr8v1alpha110Expr_IdentEEEPT_PNS0_5ArenaE:
  465|  66.1M|  static T* CreateMaybeMessage(Arena* arena) {
  466|  66.1M|    return Arena::CreateMaybeMessage<T>(arena);
  467|  66.1M|  }
_ZN6google8protobuf11MessageLite18CreateMaybeMessageINS_3api4expr8v1alpha111Expr_SelectEEEPT_PNS0_5ArenaE:
  465|   413k|  static T* CreateMaybeMessage(Arena* arena) {
  466|   413k|    return Arena::CreateMaybeMessage<T>(arena);
  467|   413k|  }
_ZN6google8protobuf11MessageLite18CreateMaybeMessageINS_3api4expr8v1alpha19Expr_CallEEEPT_PNS0_5ArenaE:
  465|  93.7M|  static T* CreateMaybeMessage(Arena* arena) {
  466|  93.7M|    return Arena::CreateMaybeMessage<T>(arena);
  467|  93.7M|  }
_ZN6google8protobuf11MessageLite18CreateMaybeMessageINS_3api4expr8v1alpha115Expr_CreateListEEEPT_PNS0_5ArenaE:
  465|   463k|  static T* CreateMaybeMessage(Arena* arena) {
  466|   463k|    return Arena::CreateMaybeMessage<T>(arena);
  467|   463k|  }
_ZN6google8protobuf11MessageLite18CreateMaybeMessageINS_3api4expr8v1alpha117Expr_CreateStructEEEPT_PNS0_5ArenaE:
  465|  11.2M|  static T* CreateMaybeMessage(Arena* arena) {
  466|  11.2M|    return Arena::CreateMaybeMessage<T>(arena);
  467|  11.2M|  }
_ZN6google8protobuf11MessageLite18CreateMaybeMessageINS_3api4expr8v1alpha118Expr_ComprehensionEEEPT_PNS0_5ArenaE:
  465|   169k|  static T* CreateMaybeMessage(Arena* arena) {
  466|   169k|    return Arena::CreateMaybeMessage<T>(arena);
  467|   169k|  }
_ZN6google8protobuf11MessageLite18CreateMaybeMessageINS_3api4expr8v1alpha14ExprEEEPT_PNS0_5ArenaE:
  465|  18.4M|  static T* CreateMaybeMessage(Arena* arena) {
  466|  18.4M|    return Arena::CreateMaybeMessage<T>(arena);
  467|  18.4M|  }
_ZN6google8protobuf11MessageLite18CreateMaybeMessageINS_3api4expr8v1alpha18ConstantEEEPT_PNS0_5ArenaE:
  465|  45.9M|  static T* CreateMaybeMessage(Arena* arena) {
  466|  45.9M|    return Arena::CreateMaybeMessage<T>(arena);
  467|  45.9M|  }
_ZN6google8protobuf11MessageLite18CreateMaybeMessageINS_3api4expr8v1alpha110SourceInfoEEEPT_PNS0_5ArenaE:
  465|  2.50k|  static T* CreateMaybeMessage(Arena* arena) {
  466|  2.50k|    return Arena::CreateMaybeMessage<T>(arena);
  467|  2.50k|  }
_ZN6google8protobuf11MessageLiteD2Ev:
  175|   473M|  virtual ~MessageLite() = default;
_ZN6google8protobuf8internal16OnShutdownDeleteINS0_25EncodedDescriptorDatabaseEEEPT_S5_:
  614|      2|T* OnShutdownDelete(T* p) {
  615|      2|  OnShutdownRun([](const void* pp) { delete static_cast<const T*>(pp); }, p);
  616|      2|  return p;
  617|      2|}
_ZN6google8protobuf11MessageLite18CreateMaybeMessageINS0_11FileOptionsEEEPT_PNS0_5ArenaE:
  465|     10|  static T* CreateMaybeMessage(Arena* arena) {
  466|     10|    return Arena::CreateMaybeMessage<T>(arena);
  467|     10|  }
_ZN6google8protobuf11MessageLite18CreateMaybeMessageINS0_14MessageOptionsEEEPT_PNS0_5ArenaE:
  465|      6|  static T* CreateMaybeMessage(Arena* arena) {
  466|      6|    return Arena::CreateMaybeMessage<T>(arena);
  467|      6|  }
_ZN6google8protobuf11MessageLite18CreateMaybeMessageINS0_12FieldOptionsEEEPT_PNS0_5ArenaE:
  465|     22|  static T* CreateMaybeMessage(Arena* arena) {
  466|     22|    return Arena::CreateMaybeMessage<T>(arena);
  467|     22|  }
message.cc:_ZN6google8protobuf8internal16OnShutdownDeleteINS0_12_GLOBAL__N_123GeneratedMessageFactoryEEEPT_S6_:
  614|      2|T* OnShutdownDelete(T* p) {
  615|      2|  OnShutdownRun([](const void* pp) { delete static_cast<const T*>(pp); }, p);
  616|      2|  return p;
  617|      2|}
_ZN6google8protobuf11MessageLite9ParseFromILNS1_10ParseFlagsE1ENSt3__117basic_string_viewIcNS4_11char_traitsIcEEEEEEbRKT0_:
  580|     10|bool MessageLite::ParseFrom(const T& input) {
  581|     10|  if (flags & kParse) Clear();
  ------------------
  |  Branch (581:7): [Folded - Ignored]
  ------------------
  582|     10|  constexpr bool alias = (flags & kMergeWithAliasing) != 0;
  583|     10|  return internal::MergeFromImpl<alias>(input, this, flags);
  584|     10|}

_ZN6google8protobuf8internal16InternalMetadataC2Ev:
   69|  3.05M|  constexpr InternalMetadata() : ptr_(0) {}
_ZN6google8protobuf8internal16InternalMetadataC2EPNS0_5ArenaE:
   70|   470M|  explicit InternalMetadata(Arena* arena) {
   71|   470M|    ptr_ = reinterpret_cast<intptr_t>(arena);
   72|   470M|  }
_ZNK6google8protobuf8internal16InternalMetadata5arenaEv:
   98|   683M|  PROTOBUF_NDEBUG_INLINE Arena* arena() const {
   99|   683M|    if (PROTOBUF_PREDICT_FALSE(have_unknown_fields())) {
  ------------------
  |  |  539|   683M|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (539:36): [True: 0, False: 683M]
  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  Branch (539:63): [True: 0, False: 683M]
  |  |  ------------------
  ------------------
  100|      0|      return PtrValue<ContainerBase>()->arena;
  101|   683M|    } else {
  102|   683M|      return PtrValue<Arena>();
  103|   683M|    }
  104|   683M|  }
_ZNK6google8protobuf8internal16InternalMetadata19have_unknown_fieldsEv:
  106|  1.60G|  PROTOBUF_NDEBUG_INLINE bool have_unknown_fields() const {
  107|  1.60G|    return HasUnknownFieldsTag();
  108|  1.60G|  }
_ZN6google8protobuf8internal16InternalMetadata12InternalSwapEPS2_:
  146|  24.2M|  PROTOBUF_NDEBUG_INLINE void InternalSwap(InternalMetadata* other) {
  147|  24.2M|    std::swap(ptr_, other->ptr_);
  148|  24.2M|  }
_ZNK6google8protobuf8internal16InternalMetadata19HasUnknownFieldsTagEv:
  173|  1.60G|  PROTOBUF_ALWAYS_INLINE bool HasUnknownFieldsTag() const {
  174|  1.60G|    return ptr_ & kUnknownFieldsTagMask;
  175|  1.60G|  }
_ZNK6google8protobuf8internal16InternalMetadata8PtrValueINS0_5ArenaEEEPT_v:
  178|  1.15G|  U* PtrValue() const {
  179|  1.15G|    return reinterpret_cast<U*>(ptr_ & kPtrValueMask);
  180|  1.15G|  }
_ZN6google8protobuf8internal16InternalMetadata9MergeFromINS0_15UnknownFieldSetEEEvRKS2_:
  151|   438M|  PROTOBUF_NDEBUG_INLINE void MergeFrom(const InternalMetadata& other) {
  152|   438M|    if (other.have_unknown_fields()) {
  ------------------
  |  Branch (152:9): [True: 0, False: 438M]
  ------------------
  153|      0|      DoMergeFrom<T>(other.unknown_fields<T>(nullptr));
  154|      0|    }
  155|   438M|  }
_ZN6google8protobuf8internal16InternalMetadata17DeleteReturnArenaINS0_15UnknownFieldSetEEEPNS0_5ArenaEv:
   90|   473M|  Arena* DeleteReturnArena() {
   91|   473M|    if (have_unknown_fields()) {
  ------------------
  |  Branch (91:9): [True: 0, False: 473M]
  ------------------
   92|      0|      return DeleteOutOfLineHelper<T>();
   93|   473M|    } else {
   94|   473M|      return PtrValue<Arena>();
   95|   473M|    }
   96|   473M|  }
_ZN6google8protobuf8internal16InternalMetadata5ClearINS0_15UnknownFieldSetEEEvv:
  158|  4.40M|  PROTOBUF_NDEBUG_INLINE void Clear() {
  159|  4.40M|    if (have_unknown_fields()) {
  ------------------
  |  Branch (159:9): [True: 0, False: 4.40M]
  ------------------
  160|      0|      DoClear<T>();
  161|      0|    }
  162|  4.40M|  }

_ZN6google8protobuf8internal18EpsCopyInputStreamC2Eb:
  123|     10|      : aliasing_(enable_aliasing ? kOnPatch : kNoAliasing) {}
_ZN6google8protobuf8internal18EpsCopyInputStream10LimitTokenC2Ei:
  167|    720|    explicit LimitToken(int token) : token_(token) {}
_ZNK6google8protobuf8internal18EpsCopyInputStream10LimitToken5tokenEv:
  174|    720|    int token() const { return token_; }
_ZN6google8protobuf8internal18EpsCopyInputStream9PushLimitEPKci:
  182|    720|  PROTOBUF_NODISCARD LimitToken PushLimit(const char* ptr, int limit) {
  183|    720|    ABSL_DCHECK(limit >= 0 && limit <= INT_MAX - kSlopBytes);
  ------------------
  |  |   43|    720|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|    720|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|  1.44k|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  163|    720|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|  1.44k|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|  1.44k|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  184|       |    // This add is safe due to the invariant above, because
  185|       |    // ptr - buffer_end_ <= kSlopBytes.
  186|    720|    limit += static_cast<int>(ptr - buffer_end_);
  187|    720|    limit_end_ = buffer_end_ + (std::min)(0, limit);
  188|    720|    auto old_limit = limit_;
  189|    720|    limit_ = limit;
  190|    720|    return LimitToken(old_limit - limit);
  191|    720|  }
_ZN6google8protobuf8internal18EpsCopyInputStream8PopLimitENS2_10LimitTokenE:
  193|    720|  PROTOBUF_NODISCARD bool PopLimit(LimitToken delta) {
  194|       |    // We must update the limit first before the early return. Otherwise, we can
  195|       |    // end up with an invalid limit and it can lead to integer overflows.
  196|    720|    limit_ = limit_ + std::move(delta).token();
  197|    720|    if (PROTOBUF_PREDICT_FALSE(!EndedAtLimit())) return false;
  ------------------
  |  |  539|    720|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (539:36): [True: 0, False: 720]
  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  Branch (539:63): [True: 0, False: 720]
  |  |  ------------------
  ------------------
  198|       |    // TODO(gerbens) We could remove this line and hoist the code to
  199|       |    // DoneFallback. Study the perf/bin-size effects.
  200|    720|    limit_end_ = buffer_end_ + (std::min)(0, limit_);
  201|    720|    return true;
  202|    720|  }
_ZN6google8protobuf8internal18EpsCopyInputStream10ReadStringEPKciPNSt3__112basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEE:
  211|    946|                                            std::string* s) {
  212|    946|    if (size <= buffer_end_ + kSlopBytes - ptr) {
  ------------------
  |  Branch (212:9): [True: 946, False: 0]
  ------------------
  213|       |      // Fundamentally we just want to do assign to the string.
  214|       |      // However micro-benchmarks regress on string reading cases. So we copy
  215|       |      // the same logic from the old CodedInputStream ReadString. Note: as of
  216|       |      // Apr 2021, this is still a significant win over `assign()`.
  217|    946|      absl::strings_internal::STLStringResizeUninitialized(s, size);
  218|    946|      char* z = &(*s)[0];
  219|    946|      memcpy(z, ptr, size);
  220|    946|      return ptr + size;
  221|    946|    }
  222|      0|    return ReadStringFallback(ptr, size, s);
  223|    946|  }
_ZNK6google8protobuf8internal18EpsCopyInputStream12EndedAtLimitEv:
  265|    730|  bool EndedAtLimit() const { return last_tag_minus_1_ == 0; }
_ZN6google8protobuf8internal18EpsCopyInputStream13DataAvailableEPKc:
  283|    688|  bool DataAvailable(const char* ptr) { return ptr < limit_end_; }
_ZN6google8protobuf8internal18EpsCopyInputStream13DoneWithCheckEPPKci:
  289|  3.42k|  bool DoneWithCheck(const char** ptr, int d) {
  290|  3.42k|    ABSL_DCHECK(*ptr);
  ------------------
  |  |   43|  3.42k|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|  3.42k|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|  6.85k|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  163|  3.42k|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|  6.85k|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|  6.85k|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  291|  3.42k|    if (PROTOBUF_PREDICT_TRUE(*ptr < limit_end_)) return false;
  ------------------
  |  |  538|  3.42k|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 2.69k, False: 738]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 2.69k, False: 738]
  |  |  ------------------
  ------------------
  292|    738|    int overrun = static_cast<int>(*ptr - buffer_end_);
  293|    738|    ABSL_DCHECK_LE(overrun, kSlopBytes);  // Guaranteed by parse loop.
  ------------------
  |  |   74|    738|  ABSL_DCHECK_LE_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   90|    738|  ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|    738|  while (false && ((void)(x), (void)(y), 0)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (56:10): [Folded - Ignored]
  |  |  |  |  |  |  |  Branch (56:19): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   57|    738|  ::absl::log_internal::NullStream().InternalStream()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  294|    738|    if (overrun ==
  ------------------
  |  Branch (294:9): [True: 730, False: 8]
  ------------------
  295|    738|        limit_) {  //  No need to flip buffers if we ended on a limit.
  296|       |      // If we actually overrun the buffer and next_chunk_ is null. It means
  297|       |      // the stream ended and we passed the stream end.
  298|    730|      if (overrun > 0 && next_chunk_ == nullptr) *ptr = nullptr;
  ------------------
  |  Branch (298:11): [True: 10, False: 720]
  |  Branch (298:26): [True: 0, False: 10]
  ------------------
  299|    730|      return true;
  300|    730|    }
  301|      8|    auto res = DoneFallback(overrun, d);
  302|      8|    *ptr = res.first;
  303|      8|    return res.second;
  304|    738|  }
_ZN6google8protobuf8internal18EpsCopyInputStream8InitFromENSt3__117basic_string_viewIcNS3_11char_traitsIcEEEE:
  306|     10|  const char* InitFrom(absl::string_view flat) {
  307|     10|    overall_limit_ = 0;
  308|     10|    if (flat.size() > kSlopBytes) {
  ------------------
  |  Branch (308:9): [True: 10, False: 0]
  ------------------
  309|     10|      limit_ = kSlopBytes;
  310|     10|      limit_end_ = buffer_end_ = flat.data() + flat.size() - kSlopBytes;
  311|     10|      next_chunk_ = patch_buffer_;
  312|     10|      if (aliasing_ == kOnPatch) aliasing_ = kNoDelta;
  ------------------
  |  Branch (312:11): [True: 0, False: 10]
  ------------------
  313|     10|      return flat.data();
  314|     10|    } else {
  315|      0|      if (!flat.empty()) {
  ------------------
  |  Branch (315:11): [True: 0, False: 0]
  ------------------
  316|      0|        std::memcpy(patch_buffer_, flat.data(), flat.size());
  317|      0|      }
  318|      0|      limit_ = 0;
  319|      0|      limit_end_ = buffer_end_ = patch_buffer_ + flat.size();
  320|      0|      next_chunk_ = nullptr;
  321|      0|      if (aliasing_ == kOnPatch) {
  ------------------
  |  Branch (321:11): [True: 0, False: 0]
  ------------------
  322|      0|        aliasing_ = reinterpret_cast<std::uintptr_t>(flat.data()) -
  323|      0|                    reinterpret_cast<std::uintptr_t>(patch_buffer_);
  324|      0|      }
  325|      0|      return patch_buffer_;
  326|      0|    }
  327|     10|  }
_ZN6google8protobuf8internal12ParseContext4DoneEPPKc:
  490|  3.42k|  bool Done(const char** ptr) { return DoneWithCheck(ptr, group_depth_); }
_ZN6google8protobuf8internal15VarintParseSlowEPKcjPj:
  669|     54|inline const char* VarintParseSlow(const char* p, uint32_t res, uint32_t* out) {
  670|     54|  auto tmp = VarintParseSlow32(p, res);
  671|     54|  *out = tmp.second;
  672|     54|  return tmp.first;
  673|     54|}
_ZN6google8protobuf8internal7ReadTagEPKcPjj:
  948|  2.69k|                           uint32_t /*max_tag*/ = 0) {
  949|  2.69k|  uint32_t res = static_cast<uint8_t>(p[0]);
  950|  2.69k|  if (res < 128) {
  ------------------
  |  Branch (950:7): [True: 2.67k, False: 28]
  ------------------
  951|  2.67k|    *out = res;
  952|  2.67k|    return p + 1;
  953|  2.67k|  }
  954|     28|  uint32_t second = static_cast<uint8_t>(p[1]);
  955|     28|  res += (second - 1) << 7;
  956|     28|  if (second < 128) {
  ------------------
  |  Branch (956:7): [True: 28, False: 0]
  ------------------
  957|     28|    *out = res;
  958|     28|    return p + 2;
  959|     28|  }
  960|      0|  auto tmp = ReadTagFallback(p, res);
  961|      0|  *out = tmp.second;
  962|      0|  return tmp.first;
  963|     28|}
_ZN6google8protobuf8internal8ReadSizeEPPKc:
 1092|  1.66k|inline uint32_t ReadSize(const char** pp) {
 1093|  1.66k|  auto p = *pp;
 1094|  1.66k|  uint32_t res = static_cast<uint8_t>(p[0]);
 1095|  1.66k|  if (res < 128) {
  ------------------
  |  Branch (1095:7): [True: 1.60k, False: 58]
  ------------------
 1096|  1.60k|    *pp = p + 1;
 1097|  1.60k|    return res;
 1098|  1.60k|  }
 1099|     58|  auto x = ReadSizeFallback(p, res);
 1100|     58|  *pp = x.first;
 1101|     58|  return x.second;
 1102|  1.66k|}
_ZN6google8protobuf8internal12ReadVarint64EPPKc:
 1109|     44|inline uint64_t ReadVarint64(const char** p) {
 1110|     44|  uint64_t tmp;
 1111|     44|  *p = VarintParse(*p, &tmp);
 1112|     44|  return tmp;
 1113|     44|}
_ZN6google8protobuf8internal12ReadVarint32EPPKc:
 1115|  1.47k|inline uint32_t ReadVarint32(const char** p) {
 1116|  1.47k|  uint32_t tmp;
 1117|  1.47k|  *p = VarintParse(*p, &tmp);
 1118|  1.47k|  return tmp;
 1119|  1.47k|}
_ZN6google8protobuf8internal12ParseContext35ReadSizeAndPushLimitAndDepthInlinedEPKcPNS1_18EpsCopyInputStream10LimitTokenE:
 1161|    720|    const char* ptr, LimitToken* old_limit) {
 1162|    720|  int size = ReadSize(&ptr);
 1163|    720|  if (PROTOBUF_PREDICT_FALSE(!ptr) || depth_ <= 0) {
  ------------------
  |  |  539|  1.44k|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (539:36): [True: 0, False: 720]
  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  Branch (539:63): [True: 0, False: 720]
  |  |  ------------------
  ------------------
  |  Branch (1163:39): [True: 0, False: 720]
  ------------------
 1164|      0|    return nullptr;
 1165|      0|  }
 1166|    720|  *old_limit = PushLimit(ptr, size);
 1167|    720|  --depth_;
 1168|    720|  return ptr;
 1169|    720|}
_ZN6google8protobuf8internal11VarintParseImEEPKcS4_PT_:
  910|     44|PROTOBUF_NODISCARD const char* VarintParse(const char* p, T* out) {
  911|       |#if defined(__aarch64__) && defined(PROTOBUF_LITTLE_ENDIAN)
  912|       |  // This optimization is not supported in big endian mode
  913|       |  uint64_t first8;
  914|       |  std::memcpy(&first8, p, sizeof(first8));
  915|       |  if (PROTOBUF_PREDICT_TRUE((first8 & 0x80) == 0)) {
  916|       |    *out = static_cast<uint8_t>(first8);
  917|       |    return p + 1;
  918|       |  }
  919|       |  if (PROTOBUF_PREDICT_TRUE((first8 & 0x8000) == 0)) {
  920|       |    uint64_t chunk1;
  921|       |    uint64_t chunk2;
  922|       |    // Extracting the two chunks this way gives a speedup for this path.
  923|       |    chunk1 = Ubfx7(first8, 0);
  924|       |    chunk2 = Ubfx7(first8, 8);
  925|       |    *out = chunk1 | (chunk2 << 7);
  926|       |    return p + 2;
  927|       |  }
  928|       |  return VarintParseSlowArm(p, out, first8);
  929|       |#else   // __aarch64__
  930|     44|  auto ptr = reinterpret_cast<const uint8_t*>(p);
  931|     44|  uint32_t res = ptr[0];
  932|     44|  if ((res & 0x80) == 0) {
  ------------------
  |  Branch (932:7): [True: 44, False: 0]
  ------------------
  933|     44|    *out = res;
  934|     44|    return p + 1;
  935|     44|  }
  936|      0|  return VarintParseSlow(p, res, out);
  937|     44|#endif  // __aarch64__
  938|     44|}
_ZN6google8protobuf8internal11VarintParseIjEEPKcS4_PT_:
  910|  1.47k|PROTOBUF_NODISCARD const char* VarintParse(const char* p, T* out) {
  911|       |#if defined(__aarch64__) && defined(PROTOBUF_LITTLE_ENDIAN)
  912|       |  // This optimization is not supported in big endian mode
  913|       |  uint64_t first8;
  914|       |  std::memcpy(&first8, p, sizeof(first8));
  915|       |  if (PROTOBUF_PREDICT_TRUE((first8 & 0x80) == 0)) {
  916|       |    *out = static_cast<uint8_t>(first8);
  917|       |    return p + 1;
  918|       |  }
  919|       |  if (PROTOBUF_PREDICT_TRUE((first8 & 0x8000) == 0)) {
  920|       |    uint64_t chunk1;
  921|       |    uint64_t chunk2;
  922|       |    // Extracting the two chunks this way gives a speedup for this path.
  923|       |    chunk1 = Ubfx7(first8, 0);
  924|       |    chunk2 = Ubfx7(first8, 8);
  925|       |    *out = chunk1 | (chunk2 << 7);
  926|       |    return p + 2;
  927|       |  }
  928|       |  return VarintParseSlowArm(p, out, first8);
  929|       |#else   // __aarch64__
  930|  1.47k|  auto ptr = reinterpret_cast<const uint8_t*>(p);
  931|  1.47k|  uint32_t res = ptr[0];
  932|  1.47k|  if ((res & 0x80) == 0) {
  ------------------
  |  Branch (932:7): [True: 1.42k, False: 54]
  ------------------
  933|  1.42k|    *out = res;
  934|  1.42k|    return p + 1;
  935|  1.42k|  }
  936|     54|  return VarintParseSlow(p, res, out);
  937|  1.47k|#endif  // __aarch64__
  938|  1.47k|}
_ZN6google8protobuf8internal9ExpectTagILj26EEEbPKc:
  606|     24|bool ExpectTag(const char* ptr) {
  607|     24|  if (tag < 128) {
  ------------------
  |  Branch (607:7): [Folded - Ignored]
  ------------------
  608|     24|    return *ptr == static_cast<char>(tag);
  609|     24|  } else {
  610|      0|    static_assert(tag < 128 * 128, "We only expect tags for 1 or 2 bytes");
  611|      0|    char buf[2] = {static_cast<char>(tag | 0x80), static_cast<char>(tag >> 7)};
  612|      0|    return std::memcmp(ptr, buf, 2) == 0;
  613|      0|  }
  614|     24|}
_ZN6google8protobuf8internal9ExpectTagILj18EEEbPKc:
  606|    456|bool ExpectTag(const char* ptr) {
  607|    456|  if (tag < 128) {
  ------------------
  |  Branch (607:7): [Folded - Ignored]
  ------------------
  608|    456|    return *ptr == static_cast<char>(tag);
  609|    456|  } else {
  610|      0|    static_assert(tag < 128 * 128, "We only expect tags for 1 or 2 bytes");
  611|      0|    char buf[2] = {static_cast<char>(tag | 0x80), static_cast<char>(tag >> 7)};
  612|      0|    return std::memcmp(ptr, buf, 2) == 0;
  613|      0|  }
  614|    456|}
_ZN6google8protobuf8internal9ExpectTagILj34EEEbPKc:
  606|     78|bool ExpectTag(const char* ptr) {
  607|     78|  if (tag < 128) {
  ------------------
  |  Branch (607:7): [Folded - Ignored]
  ------------------
  608|     78|    return *ptr == static_cast<char>(tag);
  609|     78|  } else {
  610|      0|    static_assert(tag < 128 * 128, "We only expect tags for 1 or 2 bytes");
  611|      0|    char buf[2] = {static_cast<char>(tag | 0x80), static_cast<char>(tag >> 7)};
  612|      0|    return std::memcmp(ptr, buf, 2) == 0;
  613|      0|  }
  614|     78|}
_ZN6google8protobuf8internal9ExpectTagILj42EEEbPKc:
  606|     10|bool ExpectTag(const char* ptr) {
  607|     10|  if (tag < 128) {
  ------------------
  |  Branch (607:7): [Folded - Ignored]
  ------------------
  608|     10|    return *ptr == static_cast<char>(tag);
  609|     10|  } else {
  610|      0|    static_assert(tag < 128 * 128, "We only expect tags for 1 or 2 bytes");
  611|      0|    char buf[2] = {static_cast<char>(tag | 0x80), static_cast<char>(tag >> 7)};
  612|      0|    return std::memcmp(ptr, buf, 2) == 0;
  613|      0|  }
  614|     10|}
_ZN6google8protobuf8internal9ExpectTagILj74EEEbPKc:
  606|      8|bool ExpectTag(const char* ptr) {
  607|      8|  if (tag < 128) {
  ------------------
  |  Branch (607:7): [Folded - Ignored]
  ------------------
  608|      8|    return *ptr == static_cast<char>(tag);
  609|      8|  } else {
  610|      0|    static_assert(tag < 128 * 128, "We only expect tags for 1 or 2 bytes");
  611|      0|    char buf[2] = {static_cast<char>(tag | 0x80), static_cast<char>(tag >> 7)};
  612|      0|    return std::memcmp(ptr, buf, 2) == 0;
  613|      0|  }
  614|      8|}
_ZN6google8protobuf8internal12ParseContextC2IJRNSt3__117basic_string_viewIcNS4_11char_traitsIcEEEEEEEibPPKcDpOT_:
  482|     10|      : EpsCopyInputStream(aliasing), depth_(depth) {
  483|     10|    *start = InitFrom(std::forward<T>(args)...);
  484|     10|  }

_ZN6google8protobuf8internal15AllocateAtLeastEm:
  102|   102M|inline SizedPtr AllocateAtLeast(size_t size) {
  103|       |#if !defined(NDEBUG) && defined(ABSL_HAVE_THREAD_LOCAL) && \
  104|       |    defined(__cpp_inline_variables)
  105|       |  if (allocate_at_least_hook != nullptr) {
  106|       |    return allocate_at_least_hook(size, allocate_at_least_hook_context);
  107|       |  }
  108|       |#endif  // !NDEBUG && ABSL_HAVE_THREAD_LOCAL && __cpp_inline_variables
  109|   102M|  return {::operator new(size), size};
  110|   102M|}
_ZN6google8protobuf8internal11SizedDeleteEPvm:
  112|   107M|inline void SizedDelete(void* p, size_t size) {
  113|   107M|#if defined(__cpp_sized_deallocation)
  114|   107M|  ::operator delete(p, size);
  115|       |#else
  116|       |  // Avoid -Wunused-parameter
  117|       |  (void)size;
  118|       |  ::operator delete(p);
  119|       |#endif
  120|   107M|}
_ZN6google8protobuf8internal16SizedArrayDeleteEPvm:
  121|     38|inline void SizedArrayDelete(void* p, size_t size) {
  122|     38|#if defined(__cpp_sized_deallocation)
  123|     38|  ::operator delete[](p, size);
  124|       |#else
  125|       |  // Avoid -Wunused-parameter
  126|       |  (void)size;
  127|       |  ::operator delete[](p);
  128|       |#endif
  129|     38|}

_ZNK6google8protobuf13RepeatedFieldIiE8elementsEv:
  434|  15.7k|  Element* elements() const {
  435|  15.7k|    ABSL_DCHECK_GT(total_size_, 0);
  ------------------
  |  |   80|  15.7k|  ABSL_DCHECK_GT_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   96|  15.7k|  ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|  15.7k|  while (false && ((void)(x), (void)(y), 0)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (56:10): [Folded - Ignored]
  |  |  |  |  |  |  |  Branch (56:19): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   57|  15.7k|  ::absl::log_internal::NullStream().InternalStream()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  436|       |    // Because of above pre-condition this cast is safe.
  437|  15.7k|    return unsafe_elements();
  438|  15.7k|  }
_ZNK6google8protobuf13RepeatedFieldIiE15unsafe_elementsEv:
  443|   703k|  Element* unsafe_elements() const {
  444|   703k|    return static_cast<Element*>(arena_or_elements_);
  445|   703k|  }
_ZN6google8protobuf13RepeatedFieldIiE19ExchangeCurrentSizeEi:
  408|   674k|  inline int ExchangeCurrentSize(int new_size) {
  409|   674k|    const int prev_size = current_size_;
  410|   674k|    AnnotateSize(prev_size, new_size);
  411|   674k|    current_size_ = new_size;
  412|   674k|    return prev_size;
  413|   674k|  }
_ZNK6google8protobuf13RepeatedFieldIiE12AnnotateSizeEii:
  391|   685k|  void AnnotateSize(int old_size, int new_size) const {
  392|   685k|    if (old_size != new_size) {
  ------------------
  |  Branch (392:9): [True: 680k, False: 5.84k]
  ------------------
  393|   680k|      ABSL_ANNOTATE_CONTIGUOUS_CONTAINER(
  394|   680k|          unsafe_elements(), unsafe_elements() + total_size_,
  395|   680k|          unsafe_elements() + old_size, unsafe_elements() + new_size);
  396|   680k|      if (new_size < old_size) {
  ------------------
  |  Branch (396:11): [True: 5.82k, False: 674k]
  ------------------
  397|  5.82k|        ABSL_ANNOTATE_MEMORY_IS_UNINITIALIZED(
  398|  5.82k|            unsafe_elements() + new_size,
  399|  5.82k|            (old_size - new_size) * sizeof(Element));
  400|  5.82k|      }
  401|   680k|    }
  402|   685k|  }
_ZN6google8protobuf13RepeatedFieldIiE4GrowEii:
 1000|  5.82k|                                                    int new_size) {
 1001|  5.82k|  AnnotateSize(current_size, total_size_);
 1002|  5.82k|  GrowNoAnnotate(current_size, new_size);
 1003|  5.82k|  AnnotateSize(total_size_, current_size);
 1004|  5.82k|}
_ZN6google8protobuf13RepeatedFieldIiE14GrowNoAnnotateEii:
  945|  5.82k|                                                              int new_size) {
  946|  5.82k|  ABSL_DCHECK_GT(new_size, total_size_);
  ------------------
  |  |   80|  5.82k|  ABSL_DCHECK_GT_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   96|  5.82k|  ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|  5.82k|  while (false && ((void)(x), (void)(y), 0)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (56:10): [Folded - Ignored]
  |  |  |  |  |  |  |  Branch (56:19): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   57|  5.82k|  ::absl::log_internal::NullStream().InternalStream()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  947|  5.82k|  Rep* new_rep;
  948|  5.82k|  Arena* arena = GetOwningArena();
  949|       |
  950|  5.82k|  new_size = internal::CalculateReserveSize<Element, kRepHeaderSize>(
  951|  5.82k|      total_size_, new_size);
  952|       |
  953|  5.82k|  ABSL_DCHECK_LE(
  ------------------
  |  |   74|      0|  ABSL_DCHECK_LE_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   90|  5.82k|  ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|  5.82k|  while (false && ((void)(x), (void)(y), 0)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (56:10): [Folded - Ignored]
  |  |  |  |  |  |  |  Branch (56:19): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   57|  5.82k|  ::absl::log_internal::NullStream().InternalStream()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  954|      0|      static_cast<size_t>(new_size),
  955|      0|      (std::numeric_limits<size_t>::max() - kRepHeaderSize) / sizeof(Element))
  956|      0|      << "Requested size is too large to fit into size_t.";
  957|  5.82k|  size_t bytes =
  958|  5.82k|      kRepHeaderSize + sizeof(Element) * static_cast<size_t>(new_size);
  959|  5.82k|  if (arena == nullptr) {
  ------------------
  |  Branch (959:7): [True: 5.82k, False: 0]
  ------------------
  960|  5.82k|    ABSL_DCHECK_LE((bytes - kRepHeaderSize) / sizeof(Element),
  ------------------
  |  |   74|      0|  ABSL_DCHECK_LE_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   90|  5.82k|  ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|  5.82k|  while (false && ((void)(x), (void)(y), 0)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (56:10): [Folded - Ignored]
  |  |  |  |  |  |  |  Branch (56:19): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   57|  5.82k|  ::absl::log_internal::NullStream().InternalStream()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  961|      0|                   static_cast<size_t>(std::numeric_limits<int>::max()))
  962|      0|        << "Requested size is too large to fit element count into int.";
  963|  5.82k|    internal::SizedPtr res = internal::AllocateAtLeast(bytes);
  964|  5.82k|    size_t num_available =
  965|  5.82k|        std::min((res.n - kRepHeaderSize) / sizeof(Element),
  966|  5.82k|                 static_cast<size_t>(std::numeric_limits<int>::max()));
  967|  5.82k|    new_size = static_cast<int>(num_available);
  968|  5.82k|    new_rep = static_cast<Rep*>(res.p);
  969|  5.82k|  } else {
  970|      0|    new_rep = reinterpret_cast<Rep*>(Arena::CreateArray<char>(arena, bytes));
  971|      0|  }
  972|  5.82k|  new_rep->arena = arena;
  973|       |
  974|  5.82k|  if (total_size_ > 0) {
  ------------------
  |  Branch (974:7): [True: 823, False: 5.00k]
  ------------------
  975|    823|    if (current_size > 0) {
  ------------------
  |  Branch (975:9): [True: 823, False: 0]
  ------------------
  976|    823|      Element* pnew = new_rep->elements();
  977|    823|      Element* pold = elements();
  978|       |      // TODO(b/263791665): add absl::is_trivially_relocatable<Element>
  979|    823|      if (std::is_trivial<Element>::value) {
  ------------------
  |  Branch (979:11): [Folded - Ignored]
  ------------------
  980|    823|        memcpy(static_cast<void*>(pnew), pold, current_size * sizeof(Element));
  981|    823|      } else {
  982|      0|        for (Element* end = pnew + current_size; pnew != end; ++pnew, ++pold) {
  ------------------
  |  Branch (982:50): [True: 0, False: 0]
  ------------------
  983|      0|          ::new (static_cast<void*>(pnew)) Element(std::move(*pold));
  984|      0|          pold->~Element();
  985|      0|        }
  986|      0|      }
  987|    823|    }
  988|    823|    InternalDeallocate();
  989|    823|  }
  990|       |
  991|  5.82k|  total_size_ = new_size;
  992|  5.82k|  arena_or_elements_ = new_rep->elements();
  993|  5.82k|}
_ZNK6google8protobuf13RepeatedFieldIiE14GetOwningArenaEv:
  330|  5.82k|  inline Arena* GetOwningArena() const {
  331|  5.82k|    return (total_size_ == 0) ? static_cast<Arena*>(arena_or_elements_)
  ------------------
  |  Branch (331:12): [True: 5.00k, False: 823]
  ------------------
  332|  5.82k|                              : rep()->arena;
  333|  5.82k|  }
_ZNK6google8protobuf13RepeatedFieldIiE3repEv:
  449|  12.4k|  Rep* rep() const {
  450|  12.4k|    return reinterpret_cast<Rep*>(reinterpret_cast<char*>(elements()) -
  451|  12.4k|                                  kRepHeaderSize);
  452|  12.4k|  }
_ZN6google8protobuf8internal20CalculateReserveSizeIiLi8EEEiii:
  915|  5.82k|inline int CalculateReserveSize(int total_size, int new_size) {
  916|  5.82k|  constexpr int lower_limit = RepeatedFieldLowerClampLimit<T, kRepHeaderSize>();
  917|  5.82k|  if (new_size < lower_limit) {
  ------------------
  |  Branch (917:7): [True: 4.85k, False: 971]
  ------------------
  918|       |    // Clamp to smallest allowed size.
  919|  4.85k|    return lower_limit;
  920|  4.85k|  }
  921|    971|  constexpr int kMaxSizeBeforeClamp =
  922|    971|      (std::numeric_limits<int>::max() - kRepHeaderSize) / 2;
  923|    971|  if (PROTOBUF_PREDICT_FALSE(total_size > kMaxSizeBeforeClamp)) {
  ------------------
  |  |  539|    971|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (539:36): [True: 0, False: 971]
  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  Branch (539:63): [True: 0, False: 971]
  |  |  ------------------
  ------------------
  924|      0|    return std::numeric_limits<int>::max();
  925|      0|  }
  926|       |  // We want to double the number of bytes, not the number of elements, to try
  927|       |  // to stay within power-of-two allocations.
  928|       |  // The allocation has kRepHeaderSize + sizeof(T) * capacity.
  929|    971|  int doubled_size = 2 * total_size + kRepHeaderSize / sizeof(T);
  930|    971|  return std::max(doubled_size, new_size);
  931|    971|}
_ZN6google8protobuf13RepeatedFieldIiE3Rep8elementsEv:
  421|  6.64k|    Element* elements() {
  422|  6.64k|      return reinterpret_cast<Element*>(reinterpret_cast<char*>(this) +
  423|  6.64k|                                        kRepHeaderSize);
  424|  6.64k|    }
_ZN6google8protobuf13RepeatedFieldIiE18InternalDeallocateILb0EEEvv:
  467|    823|  void InternalDeallocate() {
  468|    823|    const size_t bytes = total_size_ * sizeof(Element) + kRepHeaderSize;
  469|    823|    if (rep()->arena == nullptr) {
  ------------------
  |  Branch (469:9): [True: 823, False: 0]
  ------------------
  470|    823|      internal::SizedDelete(rep(), bytes);
  471|    823|    } else if (!in_destructor) {
  ------------------
  |  Branch (471:16): [Folded - Ignored]
  ------------------
  472|       |      // If we are in the destructor, we might be being destroyed as part of
  473|       |      // the arena teardown. We can't try and return blocks to the arena then.
  474|      0|      rep()->arena->ReturnArrayMemory(rep(), bytes);
  475|      0|    }
  476|    823|  }
_ZN6google8protobuf13RepeatedFieldIiE7DestroyEPKiS4_:
  459|  5.02k|  static void Destroy(const Element* begin, const Element* end) {
  460|  5.02k|    if (!std::is_trivial<Element>::value) {
  ------------------
  |  Branch (460:9): [Folded - Ignored]
  ------------------
  461|      0|      std::for_each(begin, end, [&](const Element& e) { e.~Element(); });
  462|      0|    }
  463|  5.02k|  }
_ZN6google8protobuf13RepeatedFieldIiE5ClearEv:
  770|     20|inline void RepeatedField<Element>::Clear() {
  771|     20|  Destroy(unsafe_elements(), unsafe_elements() + current_size_);
  772|     20|  ExchangeCurrentSize(0);
  773|     20|}
_ZN6google8protobuf13RepeatedFieldIiE3AddEi:
  661|   671k|inline void RepeatedField<Element>::Add(Element value) {
  662|   671k|  int total_size = total_size_;
  663|   671k|  Element* elem = unsafe_elements();
  664|   671k|  if (ABSL_PREDICT_FALSE(current_size_ == total_size)) {
  ------------------
  |  |  177|   671k|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (177:31): [True: 3.32k, False: 668k]
  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  Branch (177:58): [True: 3.32k, False: 668k]
  |  |  ------------------
  ------------------
  665|  3.32k|    Grow(current_size_, current_size_ + 1);
  666|  3.32k|    total_size = total_size_;
  667|  3.32k|    elem = unsafe_elements();
  668|  3.32k|  }
  669|   671k|  int new_size = current_size_ + 1;
  670|   671k|  void* p = elem + ExchangeCurrentSize(new_size);
  671|   671k|  ::new (p) Element(std::move(value));
  672|       |
  673|       |  // The below helps the compiler optimize dense loops.
  674|   671k|  ABSL_ASSUME(new_size == current_size_);
  ------------------
  |  |  258|   671k|#define ABSL_ASSUME(cond) __builtin_assume(cond)
  ------------------
  675|   671k|  ABSL_ASSUME(elem == arena_or_elements_);
  ------------------
  |  |  258|   671k|#define ABSL_ASSUME(cond) __builtin_assume(cond)
  ------------------
  676|   671k|  ABSL_ASSUME(total_size == total_size_);
  ------------------
  |  |  258|   671k|#define ABSL_ASSUME(cond) __builtin_assume(cond)
  ------------------
  677|   671k|}
_ZN6google8protobuf13RepeatedFieldIiEC2EPNS0_5ArenaE:
  489|  5.04k|    : current_size_(0), total_size_(0), arena_or_elements_(arena) {
  490|  5.04k|  StaticValidityCheck();
  491|  5.04k|}
_ZN6google8protobuf13RepeatedFieldIiE19StaticValidityCheckEv:
  163|  15.0k|  static constexpr PROTOBUF_ALWAYS_INLINE void StaticValidityCheck() {
  164|  15.0k|    static_assert(
  165|  15.0k|        absl::disjunction<internal::is_supported_integral_type<Element>,
  166|  15.0k|                          internal::is_supported_floating_point_type<Element>,
  167|  15.0k|                          std::is_same<absl::Cord, Element>,
  168|  15.0k|                          is_proto_enum<Element>>::value,
  169|  15.0k|        "We only support non-string scalars in RepeatedField.");
  170|  15.0k|  }
_ZN6google8protobuf13RepeatedFieldIiED2Ev:
  513|  7.54k|RepeatedField<Element>::~RepeatedField() {
  514|  7.54k|  StaticValidityCheck();
  515|       |#ifndef NDEBUG
  516|       |  // Try to trigger segfault / asan failure in non-opt builds if arena_
  517|       |  // lifetime has ended before the destructor.
  518|       |  auto arena = GetOwningArena();
  519|       |  if (arena) (void)arena->SpaceAllocated();
  520|       |#endif
  521|  7.54k|  if (total_size_ > 0) {
  ------------------
  |  Branch (521:7): [True: 5.00k, False: 2.54k]
  ------------------
  522|  5.00k|    Destroy(unsafe_elements(), unsafe_elements() + current_size_);
  523|  5.00k|    InternalDeallocate<true>();
  524|  5.00k|  }
  525|  7.54k|}
_ZN6google8protobuf13RepeatedFieldIiE18InternalDeallocateILb1EEEvv:
  467|  5.00k|  void InternalDeallocate() {
  468|  5.00k|    const size_t bytes = total_size_ * sizeof(Element) + kRepHeaderSize;
  469|  5.00k|    if (rep()->arena == nullptr) {
  ------------------
  |  Branch (469:9): [True: 5.00k, False: 0]
  ------------------
  470|  5.00k|      internal::SizedDelete(rep(), bytes);
  471|  5.00k|    } else if (!in_destructor) {
  ------------------
  |  Branch (471:16): [Folded - Ignored]
  ------------------
  472|       |      // If we are in the destructor, we might be being destroyed as part of
  473|       |      // the arena teardown. We can't try and return blocks to the arena then.
  474|      0|      rep()->arena->ReturnArrayMemory(rep(), bytes);
  475|      0|    }
  476|  5.00k|  }
_ZN6google8protobuf8internal7memswapILm16EEEvPcS3_:
  103|   505k|void memswap(char* a, char* b) {
  104|   505k|#if __SIZEOF_INT128__
  105|   505k|  using Buffer = __uint128_t;
  106|       |#else
  107|       |  using Buffer = uint64_t;
  108|       |#endif
  109|       |
  110|   505k|  constexpr size_t kBlockSize = sizeof(Buffer);
  111|   505k|  Buffer buf;
  112|  1.01M|  for (size_t i = 0; i < kSize / kBlockSize; ++i) {
  ------------------
  |  Branch (112:22): [True: 505k, False: 505k]
  ------------------
  113|   505k|    memcpy(&buf, a, kBlockSize);
  114|   505k|    memcpy(a, b, kBlockSize);
  115|   505k|    memcpy(b, &buf, kBlockSize);
  116|   505k|    a += kBlockSize;
  117|   505k|    b += kBlockSize;
  118|   505k|  }
  119|       |
  120|       |#if defined(__GNUC__) && !defined(__clang__)
  121|       |  // Workaround GCC bug: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99578
  122|       |#pragma GCC diagnostic push
  123|       |#pragma GCC diagnostic ignored "-Wpragmas"
  124|       |#pragma GCC diagnostic ignored "-Wstringop-overflow"
  125|       |#endif  // __GNUC__
  126|       |
  127|       |  // Swap the leftover bytes, could be zero.
  128|   505k|  memcpy(&buf, a, kSize % kBlockSize);
  129|   505k|  memcpy(a, b, kSize % kBlockSize);
  130|   505k|  memcpy(b, &buf, kSize % kBlockSize);
  131|       |
  132|       |#if defined(__GNUC__) && !defined(__clang__)
  133|       |#pragma GCC diagnostic pop
  134|       |#endif  // GCC
  135|   505k|}
_ZN6google8protobuf13RepeatedFieldIiEC2ERKS2_:
  495|  2.50k|    : current_size_(0), total_size_(0), arena_or_elements_(nullptr) {
  496|  2.50k|  StaticValidityCheck();
  497|  2.50k|  if (auto size = rhs.current_size_) {
  ------------------
  |  Branch (497:12): [True: 2.50k, False: 0]
  ------------------
  498|  2.50k|    Grow(0, size);
  499|  2.50k|    ExchangeCurrentSize(size);
  500|  2.50k|    UninitializedCopyN(rhs.elements(), size, unsafe_elements());
  501|  2.50k|  }
  502|  2.50k|}
_ZN6google8protobuf13RepeatedFieldIiE18UninitializedCopyNEPKiiPi:
  346|  2.50k|                                        int n, Element* PROTOBUF_RESTRICT dst) {
  347|  2.50k|    std::uninitialized_copy_n(src, n, dst);
  348|  2.50k|  }
_ZN6google8protobuf13RepeatedFieldIiE12InternalSwapEPS2_:
  826|  2.50k|inline void RepeatedField<Element>::InternalSwap(RepeatedField* other) {
  827|  2.50k|  ABSL_DCHECK(this != other);
  ------------------
  |  |   43|  2.50k|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|  2.50k|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|  5.00k|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  163|  2.50k|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|  5.00k|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|  5.00k|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  828|       |
  829|       |  // Swap all fields at once.
  830|  2.50k|  static_assert(std::is_standard_layout<RepeatedField<Element>>::value,
  831|  2.50k|                "offsetof() requires standard layout before c++17");
  832|  2.50k|  internal::memswap<offsetof(RepeatedField, arena_or_elements_) +
  833|  2.50k|                    sizeof(this->arena_or_elements_) -
  834|  2.50k|                    offsetof(RepeatedField, current_size_)>(
  835|  2.50k|      reinterpret_cast<char*>(this) + offsetof(RepeatedField, current_size_),
  836|  2.50k|      reinterpret_cast<char*>(other) + offsetof(RepeatedField, current_size_));
  837|  2.50k|}
_ZN6google8protobuf8internal20CalculateReserveSizeIPvLi8EEEiii:
  915|   102M|inline int CalculateReserveSize(int total_size, int new_size) {
  916|   102M|  constexpr int lower_limit = RepeatedFieldLowerClampLimit<T, kRepHeaderSize>();
  917|   102M|  if (new_size < lower_limit) {
  ------------------
  |  Branch (917:7): [True: 0, False: 102M]
  ------------------
  918|       |    // Clamp to smallest allowed size.
  919|      0|    return lower_limit;
  920|      0|  }
  921|   102M|  constexpr int kMaxSizeBeforeClamp =
  922|   102M|      (std::numeric_limits<int>::max() - kRepHeaderSize) / 2;
  923|   102M|  if (PROTOBUF_PREDICT_FALSE(total_size > kMaxSizeBeforeClamp)) {
  ------------------
  |  |  539|   102M|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (539:36): [True: 0, False: 102M]
  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  Branch (539:63): [True: 0, False: 102M]
  |  |  ------------------
  ------------------
  924|      0|    return std::numeric_limits<int>::max();
  925|      0|  }
  926|       |  // We want to double the number of bytes, not the number of elements, to try
  927|       |  // to stay within power-of-two allocations.
  928|       |  // The allocation has kRepHeaderSize + sizeof(T) * capacity.
  929|   102M|  int doubled_size = 2 * total_size + kRepHeaderSize / sizeof(T);
  930|   102M|  return std::max(doubled_size, new_size);
  931|   102M|}

_ZN6google8protobuf8internal20RepeatedPtrFieldBaseC2EPNS0_5ArenaE:
  169|   105M|      : arena_(arena), current_size_(0), total_size_(0), rep_(nullptr) {}
_ZN6google8protobuf8internal20RepeatedPtrFieldBaseD2Ev:
  174|   105M|  ~RepeatedPtrFieldBase() {
  175|       |#ifndef NDEBUG
  176|       |    // Try to trigger segfault / asan failure in non-opt builds. If arena_
  177|       |    // lifetime has ended before the destructor.
  178|       |    if (arena_) (void)arena_->SpaceAllocated();
  179|       |#endif
  180|   105M|  }
_ZNK6google8protobuf8internal20RepeatedPtrFieldBase4sizeEv:
  183|    908|  int size() const { return current_size_; }
_ZNK6google8protobuf8internal20RepeatedPtrFieldBase12NeedsDestroyEv:
  261|   105M|  bool NeedsDestroy() const { return rep_ != nullptr && arena_ == nullptr; }
  ------------------
  |  Branch (261:38): [True: 101M, False: 3.61M]
  |  Branch (261:57): [True: 101M, False: 0]
  ------------------
_ZNK6google8protobuf8internal20RepeatedPtrFieldBase8raw_dataEv:
  372|    464|  void* const* raw_data() const { return rep_ ? rep_->elements : nullptr; }
  ------------------
  |  Branch (372:42): [True: 64, False: 400]
  ------------------
_ZNK6google8protobuf8internal20RepeatedPtrFieldBase14GetOwningArenaEv:
  644|   203M|  inline Arena* GetOwningArena() const { return arena_; }
_ZN6google8protobuf8internal20RepeatedPtrFieldBase19ExchangeCurrentSizeEi:
  668|   103M|  inline int ExchangeCurrentSize(int new_size) {
  669|   103M|    int prev_size = current_size_;
  670|   103M|    current_size_ = new_size;
  671|   103M|    return prev_size;
  672|   103M|  }
_ZN6google8protobuf8internal20RepeatedPtrFieldBase17MergeFromInternalERKS2_MS2_FvPPvS6_iiE:
  713|   100M|      void (RepeatedPtrFieldBase::*inner_loop)(void**, void**, int, int)) {
  714|       |    // Note: wrapper has already guaranteed that other.rep_ != nullptr here.
  715|   100M|    int other_size = other.current_size_;
  716|   100M|    void** other_elements = other.rep_->elements;
  717|   100M|    void** new_elements = InternalExtend(other_size);
  718|   100M|    int allocated_elems = rep_->allocated_size - current_size_;
  719|   100M|    (this->*inner_loop)(new_elements, other_elements, other_size,
  720|   100M|                        allocated_elems);
  721|   100M|    ExchangeCurrentSize(current_size_ + other_size);
  722|   100M|    if (rep_->allocated_size < current_size_) {
  ------------------
  |  Branch (722:9): [True: 100M, False: 0]
  ------------------
  723|   100M|      rep_->allocated_size = current_size_;
  724|   100M|    }
  725|   100M|  }
_ZN6google8protobuf8internal17StringTypeHandler3NewEPNS0_5ArenaE:
  874|      6|  static PROTOBUF_NOINLINE std::string* New(Arena* arena) {
  875|      6|    return Arena::Create<std::string>(arena);
  876|      6|  }
_ZN6google8protobuf8internal17StringTypeHandler16NewFromPrototypeEPKNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEPNS0_5ArenaE:
  881|      6|                                              Arena* arena) {
  882|      6|    return New(arena);
  883|      6|  }
_ZN6google8protobuf8internal17StringTypeHandler6DeleteEPNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEPNS0_5ArenaE:
  885|      6|  static inline void Delete(std::string* value, Arena* arena) {
  886|      6|    if (arena == nullptr) {
  ------------------
  |  Branch (886:9): [True: 6, False: 0]
  ------------------
  887|      6|      delete value;
  888|      6|    }
  889|      6|  }
_ZN6google8protobuf16RepeatedPtrFieldINS0_7MessageEE19StaticValidityCheckEv:
  913|  15.0k|  static constexpr PROTOBUF_ALWAYS_INLINE void StaticValidityCheck() {
  914|  15.0k|    static_assert(
  915|  15.0k|        absl::disjunction<
  916|  15.0k|            internal::is_supported_string_type<Element>,
  917|  15.0k|            internal::is_supported_message_type<Element>>::value,
  918|  15.0k|        "We only support string and Message types in RepeatedPtrField.");
  919|  15.0k|  }
_ZN6google8protobuf16RepeatedPtrFieldINS_3api4expr8v1alpha14ExprEE3AddEv:
 1358|  2.73M|PROTOBUF_NOINLINE Element* RepeatedPtrField<Element>::Add() {
 1359|  2.73M|  return RepeatedPtrFieldBase::Add<TypeHandler>();
 1360|  2.73M|}
_ZN6google8protobuf8internal20RepeatedPtrFieldBase3AddINS0_16RepeatedPtrFieldINS_3api4expr8v1alpha14ExprEE11TypeHandlerEEEPNT_4TypeEPKSC_:
  209|  2.73M|      const typename TypeHandler::Type* prototype = nullptr) {
  210|  2.73M|    if (rep_ != nullptr && current_size_ < rep_->allocated_size) {
  ------------------
  |  Branch (210:9): [True: 1.89M, False: 835k]
  |  Branch (210:28): [True: 0, False: 1.89M]
  ------------------
  211|      0|      return cast<TypeHandler>(
  212|      0|          rep_->elements[ExchangeCurrentSize(current_size_ + 1)]);
  213|      0|    }
  214|  2.73M|    typename TypeHandler::Type* result =
  215|  2.73M|        TypeHandler::NewFromPrototype(prototype, arena_);
  216|  2.73M|    return reinterpret_cast<typename TypeHandler::Type*>(
  217|  2.73M|        AddOutOfLineHelper(result));
  218|  2.73M|  }
_ZN6google8protobuf8internal18GenericTypeHandlerINS_3api4expr8v1alpha14ExprEE16NewFromPrototypeEPKS6_PNS0_5ArenaE:
  807|   194M|                                              Arena* arena = nullptr) {
  808|   194M|    return New(arena);
  809|   194M|  }
_ZN6google8protobuf8internal18GenericTypeHandlerINS_3api4expr8v1alpha14ExprEE3NewEPNS0_5ArenaE:
  800|   194M|  static inline GenericType* New(Arena* arena) {
  801|   194M|    return Arena::CreateMaybeMessage<Type>(arena);
  802|   194M|  }
_ZN6google8protobuf16RepeatedPtrFieldINS_3api4expr8v1alpha123Expr_CreateStruct_EntryEE3AddEv:
 1358|   495k|PROTOBUF_NOINLINE Element* RepeatedPtrField<Element>::Add() {
 1359|   495k|  return RepeatedPtrFieldBase::Add<TypeHandler>();
 1360|   495k|}
_ZN6google8protobuf8internal20RepeatedPtrFieldBase3AddINS0_16RepeatedPtrFieldINS_3api4expr8v1alpha123Expr_CreateStruct_EntryEE11TypeHandlerEEEPNT_4TypeEPKSC_:
  209|   495k|      const typename TypeHandler::Type* prototype = nullptr) {
  210|   495k|    if (rep_ != nullptr && current_size_ < rep_->allocated_size) {
  ------------------
  |  Branch (210:9): [True: 16.3k, False: 479k]
  |  Branch (210:28): [True: 0, False: 16.3k]
  ------------------
  211|      0|      return cast<TypeHandler>(
  212|      0|          rep_->elements[ExchangeCurrentSize(current_size_ + 1)]);
  213|      0|    }
  214|   495k|    typename TypeHandler::Type* result =
  215|   495k|        TypeHandler::NewFromPrototype(prototype, arena_);
  216|   495k|    return reinterpret_cast<typename TypeHandler::Type*>(
  217|   495k|        AddOutOfLineHelper(result));
  218|   495k|  }
_ZN6google8protobuf8internal18GenericTypeHandlerINS_3api4expr8v1alpha123Expr_CreateStruct_EntryEE16NewFromPrototypeEPKS6_PNS0_5ArenaE:
  807|  8.10M|                                              Arena* arena = nullptr) {
  808|  8.10M|    return New(arena);
  809|  8.10M|  }
_ZN6google8protobuf8internal18GenericTypeHandlerINS_3api4expr8v1alpha123Expr_CreateStruct_EntryEE3NewEPNS0_5ArenaE:
  800|  8.10M|  static inline GenericType* New(Arena* arena) {
  801|  8.10M|    return Arena::CreateMaybeMessage<Type>(arena);
  802|  8.10M|  }
_ZN6google8protobuf16RepeatedPtrFieldINS_3api4expr8v1alpha14ExprEEC2EPNS0_5ArenaE:
 1249|  94.2M|    : RepeatedPtrFieldBase(arena) {
 1250|  94.2M|  StaticValidityCheck();
 1251|  94.2M|}
_ZN6google8protobuf16RepeatedPtrFieldINS_3api4expr8v1alpha14ExprEE19StaticValidityCheckEv:
  913|   188M|  static constexpr PROTOBUF_ALWAYS_INLINE void StaticValidityCheck() {
  914|   188M|    static_assert(
  915|   188M|        absl::disjunction<
  916|   188M|            internal::is_supported_string_type<Element>,
  917|   188M|            internal::is_supported_message_type<Element>>::value,
  918|   188M|        "We only support string and Message types in RepeatedPtrField.");
  919|   188M|  }
_ZN6google8protobuf16RepeatedPtrFieldINS_3api4expr8v1alpha14ExprEED2Ev:
 1269|  94.2M|RepeatedPtrField<Element>::~RepeatedPtrField() {
 1270|  94.2M|  StaticValidityCheck();
 1271|  94.2M|#ifdef __cpp_if_constexpr
 1272|  94.2M|  if constexpr (std::is_base_of<MessageLite, Element>::value) {
  ------------------
  |  Branch (1272:17): [Folded - Ignored]
  ------------------
 1273|       |#else
 1274|       |  if (std::is_base_of<MessageLite, Element>::value) {
 1275|       |#endif
 1276|  94.2M|    if (NeedsDestroy()) DestroyProtos();
  ------------------
  |  Branch (1276:9): [True: 93.9M, False: 291k]
  ------------------
 1277|  94.2M|  } else {
 1278|  94.2M|    Destroy<TypeHandler>();
 1279|  94.2M|  }
 1280|  94.2M|}
_ZN6google8protobuf16RepeatedPtrFieldINS_3api4expr8v1alpha123Expr_CreateStruct_EntryEEC2EPNS0_5ArenaE:
 1249|  11.2M|    : RepeatedPtrFieldBase(arena) {
 1250|  11.2M|  StaticValidityCheck();
 1251|  11.2M|}
_ZN6google8protobuf16RepeatedPtrFieldINS_3api4expr8v1alpha123Expr_CreateStruct_EntryEE19StaticValidityCheckEv:
  913|  22.4M|  static constexpr PROTOBUF_ALWAYS_INLINE void StaticValidityCheck() {
  914|  22.4M|    static_assert(
  915|  22.4M|        absl::disjunction<
  916|  22.4M|            internal::is_supported_string_type<Element>,
  917|  22.4M|            internal::is_supported_message_type<Element>>::value,
  918|  22.4M|        "We only support string and Message types in RepeatedPtrField.");
  919|  22.4M|  }
_ZN6google8protobuf16RepeatedPtrFieldINS_3api4expr8v1alpha123Expr_CreateStruct_EntryEED2Ev:
 1269|  11.2M|RepeatedPtrField<Element>::~RepeatedPtrField() {
 1270|  11.2M|  StaticValidityCheck();
 1271|  11.2M|#ifdef __cpp_if_constexpr
 1272|  11.2M|  if constexpr (std::is_base_of<MessageLite, Element>::value) {
  ------------------
  |  Branch (1272:17): [Folded - Ignored]
  ------------------
 1273|       |#else
 1274|       |  if (std::is_base_of<MessageLite, Element>::value) {
 1275|       |#endif
 1276|  11.2M|    if (NeedsDestroy()) DestroyProtos();
  ------------------
  |  Branch (1276:9): [True: 7.92M, False: 3.31M]
  ------------------
 1277|  11.2M|  } else {
 1278|  11.2M|    Destroy<TypeHandler>();
 1279|  11.2M|  }
 1280|  11.2M|}
_ZN6google8protobuf16RepeatedPtrFieldINS_3api4expr8v1alpha14ExprEE9MergeFromERKS6_:
 1493|  93.4M|    const RepeatedPtrField& other) {
 1494|  93.4M|  RepeatedPtrFieldBase::MergeFrom<TypeHandler>(other);
 1495|  93.4M|}
_ZN6google8protobuf8internal20RepeatedPtrFieldBase9MergeFromINS0_16RepeatedPtrFieldINS_3api4expr8v1alpha14ExprEE11TypeHandlerEEEvRKS2_:
  292|  93.4M|  void MergeFrom(const RepeatedPtrFieldBase& other) {
  293|       |    // To avoid unnecessary code duplication and reduce binary size, we use a
  294|       |    // layered approach to implementing MergeFrom(). The toplevel method is
  295|       |    // templated, so we get a small thunk per concrete message type in the
  296|       |    // binary. This calls a shared implementation with most of the logic,
  297|       |    // passing a function pointer to another type-specific piece of code that
  298|       |    // calls the object-allocate and merge handlers.
  299|  93.4M|    ABSL_DCHECK_NE(&other, this);
  ------------------
  |  |   72|  93.4M|  ABSL_DCHECK_NE_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   88|  93.4M|  ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|  93.4M|  while (false && ((void)(x), (void)(y), 0)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (56:10): [Folded - Ignored]
  |  |  |  |  |  |  |  Branch (56:19): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   57|  93.4M|  ::absl::log_internal::NullStream().InternalStream()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  300|  93.4M|    if (other.current_size_ == 0) return;
  ------------------
  |  Branch (300:9): [True: 286k, False: 93.1M]
  ------------------
  301|  93.1M|    MergeFromInternal(other,
  302|  93.1M|                      &RepeatedPtrFieldBase::MergeFromInnerLoop<TypeHandler>);
  303|  93.1M|  }
_ZN6google8protobuf8internal20RepeatedPtrFieldBase18MergeFromInnerLoopINS0_16RepeatedPtrFieldINS_3api4expr8v1alpha14ExprEE11TypeHandlerEEEvPPvSC_ii:
  731|  93.1M|                                            int already_allocated) {
  732|  93.1M|    if (already_allocated < length) {
  ------------------
  |  Branch (732:9): [True: 93.1M, False: 0]
  ------------------
  733|  93.1M|      Arena* arena = GetOwningArena();
  734|  93.1M|      typename TypeHandler::Type* elem_prototype =
  735|  93.1M|          reinterpret_cast<typename TypeHandler::Type*>(other_elems[0]);
  736|   285M|      for (int i = already_allocated; i < length; i++) {
  ------------------
  |  Branch (736:39): [True: 191M, False: 93.1M]
  ------------------
  737|       |        // Allocate a new empty element that we'll merge into below
  738|   191M|        typename TypeHandler::Type* new_elem =
  739|   191M|            TypeHandler::NewFromPrototype(elem_prototype, arena);
  740|   191M|        our_elems[i] = new_elem;
  741|   191M|      }
  742|  93.1M|    }
  743|       |    // Main loop that does the actual merging
  744|   285M|    for (int i = 0; i < length; i++) {
  ------------------
  |  Branch (744:21): [True: 191M, False: 93.1M]
  ------------------
  745|       |      // Already allocated: use existing element.
  746|   191M|      typename TypeHandler::Type* other_elem =
  747|   191M|          reinterpret_cast<typename TypeHandler::Type*>(other_elems[i]);
  748|   191M|      typename TypeHandler::Type* new_elem =
  749|   191M|          reinterpret_cast<typename TypeHandler::Type*>(our_elems[i]);
  750|   191M|      TypeHandler::Merge(*other_elem, new_elem);
  751|   191M|    }
  752|  93.1M|  }
_ZN6google8protobuf8internal18GenericTypeHandlerINS_3api4expr8v1alpha14ExprEE5MergeERKS6_PS6_:
  844|   191M|    const GenericType& from, GenericType* to) {
  845|   191M|  to->MergeFrom(from);
  846|   191M|}
_ZN6google8protobuf16RepeatedPtrFieldINS_3api4expr8v1alpha123Expr_CreateStruct_EntryEE9MergeFromERKS6_:
 1493|  10.5M|    const RepeatedPtrField& other) {
 1494|  10.5M|  RepeatedPtrFieldBase::MergeFrom<TypeHandler>(other);
 1495|  10.5M|}
_ZN6google8protobuf8internal20RepeatedPtrFieldBase9MergeFromINS0_16RepeatedPtrFieldINS_3api4expr8v1alpha123Expr_CreateStruct_EntryEE11TypeHandlerEEEvRKS2_:
  292|  10.5M|  void MergeFrom(const RepeatedPtrFieldBase& other) {
  293|       |    // To avoid unnecessary code duplication and reduce binary size, we use a
  294|       |    // layered approach to implementing MergeFrom(). The toplevel method is
  295|       |    // templated, so we get a small thunk per concrete message type in the
  296|       |    // binary. This calls a shared implementation with most of the logic,
  297|       |    // passing a function pointer to another type-specific piece of code that
  298|       |    // calls the object-allocate and merge handlers.
  299|  10.5M|    ABSL_DCHECK_NE(&other, this);
  ------------------
  |  |   72|  10.5M|  ABSL_DCHECK_NE_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   88|  10.5M|  ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|  10.5M|  while (false && ((void)(x), (void)(y), 0)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (56:10): [Folded - Ignored]
  |  |  |  |  |  |  |  Branch (56:19): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   57|  10.5M|  ::absl::log_internal::NullStream().InternalStream()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  300|  10.5M|    if (other.current_size_ == 0) return;
  ------------------
  |  Branch (300:9): [True: 3.13M, False: 7.44M]
  ------------------
  301|  7.44M|    MergeFromInternal(other,
  302|  7.44M|                      &RepeatedPtrFieldBase::MergeFromInnerLoop<TypeHandler>);
  303|  7.44M|  }
_ZN6google8protobuf8internal20RepeatedPtrFieldBase18MergeFromInnerLoopINS0_16RepeatedPtrFieldINS_3api4expr8v1alpha123Expr_CreateStruct_EntryEE11TypeHandlerEEEvPPvSC_ii:
  731|  7.44M|                                            int already_allocated) {
  732|  7.44M|    if (already_allocated < length) {
  ------------------
  |  Branch (732:9): [True: 7.44M, False: 0]
  ------------------
  733|  7.44M|      Arena* arena = GetOwningArena();
  734|  7.44M|      typename TypeHandler::Type* elem_prototype =
  735|  7.44M|          reinterpret_cast<typename TypeHandler::Type*>(other_elems[0]);
  736|  15.0M|      for (int i = already_allocated; i < length; i++) {
  ------------------
  |  Branch (736:39): [True: 7.60M, False: 7.44M]
  ------------------
  737|       |        // Allocate a new empty element that we'll merge into below
  738|  7.60M|        typename TypeHandler::Type* new_elem =
  739|  7.60M|            TypeHandler::NewFromPrototype(elem_prototype, arena);
  740|  7.60M|        our_elems[i] = new_elem;
  741|  7.60M|      }
  742|  7.44M|    }
  743|       |    // Main loop that does the actual merging
  744|  15.0M|    for (int i = 0; i < length; i++) {
  ------------------
  |  Branch (744:21): [True: 7.60M, False: 7.44M]
  ------------------
  745|       |      // Already allocated: use existing element.
  746|  7.60M|      typename TypeHandler::Type* other_elem =
  747|  7.60M|          reinterpret_cast<typename TypeHandler::Type*>(other_elems[i]);
  748|  7.60M|      typename TypeHandler::Type* new_elem =
  749|  7.60M|          reinterpret_cast<typename TypeHandler::Type*>(our_elems[i]);
  750|  7.60M|      TypeHandler::Merge(*other_elem, new_elem);
  751|  7.60M|    }
  752|  7.44M|  }
_ZN6google8protobuf8internal18GenericTypeHandlerINS_3api4expr8v1alpha123Expr_CreateStruct_EntryEE5MergeERKS6_PS6_:
  844|  7.60M|    const GenericType& from, GenericType* to) {
  845|  7.60M|  to->MergeFrom(from);
  846|  7.60M|}
_ZN6google8protobuf16RepeatedPtrFieldINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE3AddEv:
 1358|      6|PROTOBUF_NOINLINE Element* RepeatedPtrField<Element>::Add() {
 1359|      6|  return RepeatedPtrFieldBase::Add<TypeHandler>();
 1360|      6|}
_ZN6google8protobuf8internal20RepeatedPtrFieldBase3AddINS0_16RepeatedPtrFieldINSt3__112basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEE11TypeHandlerEEEPNT_4TypeEPKSF_:
  209|      6|      const typename TypeHandler::Type* prototype = nullptr) {
  210|      6|    if (rep_ != nullptr && current_size_ < rep_->allocated_size) {
  ------------------
  |  Branch (210:9): [True: 4, False: 2]
  |  Branch (210:28): [True: 0, False: 4]
  ------------------
  211|      0|      return cast<TypeHandler>(
  212|      0|          rep_->elements[ExchangeCurrentSize(current_size_ + 1)]);
  213|      0|    }
  214|      6|    typename TypeHandler::Type* result =
  215|      6|        TypeHandler::NewFromPrototype(prototype, arena_);
  216|      6|    return reinterpret_cast<typename TypeHandler::Type*>(
  217|      6|        AddOutOfLineHelper(result));
  218|      6|  }
_ZN6google8protobuf8internal20RepeatedPtrFieldBase4castINS0_16RepeatedPtrFieldINSt3__112basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEE11TypeHandlerEEEPNT_4TypeEPv:
  685|      6|  static inline typename TypeHandler::Type* cast(void* element) {
  686|      6|    return reinterpret_cast<typename TypeHandler::Type*>(element);
  687|      6|  }
_ZN6google8protobuf16RepeatedPtrFieldINS0_15DescriptorProtoEE3AddEv:
 1358|     96|PROTOBUF_NOINLINE Element* RepeatedPtrField<Element>::Add() {
 1359|     96|  return RepeatedPtrFieldBase::Add<TypeHandler>();
 1360|     96|}
_ZN6google8protobuf8internal20RepeatedPtrFieldBase3AddINS0_16RepeatedPtrFieldINS0_15DescriptorProtoEE11TypeHandlerEEEPNT_4TypeEPKS9_:
  209|     96|      const typename TypeHandler::Type* prototype = nullptr) {
  210|     96|    if (rep_ != nullptr && current_size_ < rep_->allocated_size) {
  ------------------
  |  Branch (210:9): [True: 66, False: 30]
  |  Branch (210:28): [True: 0, False: 66]
  ------------------
  211|      0|      return cast<TypeHandler>(
  212|      0|          rep_->elements[ExchangeCurrentSize(current_size_ + 1)]);
  213|      0|    }
  214|     96|    typename TypeHandler::Type* result =
  215|     96|        TypeHandler::NewFromPrototype(prototype, arena_);
  216|     96|    return reinterpret_cast<typename TypeHandler::Type*>(
  217|     96|        AddOutOfLineHelper(result));
  218|     96|  }
_ZN6google8protobuf8internal20RepeatedPtrFieldBase4castINS0_16RepeatedPtrFieldINS0_15DescriptorProtoEE11TypeHandlerEEEPNT_4TypeEPv:
  685|     96|  static inline typename TypeHandler::Type* cast(void* element) {
  686|     96|    return reinterpret_cast<typename TypeHandler::Type*>(element);
  687|     96|  }
_ZN6google8protobuf8internal18GenericTypeHandlerINS0_15DescriptorProtoEE16NewFromPrototypeEPKS3_PNS0_5ArenaE:
  807|     96|                                              Arena* arena = nullptr) {
  808|     96|    return New(arena);
  809|     96|  }
_ZN6google8protobuf8internal18GenericTypeHandlerINS0_15DescriptorProtoEE3NewEPNS0_5ArenaE:
  800|     96|  static inline GenericType* New(Arena* arena) {
  801|     96|    return Arena::CreateMaybeMessage<Type>(arena);
  802|     96|  }
_ZN6google8protobuf16RepeatedPtrFieldINS0_19EnumDescriptorProtoEE3AddEv:
 1358|     22|PROTOBUF_NOINLINE Element* RepeatedPtrField<Element>::Add() {
 1359|     22|  return RepeatedPtrFieldBase::Add<TypeHandler>();
 1360|     22|}
_ZN6google8protobuf8internal20RepeatedPtrFieldBase3AddINS0_16RepeatedPtrFieldINS0_19EnumDescriptorProtoEE11TypeHandlerEEEPNT_4TypeEPKS9_:
  209|     22|      const typename TypeHandler::Type* prototype = nullptr) {
  210|     22|    if (rep_ != nullptr && current_size_ < rep_->allocated_size) {
  ------------------
  |  Branch (210:9): [True: 8, False: 14]
  |  Branch (210:28): [True: 0, False: 8]
  ------------------
  211|      0|      return cast<TypeHandler>(
  212|      0|          rep_->elements[ExchangeCurrentSize(current_size_ + 1)]);
  213|      0|    }
  214|     22|    typename TypeHandler::Type* result =
  215|     22|        TypeHandler::NewFromPrototype(prototype, arena_);
  216|     22|    return reinterpret_cast<typename TypeHandler::Type*>(
  217|     22|        AddOutOfLineHelper(result));
  218|     22|  }
_ZN6google8protobuf8internal20RepeatedPtrFieldBase4castINS0_16RepeatedPtrFieldINS0_19EnumDescriptorProtoEE11TypeHandlerEEEPNT_4TypeEPv:
  685|     22|  static inline typename TypeHandler::Type* cast(void* element) {
  686|     22|    return reinterpret_cast<typename TypeHandler::Type*>(element);
  687|     22|  }
_ZN6google8protobuf8internal18GenericTypeHandlerINS0_19EnumDescriptorProtoEE16NewFromPrototypeEPKS3_PNS0_5ArenaE:
  807|     22|                                              Arena* arena = nullptr) {
  808|     22|    return New(arena);
  809|     22|  }
_ZN6google8protobuf8internal18GenericTypeHandlerINS0_19EnumDescriptorProtoEE3NewEPNS0_5ArenaE:
  800|     22|  static inline GenericType* New(Arena* arena) {
  801|     22|    return Arena::CreateMaybeMessage<Type>(arena);
  802|     22|  }
_ZN6google8protobuf16RepeatedPtrFieldINS0_20FieldDescriptorProtoEE3AddEv:
 1358|    418|PROTOBUF_NOINLINE Element* RepeatedPtrField<Element>::Add() {
 1359|    418|  return RepeatedPtrFieldBase::Add<TypeHandler>();
 1360|    418|}
_ZN6google8protobuf8internal20RepeatedPtrFieldBase3AddINS0_16RepeatedPtrFieldINS0_20FieldDescriptorProtoEE11TypeHandlerEEEPNT_4TypeEPKS9_:
  209|    418|      const typename TypeHandler::Type* prototype = nullptr) {
  210|    418|    if (rep_ != nullptr && current_size_ < rep_->allocated_size) {
  ------------------
  |  Branch (210:9): [True: 322, False: 96]
  |  Branch (210:28): [True: 0, False: 322]
  ------------------
  211|      0|      return cast<TypeHandler>(
  212|      0|          rep_->elements[ExchangeCurrentSize(current_size_ + 1)]);
  213|      0|    }
  214|    418|    typename TypeHandler::Type* result =
  215|    418|        TypeHandler::NewFromPrototype(prototype, arena_);
  216|    418|    return reinterpret_cast<typename TypeHandler::Type*>(
  217|    418|        AddOutOfLineHelper(result));
  218|    418|  }
_ZN6google8protobuf8internal20RepeatedPtrFieldBase4castINS0_16RepeatedPtrFieldINS0_20FieldDescriptorProtoEE11TypeHandlerEEEPNT_4TypeEPv:
  685|    418|  static inline typename TypeHandler::Type* cast(void* element) {
  686|    418|    return reinterpret_cast<typename TypeHandler::Type*>(element);
  687|    418|  }
_ZN6google8protobuf8internal18GenericTypeHandlerINS0_20FieldDescriptorProtoEE16NewFromPrototypeEPKS3_PNS0_5ArenaE:
  807|    418|                                              Arena* arena = nullptr) {
  808|    418|    return New(arena);
  809|    418|  }
_ZN6google8protobuf8internal18GenericTypeHandlerINS0_20FieldDescriptorProtoEE3NewEPNS0_5ArenaE:
  800|    418|  static inline GenericType* New(Arena* arena) {
  801|    418|    return Arena::CreateMaybeMessage<Type>(arena);
  802|    418|  }
_ZNK6google8protobuf16RepeatedPtrFieldINS0_15DescriptorProtoEE4sizeEv:
 1332|    212|inline int RepeatedPtrField<Element>::size() const {
 1333|    212|  return RepeatedPtrFieldBase::size();
 1334|    212|}
_ZNK6google8protobuf16RepeatedPtrFieldINS0_20FieldDescriptorProtoEE4sizeEv:
 1332|    308|inline int RepeatedPtrField<Element>::size() const {
 1333|    308|  return RepeatedPtrFieldBase::size();
 1334|    308|}
_ZN6google8protobuf16RepeatedPtrFieldINS0_20OneofDescriptorProtoEE3AddEv:
 1358|      8|PROTOBUF_NOINLINE Element* RepeatedPtrField<Element>::Add() {
 1359|      8|  return RepeatedPtrFieldBase::Add<TypeHandler>();
 1360|      8|}
_ZN6google8protobuf8internal20RepeatedPtrFieldBase3AddINS0_16RepeatedPtrFieldINS0_20OneofDescriptorProtoEE11TypeHandlerEEEPNT_4TypeEPKS9_:
  209|      8|      const typename TypeHandler::Type* prototype = nullptr) {
  210|      8|    if (rep_ != nullptr && current_size_ < rep_->allocated_size) {
  ------------------
  |  Branch (210:9): [True: 0, False: 8]
  |  Branch (210:28): [True: 0, False: 0]
  ------------------
  211|      0|      return cast<TypeHandler>(
  212|      0|          rep_->elements[ExchangeCurrentSize(current_size_ + 1)]);
  213|      0|    }
  214|      8|    typename TypeHandler::Type* result =
  215|      8|        TypeHandler::NewFromPrototype(prototype, arena_);
  216|      8|    return reinterpret_cast<typename TypeHandler::Type*>(
  217|      8|        AddOutOfLineHelper(result));
  218|      8|  }
_ZN6google8protobuf8internal20RepeatedPtrFieldBase4castINS0_16RepeatedPtrFieldINS0_20OneofDescriptorProtoEE11TypeHandlerEEEPNT_4TypeEPv:
  685|      8|  static inline typename TypeHandler::Type* cast(void* element) {
  686|      8|    return reinterpret_cast<typename TypeHandler::Type*>(element);
  687|      8|  }
_ZN6google8protobuf8internal18GenericTypeHandlerINS0_20OneofDescriptorProtoEE16NewFromPrototypeEPKS3_PNS0_5ArenaE:
  807|      8|                                              Arena* arena = nullptr) {
  808|      8|    return New(arena);
  809|      8|  }
_ZN6google8protobuf8internal18GenericTypeHandlerINS0_20OneofDescriptorProtoEE3NewEPNS0_5ArenaE:
  800|      8|  static inline GenericType* New(Arena* arena) {
  801|      8|    return Arena::CreateMaybeMessage<Type>(arena);
  802|      8|  }
_ZN6google8protobuf16RepeatedPtrFieldINS0_30DescriptorProto_ExtensionRangeEE3AddEv:
 1358|     18|PROTOBUF_NOINLINE Element* RepeatedPtrField<Element>::Add() {
 1359|     18|  return RepeatedPtrFieldBase::Add<TypeHandler>();
 1360|     18|}
_ZN6google8protobuf8internal20RepeatedPtrFieldBase3AddINS0_16RepeatedPtrFieldINS0_30DescriptorProto_ExtensionRangeEE11TypeHandlerEEEPNT_4TypeEPKS9_:
  209|     18|      const typename TypeHandler::Type* prototype = nullptr) {
  210|     18|    if (rep_ != nullptr && current_size_ < rep_->allocated_size) {
  ------------------
  |  Branch (210:9): [True: 0, False: 18]
  |  Branch (210:28): [True: 0, False: 0]
  ------------------
  211|      0|      return cast<TypeHandler>(
  212|      0|          rep_->elements[ExchangeCurrentSize(current_size_ + 1)]);
  213|      0|    }
  214|     18|    typename TypeHandler::Type* result =
  215|     18|        TypeHandler::NewFromPrototype(prototype, arena_);
  216|     18|    return reinterpret_cast<typename TypeHandler::Type*>(
  217|     18|        AddOutOfLineHelper(result));
  218|     18|  }
_ZN6google8protobuf8internal20RepeatedPtrFieldBase4castINS0_16RepeatedPtrFieldINS0_30DescriptorProto_ExtensionRangeEE11TypeHandlerEEEPNT_4TypeEPv:
  685|     18|  static inline typename TypeHandler::Type* cast(void* element) {
  686|     18|    return reinterpret_cast<typename TypeHandler::Type*>(element);
  687|     18|  }
_ZN6google8protobuf8internal18GenericTypeHandlerINS0_30DescriptorProto_ExtensionRangeEE16NewFromPrototypeEPKS3_PNS0_5ArenaE:
  807|     18|                                              Arena* arena = nullptr) {
  808|     18|    return New(arena);
  809|     18|  }
_ZN6google8protobuf8internal18GenericTypeHandlerINS0_30DescriptorProto_ExtensionRangeEE3NewEPNS0_5ArenaE:
  800|     18|  static inline GenericType* New(Arena* arena) {
  801|     18|    return Arena::CreateMaybeMessage<Type>(arena);
  802|     18|  }
_ZN6google8protobuf16RepeatedPtrFieldINS0_29DescriptorProto_ReservedRangeEE3AddEv:
 1358|     16|PROTOBUF_NOINLINE Element* RepeatedPtrField<Element>::Add() {
 1359|     16|  return RepeatedPtrFieldBase::Add<TypeHandler>();
 1360|     16|}
_ZN6google8protobuf8internal20RepeatedPtrFieldBase3AddINS0_16RepeatedPtrFieldINS0_29DescriptorProto_ReservedRangeEE11TypeHandlerEEEPNT_4TypeEPKS9_:
  209|     16|      const typename TypeHandler::Type* prototype = nullptr) {
  210|     16|    if (rep_ != nullptr && current_size_ < rep_->allocated_size) {
  ------------------
  |  Branch (210:9): [True: 8, False: 8]
  |  Branch (210:28): [True: 0, False: 8]
  ------------------
  211|      0|      return cast<TypeHandler>(
  212|      0|          rep_->elements[ExchangeCurrentSize(current_size_ + 1)]);
  213|      0|    }
  214|     16|    typename TypeHandler::Type* result =
  215|     16|        TypeHandler::NewFromPrototype(prototype, arena_);
  216|     16|    return reinterpret_cast<typename TypeHandler::Type*>(
  217|     16|        AddOutOfLineHelper(result));
  218|     16|  }
_ZN6google8protobuf8internal18GenericTypeHandlerINS0_29DescriptorProto_ReservedRangeEE16NewFromPrototypeEPKS3_PNS0_5ArenaE:
  807|     16|                                              Arena* arena = nullptr) {
  808|     16|    return New(arena);
  809|     16|  }
_ZN6google8protobuf8internal18GenericTypeHandlerINS0_29DescriptorProto_ReservedRangeEE3NewEPNS0_5ArenaE:
  800|     16|  static inline GenericType* New(Arena* arena) {
  801|     16|    return Arena::CreateMaybeMessage<Type>(arena);
  802|     16|  }
_ZN6google8protobuf16RepeatedPtrFieldINS0_24EnumValueDescriptorProtoEE3AddEv:
 1358|    104|PROTOBUF_NOINLINE Element* RepeatedPtrField<Element>::Add() {
 1359|    104|  return RepeatedPtrFieldBase::Add<TypeHandler>();
 1360|    104|}
_ZN6google8protobuf8internal20RepeatedPtrFieldBase3AddINS0_16RepeatedPtrFieldINS0_24EnumValueDescriptorProtoEE11TypeHandlerEEEPNT_4TypeEPKS9_:
  209|    104|      const typename TypeHandler::Type* prototype = nullptr) {
  210|    104|    if (rep_ != nullptr && current_size_ < rep_->allocated_size) {
  ------------------
  |  Branch (210:9): [True: 82, False: 22]
  |  Branch (210:28): [True: 0, False: 82]
  ------------------
  211|      0|      return cast<TypeHandler>(
  212|      0|          rep_->elements[ExchangeCurrentSize(current_size_ + 1)]);
  213|      0|    }
  214|    104|    typename TypeHandler::Type* result =
  215|    104|        TypeHandler::NewFromPrototype(prototype, arena_);
  216|    104|    return reinterpret_cast<typename TypeHandler::Type*>(
  217|    104|        AddOutOfLineHelper(result));
  218|    104|  }
_ZN6google8protobuf8internal20RepeatedPtrFieldBase4castINS0_16RepeatedPtrFieldINS0_24EnumValueDescriptorProtoEE11TypeHandlerEEEPNT_4TypeEPv:
  685|    104|  static inline typename TypeHandler::Type* cast(void* element) {
  686|    104|    return reinterpret_cast<typename TypeHandler::Type*>(element);
  687|    104|  }
_ZN6google8protobuf8internal18GenericTypeHandlerINS0_24EnumValueDescriptorProtoEE16NewFromPrototypeEPKS3_PNS0_5ArenaE:
  807|    104|                                              Arena* arena = nullptr) {
  808|    104|    return New(arena);
  809|    104|  }
_ZN6google8protobuf8internal18GenericTypeHandlerINS0_24EnumValueDescriptorProtoEE3NewEPNS0_5ArenaE:
  800|    104|  static inline GenericType* New(Arena* arena) {
  801|    104|    return Arena::CreateMaybeMessage<Type>(arena);
  802|    104|  }
_ZNK6google8protobuf16RepeatedPtrFieldINS0_22ServiceDescriptorProtoEE4sizeEv:
 1332|     20|inline int RepeatedPtrField<Element>::size() const {
 1333|     20|  return RepeatedPtrFieldBase::size();
 1334|     20|}
_ZNK6google8protobuf16RepeatedPtrFieldINS0_22ServiceDescriptorProtoEE5beginEv:
 1850|     10|RepeatedPtrField<Element>::begin() const {
 1851|     10|  return iterator(raw_data());
 1852|     10|}
_ZN6google8protobuf8internal19RepeatedPtrIteratorINS0_22ServiceDescriptorProtoEEC2EPKPv:
 1648|     20|  explicit RepeatedPtrIterator(void* const* it) : it_(it) {}
_ZN6google8protobuf8internal19RepeatedPtrIteratorIKNS0_22ServiceDescriptorProtoEEC2IS3_LPv0EEERKNS2_IT_EE:
 1656|     20|      : it_(other.it_) {}
_ZNK6google8protobuf16RepeatedPtrFieldINS0_22ServiceDescriptorProtoEE3endEv:
 1865|     10|RepeatedPtrField<Element>::end() const {
 1866|     10|  return iterator(raw_data() + size());
 1867|     10|}
_ZN6google8protobuf8internalneERKNS1_19RepeatedPtrIteratorIKNS0_22ServiceDescriptorProtoEEES7_:
 1678|     10|  friend bool operator!=(const iterator& x, const iterator& y) {
 1679|     10|    return x.it_ != y.it_;
 1680|     10|  }
_ZNK6google8protobuf16RepeatedPtrFieldINS0_15DescriptorProtoEE5beginEv:
 1850|    106|RepeatedPtrField<Element>::begin() const {
 1851|    106|  return iterator(raw_data());
 1852|    106|}
_ZN6google8protobuf8internal19RepeatedPtrIteratorINS0_15DescriptorProtoEEC2EPKPv:
 1648|    212|  explicit RepeatedPtrIterator(void* const* it) : it_(it) {}
_ZN6google8protobuf8internal19RepeatedPtrIteratorIKNS0_15DescriptorProtoEEC2IS3_LPv0EEERKNS2_IT_EE:
 1656|    212|      : it_(other.it_) {}
_ZNK6google8protobuf16RepeatedPtrFieldINS0_15DescriptorProtoEE3endEv:
 1865|    106|RepeatedPtrField<Element>::end() const {
 1866|    106|  return iterator(raw_data() + size());
 1867|    106|}
_ZN6google8protobuf8internalneERKNS1_19RepeatedPtrIteratorIKNS0_15DescriptorProtoEEES7_:
 1678|    202|  friend bool operator!=(const iterator& x, const iterator& y) {
 1679|    202|    return x.it_ != y.it_;
 1680|    202|  }
_ZNK6google8protobuf8internal19RepeatedPtrIteratorIKNS0_15DescriptorProtoEEdeEv:
 1659|     96|  reference operator*() const { return *reinterpret_cast<Element*>(*it_); }
_ZNK6google8protobuf16RepeatedPtrFieldINS0_30DescriptorProto_ExtensionRangeEE4sizeEv:
 1332|     96|inline int RepeatedPtrField<Element>::size() const {
 1333|     96|  return RepeatedPtrFieldBase::size();
 1334|     96|}
_ZNK6google8protobuf16RepeatedPtrFieldINS0_20OneofDescriptorProtoEE4sizeEv:
 1332|     96|inline int RepeatedPtrField<Element>::size() const {
 1333|     96|  return RepeatedPtrFieldBase::size();
 1334|     96|}
_ZN6google8protobuf8internal19RepeatedPtrIteratorIKNS0_15DescriptorProtoEEppEv:
 1663|     96|  iterator& operator++() {
 1664|     96|    ++it_;
 1665|     96|    return *this;
 1666|     96|  }
_ZNK6google8protobuf16RepeatedPtrFieldINS0_19EnumDescriptorProtoEE4sizeEv:
 1332|    116|inline int RepeatedPtrField<Element>::size() const {
 1333|    116|  return RepeatedPtrFieldBase::size();
 1334|    116|}
_ZNK6google8protobuf16RepeatedPtrFieldINS0_19EnumDescriptorProtoEE5beginEv:
 1850|     10|RepeatedPtrField<Element>::begin() const {
 1851|     10|  return iterator(raw_data());
 1852|     10|}
_ZN6google8protobuf8internal19RepeatedPtrIteratorINS0_19EnumDescriptorProtoEEC2EPKPv:
 1648|     20|  explicit RepeatedPtrIterator(void* const* it) : it_(it) {}
_ZN6google8protobuf8internal19RepeatedPtrIteratorIKNS0_19EnumDescriptorProtoEEC2IS3_LPv0EEERKNS2_IT_EE:
 1656|     20|      : it_(other.it_) {}
_ZNK6google8protobuf16RepeatedPtrFieldINS0_19EnumDescriptorProtoEE3endEv:
 1865|     10|RepeatedPtrField<Element>::end() const {
 1866|     10|  return iterator(raw_data() + size());
 1867|     10|}
_ZN6google8protobuf8internalneERKNS1_19RepeatedPtrIteratorIKNS0_19EnumDescriptorProtoEEES7_:
 1678|     12|  friend bool operator!=(const iterator& x, const iterator& y) {
 1679|     12|    return x.it_ != y.it_;
 1680|     12|  }
_ZNK6google8protobuf8internal19RepeatedPtrIteratorIKNS0_19EnumDescriptorProtoEEdeEv:
 1659|      2|  reference operator*() const { return *reinterpret_cast<Element*>(*it_); }
_ZNK6google8protobuf16RepeatedPtrFieldINS0_24EnumValueDescriptorProtoEE4sizeEv:
 1332|     22|inline int RepeatedPtrField<Element>::size() const {
 1333|     22|  return RepeatedPtrFieldBase::size();
 1334|     22|}
_ZN6google8protobuf8internal19RepeatedPtrIteratorIKNS0_19EnumDescriptorProtoEEppEv:
 1663|      2|  iterator& operator++() {
 1664|      2|    ++it_;
 1665|      2|    return *this;
 1666|      2|  }
_ZNK6google8protobuf16RepeatedPtrFieldINS0_15DescriptorProtoEE3GetEi:
 1337|     96|inline const Element& RepeatedPtrField<Element>::Get(int index) const {
 1338|     96|  return RepeatedPtrFieldBase::Get<TypeHandler>(index);
 1339|     96|}
_ZNK6google8protobuf8internal20RepeatedPtrFieldBase3GetINS0_16RepeatedPtrFieldINS0_15DescriptorProtoEE11TypeHandlerEEERKNT_4TypeEi:
  270|     96|  const typename TypeHandler::Type& Get(int index) const {
  271|     96|    ABSL_DCHECK_GE(index, 0);
  ------------------
  |  |   78|     96|  ABSL_DCHECK_GE_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   94|     96|  ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|     96|  while (false && ((void)(x), (void)(y), 0)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (56:10): [Folded - Ignored]
  |  |  |  |  |  |  |  Branch (56:19): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   57|     96|  ::absl::log_internal::NullStream().InternalStream()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  272|     96|    ABSL_DCHECK_LT(index, current_size_);
  ------------------
  |  |   76|     96|  ABSL_DCHECK_LT_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   92|     96|  ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|     96|  while (false && ((void)(x), (void)(y), 0)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (56:10): [Folded - Ignored]
  |  |  |  |  |  |  |  Branch (56:19): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   57|     96|  ::absl::log_internal::NullStream().InternalStream()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  273|     96|    return *cast<TypeHandler>(rep_->elements[index]);
  274|     96|  }
_ZNK6google8protobuf16RepeatedPtrFieldINS0_19EnumDescriptorProtoEE3GetEi:
 1337|     22|inline const Element& RepeatedPtrField<Element>::Get(int index) const {
 1338|     22|  return RepeatedPtrFieldBase::Get<TypeHandler>(index);
 1339|     22|}
_ZNK6google8protobuf8internal20RepeatedPtrFieldBase3GetINS0_16RepeatedPtrFieldINS0_19EnumDescriptorProtoEE11TypeHandlerEEERKNT_4TypeEi:
  270|     22|  const typename TypeHandler::Type& Get(int index) const {
  271|     22|    ABSL_DCHECK_GE(index, 0);
  ------------------
  |  |   78|     22|  ABSL_DCHECK_GE_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   94|     22|  ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|     22|  while (false && ((void)(x), (void)(y), 0)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (56:10): [Folded - Ignored]
  |  |  |  |  |  |  |  Branch (56:19): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   57|     22|  ::absl::log_internal::NullStream().InternalStream()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  272|     22|    ABSL_DCHECK_LT(index, current_size_);
  ------------------
  |  |   76|     22|  ABSL_DCHECK_LT_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   92|     22|  ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|     22|  while (false && ((void)(x), (void)(y), 0)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (56:10): [Folded - Ignored]
  |  |  |  |  |  |  |  Branch (56:19): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   57|     22|  ::absl::log_internal::NullStream().InternalStream()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  273|     22|    return *cast<TypeHandler>(rep_->elements[index]);
  274|     22|  }
_ZNK6google8protobuf16RepeatedPtrFieldINS0_20FieldDescriptorProtoEE3GetEi:
 1337|    418|inline const Element& RepeatedPtrField<Element>::Get(int index) const {
 1338|    418|  return RepeatedPtrFieldBase::Get<TypeHandler>(index);
 1339|    418|}
_ZNK6google8protobuf8internal20RepeatedPtrFieldBase3GetINS0_16RepeatedPtrFieldINS0_20FieldDescriptorProtoEE11TypeHandlerEEERKNT_4TypeEi:
  270|    418|  const typename TypeHandler::Type& Get(int index) const {
  271|    418|    ABSL_DCHECK_GE(index, 0);
  ------------------
  |  |   78|    418|  ABSL_DCHECK_GE_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   94|    418|  ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|    418|  while (false && ((void)(x), (void)(y), 0)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (56:10): [Folded - Ignored]
  |  |  |  |  |  |  |  Branch (56:19): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   57|    418|  ::absl::log_internal::NullStream().InternalStream()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  272|    418|    ABSL_DCHECK_LT(index, current_size_);
  ------------------
  |  |   76|    418|  ABSL_DCHECK_LT_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   92|    418|  ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|    418|  while (false && ((void)(x), (void)(y), 0)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (56:10): [Folded - Ignored]
  |  |  |  |  |  |  |  Branch (56:19): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   57|    418|  ::absl::log_internal::NullStream().InternalStream()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  273|    418|    return *cast<TypeHandler>(rep_->elements[index]);
  274|    418|  }
_ZNK6google8protobuf16RepeatedPtrFieldINS0_20OneofDescriptorProtoEE3GetEi:
 1337|      8|inline const Element& RepeatedPtrField<Element>::Get(int index) const {
 1338|      8|  return RepeatedPtrFieldBase::Get<TypeHandler>(index);
 1339|      8|}
_ZNK6google8protobuf8internal20RepeatedPtrFieldBase3GetINS0_16RepeatedPtrFieldINS0_20OneofDescriptorProtoEE11TypeHandlerEEERKNT_4TypeEi:
  270|      8|  const typename TypeHandler::Type& Get(int index) const {
  271|      8|    ABSL_DCHECK_GE(index, 0);
  ------------------
  |  |   78|      8|  ABSL_DCHECK_GE_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   94|      8|  ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|      8|  while (false && ((void)(x), (void)(y), 0)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (56:10): [Folded - Ignored]
  |  |  |  |  |  |  |  Branch (56:19): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   57|      8|  ::absl::log_internal::NullStream().InternalStream()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  272|      8|    ABSL_DCHECK_LT(index, current_size_);
  ------------------
  |  |   76|      8|  ABSL_DCHECK_LT_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   92|      8|  ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|      8|  while (false && ((void)(x), (void)(y), 0)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (56:10): [Folded - Ignored]
  |  |  |  |  |  |  |  Branch (56:19): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   57|      8|  ::absl::log_internal::NullStream().InternalStream()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  273|      8|    return *cast<TypeHandler>(rep_->elements[index]);
  274|      8|  }
_ZNK6google8protobuf16RepeatedPtrFieldINS0_30DescriptorProto_ExtensionRangeEE3GetEi:
 1337|     18|inline const Element& RepeatedPtrField<Element>::Get(int index) const {
 1338|     18|  return RepeatedPtrFieldBase::Get<TypeHandler>(index);
 1339|     18|}
_ZNK6google8protobuf8internal20RepeatedPtrFieldBase3GetINS0_16RepeatedPtrFieldINS0_30DescriptorProto_ExtensionRangeEE11TypeHandlerEEERKNT_4TypeEi:
  270|     18|  const typename TypeHandler::Type& Get(int index) const {
  271|     18|    ABSL_DCHECK_GE(index, 0);
  ------------------
  |  |   78|     18|  ABSL_DCHECK_GE_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   94|     18|  ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|     18|  while (false && ((void)(x), (void)(y), 0)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (56:10): [Folded - Ignored]
  |  |  |  |  |  |  |  Branch (56:19): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   57|     18|  ::absl::log_internal::NullStream().InternalStream()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  272|     18|    ABSL_DCHECK_LT(index, current_size_);
  ------------------
  |  |   76|     18|  ABSL_DCHECK_LT_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   92|     18|  ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|     18|  while (false && ((void)(x), (void)(y), 0)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (56:10): [Folded - Ignored]
  |  |  |  |  |  |  |  Branch (56:19): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   57|     18|  ::absl::log_internal::NullStream().InternalStream()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  273|     18|    return *cast<TypeHandler>(rep_->elements[index]);
  274|     18|  }
_ZNK6google8protobuf16RepeatedPtrFieldINS0_24EnumValueDescriptorProtoEE3GetEi:
 1337|    104|inline const Element& RepeatedPtrField<Element>::Get(int index) const {
 1338|    104|  return RepeatedPtrFieldBase::Get<TypeHandler>(index);
 1339|    104|}
_ZNK6google8protobuf8internal20RepeatedPtrFieldBase3GetINS0_16RepeatedPtrFieldINS0_24EnumValueDescriptorProtoEE11TypeHandlerEEERKNT_4TypeEi:
  270|    104|  const typename TypeHandler::Type& Get(int index) const {
  271|    104|    ABSL_DCHECK_GE(index, 0);
  ------------------
  |  |   78|    104|  ABSL_DCHECK_GE_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   94|    104|  ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|    104|  while (false && ((void)(x), (void)(y), 0)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (56:10): [Folded - Ignored]
  |  |  |  |  |  |  |  Branch (56:19): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   57|    104|  ::absl::log_internal::NullStream().InternalStream()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  272|    104|    ABSL_DCHECK_LT(index, current_size_);
  ------------------
  |  |   76|    104|  ABSL_DCHECK_LT_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   92|    104|  ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|    104|  while (false && ((void)(x), (void)(y), 0)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (56:10): [Folded - Ignored]
  |  |  |  |  |  |  |  Branch (56:19): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   57|    104|  ::absl::log_internal::NullStream().InternalStream()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  273|    104|    return *cast<TypeHandler>(rep_->elements[index]);
  274|    104|  }
_ZNK6google8protobuf16RepeatedPtrFieldINS0_19UninterpretedOptionEE4sizeEv:
 1332|     38|inline int RepeatedPtrField<Element>::size() const {
 1333|     38|  return RepeatedPtrFieldBase::size();
 1334|     38|}
_ZNK6google8protobuf16RepeatedPtrFieldINS0_20FieldDescriptorProtoEE5beginEv:
 1850|    106|RepeatedPtrField<Element>::begin() const {
 1851|    106|  return iterator(raw_data());
 1852|    106|}
_ZN6google8protobuf8internal19RepeatedPtrIteratorINS0_20FieldDescriptorProtoEEC2EPKPv:
 1648|    212|  explicit RepeatedPtrIterator(void* const* it) : it_(it) {}
_ZN6google8protobuf8internal19RepeatedPtrIteratorIKNS0_20FieldDescriptorProtoEEC2IS3_LPv0EEERKNS2_IT_EE:
 1656|    212|      : it_(other.it_) {}
_ZNK6google8protobuf16RepeatedPtrFieldINS0_20FieldDescriptorProtoEE3endEv:
 1865|    106|RepeatedPtrField<Element>::end() const {
 1866|    106|  return iterator(raw_data() + size());
 1867|    106|}
_ZN6google8protobuf8internalneERKNS1_19RepeatedPtrIteratorIKNS0_20FieldDescriptorProtoEEES7_:
 1678|    106|  friend bool operator!=(const iterator& x, const iterator& y) {
 1679|    106|    return x.it_ != y.it_;
 1680|    106|  }
_ZN6google8protobuf16RepeatedPtrFieldINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE5ClearEv:
 1487|     10|inline void RepeatedPtrField<Element>::Clear() {
 1488|     10|  RepeatedPtrFieldBase::Clear<TypeHandler>();
 1489|     10|}
_ZN6google8protobuf8internal20RepeatedPtrFieldBase5ClearINS0_16RepeatedPtrFieldINSt3__112basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEE11TypeHandlerEEEvv:
  283|     10|  void Clear() {
  284|     10|    const int n = current_size_;
  285|     10|    ABSL_DCHECK_GE(n, 0);
  ------------------
  |  |   78|     10|  ABSL_DCHECK_GE_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   94|     10|  ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|     10|  while (false && ((void)(x), (void)(y), 0)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (56:10): [Folded - Ignored]
  |  |  |  |  |  |  |  Branch (56:19): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   57|     10|  ::absl::log_internal::NullStream().InternalStream()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  286|     10|    if (n > 0) {
  ------------------
  |  Branch (286:9): [True: 0, False: 10]
  ------------------
  287|      0|      ClearNonEmpty<TypeHandler>();
  288|      0|    }
  289|     10|  }
_ZN6google8protobuf16RepeatedPtrFieldINS0_15DescriptorProtoEE5ClearEv:
 1487|     10|inline void RepeatedPtrField<Element>::Clear() {
 1488|     10|  RepeatedPtrFieldBase::Clear<TypeHandler>();
 1489|     10|}
_ZN6google8protobuf8internal20RepeatedPtrFieldBase5ClearINS0_16RepeatedPtrFieldINS0_15DescriptorProtoEE11TypeHandlerEEEvv:
  283|     10|  void Clear() {
  284|     10|    const int n = current_size_;
  285|     10|    ABSL_DCHECK_GE(n, 0);
  ------------------
  |  |   78|     10|  ABSL_DCHECK_GE_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   94|     10|  ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|     10|  while (false && ((void)(x), (void)(y), 0)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (56:10): [Folded - Ignored]
  |  |  |  |  |  |  |  Branch (56:19): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   57|     10|  ::absl::log_internal::NullStream().InternalStream()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  286|     10|    if (n > 0) {
  ------------------
  |  Branch (286:9): [True: 0, False: 10]
  ------------------
  287|      0|      ClearNonEmpty<TypeHandler>();
  288|      0|    }
  289|     10|  }
_ZN6google8protobuf16RepeatedPtrFieldINS0_19EnumDescriptorProtoEE5ClearEv:
 1487|     10|inline void RepeatedPtrField<Element>::Clear() {
 1488|     10|  RepeatedPtrFieldBase::Clear<TypeHandler>();
 1489|     10|}
_ZN6google8protobuf8internal20RepeatedPtrFieldBase5ClearINS0_16RepeatedPtrFieldINS0_19EnumDescriptorProtoEE11TypeHandlerEEEvv:
  283|     10|  void Clear() {
  284|     10|    const int n = current_size_;
  285|     10|    ABSL_DCHECK_GE(n, 0);
  ------------------
  |  |   78|     10|  ABSL_DCHECK_GE_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   94|     10|  ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|     10|  while (false && ((void)(x), (void)(y), 0)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (56:10): [Folded - Ignored]
  |  |  |  |  |  |  |  Branch (56:19): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   57|     10|  ::absl::log_internal::NullStream().InternalStream()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  286|     10|    if (n > 0) {
  ------------------
  |  Branch (286:9): [True: 0, False: 10]
  ------------------
  287|      0|      ClearNonEmpty<TypeHandler>();
  288|      0|    }
  289|     10|  }
_ZN6google8protobuf16RepeatedPtrFieldINS0_22ServiceDescriptorProtoEE5ClearEv:
 1487|     10|inline void RepeatedPtrField<Element>::Clear() {
 1488|     10|  RepeatedPtrFieldBase::Clear<TypeHandler>();
 1489|     10|}
_ZN6google8protobuf8internal20RepeatedPtrFieldBase5ClearINS0_16RepeatedPtrFieldINS0_22ServiceDescriptorProtoEE11TypeHandlerEEEvv:
  283|     10|  void Clear() {
  284|     10|    const int n = current_size_;
  285|     10|    ABSL_DCHECK_GE(n, 0);
  ------------------
  |  |   78|     10|  ABSL_DCHECK_GE_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   94|     10|  ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|     10|  while (false && ((void)(x), (void)(y), 0)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (56:10): [Folded - Ignored]
  |  |  |  |  |  |  |  Branch (56:19): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   57|     10|  ::absl::log_internal::NullStream().InternalStream()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  286|     10|    if (n > 0) {
  ------------------
  |  Branch (286:9): [True: 0, False: 10]
  ------------------
  287|      0|      ClearNonEmpty<TypeHandler>();
  288|      0|    }
  289|     10|  }
_ZN6google8protobuf16RepeatedPtrFieldINS0_20FieldDescriptorProtoEE5ClearEv:
 1487|     10|inline void RepeatedPtrField<Element>::Clear() {
 1488|     10|  RepeatedPtrFieldBase::Clear<TypeHandler>();
 1489|     10|}
_ZN6google8protobuf8internal20RepeatedPtrFieldBase5ClearINS0_16RepeatedPtrFieldINS0_20FieldDescriptorProtoEE11TypeHandlerEEEvv:
  283|     10|  void Clear() {
  284|     10|    const int n = current_size_;
  285|     10|    ABSL_DCHECK_GE(n, 0);
  ------------------
  |  |   78|     10|  ABSL_DCHECK_GE_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   94|     10|  ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|     10|  while (false && ((void)(x), (void)(y), 0)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (56:10): [Folded - Ignored]
  |  |  |  |  |  |  |  Branch (56:19): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   57|     10|  ::absl::log_internal::NullStream().InternalStream()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  286|     10|    if (n > 0) {
  ------------------
  |  Branch (286:9): [True: 0, False: 10]
  ------------------
  287|      0|      ClearNonEmpty<TypeHandler>();
  288|      0|    }
  289|     10|  }
_ZN6google8protobuf16RepeatedPtrFieldINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEC2EPNS0_5ArenaE:
 1249|    128|    : RepeatedPtrFieldBase(arena) {
 1250|    128|  StaticValidityCheck();
 1251|    128|}
_ZN6google8protobuf16RepeatedPtrFieldINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE19StaticValidityCheckEv:
  913|    256|  static constexpr PROTOBUF_ALWAYS_INLINE void StaticValidityCheck() {
  914|    256|    static_assert(
  915|    256|        absl::disjunction<
  916|    256|            internal::is_supported_string_type<Element>,
  917|    256|            internal::is_supported_message_type<Element>>::value,
  918|    256|        "We only support string and Message types in RepeatedPtrField.");
  919|    256|  }
_ZN6google8protobuf16RepeatedPtrFieldINS0_15DescriptorProtoEEC2EPNS0_5ArenaE:
 1249|    106|    : RepeatedPtrFieldBase(arena) {
 1250|    106|  StaticValidityCheck();
 1251|    106|}
_ZN6google8protobuf16RepeatedPtrFieldINS0_15DescriptorProtoEE19StaticValidityCheckEv:
  913|    212|  static constexpr PROTOBUF_ALWAYS_INLINE void StaticValidityCheck() {
  914|    212|    static_assert(
  915|    212|        absl::disjunction<
  916|    212|            internal::is_supported_string_type<Element>,
  917|    212|            internal::is_supported_message_type<Element>>::value,
  918|    212|        "We only support string and Message types in RepeatedPtrField.");
  919|    212|  }
_ZN6google8protobuf16RepeatedPtrFieldINS0_19EnumDescriptorProtoEEC2EPNS0_5ArenaE:
 1249|    106|    : RepeatedPtrFieldBase(arena) {
 1250|    106|  StaticValidityCheck();
 1251|    106|}
_ZN6google8protobuf16RepeatedPtrFieldINS0_19EnumDescriptorProtoEE19StaticValidityCheckEv:
  913|    212|  static constexpr PROTOBUF_ALWAYS_INLINE void StaticValidityCheck() {
  914|    212|    static_assert(
  915|    212|        absl::disjunction<
  916|    212|            internal::is_supported_string_type<Element>,
  917|    212|            internal::is_supported_message_type<Element>>::value,
  918|    212|        "We only support string and Message types in RepeatedPtrField.");
  919|    212|  }
_ZN6google8protobuf16RepeatedPtrFieldINS0_22ServiceDescriptorProtoEEC2EPNS0_5ArenaE:
 1249|     10|    : RepeatedPtrFieldBase(arena) {
 1250|     10|  StaticValidityCheck();
 1251|     10|}
_ZN6google8protobuf16RepeatedPtrFieldINS0_22ServiceDescriptorProtoEE19StaticValidityCheckEv:
  913|     20|  static constexpr PROTOBUF_ALWAYS_INLINE void StaticValidityCheck() {
  914|     20|    static_assert(
  915|     20|        absl::disjunction<
  916|     20|            internal::is_supported_string_type<Element>,
  917|     20|            internal::is_supported_message_type<Element>>::value,
  918|     20|        "We only support string and Message types in RepeatedPtrField.");
  919|     20|  }
_ZN6google8protobuf16RepeatedPtrFieldINS0_20FieldDescriptorProtoEEC2EPNS0_5ArenaE:
 1249|    202|    : RepeatedPtrFieldBase(arena) {
 1250|    202|  StaticValidityCheck();
 1251|    202|}
_ZN6google8protobuf16RepeatedPtrFieldINS0_20FieldDescriptorProtoEE19StaticValidityCheckEv:
  913|    404|  static constexpr PROTOBUF_ALWAYS_INLINE void StaticValidityCheck() {
  914|    404|    static_assert(
  915|    404|        absl::disjunction<
  916|    404|            internal::is_supported_string_type<Element>,
  917|    404|            internal::is_supported_message_type<Element>>::value,
  918|    404|        "We only support string and Message types in RepeatedPtrField.");
  919|    404|  }
_ZN6google8protobuf16RepeatedPtrFieldINS0_30DescriptorProto_ExtensionRangeEEC2EPNS0_5ArenaE:
 1249|     96|    : RepeatedPtrFieldBase(arena) {
 1250|     96|  StaticValidityCheck();
 1251|     96|}
_ZN6google8protobuf16RepeatedPtrFieldINS0_30DescriptorProto_ExtensionRangeEE19StaticValidityCheckEv:
  913|    192|  static constexpr PROTOBUF_ALWAYS_INLINE void StaticValidityCheck() {
  914|    192|    static_assert(
  915|    192|        absl::disjunction<
  916|    192|            internal::is_supported_string_type<Element>,
  917|    192|            internal::is_supported_message_type<Element>>::value,
  918|    192|        "We only support string and Message types in RepeatedPtrField.");
  919|    192|  }
_ZN6google8protobuf16RepeatedPtrFieldINS0_20OneofDescriptorProtoEEC2EPNS0_5ArenaE:
 1249|     96|    : RepeatedPtrFieldBase(arena) {
 1250|     96|  StaticValidityCheck();
 1251|     96|}
_ZN6google8protobuf16RepeatedPtrFieldINS0_20OneofDescriptorProtoEE19StaticValidityCheckEv:
  913|    192|  static constexpr PROTOBUF_ALWAYS_INLINE void StaticValidityCheck() {
  914|    192|    static_assert(
  915|    192|        absl::disjunction<
  916|    192|            internal::is_supported_string_type<Element>,
  917|    192|            internal::is_supported_message_type<Element>>::value,
  918|    192|        "We only support string and Message types in RepeatedPtrField.");
  919|    192|  }
_ZN6google8protobuf16RepeatedPtrFieldINS0_29DescriptorProto_ReservedRangeEEC2EPNS0_5ArenaE:
 1249|     96|    : RepeatedPtrFieldBase(arena) {
 1250|     96|  StaticValidityCheck();
 1251|     96|}
_ZN6google8protobuf16RepeatedPtrFieldINS0_29DescriptorProto_ReservedRangeEE19StaticValidityCheckEv:
  913|    192|  static constexpr PROTOBUF_ALWAYS_INLINE void StaticValidityCheck() {
  914|    192|    static_assert(
  915|    192|        absl::disjunction<
  916|    192|            internal::is_supported_string_type<Element>,
  917|    192|            internal::is_supported_message_type<Element>>::value,
  918|    192|        "We only support string and Message types in RepeatedPtrField.");
  919|    192|  }
_ZN6google8protobuf16RepeatedPtrFieldINS0_19UninterpretedOptionEEC2EPNS0_5ArenaE:
 1249|     38|    : RepeatedPtrFieldBase(arena) {
 1250|     38|  StaticValidityCheck();
 1251|     38|}
_ZN6google8protobuf16RepeatedPtrFieldINS0_19UninterpretedOptionEE19StaticValidityCheckEv:
  913|     76|  static constexpr PROTOBUF_ALWAYS_INLINE void StaticValidityCheck() {
  914|     76|    static_assert(
  915|     76|        absl::disjunction<
  916|     76|            internal::is_supported_string_type<Element>,
  917|     76|            internal::is_supported_message_type<Element>>::value,
  918|     76|        "We only support string and Message types in RepeatedPtrField.");
  919|     76|  }
_ZN6google8protobuf16RepeatedPtrFieldINS0_19UninterpretedOptionEED2Ev:
 1269|     38|RepeatedPtrField<Element>::~RepeatedPtrField() {
 1270|     38|  StaticValidityCheck();
 1271|     38|#ifdef __cpp_if_constexpr
 1272|     38|  if constexpr (std::is_base_of<MessageLite, Element>::value) {
  ------------------
  |  Branch (1272:17): [Folded - Ignored]
  ------------------
 1273|       |#else
 1274|       |  if (std::is_base_of<MessageLite, Element>::value) {
 1275|       |#endif
 1276|     38|    if (NeedsDestroy()) DestroyProtos();
  ------------------
  |  Branch (1276:9): [True: 0, False: 38]
  ------------------
 1277|     38|  } else {
 1278|     38|    Destroy<TypeHandler>();
 1279|     38|  }
 1280|     38|}
_ZN6google8protobuf16RepeatedPtrFieldINS0_24EnumValueDescriptorProtoEEC2EPNS0_5ArenaE:
 1249|     22|    : RepeatedPtrFieldBase(arena) {
 1250|     22|  StaticValidityCheck();
 1251|     22|}
_ZN6google8protobuf16RepeatedPtrFieldINS0_24EnumValueDescriptorProtoEE19StaticValidityCheckEv:
  913|     44|  static constexpr PROTOBUF_ALWAYS_INLINE void StaticValidityCheck() {
  914|     44|    static_assert(
  915|     44|        absl::disjunction<
  916|     44|            internal::is_supported_string_type<Element>,
  917|     44|            internal::is_supported_message_type<Element>>::value,
  918|     44|        "We only support string and Message types in RepeatedPtrField.");
  919|     44|  }
_ZN6google8protobuf16RepeatedPtrFieldINS0_37EnumDescriptorProto_EnumReservedRangeEEC2EPNS0_5ArenaE:
 1249|     22|    : RepeatedPtrFieldBase(arena) {
 1250|     22|  StaticValidityCheck();
 1251|     22|}
_ZN6google8protobuf16RepeatedPtrFieldINS0_37EnumDescriptorProto_EnumReservedRangeEE19StaticValidityCheckEv:
  913|     44|  static constexpr PROTOBUF_ALWAYS_INLINE void StaticValidityCheck() {
  914|     44|    static_assert(
  915|     44|        absl::disjunction<
  916|     44|            internal::is_supported_string_type<Element>,
  917|     44|            internal::is_supported_message_type<Element>>::value,
  918|     44|        "We only support string and Message types in RepeatedPtrField.");
  919|     44|  }
_ZN6google8protobuf16RepeatedPtrFieldINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEED2Ev:
 1269|    128|RepeatedPtrField<Element>::~RepeatedPtrField() {
 1270|    128|  StaticValidityCheck();
 1271|    128|#ifdef __cpp_if_constexpr
 1272|    128|  if constexpr (std::is_base_of<MessageLite, Element>::value) {
  ------------------
  |  Branch (1272:17): [Folded - Ignored]
  ------------------
 1273|       |#else
 1274|       |  if (std::is_base_of<MessageLite, Element>::value) {
 1275|       |#endif
 1276|    128|    if (NeedsDestroy()) DestroyProtos();
 1277|    128|  } else {
 1278|    128|    Destroy<TypeHandler>();
 1279|    128|  }
 1280|    128|}
_ZN6google8protobuf8internal20RepeatedPtrFieldBase7DestroyINS0_16RepeatedPtrFieldINSt3__112basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEE11TypeHandlerEEEvv:
  248|    128|  void Destroy() {
  249|    128|    if (rep_ != nullptr && arena_ == nullptr) {
  ------------------
  |  Branch (249:9): [True: 2, False: 126]
  |  Branch (249:28): [True: 2, False: 0]
  ------------------
  250|      2|      int n = rep_->allocated_size;
  251|      2|      void* const* elements = rep_->elements;
  252|      8|      for (int i = 0; i < n; i++) {
  ------------------
  |  Branch (252:23): [True: 6, False: 2]
  ------------------
  253|      6|        TypeHandler::Delete(cast<TypeHandler>(elements[i]), nullptr);
  254|      6|      }
  255|      2|      const size_t size = total_size_ * sizeof(elements[0]) + kRepHeaderSize;
  256|      2|      internal::SizedDelete(rep_, size);
  257|      2|    }
  258|    128|    rep_ = nullptr;
  259|    128|  }
_ZN6google8protobuf16RepeatedPtrFieldINS0_15DescriptorProtoEED2Ev:
 1269|    106|RepeatedPtrField<Element>::~RepeatedPtrField() {
 1270|    106|  StaticValidityCheck();
 1271|    106|#ifdef __cpp_if_constexpr
 1272|    106|  if constexpr (std::is_base_of<MessageLite, Element>::value) {
  ------------------
  |  Branch (1272:17): [Folded - Ignored]
  ------------------
 1273|       |#else
 1274|       |  if (std::is_base_of<MessageLite, Element>::value) {
 1275|       |#endif
 1276|    106|    if (NeedsDestroy()) DestroyProtos();
  ------------------
  |  Branch (1276:9): [True: 30, False: 76]
  ------------------
 1277|    106|  } else {
 1278|    106|    Destroy<TypeHandler>();
 1279|    106|  }
 1280|    106|}
_ZN6google8protobuf16RepeatedPtrFieldINS0_19EnumDescriptorProtoEED2Ev:
 1269|    106|RepeatedPtrField<Element>::~RepeatedPtrField() {
 1270|    106|  StaticValidityCheck();
 1271|    106|#ifdef __cpp_if_constexpr
 1272|    106|  if constexpr (std::is_base_of<MessageLite, Element>::value) {
  ------------------
  |  Branch (1272:17): [Folded - Ignored]
  ------------------
 1273|       |#else
 1274|       |  if (std::is_base_of<MessageLite, Element>::value) {
 1275|       |#endif
 1276|    106|    if (NeedsDestroy()) DestroyProtos();
  ------------------
  |  Branch (1276:9): [True: 14, False: 92]
  ------------------
 1277|    106|  } else {
 1278|    106|    Destroy<TypeHandler>();
 1279|    106|  }
 1280|    106|}
_ZN6google8protobuf16RepeatedPtrFieldINS0_22ServiceDescriptorProtoEED2Ev:
 1269|     10|RepeatedPtrField<Element>::~RepeatedPtrField() {
 1270|     10|  StaticValidityCheck();
 1271|     10|#ifdef __cpp_if_constexpr
 1272|     10|  if constexpr (std::is_base_of<MessageLite, Element>::value) {
  ------------------
  |  Branch (1272:17): [Folded - Ignored]
  ------------------
 1273|       |#else
 1274|       |  if (std::is_base_of<MessageLite, Element>::value) {
 1275|       |#endif
 1276|     10|    if (NeedsDestroy()) DestroyProtos();
  ------------------
  |  Branch (1276:9): [True: 0, False: 10]
  ------------------
 1277|     10|  } else {
 1278|     10|    Destroy<TypeHandler>();
 1279|     10|  }
 1280|     10|}
_ZN6google8protobuf16RepeatedPtrFieldINS0_20FieldDescriptorProtoEED2Ev:
 1269|    202|RepeatedPtrField<Element>::~RepeatedPtrField() {
 1270|    202|  StaticValidityCheck();
 1271|    202|#ifdef __cpp_if_constexpr
 1272|    202|  if constexpr (std::is_base_of<MessageLite, Element>::value) {
  ------------------
  |  Branch (1272:17): [Folded - Ignored]
  ------------------
 1273|       |#else
 1274|       |  if (std::is_base_of<MessageLite, Element>::value) {
 1275|       |#endif
 1276|    202|    if (NeedsDestroy()) DestroyProtos();
  ------------------
  |  Branch (1276:9): [True: 96, False: 106]
  ------------------
 1277|    202|  } else {
 1278|    202|    Destroy<TypeHandler>();
 1279|    202|  }
 1280|    202|}
_ZN6google8protobuf16RepeatedPtrFieldINS0_30DescriptorProto_ExtensionRangeEED2Ev:
 1269|     96|RepeatedPtrField<Element>::~RepeatedPtrField() {
 1270|     96|  StaticValidityCheck();
 1271|     96|#ifdef __cpp_if_constexpr
 1272|     96|  if constexpr (std::is_base_of<MessageLite, Element>::value) {
  ------------------
  |  Branch (1272:17): [Folded - Ignored]
  ------------------
 1273|       |#else
 1274|       |  if (std::is_base_of<MessageLite, Element>::value) {
 1275|       |#endif
 1276|     96|    if (NeedsDestroy()) DestroyProtos();
  ------------------
  |  Branch (1276:9): [True: 18, False: 78]
  ------------------
 1277|     96|  } else {
 1278|     96|    Destroy<TypeHandler>();
 1279|     96|  }
 1280|     96|}
_ZN6google8protobuf16RepeatedPtrFieldINS0_20OneofDescriptorProtoEED2Ev:
 1269|     96|RepeatedPtrField<Element>::~RepeatedPtrField() {
 1270|     96|  StaticValidityCheck();
 1271|     96|#ifdef __cpp_if_constexpr
 1272|     96|  if constexpr (std::is_base_of<MessageLite, Element>::value) {
  ------------------
  |  Branch (1272:17): [Folded - Ignored]
  ------------------
 1273|       |#else
 1274|       |  if (std::is_base_of<MessageLite, Element>::value) {
 1275|       |#endif
 1276|     96|    if (NeedsDestroy()) DestroyProtos();
  ------------------
  |  Branch (1276:9): [True: 8, False: 88]
  ------------------
 1277|     96|  } else {
 1278|     96|    Destroy<TypeHandler>();
 1279|     96|  }
 1280|     96|}
_ZN6google8protobuf16RepeatedPtrFieldINS0_29DescriptorProto_ReservedRangeEED2Ev:
 1269|     96|RepeatedPtrField<Element>::~RepeatedPtrField() {
 1270|     96|  StaticValidityCheck();
 1271|     96|#ifdef __cpp_if_constexpr
 1272|     96|  if constexpr (std::is_base_of<MessageLite, Element>::value) {
  ------------------
  |  Branch (1272:17): [Folded - Ignored]
  ------------------
 1273|       |#else
 1274|       |  if (std::is_base_of<MessageLite, Element>::value) {
 1275|       |#endif
 1276|     96|    if (NeedsDestroy()) DestroyProtos();
  ------------------
  |  Branch (1276:9): [True: 8, False: 88]
  ------------------
 1277|     96|  } else {
 1278|     96|    Destroy<TypeHandler>();
 1279|     96|  }
 1280|     96|}
_ZN6google8protobuf16RepeatedPtrFieldINS0_24EnumValueDescriptorProtoEED2Ev:
 1269|     22|RepeatedPtrField<Element>::~RepeatedPtrField() {
 1270|     22|  StaticValidityCheck();
 1271|     22|#ifdef __cpp_if_constexpr
 1272|     22|  if constexpr (std::is_base_of<MessageLite, Element>::value) {
  ------------------
  |  Branch (1272:17): [Folded - Ignored]
  ------------------
 1273|       |#else
 1274|       |  if (std::is_base_of<MessageLite, Element>::value) {
 1275|       |#endif
 1276|     22|    if (NeedsDestroy()) DestroyProtos();
  ------------------
  |  Branch (1276:9): [True: 22, False: 0]
  ------------------
 1277|     22|  } else {
 1278|     22|    Destroy<TypeHandler>();
 1279|     22|  }
 1280|     22|}
_ZN6google8protobuf16RepeatedPtrFieldINS0_37EnumDescriptorProto_EnumReservedRangeEED2Ev:
 1269|     22|RepeatedPtrField<Element>::~RepeatedPtrField() {
 1270|     22|  StaticValidityCheck();
 1271|     22|#ifdef __cpp_if_constexpr
 1272|     22|  if constexpr (std::is_base_of<MessageLite, Element>::value) {
  ------------------
  |  Branch (1272:17): [Folded - Ignored]
  ------------------
 1273|       |#else
 1274|       |  if (std::is_base_of<MessageLite, Element>::value) {
 1275|       |#endif
 1276|     22|    if (NeedsDestroy()) DestroyProtos();
  ------------------
  |  Branch (1276:9): [True: 0, False: 22]
  ------------------
 1277|     22|  } else {
 1278|     22|    Destroy<TypeHandler>();
 1279|     22|  }
 1280|     22|}
_ZN6google8protobuf16RepeatedPtrFieldINS0_7MessageEED2Ev:
 1269|  7.50k|RepeatedPtrField<Element>::~RepeatedPtrField() {
 1270|  7.50k|  StaticValidityCheck();
 1271|  7.50k|#ifdef __cpp_if_constexpr
 1272|  7.50k|  if constexpr (std::is_base_of<MessageLite, Element>::value) {
  ------------------
  |  Branch (1272:17): [Folded - Ignored]
  ------------------
 1273|       |#else
 1274|       |  if (std::is_base_of<MessageLite, Element>::value) {
 1275|       |#endif
 1276|  7.50k|    if (NeedsDestroy()) DestroyProtos();
  ------------------
  |  Branch (1276:9): [True: 0, False: 7.50k]
  ------------------
 1277|  7.50k|  } else {
 1278|  7.50k|    Destroy<TypeHandler>();
 1279|  7.50k|  }
 1280|  7.50k|}
_ZN6google8protobuf16RepeatedPtrFieldINS0_7MessageEEC2EPNS0_5ArenaE:
 1249|  7.50k|    : RepeatedPtrFieldBase(arena) {
 1250|  7.50k|  StaticValidityCheck();
 1251|  7.50k|}

_ZN6google8protobuf15DescriptorProto25internal_default_instanceEv:
 1514|     96|  static inline const DescriptorProto* internal_default_instance() {
 1515|     96|    return reinterpret_cast<const DescriptorProto*>(
 1516|     96|               &_DescriptorProto_default_instance_);
 1517|     96|  }
_ZNK6google8protobuf19FileDescriptorProto4nameEv:
 8838|     82|inline const std::string& FileDescriptorProto::name() const {
 8839|       |  // @@protoc_insertion_point(field_get:google.protobuf.FileDescriptorProto.name)
 8840|     82|  return _internal_name();
 8841|     82|}
_ZNK6google8protobuf19FileDescriptorProto14_internal_nameEv:
 8854|     82|inline const std::string& FileDescriptorProto::_internal_name() const {
 8855|     82|  return _impl_.name_.Get();
 8856|     82|}
_ZN6google8protobuf19FileDescriptorProto28_internal_mutable_dependencyEv:
 9048|     26|FileDescriptorProto::_internal_mutable_dependency() {
 9049|     26|  return &_impl_.dependency_;
 9050|     26|}
_ZN6google8protobuf19FileDescriptorProto35_internal_mutable_public_dependencyEv:
 9092|     10|inline ::PROTOBUF_NAMESPACE_ID::RepeatedField<::int32_t>* FileDescriptorProto::_internal_mutable_public_dependency() {
 9093|     10|  return &_impl_.public_dependency_;
 9094|     10|}
_ZN6google8protobuf19FileDescriptorProto33_internal_mutable_weak_dependencyEv:
 9136|     10|inline ::PROTOBUF_NAMESPACE_ID::RepeatedField<::int32_t>* FileDescriptorProto::_internal_mutable_weak_dependency() {
 9137|     10|  return &_impl_.weak_dependency_;
 9138|     10|}
_ZN6google8protobuf19FileDescriptorProto26_internal_add_message_typeEv:
 9166|     62|inline ::PROTOBUF_NAMESPACE_ID::DescriptorProto* FileDescriptorProto::_internal_add_message_type() {
 9167|     62|  return _internal_mutable_message_type()->Add();
 9168|     62|}
_ZN6google8protobuf19FileDescriptorProto30_internal_mutable_message_typeEv:
 9184|     82|FileDescriptorProto::_internal_mutable_message_type() {
 9185|     82|  return &_impl_.message_type_;
 9186|     82|}
_ZN6google8protobuf19FileDescriptorProto23_internal_add_enum_typeEv:
 9214|      2|inline ::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto* FileDescriptorProto::_internal_add_enum_type() {
 9215|      2|  return _internal_mutable_enum_type()->Add();
 9216|      2|}
_ZN6google8protobuf19FileDescriptorProto27_internal_mutable_enum_typeEv:
 9232|     22|FileDescriptorProto::_internal_mutable_enum_type() {
 9233|     22|  return &_impl_.enum_type_;
 9234|     22|}
_ZN6google8protobuf19FileDescriptorProto25_internal_mutable_serviceEv:
 9280|     20|FileDescriptorProto::_internal_mutable_service() {
 9281|     20|  return &_impl_.service_;
 9282|     20|}
_ZN6google8protobuf19FileDescriptorProto27_internal_mutable_extensionEv:
 9328|     20|FileDescriptorProto::_internal_mutable_extension() {
 9329|     20|  return &_impl_.extension_;
 9330|     20|}
_ZN6google8protobuf11FileOptions25internal_default_instanceEv:
 4161|     10|  static inline const FileOptions* internal_default_instance() {
 4162|     10|    return reinterpret_cast<const FileOptions*>(
 4163|     10|               &_FileOptions_default_instance_);
 4164|     10|  }
_ZN6google8protobuf19FileDescriptorProto25_internal_mutable_optionsEv:
 9386|     10|inline ::PROTOBUF_NAMESPACE_ID::FileOptions* FileDescriptorProto::_internal_mutable_options() {
 9387|     10|  _impl_._has_bits_[0] |= 0x00000010u;
 9388|     10|  if (_impl_.options_ == nullptr) {
  ------------------
  |  Branch (9388:7): [True: 10, False: 0]
  ------------------
 9389|     10|    auto* p = CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::FileOptions>(GetArenaForAllocation());
 9390|     10|    _impl_.options_ = p;
 9391|     10|  }
 9392|     10|  return _impl_.options_;
 9393|     10|}
_ZN6google8protobuf15DescriptorProto19_internal_add_fieldEv:
 9926|    418|inline ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto* DescriptorProto::_internal_add_field() {
 9927|    418|  return _internal_mutable_field()->Add();
 9928|    418|}
_ZN6google8protobuf15DescriptorProto23_internal_mutable_fieldEv:
 9944|    514|DescriptorProto::_internal_mutable_field() {
 9945|    514|  return &_impl_.field_;
 9946|    514|}
_ZN6google8protobuf15DescriptorProto24_internal_add_oneof_declEv:
10166|      8|inline ::PROTOBUF_NAMESPACE_ID::OneofDescriptorProto* DescriptorProto::_internal_add_oneof_decl() {
10167|      8|  return _internal_mutable_oneof_decl()->Add();
10168|      8|}
_ZN6google8protobuf15DescriptorProto28_internal_mutable_oneof_declEv:
10184|    104|DescriptorProto::_internal_mutable_oneof_decl() {
10185|    104|  return &_impl_.oneof_decl_;
10186|    104|}
_ZN6google8protobuf15DescriptorProto25_internal_add_nested_typeEv:
10022|     34|inline ::PROTOBUF_NAMESPACE_ID::DescriptorProto* DescriptorProto::_internal_add_nested_type() {
10023|     34|  return _internal_mutable_nested_type()->Add();
10024|     34|}
_ZN6google8protobuf15DescriptorProto29_internal_mutable_nested_typeEv:
10040|    130|DescriptorProto::_internal_mutable_nested_type() {
10041|    130|  return &_impl_.nested_type_;
10042|    130|}
_ZN6google8protobuf15DescriptorProto23_internal_add_enum_typeEv:
10070|     20|inline ::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto* DescriptorProto::_internal_add_enum_type() {
10071|     20|  return _internal_mutable_enum_type()->Add();
10072|     20|}
_ZN6google8protobuf15DescriptorProto27_internal_mutable_enum_typeEv:
10088|    116|DescriptorProto::_internal_mutable_enum_type() {
10089|    116|  return &_impl_.enum_type_;
10090|    116|}
_ZN6google8protobuf15DescriptorProto29_internal_add_extension_rangeEv:
10118|     18|inline ::PROTOBUF_NAMESPACE_ID::DescriptorProto_ExtensionRange* DescriptorProto::_internal_add_extension_range() {
10119|     18|  return _internal_mutable_extension_range()->Add();
10120|     18|}
_ZN6google8protobuf15DescriptorProto33_internal_mutable_extension_rangeEv:
10136|    114|DescriptorProto::_internal_mutable_extension_range() {
10137|    114|  return &_impl_.extension_range_;
10138|    114|}
_ZN6google8protobuf15DescriptorProto27_internal_mutable_extensionEv:
 9992|     96|DescriptorProto::_internal_mutable_extension() {
 9993|     96|  return &_impl_.extension_;
 9994|     96|}
_ZN6google8protobuf15DescriptorProto28_internal_add_reserved_rangeEv:
10301|     16|inline ::PROTOBUF_NAMESPACE_ID::DescriptorProto_ReservedRange* DescriptorProto::_internal_add_reserved_range() {
10302|     16|  return _internal_mutable_reserved_range()->Add();
10303|     16|}
_ZN6google8protobuf15DescriptorProto32_internal_mutable_reserved_rangeEv:
10319|    112|DescriptorProto::_internal_mutable_reserved_range() {
10320|    112|  return &_impl_.reserved_range_;
10321|    112|}
_ZN6google8protobuf15DescriptorProto31_internal_mutable_reserved_nameEv:
10412|     96|DescriptorProto::_internal_mutable_reserved_name() {
10413|     96|  return &_impl_.reserved_name_;
10414|     96|}
_ZN6google8protobuf14MessageOptions25internal_default_instanceEv:
 4860|      6|  static inline const MessageOptions* internal_default_instance() {
 4861|      6|    return reinterpret_cast<const MessageOptions*>(
 4862|      6|               &_MessageOptions_default_instance_);
 4863|      6|  }
_ZN6google8protobuf15DescriptorProto25_internal_mutable_optionsEv:
10242|      6|inline ::PROTOBUF_NAMESPACE_ID::MessageOptions* DescriptorProto::_internal_mutable_options() {
10243|      6|  _impl_._has_bits_[0] |= 0x00000002u;
10244|      6|  if (_impl_.options_ == nullptr) {
  ------------------
  |  Branch (10244:7): [True: 6, False: 0]
  ------------------
10245|      6|    auto* p = CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::MessageOptions>(GetArenaForAllocation());
10246|      6|    _impl_.options_ = p;
10247|      6|  }
10248|      6|  return _impl_.options_;
10249|      6|}
_ZN6google8protobuf20FieldDescriptorProto19_internal_set_labelENS0_26FieldDescriptorProto_LabelE:
10890|    418|inline void FieldDescriptorProto::_internal_set_label(::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto_Label value) {
10891|    418|  assert(::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto_Label_IsValid(value));
10892|    418|  _impl_._has_bits_[0] |= 0x00000200u;
10893|    418|  _impl_.label_ = value;
10894|    418|}
_ZN6google8protobuf20FieldDescriptorProto18_internal_set_typeENS0_25FieldDescriptorProto_TypeE:
10916|    418|inline void FieldDescriptorProto::_internal_set_type(::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto_Type value) {
10917|    418|  assert(::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto_Type_IsValid(value));
10918|    418|  _impl_._has_bits_[0] |= 0x00000400u;
10919|    418|  _impl_.type_ = value;
10920|    418|}
_ZN6google8protobuf20FieldDescriptorProto27_internal_mutable_type_nameEv:
10956|    164|inline std::string* FieldDescriptorProto::_internal_mutable_type_name() {
10957|    164|  _impl_._has_bits_[0] |= 0x00000004u;
10958|    164|  return _impl_.type_name_.Mutable( GetArenaForAllocation());
10959|    164|}
_ZN6google8protobuf12FieldOptions25internal_default_instanceEv:
 5243|     22|  static inline const FieldOptions* internal_default_instance() {
 5244|     22|    return reinterpret_cast<const FieldOptions*>(
 5245|     22|               &_FieldOptions_default_instance_);
 5246|     22|  }
_ZN6google8protobuf20FieldDescriptorProto25_internal_mutable_optionsEv:
11261|     22|inline ::PROTOBUF_NAMESPACE_ID::FieldOptions* FieldDescriptorProto::_internal_mutable_options() {
11262|     22|  _impl_._has_bits_[0] |= 0x00000020u;
11263|     22|  if (_impl_.options_ == nullptr) {
  ------------------
  |  Branch (11263:7): [True: 22, False: 0]
  ------------------
11264|     22|    auto* p = CreateMaybeMessage<::PROTOBUF_NAMESPACE_ID::FieldOptions>(GetArenaForAllocation());
11265|     22|    _impl_.options_ = p;
11266|     22|  }
11267|     22|  return _impl_.options_;
11268|     22|}
_ZN6google8protobuf19EnumDescriptorProto19_internal_add_valueEv:
11624|    104|inline ::PROTOBUF_NAMESPACE_ID::EnumValueDescriptorProto* EnumDescriptorProto::_internal_add_value() {
11625|    104|  return _internal_mutable_value()->Add();
11626|    104|}
_ZN6google8protobuf19EnumDescriptorProto23_internal_mutable_valueEv:
11642|    126|EnumDescriptorProto::_internal_mutable_value() {
11643|    126|  return &_impl_.value_;
11644|    126|}
_ZN6google8protobuf19EnumDescriptorProto32_internal_mutable_reserved_rangeEv:
11777|     22|EnumDescriptorProto::_internal_mutable_reserved_range() {
11778|     22|  return &_impl_.reserved_range_;
11779|     22|}
_ZN6google8protobuf19EnumDescriptorProto31_internal_mutable_reserved_nameEv:
11870|     22|EnumDescriptorProto::_internal_mutable_reserved_name() {
11871|     22|  return &_impl_.reserved_name_;
11872|     22|}
_ZN6google8protobuf19FileDescriptorProtoC2Ev:
  682|     10|  inline FileDescriptorProto() : FileDescriptorProto(nullptr) {}
_ZNK6google8protobuf19FileDescriptorProto7packageEv:
 8903|     20|inline const std::string& FileDescriptorProto::package() const {
 8904|       |  // @@protoc_insertion_point(field_get:google.protobuf.FileDescriptorProto.package)
 8905|     20|  return _internal_package();
 8906|     20|}
_ZNK6google8protobuf19FileDescriptorProto17_internal_packageEv:
 8919|     20|inline const std::string& FileDescriptorProto::_internal_package() const {
 8920|     20|  return _impl_.package_.Get();
 8921|     20|}
_ZNK6google8protobuf19FileDescriptorProto7serviceEv:
 9271|     10|FileDescriptorProto::service() const {
 9272|       |  // @@protoc_insertion_point(field_list:google.protobuf.FileDescriptorProto.service)
 9273|     10|  return _internal_service();
 9274|     10|}
_ZNK6google8protobuf19FileDescriptorProto17_internal_serviceEv:
 9276|     20|FileDescriptorProto::_internal_service() const {
 9277|     20|  return _impl_.service_;
 9278|     20|}
_ZNK6google8protobuf15DescriptorProto11nested_typeEv:
10031|     96|DescriptorProto::nested_type() const {
10032|       |  // @@protoc_insertion_point(field_list:google.protobuf.DescriptorProto.nested_type)
10033|     96|  return _internal_nested_type();
10034|     96|}
_ZNK6google8protobuf15DescriptorProto21_internal_nested_typeEv:
10036|    192|DescriptorProto::_internal_nested_type() const {
10037|    192|  return _impl_.nested_type_;
10038|    192|}
_ZNK6google8protobuf15DescriptorProto9extensionEv:
 9983|     96|DescriptorProto::extension() const {
 9984|       |  // @@protoc_insertion_point(field_list:google.protobuf.DescriptorProto.extension)
 9985|     96|  return _internal_extension();
 9986|     96|}
_ZNK6google8protobuf15DescriptorProto19_internal_extensionEv:
 9988|    192|DescriptorProto::_internal_extension() const {
 9989|    192|  return _impl_.extension_;
 9990|    192|}
_ZNK6google8protobuf15DescriptorProto25_internal_extension_rangeEv:
10132|     96|DescriptorProto::_internal_extension_range() const {
10133|     96|  return _impl_.extension_range_;
10134|     96|}
_ZNK6google8protobuf15DescriptorProto19_internal_enum_typeEv:
10084|     96|DescriptorProto::_internal_enum_type() const {
10085|     96|  return _impl_.enum_type_;
10086|     96|}
_ZNK6google8protobuf15DescriptorProto20_internal_oneof_declEv:
10180|     96|DescriptorProto::_internal_oneof_decl() const {
10181|     96|  return _impl_.oneof_decl_;
10182|     96|}
_ZNK6google8protobuf19FileDescriptorProto12message_typeEv:
 9175|     10|FileDescriptorProto::message_type() const {
 9176|       |  // @@protoc_insertion_point(field_list:google.protobuf.FileDescriptorProto.message_type)
 9177|     10|  return _internal_message_type();
 9178|     10|}
_ZNK6google8protobuf19FileDescriptorProto22_internal_message_typeEv:
 9180|     20|FileDescriptorProto::_internal_message_type() const {
 9181|     20|  return _impl_.message_type_;
 9182|     20|}
_ZNK6google8protobuf19EnumDescriptorProto15_internal_valueEv:
11638|     22|EnumDescriptorProto::_internal_value() const {
11639|     22|  return _impl_.value_;
11640|     22|}
_ZNK6google8protobuf19FileDescriptorProto9enum_typeEv:
 9223|     10|FileDescriptorProto::enum_type() const {
 9224|       |  // @@protoc_insertion_point(field_list:google.protobuf.FileDescriptorProto.enum_type)
 9225|     10|  return _internal_enum_type();
 9226|     10|}
_ZNK6google8protobuf19FileDescriptorProto19_internal_enum_typeEv:
 9228|     20|FileDescriptorProto::_internal_enum_type() const {
 9229|     20|  return _impl_.enum_type_;
 9230|     20|}
_ZNK6google8protobuf19FileDescriptorProto9extensionEv:
 9319|     10|FileDescriptorProto::extension() const {
 9320|       |  // @@protoc_insertion_point(field_list:google.protobuf.FileDescriptorProto.extension)
 9321|     10|  return _internal_extension();
 9322|     10|}
_ZNK6google8protobuf19FileDescriptorProto19_internal_extensionEv:
 9324|     20|FileDescriptorProto::_internal_extension() const {
 9325|     20|  return _impl_.extension_;
 9326|     20|}
_ZNK6google8protobuf15DescriptorProto4nameEv:
 9844|     62|inline const std::string& DescriptorProto::name() const {
 9845|       |  // @@protoc_insertion_point(field_get:google.protobuf.DescriptorProto.name)
 9846|     62|  return _internal_name();
 9847|     62|}
_ZNK6google8protobuf15DescriptorProto14_internal_nameEv:
 9860|     62|inline const std::string& DescriptorProto::_internal_name() const {
 9861|     62|  return _impl_.name_.Get();
 9862|     62|}
_ZNK6google8protobuf15DescriptorProto15_internal_fieldEv:
 9940|     96|DescriptorProto::_internal_field() const {
 9941|     96|  return _impl_.field_;
 9942|     96|}
_ZNK6google8protobuf19EnumDescriptorProto4nameEv:
11542|      2|inline const std::string& EnumDescriptorProto::name() const {
11543|       |  // @@protoc_insertion_point(field_get:google.protobuf.EnumDescriptorProto.name)
11544|      2|  return _internal_name();
11545|      2|}
_ZNK6google8protobuf19EnumDescriptorProto14_internal_nameEv:
11558|      2|inline const std::string& EnumDescriptorProto::_internal_name() const {
11559|      2|  return _impl_.name_.Get();
11560|      2|}
_ZN6google8protobuf19FileDescriptorProto25internal_default_instanceEv:
  729|     20|  static inline const FileDescriptorProto* internal_default_instance() {
  730|     20|    return reinterpret_cast<const FileDescriptorProto*>(
  731|     20|               &_FileDescriptorProto_default_instance_);
  732|     20|  }
_ZN6google8protobuf30DescriptorProto_ExtensionRange25internal_default_instanceEv:
 1160|     18|  static inline const DescriptorProto_ExtensionRange* internal_default_instance() {
 1161|     18|    return reinterpret_cast<const DescriptorProto_ExtensionRange*>(
 1162|     18|               &_DescriptorProto_ExtensionRange_default_instance_);
 1163|     18|  }
_ZN6google8protobuf20FieldDescriptorProto25internal_default_instanceEv:
 2501|    418|  static inline const FieldDescriptorProto* internal_default_instance() {
 2502|    418|    return reinterpret_cast<const FieldDescriptorProto*>(
 2503|    418|               &_FieldDescriptorProto_default_instance_);
 2504|    418|  }
_ZN6google8protobuf20OneofDescriptorProto25internal_default_instanceEv:
 2897|      8|  static inline const OneofDescriptorProto* internal_default_instance() {
 2898|      8|    return reinterpret_cast<const OneofDescriptorProto*>(
 2899|      8|               &_OneofDescriptorProto_default_instance_);
 2900|      8|  }
_ZN6google8protobuf19EnumDescriptorProto25internal_default_instanceEv:
 3248|     22|  static inline const EnumDescriptorProto* internal_default_instance() {
 3249|     22|    return reinterpret_cast<const EnumDescriptorProto*>(
 3250|     22|               &_EnumDescriptorProto_default_instance_);
 3251|     22|  }
_ZN6google8protobuf24EnumValueDescriptorProto25internal_default_instanceEv:
 3508|    104|  static inline const EnumValueDescriptorProto* internal_default_instance() {
 3509|    104|    return reinterpret_cast<const EnumValueDescriptorProto*>(
 3510|    104|               &_EnumValueDescriptorProto_default_instance_);
 3511|    104|  }
_ZN6google8protobuf19FileDescriptorProto22_internal_mutable_nameEv:
 8863|     10|inline std::string* FileDescriptorProto::_internal_mutable_name() {
 8864|     10|  _impl_._has_bits_[0] |= 0x00000001u;
 8865|     10|  return _impl_.name_.Mutable( GetArenaForAllocation());
 8866|     10|}
_ZN6google8protobuf19FileDescriptorProto25_internal_mutable_packageEv:
 8928|     10|inline std::string* FileDescriptorProto::_internal_mutable_package() {
 8929|     10|  _impl_._has_bits_[0] |= 0x00000002u;
 8930|     10|  return _impl_.package_.Mutable( GetArenaForAllocation());
 8931|     10|}
_ZN6google8protobuf19FileDescriptorProto24_internal_add_dependencyEv:
 9040|      6|inline std::string* FileDescriptorProto::_internal_add_dependency() {
 9041|      6|  return _internal_mutable_dependency()->Add();
 9042|      6|}
_ZN6google8protobuf19FileDescriptorProto24_internal_mutable_syntaxEv:
 9540|      8|inline std::string* FileDescriptorProto::_internal_mutable_syntax() {
 9541|      8|  _impl_._has_bits_[0] |= 0x00000004u;
 9542|      8|  return _impl_.syntax_.Mutable( GetArenaForAllocation());
 9543|      8|}
_ZN6google8protobuf15DescriptorProto22_internal_mutable_nameEv:
 9869|     96|inline std::string* DescriptorProto::_internal_mutable_name() {
 9870|     96|  _impl_._has_bits_[0] |= 0x00000001u;
 9871|     96|  return _impl_.name_.Mutable( GetArenaForAllocation());
 9872|     96|}
_ZN6google8protobuf20FieldDescriptorProto22_internal_mutable_nameEv:
10814|    418|inline std::string* FieldDescriptorProto::_internal_mutable_name() {
10815|    418|  _impl_._has_bits_[0] |= 0x00000001u;
10816|    418|  return _impl_.name_.Mutable( GetArenaForAllocation());
10817|    418|}
_ZN6google8protobuf20FieldDescriptorProto31_internal_mutable_default_valueEv:
11086|     54|inline std::string* FieldDescriptorProto::_internal_mutable_default_value() {
11087|     54|  _impl_._has_bits_[0] |= 0x00000008u;
11088|     54|  return _impl_.default_value_.Mutable( GetArenaForAllocation());
11089|     54|}
_ZN6google8protobuf20OneofDescriptorProto22_internal_mutable_nameEv:
11357|      8|inline std::string* OneofDescriptorProto::_internal_mutable_name() {
11358|      8|  _impl_._has_bits_[0] |= 0x00000001u;
11359|      8|  return _impl_.name_.Mutable( GetArenaForAllocation());
11360|      8|}
_ZN6google8protobuf19EnumDescriptorProto22_internal_mutable_nameEv:
11567|     22|inline std::string* EnumDescriptorProto::_internal_mutable_name() {
11568|     22|  _impl_._has_bits_[0] |= 0x00000001u;
11569|     22|  return _impl_.name_.Mutable( GetArenaForAllocation());
11570|     22|}
_ZN6google8protobuf24EnumValueDescriptorProto22_internal_mutable_nameEv:
11912|    104|inline std::string* EnumValueDescriptorProto::_internal_mutable_name() {
11913|    104|  _impl_._has_bits_[0] |= 0x00000001u;
11914|    104|  return _impl_.name_.Mutable( GetArenaForAllocation());
11915|    104|}
_ZN6google8protobuf11FileOptions30_internal_mutable_java_packageEv:
12633|     10|inline std::string* FileOptions::_internal_mutable_java_package() {
12634|     10|  _impl_._has_bits_[0] |= 0x00000001u;
12635|     10|  return _impl_.java_package_.Mutable( GetArenaForAllocation());
12636|     10|}
_ZN6google8protobuf11FileOptions38_internal_mutable_java_outer_classnameEv:
12698|     10|inline std::string* FileOptions::_internal_mutable_java_outer_classname() {
12699|     10|  _impl_._has_bits_[0] |= 0x00000002u;
12700|     10|  return _impl_.java_outer_classname_.Mutable( GetArenaForAllocation());
12701|     10|}
_ZN6google8protobuf11FileOptions26_internal_set_optimize_forENS0_24FileOptions_OptimizeModeE:
12824|      2|inline void FileOptions::_internal_set_optimize_for(::PROTOBUF_NAMESPACE_ID::FileOptions_OptimizeMode value) {
12825|      2|  assert(::PROTOBUF_NAMESPACE_ID::FileOptions_OptimizeMode_IsValid(value));
12826|      2|  _impl_._has_bits_[0] |= 0x00040000u;
12827|      2|  _impl_.optimize_for_ = value;
12828|      2|}
_ZN6google8protobuf11FileOptions28_internal_mutable_go_packageEv:
12864|     10|inline std::string* FileOptions::_internal_mutable_go_package() {
12865|     10|  _impl_._has_bits_[0] |= 0x00000004u;
12866|     10|  return _impl_.go_package_.Mutable( GetArenaForAllocation());
12867|     10|}
_ZN6google8protobuf11FileOptions35_internal_mutable_objc_class_prefixEv:
13079|      8|inline std::string* FileOptions::_internal_mutable_objc_class_prefix() {
13080|      8|  _impl_._has_bits_[0] |= 0x00000008u;
13081|      8|  return _impl_.objc_class_prefix_.Mutable( GetArenaForAllocation());
13082|      8|}
_ZN6google8protobuf11FileOptions34_internal_mutable_csharp_namespaceEv:
13144|      8|inline std::string* FileOptions::_internal_mutable_csharp_namespace() {
13145|      8|  _impl_._has_bits_[0] |= 0x00000010u;
13146|      8|  return _impl_.csharp_namespace_.Mutable( GetArenaForAllocation());
13147|      8|}
_ZNK6google8protobuf11FileOptions30_internal_uninterpreted_optionEv:
13540|     10|FileOptions::_internal_uninterpreted_option() const {
13541|     10|  return _impl_.uninterpreted_option_;
13542|     10|}
_ZN6google8protobuf11FileOptions38_internal_mutable_uninterpreted_optionEv:
13544|     10|FileOptions::_internal_mutable_uninterpreted_option() {
13545|     10|  return &_impl_.uninterpreted_option_;
13546|     10|}
_ZNK6google8protobuf14MessageOptions30_internal_uninterpreted_optionEv:
13717|      6|MessageOptions::_internal_uninterpreted_option() const {
13718|      6|  return _impl_.uninterpreted_option_;
13719|      6|}
_ZN6google8protobuf14MessageOptions38_internal_mutable_uninterpreted_optionEv:
13721|      6|MessageOptions::_internal_mutable_uninterpreted_option() {
13722|      6|  return &_impl_.uninterpreted_option_;
13723|      6|}
_ZN6google8protobuf12FieldOptions23_internal_set_retentionENS0_28FieldOptions_OptionRetentionE:
13951|      2|inline void FieldOptions::_internal_set_retention(::PROTOBUF_NAMESPACE_ID::FieldOptions_OptionRetention value) {
13952|      2|  assert(::PROTOBUF_NAMESPACE_ID::FieldOptions_OptionRetention_IsValid(value));
13953|      2|  _impl_._has_bits_[0] |= 0x00000100u;
13954|      2|  _impl_.retention_ = value;
13955|      2|}
_ZN6google8protobuf12FieldOptions25_internal_mutable_targetsEv:
14024|     22|inline ::PROTOBUF_NAMESPACE_ID::RepeatedField<int>* FieldOptions::_internal_mutable_targets() {
14025|     22|  return &_impl_.targets_;
14026|     22|}
_ZNK6google8protobuf12FieldOptions30_internal_uninterpreted_optionEv:
14068|     22|FieldOptions::_internal_uninterpreted_option() const {
14069|     22|  return _impl_.uninterpreted_option_;
14070|     22|}
_ZN6google8protobuf12FieldOptions38_internal_mutable_uninterpreted_optionEv:
14072|     22|FieldOptions::_internal_mutable_uninterpreted_option() {
14073|     22|  return &_impl_.uninterpreted_option_;
14074|     22|}

_ZN6google8protobuf18DescriptorDatabaseC2Ev:
   75|      2|  inline DescriptorDatabase() {}

_ZN6google8protobuf8internal12MapFieldBaseC2Ev:
  341|  5.00k|  constexpr MapFieldBase() {}
_ZN6google8protobuf8internal12MapFieldBaseC2EPNS0_5ArenaE:
  342|  10.0k|  explicit MapFieldBase(Arena* arena) : payload_{ToTaggedPtr(arena)} {}
_ZNK6google8protobuf8internal12MapFieldBase11ConstAccessEv:
  432|  12.5k|  void ConstAccess() const {}
_ZN6google8protobuf8internal12MapFieldBase13MutableAccessEv:
  433|  7.50k|  void MutableAccess() {}
_ZN6google8protobuf8internal12MapFieldBase17ReflectionPayloadC2EPNS0_5ArenaE:
  444|  7.50k|    explicit ReflectionPayload(Arena* arena) : repeated_field(arena) {}
_ZNK6google8protobuf8internal12MapFieldBase13maybe_payloadEv:
  459|  35.0k|  ReflectionPayload* maybe_payload() const {
  460|  35.0k|    auto p = payload_.load(std::memory_order_acquire);
  461|  35.0k|    return IsPayload(p) ? ToPayload(p) : nullptr;
  ------------------
  |  Branch (461:12): [True: 10.0k, False: 25.0k]
  ------------------
  462|  35.0k|  }
_ZNK6google8protobuf8internal12MapFieldBase7payloadEv:
  464|  7.50k|  ReflectionPayload& payload() const {
  465|  7.50k|    auto* p = maybe_payload();
  466|  7.50k|    return p != nullptr ? *p : PayloadSlow();
  ------------------
  |  Branch (466:12): [True: 0, False: 7.50k]
  ------------------
  467|  7.50k|  }
_ZNK6google8protobuf8internal12MapFieldBase5stateEv:
  470|  12.5k|  State state() const {
  471|  12.5k|    auto* p = maybe_payload();
  472|  12.5k|    return p != nullptr ? p->state.load(std::memory_order_acquire)
  ------------------
  |  Branch (472:12): [True: 2.50k, False: 10.0k]
  ------------------
  473|       |                        // The default
  474|  12.5k|                        : STATE_MODIFIED_MAP;
  475|  12.5k|  }
_ZN6google8protobuf8internal12MapFieldBase9ToPayloadENS2_9TaggedPtrE:
  508|  17.5k|  static ReflectionPayload* ToPayload(TaggedPtr p) {
  509|  17.5k|    ABSL_DCHECK(IsPayload(p));
  ------------------
  |  |   43|  17.5k|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|  17.5k|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|  35.0k|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  163|  17.5k|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|  35.0k|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|  35.0k|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  510|  17.5k|    auto* res = reinterpret_cast<ReflectionPayload*>(static_cast<uintptr_t>(p) -
  511|  17.5k|                                                     kHasPayloadBit);
  512|  17.5k|    PROTOBUF_ASSUME(res != nullptr);
  ------------------
  |  | 1082|  17.5k|#define PROTOBUF_ASSUME(pred) __builtin_assume(pred)
  ------------------
  513|  17.5k|    return res;
  514|  17.5k|  }
_ZN6google8protobuf8internal12MapFieldBase7ToArenaENS2_9TaggedPtrE:
  515|  7.50k|  static Arena* ToArena(TaggedPtr p) {
  516|  7.50k|    ABSL_DCHECK(!IsPayload(p));
  ------------------
  |  |   43|  7.50k|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|  7.50k|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|  15.0k|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  163|  7.50k|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|  15.0k|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|  15.0k|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  517|  7.50k|    return reinterpret_cast<Arena*>(p);
  518|  7.50k|  }
_ZN6google8protobuf8internal12MapFieldBase11ToTaggedPtrEPNS2_17ReflectionPayloadE:
  519|  7.50k|  static TaggedPtr ToTaggedPtr(ReflectionPayload* p) {
  520|  7.50k|    return static_cast<TaggedPtr>(reinterpret_cast<uintptr_t>(p) +
  521|  7.50k|                                  kHasPayloadBit);
  522|  7.50k|  }
_ZN6google8protobuf8internal12MapFieldBase11ToTaggedPtrEPNS0_5ArenaE:
  523|  10.0k|  static TaggedPtr ToTaggedPtr(Arena* p) {
  524|  10.0k|    return static_cast<TaggedPtr>(reinterpret_cast<uintptr_t>(p));
  525|  10.0k|  }
_ZN6google8protobuf8internal12MapFieldBase9IsPayloadENS2_9TaggedPtrE:
  526|  42.5k|  static bool IsPayload(TaggedPtr p) {
  527|  42.5k|    return static_cast<uintptr_t>(p) & kHasPayloadBit;
  528|  42.5k|  }
_ZN6google8protobuf8internal8MapFieldINS_3api4expr8v1alpha134SourceInfo_PositionsEntry_DoNotUseEliLNS1_14WireFormatLite9FieldTypeE3ELS8_5EE10MutableMapEv:
  626|  2.50k|  Map<Key, T>* MutableMap() final {
  627|  2.50k|    MapFieldBase::SyncMapWithRepeatedField();
  628|  2.50k|    Map<Key, T>* result = impl_.MutableMap();
  629|  2.50k|    MapFieldBase::SetMapDirty();
  630|  2.50k|    return result;
  631|  2.50k|  }
_ZN6google8protobuf8internal8MapFieldINS_3api4expr8v1alpha134SourceInfo_PositionsEntry_DoNotUseEliLNS1_14WireFormatLite9FieldTypeE3ELS8_5EEC2Ev:
  604|  2.50k|  constexpr MapField() : impl_() {}
_ZN6google8protobuf8internal23TypeDefinedMapFieldBaseIliEC2Ev:
  538|  2.50k|  constexpr TypeDefinedMapFieldBase() {}
_ZN6google8protobuf8internal8MapFieldINS_3api4expr8v1alpha135SourceInfo_MacroCallsEntry_DoNotUseElNS5_4ExprELNS1_14WireFormatLite9FieldTypeE3ELS9_11EEC2Ev:
  604|  2.50k|  constexpr MapField() : impl_() {}
_ZN6google8protobuf8internal23TypeDefinedMapFieldBaseIlNS_3api4expr8v1alpha14ExprEEC2Ev:
  538|  2.50k|  constexpr TypeDefinedMapFieldBase() {}
_ZN6google8protobuf8internal8MapFieldINS_3api4expr8v1alpha134SourceInfo_PositionsEntry_DoNotUseEliLNS1_14WireFormatLite9FieldTypeE3ELS8_5EEC2ENS1_16ArenaInitializedEPNS0_5ArenaE:
  611|  5.00k|  MapField(ArenaInitialized, Arena* arena) : MapField(arena) {}
_ZN6google8protobuf8internal8MapFieldINS_3api4expr8v1alpha134SourceInfo_PositionsEntry_DoNotUseEliLNS1_14WireFormatLite9FieldTypeE3ELS8_5EEC2EPNS0_5ArenaE:
  610|  5.00k|      : TypeDefinedMapFieldBase<Key, T>(arena), impl_(arena) {}
_ZN6google8protobuf8internal23TypeDefinedMapFieldBaseIliEC2EPNS0_5ArenaE:
  542|  5.00k|  explicit TypeDefinedMapFieldBase(Arena* arena) : MapFieldBase(arena) {}
_ZN6google8protobuf8internal8MapFieldINS_3api4expr8v1alpha135SourceInfo_MacroCallsEntry_DoNotUseElNS5_4ExprELNS1_14WireFormatLite9FieldTypeE3ELS9_11EEC2ENS1_16ArenaInitializedEPNS0_5ArenaE:
  611|  5.00k|  MapField(ArenaInitialized, Arena* arena) : MapField(arena) {}
_ZN6google8protobuf8internal8MapFieldINS_3api4expr8v1alpha135SourceInfo_MacroCallsEntry_DoNotUseElNS5_4ExprELNS1_14WireFormatLite9FieldTypeE3ELS9_11EEC2EPNS0_5ArenaE:
  610|  5.00k|      : TypeDefinedMapFieldBase<Key, T>(arena), impl_(arena) {}
_ZN6google8protobuf8internal23TypeDefinedMapFieldBaseIlNS_3api4expr8v1alpha14ExprEEC2EPNS0_5ArenaE:
  542|  5.00k|  explicit TypeDefinedMapFieldBase(Arena* arena) : MapFieldBase(arena) {}
_ZN6google8protobuf8internal8MapFieldINS_3api4expr8v1alpha135SourceInfo_MacroCallsEntry_DoNotUseElNS5_4ExprELNS1_14WireFormatLite9FieldTypeE3ELS9_11EED2Ev:
  607|  7.50k|  ~MapField() {}
_ZN6google8protobuf8internal8MapFieldINS_3api4expr8v1alpha134SourceInfo_PositionsEntry_DoNotUseEliLNS1_14WireFormatLite9FieldTypeE3ELS8_5EED2Ev:
  607|  7.50k|  ~MapField() {}

_ZN6google8protobuf8internal8MapFieldINS_3api4expr8v1alpha134SourceInfo_PositionsEntry_DoNotUseEliLNS1_14WireFormatLite9FieldTypeE3ELS8_5EE9MergeFromERKNS1_12MapFieldBaseE:
  268|  2.50k|    const MapFieldBase& other) {
  269|  2.50k|  MapFieldBase::SyncMapWithRepeatedField();
  270|  2.50k|  const MapField& other_field = static_cast<const MapField&>(other);
  271|  2.50k|  other_field.SyncMapWithRepeatedField();
  272|  2.50k|  impl_.MergeFrom(other_field.impl_);
  273|  2.50k|  MapFieldBase::SetMapDirty();
  274|  2.50k|}
_ZN6google8protobuf8internal8MapFieldINS_3api4expr8v1alpha135SourceInfo_MacroCallsEntry_DoNotUseElNS5_4ExprELNS1_14WireFormatLite9FieldTypeE3ELS9_11EE9MergeFromERKNS1_12MapFieldBaseE:
  268|  2.50k|    const MapFieldBase& other) {
  269|  2.50k|  MapFieldBase::SyncMapWithRepeatedField();
  270|  2.50k|  const MapField& other_field = static_cast<const MapField&>(other);
  271|  2.50k|  other_field.SyncMapWithRepeatedField();
  272|  2.50k|  impl_.MergeFrom(other_field.impl_);
  273|  2.50k|  MapFieldBase::SetMapDirty();
  274|  2.50k|}
_ZN6google8protobuf8internal8MapFieldINS_3api4expr8v1alpha134SourceInfo_PositionsEntry_DoNotUseEliLNS1_14WireFormatLite9FieldTypeE3ELS8_5EE12InternalSwapEPS9_:
  298|  2.50k|    MapField* other) {
  299|  2.50k|  MapFieldBase::InternalSwap(other);
  300|  2.50k|  impl_.InternalSwap(&other->impl_);
  301|  2.50k|}
_ZN6google8protobuf8internal8MapFieldINS_3api4expr8v1alpha135SourceInfo_MacroCallsEntry_DoNotUseElNS5_4ExprELNS1_14WireFormatLite9FieldTypeE3ELS9_11EE12InternalSwapEPSA_:
  298|  2.50k|    MapField* other) {
  299|  2.50k|  MapFieldBase::InternalSwap(other);
  300|  2.50k|  impl_.InternalSwap(&other->impl_);
  301|  2.50k|}

_ZN6google8protobuf7MessageC2Ev:
  252|  3.05M|  constexpr Message() {}
_ZN6google8protobuf7MessageC2EPNS0_5ArenaE:
  416|   470M|  inline explicit Message(Arena* arena) : MessageLite(arena) {}
_ZN6google8protobuf14MessageFactoryC2Ev:
 1342|      2|  inline MessageFactory() {}

_ZN6google8protobuf2io16CodedInputStream24GetDefaultRecursionLimitEv:
  406|     10|  static int GetDefaultRecursionLimit() { return default_recursion_limit_; }

_ZN19cel_parser_internal8CelLexerC2EPN6antlr410CharStreamE:
  248|  9.21k|CelLexer::CelLexer(CharStream *input) : Lexer(input) {
  249|  9.21k|  CelLexer::initialize();
  250|  9.21k|  _interpreter = new atn::LexerATNSimulator(this, *cellexerLexerStaticData->atn, cellexerLexerStaticData->decisionToDFA, cellexerLexerStaticData->sharedContextCache);
  251|  9.21k|}
_ZN19cel_parser_internal8CelLexerD2Ev:
  253|  9.21k|CelLexer::~CelLexer() {
  254|  9.21k|  delete _interpreter;
  255|  9.21k|}
_ZN19cel_parser_internal8CelLexer10initializeEv:
  288|  9.21k|void CelLexer::initialize() {
  289|  9.21k|  std::call_once(cellexerLexerOnceFlag, cellexerLexerInitialize);
  290|  9.21k|}
CelLexer.cpp:_ZN12_GLOBAL__N_123cellexerLexerInitializeEv:
   48|      1|void cellexerLexerInitialize() {
   49|      1|  assert(cellexerLexerStaticData == nullptr);
   50|      1|  auto staticData = std::make_unique<CelLexerStaticData>(
   51|      1|    std::vector<std::string>{
   52|      1|      "T__0", "EQUALS", "NOT_EQUALS", "LESS", "LESS_EQUALS", "GREATER_EQUALS", 
   53|      1|      "GREATER", "LOGICAL_AND", "LOGICAL_OR", "LBRACKET", "RPRACKET", "LBRACE", 
   54|      1|      "RBRACE", "LPAREN", "RPAREN", "DOT", "COMMA", "MINUS", "EXCLAM", "QUESTIONMARK", 
   55|      1|      "COLON", "PLUS", "STAR", "SLASH", "PERCENT", "CEL_TRUE", "CEL_FALSE", 
   56|      1|      "NUL", "BACKSLASH", "LETTER", "DIGIT", "EXPONENT", "HEXDIGIT", "RAW", 
   57|      1|      "ESC_SEQ", "ESC_CHAR_SEQ", "ESC_OCT_SEQ", "ESC_BYTE_SEQ", "ESC_UNI_SEQ", 
   58|      1|      "WHITESPACE", "COMMENT", "NUM_FLOAT", "NUM_INT", "NUM_UINT", "STRING", 
   59|      1|      "BYTES", "IDENTIFIER"
   60|      1|    },
   61|      1|    std::vector<std::string>{
   62|      1|      "DEFAULT_TOKEN_CHANNEL", "HIDDEN"
   63|      1|    },
   64|      1|    std::vector<std::string>{
   65|      1|      "DEFAULT_MODE"
   66|      1|    },
   67|      1|    std::vector<std::string>{
   68|      1|      "", "'in'", "'=='", "'!='", "'<'", "'<='", "'>='", "'>'", "'&&'", 
   69|      1|      "'||'", "'['", "']'", "'{'", "'}'", "'('", "')'", "'.'", "','", "'-'", 
   70|      1|      "'!'", "'\\u003F'", "':'", "'+'", "'*'", "'/'", "'%'", "'true'", "'false'", 
   71|      1|      "'null'"
   72|      1|    },
   73|      1|    std::vector<std::string>{
   74|      1|      "", "", "EQUALS", "NOT_EQUALS", "LESS", "LESS_EQUALS", "GREATER_EQUALS", 
   75|      1|      "GREATER", "LOGICAL_AND", "LOGICAL_OR", "LBRACKET", "RPRACKET", "LBRACE", 
   76|      1|      "RBRACE", "LPAREN", "RPAREN", "DOT", "COMMA", "MINUS", "EXCLAM", "QUESTIONMARK", 
   77|      1|      "COLON", "PLUS", "STAR", "SLASH", "PERCENT", "CEL_TRUE", "CEL_FALSE", 
   78|      1|      "NUL", "WHITESPACE", "COMMENT", "NUM_FLOAT", "NUM_INT", "NUM_UINT", 
   79|      1|      "STRING", "BYTES", "IDENTIFIER"
   80|      1|    }
   81|      1|  );
   82|      1|  static const int32_t serializedATNSegment[] = {
   83|      1|  	4,0,36,423,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,
   84|      1|  	6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14,
   85|      1|  	7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21,
   86|      1|  	7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,28,
   87|      1|  	7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,32,2,33,7,33,2,34,7,34,2,35,
   88|      1|  	7,35,2,36,7,36,2,37,7,37,2,38,7,38,2,39,7,39,2,40,7,40,2,41,7,41,2,42,
   89|      1|  	7,42,2,43,7,43,2,44,7,44,2,45,7,45,2,46,7,46,1,0,1,0,1,0,1,1,1,1,1,1,
   90|      1|  	1,2,1,2,1,2,1,3,1,3,1,4,1,4,1,4,1,5,1,5,1,5,1,6,1,6,1,7,1,7,1,7,1,8,1,
   91|      1|  	8,1,8,1,9,1,9,1,10,1,10,1,11,1,11,1,12,1,12,1,13,1,13,1,14,1,14,1,15,
   92|      1|  	1,15,1,16,1,16,1,17,1,17,1,18,1,18,1,19,1,19,1,20,1,20,1,21,1,21,1,22,
   93|      1|  	1,22,1,23,1,23,1,24,1,24,1,25,1,25,1,25,1,25,1,25,1,26,1,26,1,26,1,26,
   94|      1|  	1,26,1,26,1,27,1,27,1,27,1,27,1,27,1,28,1,28,1,29,1,29,1,30,1,30,1,31,
   95|      1|  	1,31,3,31,177,8,31,1,31,4,31,180,8,31,11,31,12,31,181,1,32,1,32,1,33,
   96|      1|  	1,33,1,34,1,34,1,34,1,34,3,34,192,8,34,1,35,1,35,1,35,1,36,1,36,1,36,
   97|      1|  	1,36,1,36,1,37,1,37,1,37,1,37,1,37,1,38,1,38,1,38,1,38,1,38,1,38,1,38,
   98|      1|  	1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,1,38,3,38,225,8,38,
   99|      1|  	1,39,4,39,228,8,39,11,39,12,39,229,1,39,1,39,1,40,1,40,1,40,1,40,5,40,
  100|      1|  	238,8,40,10,40,12,40,241,9,40,1,40,1,40,1,41,4,41,246,8,41,11,41,12,41,
  101|      1|  	247,1,41,1,41,4,41,252,8,41,11,41,12,41,253,1,41,3,41,257,8,41,1,41,4,
  102|      1|  	41,260,8,41,11,41,12,41,261,1,41,1,41,1,41,1,41,4,41,268,8,41,11,41,12,
  103|      1|  	41,269,1,41,3,41,273,8,41,3,41,275,8,41,1,42,4,42,278,8,42,11,42,12,42,
  104|      1|  	279,1,42,1,42,1,42,1,42,4,42,286,8,42,11,42,12,42,287,3,42,290,8,42,1,
  105|      1|  	43,4,43,293,8,43,11,43,12,43,294,1,43,1,43,1,43,1,43,1,43,1,43,4,43,303,
  106|      1|  	8,43,11,43,12,43,304,1,43,1,43,3,43,309,8,43,1,44,1,44,1,44,5,44,314,
  107|      1|  	8,44,10,44,12,44,317,9,44,1,44,1,44,1,44,1,44,5,44,323,8,44,10,44,12,
  108|      1|  	44,326,9,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,5,44,335,8,44,10,44,12,
  109|      1|  	44,338,9,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,5,44,349,8,44,
  110|      1|  	10,44,12,44,352,9,44,1,44,1,44,1,44,1,44,1,44,1,44,5,44,360,8,44,10,44,
  111|      1|  	12,44,363,9,44,1,44,1,44,1,44,1,44,1,44,5,44,370,8,44,10,44,12,44,373,
  112|      1|  	9,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,5,44,383,8,44,10,44,12,44,
  113|      1|  	386,9,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,44,5,44,398,8,
  114|      1|  	44,10,44,12,44,401,9,44,1,44,1,44,1,44,1,44,3,44,407,8,44,1,45,1,45,1,
  115|      1|  	45,1,46,1,46,3,46,414,8,46,1,46,1,46,1,46,5,46,419,8,46,10,46,12,46,422,
  116|      1|  	9,46,4,336,350,384,399,0,47,1,1,3,2,5,3,7,4,9,5,11,6,13,7,15,8,17,9,19,
  117|      1|  	10,21,11,23,12,25,13,27,14,29,15,31,16,33,17,35,18,37,19,39,20,41,21,
  118|      1|  	43,22,45,23,47,24,49,25,51,26,53,27,55,28,57,0,59,0,61,0,63,0,65,0,67,
  119|      1|  	0,69,0,71,0,73,0,75,0,77,0,79,29,81,30,83,31,85,32,87,33,89,34,91,35,
  120|      1|  	93,36,1,0,16,2,0,65,90,97,122,2,0,69,69,101,101,2,0,43,43,45,45,3,0,48,
  121|      1|  	57,65,70,97,102,2,0,82,82,114,114,10,0,34,34,39,39,63,63,92,92,96,98,
  122|      1|  	102,102,110,110,114,114,116,116,118,118,2,0,88,88,120,120,3,0,9,10,12,
  123|      1|  	13,32,32,1,0,10,10,2,0,85,85,117,117,4,0,10,10,13,13,34,34,92,92,4,0,
  124|      1|  	10,10,13,13,39,39,92,92,1,0,92,92,3,0,10,10,13,13,34,34,3,0,10,10,13,
  125|      1|  	13,39,39,2,0,66,66,98,98,456,0,1,1,0,0,0,0,3,1,0,0,0,0,5,1,0,0,0,0,7,
  126|      1|  	1,0,0,0,0,9,1,0,0,0,0,11,1,0,0,0,0,13,1,0,0,0,0,15,1,0,0,0,0,17,1,0,0,
  127|      1|  	0,0,19,1,0,0,0,0,21,1,0,0,0,0,23,1,0,0,0,0,25,1,0,0,0,0,27,1,0,0,0,0,
  128|      1|  	29,1,0,0,0,0,31,1,0,0,0,0,33,1,0,0,0,0,35,1,0,0,0,0,37,1,0,0,0,0,39,1,
  129|      1|  	0,0,0,0,41,1,0,0,0,0,43,1,0,0,0,0,45,1,0,0,0,0,47,1,0,0,0,0,49,1,0,0,
  130|      1|  	0,0,51,1,0,0,0,0,53,1,0,0,0,0,55,1,0,0,0,0,79,1,0,0,0,0,81,1,0,0,0,0,
  131|      1|  	83,1,0,0,0,0,85,1,0,0,0,0,87,1,0,0,0,0,89,1,0,0,0,0,91,1,0,0,0,0,93,1,
  132|      1|  	0,0,0,1,95,1,0,0,0,3,98,1,0,0,0,5,101,1,0,0,0,7,104,1,0,0,0,9,106,1,0,
  133|      1|  	0,0,11,109,1,0,0,0,13,112,1,0,0,0,15,114,1,0,0,0,17,117,1,0,0,0,19,120,
  134|      1|  	1,0,0,0,21,122,1,0,0,0,23,124,1,0,0,0,25,126,1,0,0,0,27,128,1,0,0,0,29,
  135|      1|  	130,1,0,0,0,31,132,1,0,0,0,33,134,1,0,0,0,35,136,1,0,0,0,37,138,1,0,0,
  136|      1|  	0,39,140,1,0,0,0,41,142,1,0,0,0,43,144,1,0,0,0,45,146,1,0,0,0,47,148,
  137|      1|  	1,0,0,0,49,150,1,0,0,0,51,152,1,0,0,0,53,157,1,0,0,0,55,163,1,0,0,0,57,
  138|      1|  	168,1,0,0,0,59,170,1,0,0,0,61,172,1,0,0,0,63,174,1,0,0,0,65,183,1,0,0,
  139|      1|  	0,67,185,1,0,0,0,69,191,1,0,0,0,71,193,1,0,0,0,73,196,1,0,0,0,75,201,
  140|      1|  	1,0,0,0,77,224,1,0,0,0,79,227,1,0,0,0,81,233,1,0,0,0,83,274,1,0,0,0,85,
  141|      1|  	289,1,0,0,0,87,308,1,0,0,0,89,406,1,0,0,0,91,408,1,0,0,0,93,413,1,0,0,
  142|      1|  	0,95,96,5,105,0,0,96,97,5,110,0,0,97,2,1,0,0,0,98,99,5,61,0,0,99,100,
  143|      1|  	5,61,0,0,100,4,1,0,0,0,101,102,5,33,0,0,102,103,5,61,0,0,103,6,1,0,0,
  144|      1|  	0,104,105,5,60,0,0,105,8,1,0,0,0,106,107,5,60,0,0,107,108,5,61,0,0,108,
  145|      1|  	10,1,0,0,0,109,110,5,62,0,0,110,111,5,61,0,0,111,12,1,0,0,0,112,113,5,
  146|      1|  	62,0,0,113,14,1,0,0,0,114,115,5,38,0,0,115,116,5,38,0,0,116,16,1,0,0,
  147|      1|  	0,117,118,5,124,0,0,118,119,5,124,0,0,119,18,1,0,0,0,120,121,5,91,0,0,
  148|      1|  	121,20,1,0,0,0,122,123,5,93,0,0,123,22,1,0,0,0,124,125,5,123,0,0,125,
  149|      1|  	24,1,0,0,0,126,127,5,125,0,0,127,26,1,0,0,0,128,129,5,40,0,0,129,28,1,
  150|      1|  	0,0,0,130,131,5,41,0,0,131,30,1,0,0,0,132,133,5,46,0,0,133,32,1,0,0,0,
  151|      1|  	134,135,5,44,0,0,135,34,1,0,0,0,136,137,5,45,0,0,137,36,1,0,0,0,138,139,
  152|      1|  	5,33,0,0,139,38,1,0,0,0,140,141,5,63,0,0,141,40,1,0,0,0,142,143,5,58,
  153|      1|  	0,0,143,42,1,0,0,0,144,145,5,43,0,0,145,44,1,0,0,0,146,147,5,42,0,0,147,
  154|      1|  	46,1,0,0,0,148,149,5,47,0,0,149,48,1,0,0,0,150,151,5,37,0,0,151,50,1,
  155|      1|  	0,0,0,152,153,5,116,0,0,153,154,5,114,0,0,154,155,5,117,0,0,155,156,5,
  156|      1|  	101,0,0,156,52,1,0,0,0,157,158,5,102,0,0,158,159,5,97,0,0,159,160,5,108,
  157|      1|  	0,0,160,161,5,115,0,0,161,162,5,101,0,0,162,54,1,0,0,0,163,164,5,110,
  158|      1|  	0,0,164,165,5,117,0,0,165,166,5,108,0,0,166,167,5,108,0,0,167,56,1,0,
  159|      1|  	0,0,168,169,5,92,0,0,169,58,1,0,0,0,170,171,7,0,0,0,171,60,1,0,0,0,172,
  160|      1|  	173,2,48,57,0,173,62,1,0,0,0,174,176,7,1,0,0,175,177,7,2,0,0,176,175,
  161|      1|  	1,0,0,0,176,177,1,0,0,0,177,179,1,0,0,0,178,180,3,61,30,0,179,178,1,0,
  162|      1|  	0,0,180,181,1,0,0,0,181,179,1,0,0,0,181,182,1,0,0,0,182,64,1,0,0,0,183,
  163|      1|  	184,7,3,0,0,184,66,1,0,0,0,185,186,7,4,0,0,186,68,1,0,0,0,187,192,3,71,
  164|      1|  	35,0,188,192,3,75,37,0,189,192,3,77,38,0,190,192,3,73,36,0,191,187,1,
  165|      1|  	0,0,0,191,188,1,0,0,0,191,189,1,0,0,0,191,190,1,0,0,0,192,70,1,0,0,0,
  166|      1|  	193,194,3,57,28,0,194,195,7,5,0,0,195,72,1,0,0,0,196,197,3,57,28,0,197,
  167|      1|  	198,2,48,51,0,198,199,2,48,55,0,199,200,2,48,55,0,200,74,1,0,0,0,201,
  168|      1|  	202,3,57,28,0,202,203,7,6,0,0,203,204,3,65,32,0,204,205,3,65,32,0,205,
  169|      1|  	76,1,0,0,0,206,207,3,57,28,0,207,208,5,117,0,0,208,209,3,65,32,0,209,
  170|      1|  	210,3,65,32,0,210,211,3,65,32,0,211,212,3,65,32,0,212,225,1,0,0,0,213,
  171|      1|  	214,3,57,28,0,214,215,5,85,0,0,215,216,3,65,32,0,216,217,3,65,32,0,217,
  172|      1|  	218,3,65,32,0,218,219,3,65,32,0,219,220,3,65,32,0,220,221,3,65,32,0,221,
  173|      1|  	222,3,65,32,0,222,223,3,65,32,0,223,225,1,0,0,0,224,206,1,0,0,0,224,213,
  174|      1|  	1,0,0,0,225,78,1,0,0,0,226,228,7,7,0,0,227,226,1,0,0,0,228,229,1,0,0,
  175|      1|  	0,229,227,1,0,0,0,229,230,1,0,0,0,230,231,1,0,0,0,231,232,6,39,0,0,232,
  176|      1|  	80,1,0,0,0,233,234,5,47,0,0,234,235,5,47,0,0,235,239,1,0,0,0,236,238,
  177|      1|  	8,8,0,0,237,236,1,0,0,0,238,241,1,0,0,0,239,237,1,0,0,0,239,240,1,0,0,
  178|      1|  	0,240,242,1,0,0,0,241,239,1,0,0,0,242,243,6,40,0,0,243,82,1,0,0,0,244,
  179|      1|  	246,3,61,30,0,245,244,1,0,0,0,246,247,1,0,0,0,247,245,1,0,0,0,247,248,
  180|      1|  	1,0,0,0,248,249,1,0,0,0,249,251,5,46,0,0,250,252,3,61,30,0,251,250,1,
  181|      1|  	0,0,0,252,253,1,0,0,0,253,251,1,0,0,0,253,254,1,0,0,0,254,256,1,0,0,0,
  182|      1|  	255,257,3,63,31,0,256,255,1,0,0,0,256,257,1,0,0,0,257,275,1,0,0,0,258,
  183|      1|  	260,3,61,30,0,259,258,1,0,0,0,260,261,1,0,0,0,261,259,1,0,0,0,261,262,
  184|      1|  	1,0,0,0,262,263,1,0,0,0,263,264,3,63,31,0,264,275,1,0,0,0,265,267,5,46,
  185|      1|  	0,0,266,268,3,61,30,0,267,266,1,0,0,0,268,269,1,0,0,0,269,267,1,0,0,0,
  186|      1|  	269,270,1,0,0,0,270,272,1,0,0,0,271,273,3,63,31,0,272,271,1,0,0,0,272,
  187|      1|  	273,1,0,0,0,273,275,1,0,0,0,274,245,1,0,0,0,274,259,1,0,0,0,274,265,1,
  188|      1|  	0,0,0,275,84,1,0,0,0,276,278,3,61,30,0,277,276,1,0,0,0,278,279,1,0,0,
  189|      1|  	0,279,277,1,0,0,0,279,280,1,0,0,0,280,290,1,0,0,0,281,282,5,48,0,0,282,
  190|      1|  	283,5,120,0,0,283,285,1,0,0,0,284,286,3,65,32,0,285,284,1,0,0,0,286,287,
  191|      1|  	1,0,0,0,287,285,1,0,0,0,287,288,1,0,0,0,288,290,1,0,0,0,289,277,1,0,0,
  192|      1|  	0,289,281,1,0,0,0,290,86,1,0,0,0,291,293,3,61,30,0,292,291,1,0,0,0,293,
  193|      1|  	294,1,0,0,0,294,292,1,0,0,0,294,295,1,0,0,0,295,296,1,0,0,0,296,297,7,
  194|      1|  	9,0,0,297,309,1,0,0,0,298,299,5,48,0,0,299,300,5,120,0,0,300,302,1,0,
  195|      1|  	0,0,301,303,3,65,32,0,302,301,1,0,0,0,303,304,1,0,0,0,304,302,1,0,0,0,
  196|      1|  	304,305,1,0,0,0,305,306,1,0,0,0,306,307,7,9,0,0,307,309,1,0,0,0,308,292,
  197|      1|  	1,0,0,0,308,298,1,0,0,0,309,88,1,0,0,0,310,315,5,34,0,0,311,314,3,69,
  198|      1|  	34,0,312,314,8,10,0,0,313,311,1,0,0,0,313,312,1,0,0,0,314,317,1,0,0,0,
  199|      1|  	315,313,1,0,0,0,315,316,1,0,0,0,316,318,1,0,0,0,317,315,1,0,0,0,318,407,
  200|      1|  	5,34,0,0,319,324,5,39,0,0,320,323,3,69,34,0,321,323,8,11,0,0,322,320,
  201|      1|  	1,0,0,0,322,321,1,0,0,0,323,326,1,0,0,0,324,322,1,0,0,0,324,325,1,0,0,
  202|      1|  	0,325,327,1,0,0,0,326,324,1,0,0,0,327,407,5,39,0,0,328,329,5,34,0,0,329,
  203|      1|  	330,5,34,0,0,330,331,5,34,0,0,331,336,1,0,0,0,332,335,3,69,34,0,333,335,
  204|      1|  	8,12,0,0,334,332,1,0,0,0,334,333,1,0,0,0,335,338,1,0,0,0,336,337,1,0,
  205|      1|  	0,0,336,334,1,0,0,0,337,339,1,0,0,0,338,336,1,0,0,0,339,340,5,34,0,0,
  206|      1|  	340,341,5,34,0,0,341,407,5,34,0,0,342,343,5,39,0,0,343,344,5,39,0,0,344,
  207|      1|  	345,5,39,0,0,345,350,1,0,0,0,346,349,3,69,34,0,347,349,8,12,0,0,348,346,
  208|      1|  	1,0,0,0,348,347,1,0,0,0,349,352,1,0,0,0,350,351,1,0,0,0,350,348,1,0,0,
  209|      1|  	0,351,353,1,0,0,0,352,350,1,0,0,0,353,354,5,39,0,0,354,355,5,39,0,0,355,
  210|      1|  	407,5,39,0,0,356,357,3,67,33,0,357,361,5,34,0,0,358,360,8,13,0,0,359,
  211|      1|  	358,1,0,0,0,360,363,1,0,0,0,361,359,1,0,0,0,361,362,1,0,0,0,362,364,1,
  212|      1|  	0,0,0,363,361,1,0,0,0,364,365,5,34,0,0,365,407,1,0,0,0,366,367,3,67,33,
  213|      1|  	0,367,371,5,39,0,0,368,370,8,14,0,0,369,368,1,0,0,0,370,373,1,0,0,0,371,
  214|      1|  	369,1,0,0,0,371,372,1,0,0,0,372,374,1,0,0,0,373,371,1,0,0,0,374,375,5,
  215|      1|  	39,0,0,375,407,1,0,0,0,376,377,3,67,33,0,377,378,5,34,0,0,378,379,5,34,
  216|      1|  	0,0,379,380,5,34,0,0,380,384,1,0,0,0,381,383,9,0,0,0,382,381,1,0,0,0,
  217|      1|  	383,386,1,0,0,0,384,385,1,0,0,0,384,382,1,0,0,0,385,387,1,0,0,0,386,384,
  218|      1|  	1,0,0,0,387,388,5,34,0,0,388,389,5,34,0,0,389,390,5,34,0,0,390,407,1,
  219|      1|  	0,0,0,391,392,3,67,33,0,392,393,5,39,0,0,393,394,5,39,0,0,394,395,5,39,
  220|      1|  	0,0,395,399,1,0,0,0,396,398,9,0,0,0,397,396,1,0,0,0,398,401,1,0,0,0,399,
  221|      1|  	400,1,0,0,0,399,397,1,0,0,0,400,402,1,0,0,0,401,399,1,0,0,0,402,403,5,
  222|      1|  	39,0,0,403,404,5,39,0,0,404,405,5,39,0,0,405,407,1,0,0,0,406,310,1,0,
  223|      1|  	0,0,406,319,1,0,0,0,406,328,1,0,0,0,406,342,1,0,0,0,406,356,1,0,0,0,406,
  224|      1|  	366,1,0,0,0,406,376,1,0,0,0,406,391,1,0,0,0,407,90,1,0,0,0,408,409,7,
  225|      1|  	15,0,0,409,410,3,89,44,0,410,92,1,0,0,0,411,414,3,59,29,0,412,414,5,95,
  226|      1|  	0,0,413,411,1,0,0,0,413,412,1,0,0,0,414,420,1,0,0,0,415,419,3,59,29,0,
  227|      1|  	416,419,3,61,30,0,417,419,5,95,0,0,418,415,1,0,0,0,418,416,1,0,0,0,418,
  228|      1|  	417,1,0,0,0,419,422,1,0,0,0,420,418,1,0,0,0,420,421,1,0,0,0,421,94,1,
  229|      1|  	0,0,0,422,420,1,0,0,0,36,0,176,181,191,224,229,239,247,253,256,261,269,
  230|      1|  	272,274,279,287,289,294,304,308,313,315,322,324,334,336,348,350,361,371,
  231|      1|  	384,399,406,413,418,420,1,0,1,0
  232|      1|  };
  233|      1|  staticData->serializedATN = antlr4::atn::SerializedATNView(serializedATNSegment, sizeof(serializedATNSegment) / sizeof(serializedATNSegment[0]));
  234|       |
  235|      1|  antlr4::atn::ATNDeserializer deserializer;
  236|      1|  staticData->atn = deserializer.deserialize(staticData->serializedATN);
  237|       |
  238|      1|  const size_t count = staticData->atn->getNumberOfDecisions();
  239|      1|  staticData->decisionToDFA.reserve(count);
  240|     37|  for (size_t i = 0; i < count; i++) { 
  ------------------
  |  Branch (240:22): [True: 36, False: 1]
  ------------------
  241|     36|    staticData->decisionToDFA.emplace_back(staticData->atn->getDecisionState(i), i);
  242|     36|  }
  243|      1|  cellexerLexerStaticData = staticData.release();
  244|      1|}
CelLexer.cpp:_ZN12_GLOBAL__N_118CelLexerStaticDataC2ENSt3__16vectorINS1_12basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS6_IS8_EEEESA_SA_SA_SA_:
   26|      1|        vocabulary(this->literalNames, this->symbolicNames) {}

_ZN19cel_parser_internal9CelParserC2EPN6antlr411TokenStreamE:
  153|  9.21k|CelParser::CelParser(TokenStream *input) : CelParser(input, antlr4::atn::ParserATNSimulatorOptions()) {}
_ZN19cel_parser_internal9CelParserC2EPN6antlr411TokenStreamERKNS1_3atn25ParserATNSimulatorOptionsE:
  155|  9.21k|CelParser::CelParser(TokenStream *input, const antlr4::atn::ParserATNSimulatorOptions &options) : Parser(input) {
  156|  9.21k|  CelParser::initialize();
  157|  9.21k|  _interpreter = new atn::ParserATNSimulator(this, *celParserStaticData->atn, celParserStaticData->decisionToDFA, celParserStaticData->sharedContextCache, options);
  158|  9.21k|}
_ZN19cel_parser_internal9CelParserD2Ev:
  160|  9.21k|CelParser::~CelParser() {
  161|  9.21k|  delete _interpreter;
  162|  9.21k|}
_ZNK19cel_parser_internal9CelParser6getATNEv:
  164|  32.2M|const atn::ATN& CelParser::getATN() const {
  165|  32.2M|  return *celParserStaticData->atn;
  166|  32.2M|}
_ZNK19cel_parser_internal9CelParser13getVocabularyEv:
  176|  55.6k|const dfa::Vocabulary& CelParser::getVocabulary() const {
  177|  55.6k|  return celParserStaticData->vocabulary;
  178|  55.6k|}
_ZN19cel_parser_internal9CelParser12StartContextC2EPN6antlr417ParserRuleContextEm:
  188|  9.21k|  : ParserRuleContext(parent, invokingState) {
  189|  9.21k|}
_ZN19cel_parser_internal9CelParser12StartContext4exprEv:
  195|  8.59k|CelParser::ExprContext* CelParser::StartContext::expr() {
  196|  8.59k|  return getRuleContext<CelParser::ExprContext>(0);
  197|  8.59k|}
_ZNK19cel_parser_internal9CelParser12StartContext12getRuleIndexEv:
  200|  18.4k|size_t CelParser::StartContext::getRuleIndex() const {
  201|  18.4k|  return CelParser::RuleStart;
  202|  18.4k|}
_ZN19cel_parser_internal9CelParser5startEv:
  212|  9.21k|CelParser::StartContext* CelParser::start() {
  213|  9.21k|  StartContext *_localctx = _tracker.createInstance<StartContext>(_ctx, getState());
  214|  9.21k|  enterRule(_localctx, 0, CelParser::RuleStart);
  215|       |
  216|       |#if __cplusplus > 201703L
  217|       |  auto onExit = finally([=, this] {
  218|       |#else
  219|  9.21k|  auto onExit = finally([=] {
  220|  9.21k|#endif
  221|  9.21k|    exitRule();
  222|  9.21k|  });
  223|  9.21k|  try {
  224|  9.21k|    enterOuterAlt(_localctx, 1);
  225|  9.21k|    setState(26);
  226|  9.21k|    antlrcpp::downCast<StartContext *>(_localctx)->e = expr();
  227|  9.21k|    setState(27);
  228|  9.21k|    match(CelParser::EOF);
  229|       |   
  230|  9.21k|  }
  231|  9.21k|  catch (RecognitionException &e) {
  232|    472|    _errHandler->reportError(this, e);
  233|    472|    _localctx->exception = std::current_exception();
  234|    472|    _errHandler->recover(this, _localctx->exception);
  235|    472|  }
  236|       |
  237|  9.21k|  return _localctx;
  238|  9.21k|}
_ZN19cel_parser_internal9CelParser11ExprContextC2EPN6antlr417ParserRuleContextEm:
  243|  2.39M|  : ParserRuleContext(parent, invokingState) {
  244|  2.39M|}
_ZNK19cel_parser_internal9CelParser11ExprContext12getRuleIndexEv:
  267|  4.78M|size_t CelParser::ExprContext::getRuleIndex() const {
  268|  4.78M|  return CelParser::RuleExpr;
  269|  4.78M|}
_ZN19cel_parser_internal9CelParser4exprEv:
  279|  2.39M|CelParser::ExprContext* CelParser::expr() {
  280|  2.39M|  ExprContext *_localctx = _tracker.createInstance<ExprContext>(_ctx, getState());
  281|  2.39M|  enterRule(_localctx, 2, CelParser::RuleExpr);
  282|  2.39M|  size_t _la = 0;
  283|       |
  284|       |#if __cplusplus > 201703L
  285|       |  auto onExit = finally([=, this] {
  286|       |#else
  287|  2.39M|  auto onExit = finally([=] {
  288|  2.39M|#endif
  289|  2.39M|    exitRule();
  290|  2.39M|  });
  291|  2.39M|  try {
  292|  2.39M|    enterOuterAlt(_localctx, 1);
  293|  2.39M|    setState(29);
  294|  2.39M|    antlrcpp::downCast<ExprContext *>(_localctx)->e = conditionalOr();
  295|  2.39M|    setState(35);
  296|  2.39M|    _errHandler->sync(this);
  297|       |
  298|  2.39M|    _la = _input->LA(1);
  299|  2.39M|    if (_la == CelParser::QUESTIONMARK) {
  ------------------
  |  Branch (299:9): [True: 3.29k, False: 2.39M]
  ------------------
  300|  3.29k|      setState(30);
  301|  3.29k|      antlrcpp::downCast<ExprContext *>(_localctx)->op = match(CelParser::QUESTIONMARK);
  302|  3.29k|      setState(31);
  303|  3.29k|      antlrcpp::downCast<ExprContext *>(_localctx)->e1 = conditionalOr();
  304|  3.29k|      setState(32);
  305|  3.29k|      match(CelParser::COLON);
  306|  3.29k|      setState(33);
  307|  3.29k|      antlrcpp::downCast<ExprContext *>(_localctx)->e2 = expr();
  308|  3.29k|    }
  309|       |   
  310|  2.39M|  }
  311|  2.39M|  catch (RecognitionException &e) {
  312|    426|    _errHandler->reportError(this, e);
  313|    426|    _localctx->exception = std::current_exception();
  314|    426|    _errHandler->recover(this, _localctx->exception);
  315|    426|  }
  316|       |
  317|  2.39M|  return _localctx;
  318|  2.39M|}
_ZN19cel_parser_internal9CelParser20ConditionalOrContextC2EPN6antlr417ParserRuleContextEm:
  323|  2.39M|  : ParserRuleContext(parent, invokingState) {
  324|  2.39M|}
_ZNK19cel_parser_internal9CelParser20ConditionalOrContext12getRuleIndexEv:
  343|  4.79M|size_t CelParser::ConditionalOrContext::getRuleIndex() const {
  344|  4.79M|  return CelParser::RuleConditionalOr;
  345|  4.79M|}
_ZN19cel_parser_internal9CelParser13conditionalOrEv:
  355|  2.39M|CelParser::ConditionalOrContext* CelParser::conditionalOr() {
  356|  2.39M|  ConditionalOrContext *_localctx = _tracker.createInstance<ConditionalOrContext>(_ctx, getState());
  357|  2.39M|  enterRule(_localctx, 4, CelParser::RuleConditionalOr);
  358|  2.39M|  size_t _la = 0;
  359|       |
  360|       |#if __cplusplus > 201703L
  361|       |  auto onExit = finally([=, this] {
  362|       |#else
  363|  2.39M|  auto onExit = finally([=] {
  364|  2.39M|#endif
  365|  2.39M|    exitRule();
  366|  2.39M|  });
  367|  2.39M|  try {
  368|  2.39M|    enterOuterAlt(_localctx, 1);
  369|  2.39M|    setState(37);
  370|  2.39M|    antlrcpp::downCast<ConditionalOrContext *>(_localctx)->e = conditionalAnd();
  371|  2.39M|    setState(42);
  372|  2.39M|    _errHandler->sync(this);
  373|  2.39M|    _la = _input->LA(1);
  374|  2.49M|    while (_la == CelParser::LOGICAL_OR) {
  ------------------
  |  Branch (374:12): [True: 93.4k, False: 2.39M]
  ------------------
  375|  93.4k|      setState(38);
  376|  93.4k|      antlrcpp::downCast<ConditionalOrContext *>(_localctx)->s9 = match(CelParser::LOGICAL_OR);
  377|  93.4k|      antlrcpp::downCast<ConditionalOrContext *>(_localctx)->ops.push_back(antlrcpp::downCast<ConditionalOrContext *>(_localctx)->s9);
  378|  93.4k|      setState(39);
  379|  93.4k|      antlrcpp::downCast<ConditionalOrContext *>(_localctx)->conditionalAndContext = conditionalAnd();
  380|  93.4k|      antlrcpp::downCast<ConditionalOrContext *>(_localctx)->e1.push_back(antlrcpp::downCast<ConditionalOrContext *>(_localctx)->conditionalAndContext);
  381|  93.4k|      setState(44);
  382|  93.4k|      _errHandler->sync(this);
  383|  93.4k|      _la = _input->LA(1);
  384|  93.4k|    }
  385|       |   
  386|  2.39M|  }
  387|  2.39M|  catch (RecognitionException &e) {
  388|      0|    _errHandler->reportError(this, e);
  389|      0|    _localctx->exception = std::current_exception();
  390|      0|    _errHandler->recover(this, _localctx->exception);
  391|      0|  }
  392|       |
  393|  2.39M|  return _localctx;
  394|  2.39M|}
_ZN19cel_parser_internal9CelParser21ConditionalAndContextC2EPN6antlr417ParserRuleContextEm:
  399|  2.49M|  : ParserRuleContext(parent, invokingState) {
  400|  2.49M|}
_ZNK19cel_parser_internal9CelParser21ConditionalAndContext12getRuleIndexEv:
  419|  4.98M|size_t CelParser::ConditionalAndContext::getRuleIndex() const {
  420|  4.98M|  return CelParser::RuleConditionalAnd;
  421|  4.98M|}
_ZN19cel_parser_internal9CelParser14conditionalAndEv:
  431|  2.49M|CelParser::ConditionalAndContext* CelParser::conditionalAnd() {
  432|  2.49M|  ConditionalAndContext *_localctx = _tracker.createInstance<ConditionalAndContext>(_ctx, getState());
  433|  2.49M|  enterRule(_localctx, 6, CelParser::RuleConditionalAnd);
  434|  2.49M|  size_t _la = 0;
  435|       |
  436|       |#if __cplusplus > 201703L
  437|       |  auto onExit = finally([=, this] {
  438|       |#else
  439|  2.49M|  auto onExit = finally([=] {
  440|  2.49M|#endif
  441|  2.49M|    exitRule();
  442|  2.49M|  });
  443|  2.49M|  try {
  444|  2.49M|    enterOuterAlt(_localctx, 1);
  445|  2.49M|    setState(45);
  446|  2.49M|    antlrcpp::downCast<ConditionalAndContext *>(_localctx)->e = relation(0);
  447|  2.49M|    setState(50);
  448|  2.49M|    _errHandler->sync(this);
  449|  2.49M|    _la = _input->LA(1);
  450|  2.55M|    while (_la == CelParser::LOGICAL_AND) {
  ------------------
  |  Branch (450:12): [True: 60.5k, False: 2.49M]
  ------------------
  451|  60.5k|      setState(46);
  452|  60.5k|      antlrcpp::downCast<ConditionalAndContext *>(_localctx)->s8 = match(CelParser::LOGICAL_AND);
  453|  60.5k|      antlrcpp::downCast<ConditionalAndContext *>(_localctx)->ops.push_back(antlrcpp::downCast<ConditionalAndContext *>(_localctx)->s8);
  454|  60.5k|      setState(47);
  455|  60.5k|      antlrcpp::downCast<ConditionalAndContext *>(_localctx)->relationContext = relation(0);
  456|  60.5k|      antlrcpp::downCast<ConditionalAndContext *>(_localctx)->e1.push_back(antlrcpp::downCast<ConditionalAndContext *>(_localctx)->relationContext);
  457|  60.5k|      setState(52);
  458|  60.5k|      _errHandler->sync(this);
  459|  60.5k|      _la = _input->LA(1);
  460|  60.5k|    }
  461|       |   
  462|  2.49M|  }
  463|  2.49M|  catch (RecognitionException &e) {
  464|      0|    _errHandler->reportError(this, e);
  465|      0|    _localctx->exception = std::current_exception();
  466|      0|    _errHandler->recover(this, _localctx->exception);
  467|      0|  }
  468|       |
  469|  2.49M|  return _localctx;
  470|  2.49M|}
_ZN19cel_parser_internal9CelParser15RelationContextC2EPN6antlr417ParserRuleContextEm:
  475|  2.57M|  : ParserRuleContext(parent, invokingState) {
  476|  2.57M|}
_ZN19cel_parser_internal9CelParser15RelationContext4calcEv:
  478|  4.61M|CelParser::CalcContext* CelParser::RelationContext::calc() {
  479|  4.61M|  return getRuleContext<CelParser::CalcContext>(0);
  480|  4.61M|}
_ZN19cel_parser_internal9CelParser15RelationContext8relationEm:
  486|  16.0k|CelParser::RelationContext* CelParser::RelationContext::relation(size_t i) {
  487|  16.0k|  return getRuleContext<CelParser::RelationContext>(i);
  488|  16.0k|}
_ZNK19cel_parser_internal9CelParser15RelationContext12getRuleIndexEv:
  515|  5.14M|size_t CelParser::RelationContext::getRuleIndex() const {
  516|  5.14M|  return CelParser::RuleRelation;
  517|  5.14M|}
_ZN19cel_parser_internal9CelParser8relationEi:
  532|  2.56M|CelParser::RelationContext* CelParser::relation(int precedence) {
  533|  2.56M|  ParserRuleContext *parentContext = _ctx;
  534|  2.56M|  size_t parentState = getState();
  535|  2.56M|  CelParser::RelationContext *_localctx = _tracker.createInstance<RelationContext>(_ctx, parentState);
  536|  2.56M|  CelParser::RelationContext *previousContext = _localctx;
  537|  2.56M|  (void)previousContext; // Silence compiler, in case the context is not used by generated code.
  538|  2.56M|  size_t startState = 8;
  539|  2.56M|  enterRecursionRule(_localctx, 8, CelParser::RuleRelation, precedence);
  540|       |
  541|  2.56M|    size_t _la = 0;
  542|       |
  543|       |#if __cplusplus > 201703L
  544|       |  auto onExit = finally([=, this] {
  545|       |#else
  546|  2.56M|  auto onExit = finally([=] {
  547|  2.56M|#endif
  548|  2.56M|    unrollRecursionContexts(parentContext);
  549|  2.56M|  });
  550|  2.56M|  try {
  551|  2.56M|    size_t alt;
  552|  2.56M|    enterOuterAlt(_localctx, 1);
  553|  2.56M|    setState(54);
  554|  2.56M|    calc(0);
  555|  2.56M|    _ctx->stop = _input->LT(-1);
  556|  2.56M|    setState(61);
  557|  2.56M|    _errHandler->sync(this);
  558|  2.56M|    alt = getInterpreter<atn::ParserATNSimulator>()->adaptivePredict(_input, 3, _ctx);
  559|  2.57M|    while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) {
  ------------------
  |  Branch (559:12): [True: 10.2k, False: 2.56M]
  |  Branch (559:24): [True: 10.2k, False: 0]
  ------------------
  560|  10.2k|      if (alt == 1) {
  ------------------
  |  Branch (560:11): [True: 10.2k, False: 0]
  ------------------
  561|  10.2k|        if (!_parseListeners.empty())
  ------------------
  |  Branch (561:13): [True: 10.2k, False: 0]
  ------------------
  562|  10.2k|          triggerExitRuleEvent();
  563|  10.2k|        previousContext = _localctx;
  564|  10.2k|        _localctx = _tracker.createInstance<RelationContext>(parentContext, parentState);
  565|  10.2k|        pushNewRecursionContext(_localctx, startState, RuleRelation);
  566|  10.2k|        setState(56);
  567|       |
  568|  10.2k|        if (!(precpred(_ctx, 1))) throw FailedPredicateException(this, "precpred(_ctx, 1)");
  ------------------
  |  Branch (568:13): [True: 0, False: 10.2k]
  ------------------
  569|  10.2k|        setState(57);
  570|  10.2k|        antlrcpp::downCast<RelationContext *>(_localctx)->op = _input->LT(1);
  571|  10.2k|        _la = _input->LA(1);
  572|  10.2k|        if (!((((_la & ~ 0x3fULL) == 0) &&
  ------------------
  |  Branch (572:16): [True: 10.2k, False: 0]
  ------------------
  573|  10.2k|          ((1ULL << _la) & ((1ULL << CelParser::T__0)
  ------------------
  |  Branch (573:11): [True: 10.2k, False: 0]
  ------------------
  574|  10.2k|          | (1ULL << CelParser::EQUALS)
  575|  10.2k|          | (1ULL << CelParser::NOT_EQUALS)
  576|  10.2k|          | (1ULL << CelParser::LESS)
  577|  10.2k|          | (1ULL << CelParser::LESS_EQUALS)
  578|  10.2k|          | (1ULL << CelParser::GREATER_EQUALS)
  579|  10.2k|          | (1ULL << CelParser::GREATER))) != 0))) {
  580|      0|          antlrcpp::downCast<RelationContext *>(_localctx)->op = _errHandler->recoverInline(this);
  581|      0|        }
  582|  10.2k|        else {
  583|  10.2k|          _errHandler->reportMatch(this);
  584|  10.2k|          consume();
  585|  10.2k|        }
  586|  10.2k|        setState(58);
  587|  10.2k|        relation(2); 
  588|  10.2k|      }
  589|  10.2k|      setState(63);
  590|  10.2k|      _errHandler->sync(this);
  591|  10.2k|      alt = getInterpreter<atn::ParserATNSimulator>()->adaptivePredict(_input, 3, _ctx);
  592|  10.2k|    }
  593|  2.56M|  }
  594|  2.56M|  catch (RecognitionException &e) {
  595|      0|    _errHandler->reportError(this, e);
  596|      0|    _localctx->exception = std::current_exception();
  597|      0|    _errHandler->recover(this, _localctx->exception);
  598|      0|  }
  599|  2.53M|  return _localctx;
  600|  2.56M|}
_ZN19cel_parser_internal9CelParser11CalcContextC2EPN6antlr417ParserRuleContextEm:
  605|  3.85M|  : ParserRuleContext(parent, invokingState) {
  606|  3.85M|}
_ZN19cel_parser_internal9CelParser11CalcContext5unaryEv:
  608|  6.40M|CelParser::UnaryContext* CelParser::CalcContext::unary() {
  609|  6.40M|  return getRuleContext<CelParser::UnaryContext>(0);
  610|  6.40M|}
_ZN19cel_parser_internal9CelParser11CalcContext4calcEm:
  616|  1.19M|CelParser::CalcContext* CelParser::CalcContext::calc(size_t i) {
  617|  1.19M|  return getRuleContext<CelParser::CalcContext>(i);
  618|  1.19M|}
_ZNK19cel_parser_internal9CelParser11CalcContext12getRuleIndexEv:
  641|  7.70M|size_t CelParser::CalcContext::getRuleIndex() const {
  642|  7.70M|  return CelParser::RuleCalc;
  643|  7.70M|}
_ZN19cel_parser_internal9CelParser4calcEi:
  658|  3.20M|CelParser::CalcContext* CelParser::calc(int precedence) {
  659|  3.20M|  ParserRuleContext *parentContext = _ctx;
  660|  3.20M|  size_t parentState = getState();
  661|  3.20M|  CelParser::CalcContext *_localctx = _tracker.createInstance<CalcContext>(_ctx, parentState);
  662|  3.20M|  CelParser::CalcContext *previousContext = _localctx;
  663|  3.20M|  (void)previousContext; // Silence compiler, in case the context is not used by generated code.
  664|  3.20M|  size_t startState = 10;
  665|  3.20M|  enterRecursionRule(_localctx, 10, CelParser::RuleCalc, precedence);
  666|       |
  667|  3.20M|    size_t _la = 0;
  668|       |
  669|       |#if __cplusplus > 201703L
  670|       |  auto onExit = finally([=, this] {
  671|       |#else
  672|  3.20M|  auto onExit = finally([=] {
  673|  3.20M|#endif
  674|  3.20M|    unrollRecursionContexts(parentContext);
  675|  3.20M|  });
  676|  3.20M|  try {
  677|  3.20M|    size_t alt;
  678|  3.20M|    enterOuterAlt(_localctx, 1);
  679|  3.20M|    setState(65);
  680|  3.20M|    unary();
  681|  3.20M|    _ctx->stop = _input->LT(-1);
  682|  3.20M|    setState(75);
  683|  3.20M|    _errHandler->sync(this);
  684|  3.20M|    alt = getInterpreter<atn::ParserATNSimulator>()->adaptivePredict(_input, 5, _ctx);
  685|  3.85M|    while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) {
  ------------------
  |  Branch (685:12): [True: 646k, False: 3.20M]
  |  Branch (685:24): [True: 646k, False: 0]
  ------------------
  686|   646k|      if (alt == 1) {
  ------------------
  |  Branch (686:11): [True: 646k, False: 0]
  ------------------
  687|   646k|        if (!_parseListeners.empty())
  ------------------
  |  Branch (687:13): [True: 646k, False: 0]
  ------------------
  688|   646k|          triggerExitRuleEvent();
  689|   646k|        previousContext = _localctx;
  690|   646k|        setState(73);
  691|   646k|        _errHandler->sync(this);
  692|   646k|        switch (getInterpreter<atn::ParserATNSimulator>()->adaptivePredict(_input, 4, _ctx)) {
  693|  28.8k|        case 1: {
  ------------------
  |  Branch (693:9): [True: 28.8k, False: 617k]
  ------------------
  694|  28.8k|          _localctx = _tracker.createInstance<CalcContext>(parentContext, parentState);
  695|  28.8k|          pushNewRecursionContext(_localctx, startState, RuleCalc);
  696|  28.8k|          setState(67);
  697|       |
  698|  28.8k|          if (!(precpred(_ctx, 2))) throw FailedPredicateException(this, "precpred(_ctx, 2)");
  ------------------
  |  Branch (698:15): [True: 0, False: 28.8k]
  ------------------
  699|  28.8k|          setState(68);
  700|  28.8k|          antlrcpp::downCast<CalcContext *>(_localctx)->op = _input->LT(1);
  701|  28.8k|          _la = _input->LA(1);
  702|  28.8k|          if (!((((_la & ~ 0x3fULL) == 0) &&
  ------------------
  |  Branch (702:18): [True: 28.8k, False: 0]
  ------------------
  703|  28.8k|            ((1ULL << _la) & ((1ULL << CelParser::STAR)
  ------------------
  |  Branch (703:13): [True: 28.8k, False: 0]
  ------------------
  704|  28.8k|            | (1ULL << CelParser::SLASH)
  705|  28.8k|            | (1ULL << CelParser::PERCENT))) != 0))) {
  706|      0|            antlrcpp::downCast<CalcContext *>(_localctx)->op = _errHandler->recoverInline(this);
  707|      0|          }
  708|  28.8k|          else {
  709|  28.8k|            _errHandler->reportMatch(this);
  710|  28.8k|            consume();
  711|  28.8k|          }
  712|  28.8k|          setState(69);
  713|  28.8k|          calc(3);
  714|  28.8k|          break;
  715|  28.8k|        }
  716|       |
  717|   617k|        case 2: {
  ------------------
  |  Branch (717:9): [True: 617k, False: 28.8k]
  ------------------
  718|   617k|          _localctx = _tracker.createInstance<CalcContext>(parentContext, parentState);
  719|   617k|          pushNewRecursionContext(_localctx, startState, RuleCalc);
  720|   617k|          setState(70);
  721|       |
  722|   617k|          if (!(precpred(_ctx, 1))) throw FailedPredicateException(this, "precpred(_ctx, 1)");
  ------------------
  |  Branch (722:15): [True: 0, False: 617k]
  ------------------
  723|   617k|          setState(71);
  724|   617k|          antlrcpp::downCast<CalcContext *>(_localctx)->op = _input->LT(1);
  725|   617k|          _la = _input->LA(1);
  726|   617k|          if (!(_la == CelParser::MINUS
  ------------------
  |  Branch (726:17): [True: 608k, False: 9.21k]
  ------------------
  727|       |
  728|   617k|          || _la == CelParser::PLUS)) {
  ------------------
  |  Branch (728:14): [True: 9.21k, False: 0]
  ------------------
  729|      0|            antlrcpp::downCast<CalcContext *>(_localctx)->op = _errHandler->recoverInline(this);
  730|      0|          }
  731|   617k|          else {
  732|   617k|            _errHandler->reportMatch(this);
  733|   617k|            consume();
  734|   617k|          }
  735|   617k|          setState(72);
  736|   617k|          calc(2);
  737|   617k|          break;
  738|   617k|        }
  739|       |
  740|      0|        default:
  ------------------
  |  Branch (740:9): [True: 0, False: 646k]
  ------------------
  741|      0|          break;
  742|   646k|        } 
  743|   646k|      }
  744|   643k|      setState(77);
  745|   643k|      _errHandler->sync(this);
  746|   643k|      alt = getInterpreter<atn::ParserATNSimulator>()->adaptivePredict(_input, 5, _ctx);
  747|   643k|    }
  748|  3.20M|  }
  749|  3.20M|  catch (RecognitionException &e) {
  750|      0|    _errHandler->reportError(this, e);
  751|      0|    _localctx->exception = std::current_exception();
  752|      0|    _errHandler->recover(this, _localctx->exception);
  753|      0|  }
  754|  3.18M|  return _localctx;
  755|  3.20M|}
_ZN19cel_parser_internal9CelParser12UnaryContextC2EPN6antlr417ParserRuleContextEm:
  760|  3.20M|  : ParserRuleContext(parent, invokingState) {
  761|  3.20M|}
_ZNK19cel_parser_internal9CelParser12UnaryContext12getRuleIndexEv:
  764|  6.41M|size_t CelParser::UnaryContext::getRuleIndex() const {
  765|  6.41M|  return CelParser::RuleUnary;
  766|  6.41M|}
_ZN19cel_parser_internal9CelParser12UnaryContext8copyFromEPS1_:
  768|  3.19M|void CelParser::UnaryContext::copyFrom(UnaryContext *ctx) {
  769|  3.19M|  ParserRuleContext::copyFrom(ctx);
  770|  3.19M|}
_ZN19cel_parser_internal9CelParser17LogicalNotContext6memberEv:
  774|  3.00k|CelParser::MemberContext* CelParser::LogicalNotContext::member() {
  775|  3.00k|  return getRuleContext<CelParser::MemberContext>(0);
  776|  3.00k|}
_ZN19cel_parser_internal9CelParser17LogicalNotContextC2EPNS0_12UnaryContextE:
  786|  3.92k|CelParser::LogicalNotContext::LogicalNotContext(UnaryContext *ctx) { copyFrom(ctx); }
_ZN19cel_parser_internal9CelParser17MemberExprContext6memberEv:
  797|  2.83M|CelParser::MemberContext* CelParser::MemberExprContext::member() {
  798|  2.83M|  return getRuleContext<CelParser::MemberContext>(0);
  799|  2.83M|}
_ZN19cel_parser_internal9CelParser17MemberExprContextC2EPNS0_12UnaryContextE:
  801|  3.11M|CelParser::MemberExprContext::MemberExprContext(UnaryContext *ctx) { copyFrom(ctx); }
_ZN19cel_parser_internal9CelParser13NegateContext6memberEv:
  812|  57.8k|CelParser::MemberContext* CelParser::NegateContext::member() {
  813|  57.8k|  return getRuleContext<CelParser::MemberContext>(0);
  814|  57.8k|}
_ZN19cel_parser_internal9CelParser13NegateContextC2EPNS0_12UnaryContextE:
  824|  77.7k|CelParser::NegateContext::NegateContext(UnaryContext *ctx) { copyFrom(ctx); }
_ZN19cel_parser_internal9CelParser5unaryEv:
  833|  3.20M|CelParser::UnaryContext* CelParser::unary() {
  834|  3.20M|  UnaryContext *_localctx = _tracker.createInstance<UnaryContext>(_ctx, getState());
  835|  3.20M|  enterRule(_localctx, 12, CelParser::RuleUnary);
  836|  3.20M|  size_t _la = 0;
  837|       |
  838|       |#if __cplusplus > 201703L
  839|       |  auto onExit = finally([=, this] {
  840|       |#else
  841|  3.20M|  auto onExit = finally([=] {
  842|  3.20M|#endif
  843|  3.20M|    exitRule();
  844|  3.20M|  });
  845|  3.20M|  try {
  846|  3.20M|    size_t alt;
  847|  3.20M|    setState(91);
  848|  3.20M|    _errHandler->sync(this);
  849|  3.20M|    switch (getInterpreter<atn::ParserATNSimulator>()->adaptivePredict(_input, 8, _ctx)) {
  850|  3.11M|    case 1: {
  ------------------
  |  Branch (850:5): [True: 3.11M, False: 93.2k]
  ------------------
  851|  3.11M|      _localctx = _tracker.createInstance<CelParser::MemberExprContext>(_localctx);
  852|  3.11M|      enterOuterAlt(_localctx, 1);
  853|  3.11M|      setState(78);
  854|  3.11M|      member(0);
  855|  3.11M|      break;
  856|      0|    }
  857|       |
  858|  3.92k|    case 2: {
  ------------------
  |  Branch (858:5): [True: 3.92k, False: 3.20M]
  ------------------
  859|  3.92k|      _localctx = _tracker.createInstance<CelParser::LogicalNotContext>(_localctx);
  860|  3.92k|      enterOuterAlt(_localctx, 2);
  861|  3.92k|      setState(80); 
  862|  3.92k|      _errHandler->sync(this);
  863|  3.92k|      _la = _input->LA(1);
  864|  7.90k|      do {
  865|  7.90k|        setState(79);
  866|  7.90k|        antlrcpp::downCast<LogicalNotContext *>(_localctx)->s19 = match(CelParser::EXCLAM);
  867|  7.90k|        antlrcpp::downCast<LogicalNotContext *>(_localctx)->ops.push_back(antlrcpp::downCast<LogicalNotContext *>(_localctx)->s19);
  868|  7.90k|        setState(82); 
  869|  7.90k|        _errHandler->sync(this);
  870|  7.90k|        _la = _input->LA(1);
  871|  7.90k|      } while (_la == CelParser::EXCLAM);
  ------------------
  |  Branch (871:16): [True: 3.98k, False: 3.92k]
  ------------------
  872|  3.92k|      setState(84);
  873|  3.92k|      member(0);
  874|  3.92k|      break;
  875|      0|    }
  876|       |
  877|  77.7k|    case 3: {
  ------------------
  |  Branch (877:5): [True: 77.7k, False: 3.13M]
  ------------------
  878|  77.7k|      _localctx = _tracker.createInstance<CelParser::NegateContext>(_localctx);
  879|  77.7k|      enterOuterAlt(_localctx, 3);
  880|  77.7k|      setState(86); 
  881|  77.7k|      _errHandler->sync(this);
  882|  77.7k|      alt = 1;
  883|   580k|      do {
  884|   580k|        switch (alt) {
  885|   580k|          case 1: {
  ------------------
  |  Branch (885:11): [True: 580k, False: 0]
  ------------------
  886|   580k|                setState(85);
  887|   580k|                antlrcpp::downCast<NegateContext *>(_localctx)->s18 = match(CelParser::MINUS);
  888|   580k|                antlrcpp::downCast<NegateContext *>(_localctx)->ops.push_back(antlrcpp::downCast<NegateContext *>(_localctx)->s18);
  889|   580k|                break;
  890|      0|              }
  891|       |
  892|      0|        default:
  ------------------
  |  Branch (892:9): [True: 0, False: 580k]
  ------------------
  893|      0|          throw NoViableAltException(this);
  894|   580k|        }
  895|   580k|        setState(88); 
  896|   580k|        _errHandler->sync(this);
  897|   580k|        alt = getInterpreter<atn::ParserATNSimulator>()->adaptivePredict(_input, 7, _ctx);
  898|   580k|      } while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER);
  ------------------
  |  Branch (898:16): [True: 502k, False: 77.7k]
  |  Branch (898:28): [True: 502k, False: 0]
  ------------------
  899|  77.7k|      setState(90);
  900|  77.7k|      member(0);
  901|  77.7k|      break;
  902|  77.7k|    }
  903|       |
  904|      0|    default:
  ------------------
  |  Branch (904:5): [True: 0, False: 3.20M]
  ------------------
  905|      0|      break;
  906|  3.20M|    }
  907|       |   
  908|  3.20M|  }
  909|  3.20M|  catch (RecognitionException &e) {
  910|  12.1k|    _errHandler->reportError(this, e);
  911|  12.1k|    _localctx->exception = std::current_exception();
  912|  12.1k|    _errHandler->recover(this, _localctx->exception);
  913|  12.1k|  }
  914|       |
  915|  3.18M|  return _localctx;
  916|  3.20M|}
_ZN19cel_parser_internal9CelParser13MemberContextC2EPN6antlr417ParserRuleContextEm:
  921|  3.23M|  : ParserRuleContext(parent, invokingState) {
  922|  3.23M|}
_ZNK19cel_parser_internal9CelParser13MemberContext12getRuleIndexEv:
  925|  6.46M|size_t CelParser::MemberContext::getRuleIndex() const {
  926|  6.46M|  return CelParser::RuleMember;
  927|  6.46M|}
_ZN19cel_parser_internal9CelParser13MemberContext8copyFromEPS1_:
  929|  3.23M|void CelParser::MemberContext::copyFrom(MemberContext *ctx) {
  930|  3.23M|  ParserRuleContext::copyFrom(ctx);
  931|  3.23M|}
_ZN19cel_parser_internal9CelParser19SelectOrCallContext6memberEv:
  935|  15.4k|CelParser::MemberContext* CelParser::SelectOrCallContext::member() {
  936|  15.4k|  return getRuleContext<CelParser::MemberContext>(0);
  937|  15.4k|}
_ZN19cel_parser_internal9CelParser19SelectOrCallContextC2EPNS0_13MemberContextE:
  959|  18.7k|CelParser::SelectOrCallContext::SelectOrCallContext(MemberContext *ctx) { copyFrom(ctx); }
_ZN19cel_parser_internal9CelParser18PrimaryExprContext7primaryEv:
  970|  2.89M|CelParser::PrimaryContext* CelParser::PrimaryExprContext::primary() {
  971|  2.89M|  return getRuleContext<CelParser::PrimaryContext>(0);
  972|  2.89M|}
_ZN19cel_parser_internal9CelParser18PrimaryExprContextC2EPNS0_13MemberContextE:
  974|  3.19M|CelParser::PrimaryExprContext::PrimaryExprContext(MemberContext *ctx) { copyFrom(ctx); }
_ZN19cel_parser_internal9CelParser12IndexContext6memberEv:
  985|  5.65k|CelParser::MemberContext* CelParser::IndexContext::member() {
  986|  5.65k|  return getRuleContext<CelParser::MemberContext>(0);
  987|  5.65k|}
_ZN19cel_parser_internal9CelParser12IndexContextC2EPNS0_13MemberContextE:
 1001|  7.32k|CelParser::IndexContext::IndexContext(MemberContext *ctx) { copyFrom(ctx); }
_ZN19cel_parser_internal9CelParser20CreateMessageContext6memberEv:
 1012|  4.69k|CelParser::MemberContext* CelParser::CreateMessageContext::member() {
 1013|  4.69k|  return getRuleContext<CelParser::MemberContext>(0);
 1014|  4.69k|}
_ZN19cel_parser_internal9CelParser20CreateMessageContextC2EPNS0_13MemberContextE:
 1032|  7.91k|CelParser::CreateMessageContext::CreateMessageContext(MemberContext *ctx) { copyFrom(ctx); }
_ZN19cel_parser_internal9CelParser6memberEi:
 1046|  3.19M|CelParser::MemberContext* CelParser::member(int precedence) {
 1047|  3.19M|  ParserRuleContext *parentContext = _ctx;
 1048|  3.19M|  size_t parentState = getState();
 1049|  3.19M|  CelParser::MemberContext *_localctx = _tracker.createInstance<MemberContext>(_ctx, parentState);
 1050|  3.19M|  CelParser::MemberContext *previousContext = _localctx;
 1051|  3.19M|  (void)previousContext; // Silence compiler, in case the context is not used by generated code.
 1052|  3.19M|  size_t startState = 14;
 1053|  3.19M|  enterRecursionRule(_localctx, 14, CelParser::RuleMember, precedence);
 1054|       |
 1055|  3.19M|    size_t _la = 0;
 1056|       |
 1057|       |#if __cplusplus > 201703L
 1058|       |  auto onExit = finally([=, this] {
 1059|       |#else
 1060|  3.19M|  auto onExit = finally([=] {
 1061|  3.19M|#endif
 1062|  3.19M|    unrollRecursionContexts(parentContext);
 1063|  3.19M|  });
 1064|  3.19M|  try {
 1065|  3.19M|    size_t alt;
 1066|  3.19M|    enterOuterAlt(_localctx, 1);
 1067|  3.19M|    _localctx = _tracker.createInstance<PrimaryExprContext>(_localctx);
 1068|  3.19M|    _ctx = _localctx;
 1069|  3.19M|    previousContext = _localctx;
 1070|       |
 1071|  3.19M|    setState(94);
 1072|  3.19M|    primary();
 1073|  3.19M|    _ctx->stop = _input->LT(-1);
 1074|  3.19M|    setState(122);
 1075|  3.19M|    _errHandler->sync(this);
 1076|  3.19M|    alt = getInterpreter<atn::ParserATNSimulator>()->adaptivePredict(_input, 14, _ctx);
 1077|  3.22M|    while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) {
  ------------------
  |  Branch (1077:12): [True: 34.0k, False: 3.18M]
  |  Branch (1077:24): [True: 34.0k, False: 0]
  ------------------
 1078|  34.0k|      if (alt == 1) {
  ------------------
  |  Branch (1078:11): [True: 34.0k, False: 0]
  ------------------
 1079|  34.0k|        if (!_parseListeners.empty())
  ------------------
  |  Branch (1079:13): [True: 34.0k, False: 0]
  ------------------
 1080|  34.0k|          triggerExitRuleEvent();
 1081|  34.0k|        previousContext = _localctx;
 1082|  34.0k|        setState(120);
 1083|  34.0k|        _errHandler->sync(this);
 1084|  34.0k|        switch (getInterpreter<atn::ParserATNSimulator>()->adaptivePredict(_input, 13, _ctx)) {
 1085|  18.7k|        case 1: {
  ------------------
  |  Branch (1085:9): [True: 18.7k, False: 15.2k]
  ------------------
 1086|  18.7k|          auto newContext = _tracker.createInstance<SelectOrCallContext>(_tracker.createInstance<MemberContext>(parentContext, parentState));
 1087|  18.7k|          _localctx = newContext;
 1088|  18.7k|          pushNewRecursionContext(newContext, startState, RuleMember);
 1089|  18.7k|          setState(96);
 1090|       |
 1091|  18.7k|          if (!(precpred(_ctx, 3))) throw FailedPredicateException(this, "precpred(_ctx, 3)");
  ------------------
  |  Branch (1091:15): [True: 0, False: 18.7k]
  ------------------
 1092|  18.7k|          setState(97);
 1093|  18.7k|          antlrcpp::downCast<SelectOrCallContext *>(_localctx)->op = match(CelParser::DOT);
 1094|  18.7k|          setState(98);
 1095|  18.7k|          antlrcpp::downCast<SelectOrCallContext *>(_localctx)->id = match(CelParser::IDENTIFIER);
 1096|  18.7k|          setState(104);
 1097|  18.7k|          _errHandler->sync(this);
 1098|       |
 1099|  18.7k|          switch (getInterpreter<atn::ParserATNSimulator>()->adaptivePredict(_input, 10, _ctx)) {
 1100|  8.70k|          case 1: {
  ------------------
  |  Branch (1100:11): [True: 8.70k, False: 10.0k]
  ------------------
 1101|  8.70k|            setState(99);
 1102|  8.70k|            antlrcpp::downCast<SelectOrCallContext *>(_localctx)->open = match(CelParser::LPAREN);
 1103|  8.70k|            setState(101);
 1104|  8.70k|            _errHandler->sync(this);
 1105|       |
 1106|  8.70k|            _la = _input->LA(1);
 1107|  8.70k|            if ((((_la & ~ 0x3fULL) == 0) &&
  ------------------
  |  Branch (1107:18): [True: 8.65k, False: 47]
  ------------------
 1108|  8.70k|              ((1ULL << _la) & ((1ULL << CelParser::LBRACKET)
  ------------------
  |  Branch (1108:15): [True: 7.42k, False: 1.23k]
  ------------------
 1109|  8.65k|              | (1ULL << CelParser::LBRACE)
 1110|  8.65k|              | (1ULL << CelParser::LPAREN)
 1111|  8.65k|              | (1ULL << CelParser::DOT)
 1112|  8.65k|              | (1ULL << CelParser::MINUS)
 1113|  8.65k|              | (1ULL << CelParser::EXCLAM)
 1114|  8.65k|              | (1ULL << CelParser::CEL_TRUE)
 1115|  8.65k|              | (1ULL << CelParser::CEL_FALSE)
 1116|  8.65k|              | (1ULL << CelParser::NUL)
 1117|  8.65k|              | (1ULL << CelParser::NUM_FLOAT)
 1118|  8.65k|              | (1ULL << CelParser::NUM_INT)
 1119|  8.65k|              | (1ULL << CelParser::NUM_UINT)
 1120|  8.65k|              | (1ULL << CelParser::STRING)
 1121|  8.65k|              | (1ULL << CelParser::BYTES)
 1122|  8.65k|              | (1ULL << CelParser::IDENTIFIER))) != 0)) {
 1123|  7.42k|              setState(100);
 1124|  7.42k|              antlrcpp::downCast<SelectOrCallContext *>(_localctx)->args = exprList();
 1125|  7.42k|            }
 1126|  8.70k|            setState(103);
 1127|  8.70k|            match(CelParser::RPAREN);
 1128|  8.70k|            break;
 1129|      0|          }
 1130|       |
 1131|  9.89k|          default:
  ------------------
  |  Branch (1131:11): [True: 9.89k, False: 8.89k]
  ------------------
 1132|  9.89k|            break;
 1133|  18.7k|          }
 1134|  15.7k|          break;
 1135|  18.7k|        }
 1136|       |
 1137|  15.7k|        case 2: {
  ------------------
  |  Branch (1137:9): [True: 7.32k, False: 26.6k]
  ------------------
 1138|  7.32k|          auto newContext = _tracker.createInstance<IndexContext>(_tracker.createInstance<MemberContext>(parentContext, parentState));
 1139|  7.32k|          _localctx = newContext;
 1140|  7.32k|          pushNewRecursionContext(newContext, startState, RuleMember);
 1141|  7.32k|          setState(106);
 1142|       |
 1143|  7.32k|          if (!(precpred(_ctx, 2))) throw FailedPredicateException(this, "precpred(_ctx, 2)");
  ------------------
  |  Branch (1143:15): [True: 0, False: 7.32k]
  ------------------
 1144|  7.32k|          setState(107);
 1145|  7.32k|          antlrcpp::downCast<IndexContext *>(_localctx)->op = match(CelParser::LBRACKET);
 1146|  7.32k|          setState(108);
 1147|  7.32k|          antlrcpp::downCast<IndexContext *>(_localctx)->index = expr();
 1148|  7.32k|          setState(109);
 1149|  7.32k|          match(CelParser::RPRACKET);
 1150|  7.32k|          break;
 1151|  7.32k|        }
 1152|       |
 1153|  7.91k|        case 3: {
  ------------------
  |  Branch (1153:9): [True: 7.91k, False: 26.1k]
  ------------------
 1154|  7.91k|          auto newContext = _tracker.createInstance<CreateMessageContext>(_tracker.createInstance<MemberContext>(parentContext, parentState));
 1155|  7.91k|          _localctx = newContext;
 1156|  7.91k|          pushNewRecursionContext(newContext, startState, RuleMember);
 1157|  7.91k|          setState(111);
 1158|       |
 1159|  7.91k|          if (!(precpred(_ctx, 1))) throw FailedPredicateException(this, "precpred(_ctx, 1)");
  ------------------
  |  Branch (1159:15): [True: 0, False: 7.91k]
  ------------------
 1160|  7.91k|          setState(112);
 1161|  7.91k|          antlrcpp::downCast<CreateMessageContext *>(_localctx)->op = match(CelParser::LBRACE);
 1162|  7.91k|          setState(114);
 1163|  7.91k|          _errHandler->sync(this);
 1164|       |
 1165|  7.91k|          _la = _input->LA(1);
 1166|  7.91k|          if (_la == CelParser::IDENTIFIER) {
  ------------------
  |  Branch (1166:15): [True: 3.14k, False: 4.76k]
  ------------------
 1167|  3.14k|            setState(113);
 1168|  3.14k|            antlrcpp::downCast<CreateMessageContext *>(_localctx)->entries = fieldInitializerList();
 1169|  3.14k|          }
 1170|  7.91k|          setState(117);
 1171|  7.91k|          _errHandler->sync(this);
 1172|       |
 1173|  7.91k|          _la = _input->LA(1);
 1174|  7.91k|          if (_la == CelParser::COMMA) {
  ------------------
  |  Branch (1174:15): [True: 426, False: 7.48k]
  ------------------
 1175|    426|            setState(116);
 1176|    426|            match(CelParser::COMMA);
 1177|    426|          }
 1178|  7.91k|          setState(119);
 1179|  7.91k|          match(CelParser::RBRACE);
 1180|  7.91k|          break;
 1181|  7.91k|        }
 1182|       |
 1183|      0|        default:
  ------------------
  |  Branch (1183:9): [True: 0, False: 34.0k]
  ------------------
 1184|      0|          break;
 1185|  34.0k|        } 
 1186|  34.0k|      }
 1187|  25.6k|      setState(124);
 1188|  25.6k|      _errHandler->sync(this);
 1189|  25.6k|      alt = getInterpreter<atn::ParserATNSimulator>()->adaptivePredict(_input, 14, _ctx);
 1190|  25.6k|    }
 1191|  3.19M|  }
 1192|  3.19M|  catch (RecognitionException &e) {
 1193|  4.99k|    _errHandler->reportError(this, e);
 1194|  4.99k|    _localctx->exception = std::current_exception();
 1195|  4.99k|    _errHandler->recover(this, _localctx->exception);
 1196|  4.99k|  }
 1197|  3.17M|  return _localctx;
 1198|  3.19M|}
_ZN19cel_parser_internal9CelParser14PrimaryContextC2EPN6antlr417ParserRuleContextEm:
 1203|  3.19M|  : ParserRuleContext(parent, invokingState) {
 1204|  3.19M|}
_ZNK19cel_parser_internal9CelParser14PrimaryContext12getRuleIndexEv:
 1207|  6.39M|size_t CelParser::PrimaryContext::getRuleIndex() const {
 1208|  6.39M|  return CelParser::RulePrimary;
 1209|  6.39M|}
_ZN19cel_parser_internal9CelParser14PrimaryContext8copyFromEPS1_:
 1211|  3.19M|void CelParser::PrimaryContext::copyFrom(PrimaryContext *ctx) {
 1212|  3.19M|  ParserRuleContext::copyFrom(ctx);
 1213|  3.19M|}
_ZN19cel_parser_internal9CelParser17CreateListContextC2EPNS0_14PrimaryContextE:
 1233|  15.5k|CelParser::CreateListContext::CreateListContext(PrimaryContext *ctx) { copyFrom(ctx); }
_ZN19cel_parser_internal9CelParser19CreateStructContextC2EPNS0_14PrimaryContextE:
 1260|   744k|CelParser::CreateStructContext::CreateStructContext(PrimaryContext *ctx) { copyFrom(ctx); }
_ZN19cel_parser_internal9CelParser22ConstantLiteralContext7literalEv:
 1271|  1.12M|CelParser::LiteralContext* CelParser::ConstantLiteralContext::literal() {
 1272|  1.12M|  return getRuleContext<CelParser::LiteralContext>(0);
 1273|  1.12M|}
_ZN19cel_parser_internal9CelParser22ConstantLiteralContextC2EPNS0_14PrimaryContextE:
 1275|  1.27M|CelParser::ConstantLiteralContext::ConstantLiteralContext(PrimaryContext *ctx) { copyFrom(ctx); }
_ZN19cel_parser_internal9CelParser13NestedContextC2EPNS0_14PrimaryContextE:
 1298|  5.18k|CelParser::NestedContext::NestedContext(PrimaryContext *ctx) { copyFrom(ctx); }
_ZN19cel_parser_internal9CelParser24IdentOrGlobalCallContextC2EPNS0_14PrimaryContextE:
 1329|  1.15M|CelParser::IdentOrGlobalCallContext::IdentOrGlobalCallContext(PrimaryContext *ctx) { copyFrom(ctx); }
_ZN19cel_parser_internal9CelParser7primaryEv:
 1338|  3.19M|CelParser::PrimaryContext* CelParser::primary() {
 1339|  3.19M|  PrimaryContext *_localctx = _tracker.createInstance<PrimaryContext>(_ctx, getState());
 1340|  3.19M|  enterRule(_localctx, 16, CelParser::RulePrimary);
 1341|  3.19M|  size_t _la = 0;
 1342|       |
 1343|       |#if __cplusplus > 201703L
 1344|       |  auto onExit = finally([=, this] {
 1345|       |#else
 1346|  3.19M|  auto onExit = finally([=] {
 1347|  3.19M|#endif
 1348|  3.19M|    exitRule();
 1349|  3.19M|  });
 1350|  3.19M|  try {
 1351|  3.19M|    setState(157);
 1352|  3.19M|    _errHandler->sync(this);
 1353|  3.19M|    switch (_input->LA(1)) {
 1354|  2.12k|      case CelParser::DOT:
  ------------------
  |  Branch (1354:7): [True: 2.12k, False: 3.19M]
  ------------------
 1355|  1.15M|      case CelParser::IDENTIFIER: {
  ------------------
  |  Branch (1355:7): [True: 1.15M, False: 2.04M]
  ------------------
 1356|  1.15M|        _localctx = _tracker.createInstance<CelParser::IdentOrGlobalCallContext>(_localctx);
 1357|  1.15M|        enterOuterAlt(_localctx, 1);
 1358|  1.15M|        setState(126);
 1359|  1.15M|        _errHandler->sync(this);
 1360|       |
 1361|  1.15M|        _la = _input->LA(1);
 1362|  1.15M|        if (_la == CelParser::DOT) {
  ------------------
  |  Branch (1362:13): [True: 2.12k, False: 1.15M]
  ------------------
 1363|  2.12k|          setState(125);
 1364|  2.12k|          antlrcpp::downCast<IdentOrGlobalCallContext *>(_localctx)->leadingDot = match(CelParser::DOT);
 1365|  2.12k|        }
 1366|  1.15M|        setState(128);
 1367|  1.15M|        antlrcpp::downCast<IdentOrGlobalCallContext *>(_localctx)->id = match(CelParser::IDENTIFIER);
 1368|  1.15M|        setState(134);
 1369|  1.15M|        _errHandler->sync(this);
 1370|       |
 1371|  1.15M|        switch (getInterpreter<atn::ParserATNSimulator>()->adaptivePredict(_input, 17, _ctx)) {
 1372|  3.34k|        case 1: {
  ------------------
  |  Branch (1372:9): [True: 3.34k, False: 1.15M]
  ------------------
 1373|  3.34k|          setState(129);
 1374|  3.34k|          antlrcpp::downCast<IdentOrGlobalCallContext *>(_localctx)->op = match(CelParser::LPAREN);
 1375|  3.34k|          setState(131);
 1376|  3.34k|          _errHandler->sync(this);
 1377|       |
 1378|  3.34k|          _la = _input->LA(1);
 1379|  3.34k|          if ((((_la & ~ 0x3fULL) == 0) &&
  ------------------
  |  Branch (1379:16): [True: 3.21k, False: 131]
  ------------------
 1380|  3.34k|            ((1ULL << _la) & ((1ULL << CelParser::LBRACKET)
  ------------------
  |  Branch (1380:13): [True: 2.67k, False: 545]
  ------------------
 1381|  3.21k|            | (1ULL << CelParser::LBRACE)
 1382|  3.21k|            | (1ULL << CelParser::LPAREN)
 1383|  3.21k|            | (1ULL << CelParser::DOT)
 1384|  3.21k|            | (1ULL << CelParser::MINUS)
 1385|  3.21k|            | (1ULL << CelParser::EXCLAM)
 1386|  3.21k|            | (1ULL << CelParser::CEL_TRUE)
 1387|  3.21k|            | (1ULL << CelParser::CEL_FALSE)
 1388|  3.21k|            | (1ULL << CelParser::NUL)
 1389|  3.21k|            | (1ULL << CelParser::NUM_FLOAT)
 1390|  3.21k|            | (1ULL << CelParser::NUM_INT)
 1391|  3.21k|            | (1ULL << CelParser::NUM_UINT)
 1392|  3.21k|            | (1ULL << CelParser::STRING)
 1393|  3.21k|            | (1ULL << CelParser::BYTES)
 1394|  3.21k|            | (1ULL << CelParser::IDENTIFIER))) != 0)) {
 1395|  2.67k|            setState(130);
 1396|  2.67k|            antlrcpp::downCast<IdentOrGlobalCallContext *>(_localctx)->args = exprList();
 1397|  2.67k|          }
 1398|  3.34k|          setState(133);
 1399|  3.34k|          match(CelParser::RPAREN);
 1400|  3.34k|          break;
 1401|      0|        }
 1402|       |
 1403|  1.15M|        default:
  ------------------
  |  Branch (1403:9): [True: 1.15M, False: 3.58k]
  ------------------
 1404|  1.15M|          break;
 1405|  1.15M|        }
 1406|  1.15M|        break;
 1407|  1.15M|      }
 1408|       |
 1409|  1.15M|      case CelParser::LPAREN: {
  ------------------
  |  Branch (1409:7): [True: 5.18k, False: 3.19M]
  ------------------
 1410|  5.18k|        _localctx = _tracker.createInstance<CelParser::NestedContext>(_localctx);
 1411|  5.18k|        enterOuterAlt(_localctx, 2);
 1412|  5.18k|        setState(136);
 1413|  5.18k|        match(CelParser::LPAREN);
 1414|  5.18k|        setState(137);
 1415|  5.18k|        antlrcpp::downCast<NestedContext *>(_localctx)->e = expr();
 1416|  5.18k|        setState(138);
 1417|  5.18k|        match(CelParser::RPAREN);
 1418|  5.18k|        break;
 1419|  1.15M|      }
 1420|       |
 1421|  15.5k|      case CelParser::LBRACKET: {
  ------------------
  |  Branch (1421:7): [True: 15.5k, False: 3.18M]
  ------------------
 1422|  15.5k|        _localctx = _tracker.createInstance<CelParser::CreateListContext>(_localctx);
 1423|  15.5k|        enterOuterAlt(_localctx, 3);
 1424|  15.5k|        setState(140);
 1425|  15.5k|        antlrcpp::downCast<CreateListContext *>(_localctx)->op = match(CelParser::LBRACKET);
 1426|  15.5k|        setState(142);
 1427|  15.5k|        _errHandler->sync(this);
 1428|       |
 1429|  15.5k|        _la = _input->LA(1);
 1430|  15.5k|        if ((((_la & ~ 0x3fULL) == 0) &&
  ------------------
  |  Branch (1430:14): [True: 15.3k, False: 180]
  ------------------
 1431|  15.5k|          ((1ULL << _la) & ((1ULL << CelParser::LBRACKET)
  ------------------
  |  Branch (1431:11): [True: 14.1k, False: 1.16k]
  ------------------
 1432|  15.3k|          | (1ULL << CelParser::LBRACE)
 1433|  15.3k|          | (1ULL << CelParser::LPAREN)
 1434|  15.3k|          | (1ULL << CelParser::DOT)
 1435|  15.3k|          | (1ULL << CelParser::MINUS)
 1436|  15.3k|          | (1ULL << CelParser::EXCLAM)
 1437|  15.3k|          | (1ULL << CelParser::CEL_TRUE)
 1438|  15.3k|          | (1ULL << CelParser::CEL_FALSE)
 1439|  15.3k|          | (1ULL << CelParser::NUL)
 1440|  15.3k|          | (1ULL << CelParser::NUM_FLOAT)
 1441|  15.3k|          | (1ULL << CelParser::NUM_INT)
 1442|  15.3k|          | (1ULL << CelParser::NUM_UINT)
 1443|  15.3k|          | (1ULL << CelParser::STRING)
 1444|  15.3k|          | (1ULL << CelParser::BYTES)
 1445|  15.3k|          | (1ULL << CelParser::IDENTIFIER))) != 0)) {
 1446|  14.1k|          setState(141);
 1447|  14.1k|          antlrcpp::downCast<CreateListContext *>(_localctx)->elems = exprList();
 1448|  14.1k|        }
 1449|  15.5k|        setState(145);
 1450|  15.5k|        _errHandler->sync(this);
 1451|       |
 1452|  15.5k|        _la = _input->LA(1);
 1453|  15.5k|        if (_la == CelParser::COMMA) {
  ------------------
  |  Branch (1453:13): [True: 346, False: 15.1k]
  ------------------
 1454|    346|          setState(144);
 1455|    346|          match(CelParser::COMMA);
 1456|    346|        }
 1457|  15.5k|        setState(147);
 1458|  15.5k|        match(CelParser::RPRACKET);
 1459|  15.5k|        break;
 1460|  1.15M|      }
 1461|       |
 1462|   744k|      case CelParser::LBRACE: {
  ------------------
  |  Branch (1462:7): [True: 744k, False: 2.45M]
  ------------------
 1463|   744k|        _localctx = _tracker.createInstance<CelParser::CreateStructContext>(_localctx);
 1464|   744k|        enterOuterAlt(_localctx, 4);
 1465|   744k|        setState(148);
 1466|   744k|        antlrcpp::downCast<CreateStructContext *>(_localctx)->op = match(CelParser::LBRACE);
 1467|   744k|        setState(150);
 1468|   744k|        _errHandler->sync(this);
 1469|       |
 1470|   744k|        _la = _input->LA(1);
 1471|   744k|        if ((((_la & ~ 0x3fULL) == 0) &&
  ------------------
  |  Branch (1471:14): [True: 744k, False: 241]
  ------------------
 1472|   744k|          ((1ULL << _la) & ((1ULL << CelParser::LBRACKET)
  ------------------
  |  Branch (1472:11): [True: 545k, False: 199k]
  ------------------
 1473|   744k|          | (1ULL << CelParser::LBRACE)
 1474|   744k|          | (1ULL << CelParser::LPAREN)
 1475|   744k|          | (1ULL << CelParser::DOT)
 1476|   744k|          | (1ULL << CelParser::MINUS)
 1477|   744k|          | (1ULL << CelParser::EXCLAM)
 1478|   744k|          | (1ULL << CelParser::CEL_TRUE)
 1479|   744k|          | (1ULL << CelParser::CEL_FALSE)
 1480|   744k|          | (1ULL << CelParser::NUL)
 1481|   744k|          | (1ULL << CelParser::NUM_FLOAT)
 1482|   744k|          | (1ULL << CelParser::NUM_INT)
 1483|   744k|          | (1ULL << CelParser::NUM_UINT)
 1484|   744k|          | (1ULL << CelParser::STRING)
 1485|   744k|          | (1ULL << CelParser::BYTES)
 1486|   744k|          | (1ULL << CelParser::IDENTIFIER))) != 0)) {
 1487|   545k|          setState(149);
 1488|   545k|          antlrcpp::downCast<CreateStructContext *>(_localctx)->entries = mapInitializerList();
 1489|   545k|        }
 1490|   744k|        setState(153);
 1491|   744k|        _errHandler->sync(this);
 1492|       |
 1493|   744k|        _la = _input->LA(1);
 1494|   744k|        if (_la == CelParser::COMMA) {
  ------------------
  |  Branch (1494:13): [True: 627, False: 744k]
  ------------------
 1495|    627|          setState(152);
 1496|    627|          match(CelParser::COMMA);
 1497|    627|        }
 1498|   744k|        setState(155);
 1499|   744k|        match(CelParser::RBRACE);
 1500|   744k|        break;
 1501|  1.15M|      }
 1502|       |
 1503|  13.6k|      case CelParser::MINUS:
  ------------------
  |  Branch (1503:7): [True: 13.6k, False: 3.18M]
  ------------------
 1504|  14.0k|      case CelParser::CEL_TRUE:
  ------------------
  |  Branch (1504:7): [True: 367, False: 3.19M]
  ------------------
 1505|  14.5k|      case CelParser::CEL_FALSE:
  ------------------
  |  Branch (1505:7): [True: 584, False: 3.19M]
  ------------------
 1506|  14.8k|      case CelParser::NUL:
  ------------------
  |  Branch (1506:7): [True: 285, False: 3.19M]
  ------------------
 1507|  34.7k|      case CelParser::NUM_FLOAT:
  ------------------
  |  Branch (1507:7): [True: 19.8k, False: 3.17M]
  ------------------
 1508|   716k|      case CelParser::NUM_INT:
  ------------------
  |  Branch (1508:7): [True: 681k, False: 2.51M]
  ------------------
 1509|   718k|      case CelParser::NUM_UINT:
  ------------------
  |  Branch (1509:7): [True: 2.27k, False: 3.19M]
  ------------------
 1510|  1.26M|      case CelParser::STRING:
  ------------------
  |  Branch (1510:7): [True: 550k, False: 2.64M]
  ------------------
 1511|  1.27M|      case CelParser::BYTES: {
  ------------------
  |  Branch (1511:7): [True: 4.06k, False: 3.19M]
  ------------------
 1512|  1.27M|        _localctx = _tracker.createInstance<CelParser::ConstantLiteralContext>(_localctx);
 1513|  1.27M|        enterOuterAlt(_localctx, 5);
 1514|  1.27M|        setState(156);
 1515|  1.27M|        literal();
 1516|  1.27M|        break;
 1517|  1.26M|      }
 1518|       |
 1519|  1.66k|    default:
  ------------------
  |  Branch (1519:5): [True: 1.66k, False: 3.19M]
  ------------------
 1520|  1.66k|      throw NoViableAltException(this);
 1521|  3.19M|    }
 1522|       |   
 1523|  3.19M|  }
 1524|  3.19M|  catch (RecognitionException &e) {
 1525|  11.7k|    _errHandler->reportError(this, e);
 1526|  11.7k|    _localctx->exception = std::current_exception();
 1527|  11.7k|    _errHandler->recover(this, _localctx->exception);
 1528|  11.7k|  }
 1529|       |
 1530|  3.17M|  return _localctx;
 1531|  3.19M|}
_ZN19cel_parser_internal9CelParser15ExprListContextC2EPN6antlr417ParserRuleContextEm:
 1536|  24.2k|  : ParserRuleContext(parent, invokingState) {
 1537|  24.2k|}
_ZNK19cel_parser_internal9CelParser15ExprListContext12getRuleIndexEv:
 1556|  48.5k|size_t CelParser::ExprListContext::getRuleIndex() const {
 1557|  48.5k|  return CelParser::RuleExprList;
 1558|  48.5k|}
_ZN19cel_parser_internal9CelParser8exprListEv:
 1568|  24.2k|CelParser::ExprListContext* CelParser::exprList() {
 1569|  24.2k|  ExprListContext *_localctx = _tracker.createInstance<ExprListContext>(_ctx, getState());
 1570|  24.2k|  enterRule(_localctx, 18, CelParser::RuleExprList);
 1571|       |
 1572|       |#if __cplusplus > 201703L
 1573|       |  auto onExit = finally([=, this] {
 1574|       |#else
 1575|  24.2k|  auto onExit = finally([=] {
 1576|  24.2k|#endif
 1577|  24.2k|    exitRule();
 1578|  24.2k|  });
 1579|  24.2k|  try {
 1580|  24.2k|    size_t alt;
 1581|  24.2k|    enterOuterAlt(_localctx, 1);
 1582|  24.2k|    setState(159);
 1583|  24.2k|    antlrcpp::downCast<ExprListContext *>(_localctx)->exprContext = expr();
 1584|  24.2k|    antlrcpp::downCast<ExprListContext *>(_localctx)->e.push_back(antlrcpp::downCast<ExprListContext *>(_localctx)->exprContext);
 1585|  24.2k|    setState(164);
 1586|  24.2k|    _errHandler->sync(this);
 1587|  24.2k|    alt = getInterpreter<atn::ParserATNSimulator>()->adaptivePredict(_input, 23, _ctx);
 1588|  1.25M|    while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) {
  ------------------
  |  Branch (1588:12): [True: 1.23M, False: 24.2k]
  |  Branch (1588:24): [True: 1.23M, False: 0]
  ------------------
 1589|  1.23M|      if (alt == 1) {
  ------------------
  |  Branch (1589:11): [True: 1.23M, False: 0]
  ------------------
 1590|  1.23M|        setState(160);
 1591|  1.23M|        match(CelParser::COMMA);
 1592|  1.23M|        setState(161);
 1593|  1.23M|        antlrcpp::downCast<ExprListContext *>(_localctx)->exprContext = expr();
 1594|  1.23M|        antlrcpp::downCast<ExprListContext *>(_localctx)->e.push_back(antlrcpp::downCast<ExprListContext *>(_localctx)->exprContext); 
 1595|  1.23M|      }
 1596|  1.23M|      setState(166);
 1597|  1.23M|      _errHandler->sync(this);
 1598|  1.23M|      alt = getInterpreter<atn::ParserATNSimulator>()->adaptivePredict(_input, 23, _ctx);
 1599|  1.23M|    }
 1600|       |   
 1601|  24.2k|  }
 1602|  24.2k|  catch (RecognitionException &e) {
 1603|      0|    _errHandler->reportError(this, e);
 1604|      0|    _localctx->exception = std::current_exception();
 1605|      0|    _errHandler->recover(this, _localctx->exception);
 1606|      0|  }
 1607|       |
 1608|  24.2k|  return _localctx;
 1609|  24.2k|}
_ZN19cel_parser_internal9CelParser27FieldInitializerListContextC2EPN6antlr417ParserRuleContextEm:
 1614|  3.14k|  : ParserRuleContext(parent, invokingState) {
 1615|  3.14k|}
_ZNK19cel_parser_internal9CelParser27FieldInitializerListContext12getRuleIndexEv:
 1650|  6.28k|size_t CelParser::FieldInitializerListContext::getRuleIndex() const {
 1651|  6.28k|  return CelParser::RuleFieldInitializerList;
 1652|  6.28k|}
_ZN19cel_parser_internal9CelParser20fieldInitializerListEv:
 1662|  3.14k|CelParser::FieldInitializerListContext* CelParser::fieldInitializerList() {
 1663|  3.14k|  FieldInitializerListContext *_localctx = _tracker.createInstance<FieldInitializerListContext>(_ctx, getState());
 1664|  3.14k|  enterRule(_localctx, 20, CelParser::RuleFieldInitializerList);
 1665|       |
 1666|       |#if __cplusplus > 201703L
 1667|       |  auto onExit = finally([=, this] {
 1668|       |#else
 1669|  3.14k|  auto onExit = finally([=] {
 1670|  3.14k|#endif
 1671|  3.14k|    exitRule();
 1672|  3.14k|  });
 1673|  3.14k|  try {
 1674|  3.14k|    size_t alt;
 1675|  3.14k|    enterOuterAlt(_localctx, 1);
 1676|  3.14k|    setState(167);
 1677|  3.14k|    antlrcpp::downCast<FieldInitializerListContext *>(_localctx)->identifierToken = match(CelParser::IDENTIFIER);
 1678|  3.14k|    antlrcpp::downCast<FieldInitializerListContext *>(_localctx)->fields.push_back(antlrcpp::downCast<FieldInitializerListContext *>(_localctx)->identifierToken);
 1679|  3.14k|    setState(168);
 1680|  3.14k|    antlrcpp::downCast<FieldInitializerListContext *>(_localctx)->s21 = match(CelParser::COLON);
 1681|  3.14k|    antlrcpp::downCast<FieldInitializerListContext *>(_localctx)->cols.push_back(antlrcpp::downCast<FieldInitializerListContext *>(_localctx)->s21);
 1682|  3.14k|    setState(169);
 1683|  3.14k|    antlrcpp::downCast<FieldInitializerListContext *>(_localctx)->exprContext = expr();
 1684|  3.14k|    antlrcpp::downCast<FieldInitializerListContext *>(_localctx)->values.push_back(antlrcpp::downCast<FieldInitializerListContext *>(_localctx)->exprContext);
 1685|  3.14k|    setState(176);
 1686|  3.14k|    _errHandler->sync(this);
 1687|  3.14k|    alt = getInterpreter<atn::ParserATNSimulator>()->adaptivePredict(_input, 24, _ctx);
 1688|  6.71k|    while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) {
  ------------------
  |  Branch (1688:12): [True: 3.56k, False: 3.14k]
  |  Branch (1688:24): [True: 3.56k, False: 0]
  ------------------
 1689|  3.56k|      if (alt == 1) {
  ------------------
  |  Branch (1689:11): [True: 3.56k, False: 0]
  ------------------
 1690|  3.56k|        setState(170);
 1691|  3.56k|        match(CelParser::COMMA);
 1692|  3.56k|        setState(171);
 1693|  3.56k|        antlrcpp::downCast<FieldInitializerListContext *>(_localctx)->identifierToken = match(CelParser::IDENTIFIER);
 1694|  3.56k|        antlrcpp::downCast<FieldInitializerListContext *>(_localctx)->fields.push_back(antlrcpp::downCast<FieldInitializerListContext *>(_localctx)->identifierToken);
 1695|  3.56k|        setState(172);
 1696|  3.56k|        antlrcpp::downCast<FieldInitializerListContext *>(_localctx)->s21 = match(CelParser::COLON);
 1697|  3.56k|        antlrcpp::downCast<FieldInitializerListContext *>(_localctx)->cols.push_back(antlrcpp::downCast<FieldInitializerListContext *>(_localctx)->s21);
 1698|  3.56k|        setState(173);
 1699|  3.56k|        antlrcpp::downCast<FieldInitializerListContext *>(_localctx)->exprContext = expr();
 1700|  3.56k|        antlrcpp::downCast<FieldInitializerListContext *>(_localctx)->values.push_back(antlrcpp::downCast<FieldInitializerListContext *>(_localctx)->exprContext); 
 1701|  3.56k|      }
 1702|  3.56k|      setState(178);
 1703|  3.56k|      _errHandler->sync(this);
 1704|  3.56k|      alt = getInterpreter<atn::ParserATNSimulator>()->adaptivePredict(_input, 24, _ctx);
 1705|  3.56k|    }
 1706|       |   
 1707|  3.14k|  }
 1708|  3.14k|  catch (RecognitionException &e) {
 1709|    251|    _errHandler->reportError(this, e);
 1710|    251|    _localctx->exception = std::current_exception();
 1711|    251|    _errHandler->recover(this, _localctx->exception);
 1712|    251|  }
 1713|       |
 1714|  3.14k|  return _localctx;
 1715|  3.14k|}
_ZN19cel_parser_internal9CelParser25MapInitializerListContextC2EPN6antlr417ParserRuleContextEm:
 1720|   545k|  : ParserRuleContext(parent, invokingState) {
 1721|   545k|}
_ZNK19cel_parser_internal9CelParser25MapInitializerListContext12getRuleIndexEv:
 1748|  1.09M|size_t CelParser::MapInitializerListContext::getRuleIndex() const {
 1749|  1.09M|  return CelParser::RuleMapInitializerList;
 1750|  1.09M|}
_ZN19cel_parser_internal9CelParser18mapInitializerListEv:
 1760|   545k|CelParser::MapInitializerListContext* CelParser::mapInitializerList() {
 1761|   545k|  MapInitializerListContext *_localctx = _tracker.createInstance<MapInitializerListContext>(_ctx, getState());
 1762|   545k|  enterRule(_localctx, 22, CelParser::RuleMapInitializerList);
 1763|       |
 1764|       |#if __cplusplus > 201703L
 1765|       |  auto onExit = finally([=, this] {
 1766|       |#else
 1767|   545k|  auto onExit = finally([=] {
 1768|   545k|#endif
 1769|   545k|    exitRule();
 1770|   545k|  });
 1771|   545k|  try {
 1772|   545k|    size_t alt;
 1773|   545k|    enterOuterAlt(_localctx, 1);
 1774|   545k|    setState(179);
 1775|   545k|    antlrcpp::downCast<MapInitializerListContext *>(_localctx)->exprContext = expr();
 1776|   545k|    antlrcpp::downCast<MapInitializerListContext *>(_localctx)->keys.push_back(antlrcpp::downCast<MapInitializerListContext *>(_localctx)->exprContext);
 1777|   545k|    setState(180);
 1778|   545k|    antlrcpp::downCast<MapInitializerListContext *>(_localctx)->s21 = match(CelParser::COLON);
 1779|   545k|    antlrcpp::downCast<MapInitializerListContext *>(_localctx)->cols.push_back(antlrcpp::downCast<MapInitializerListContext *>(_localctx)->s21);
 1780|   545k|    setState(181);
 1781|   545k|    antlrcpp::downCast<MapInitializerListContext *>(_localctx)->exprContext = expr();
 1782|   545k|    antlrcpp::downCast<MapInitializerListContext *>(_localctx)->values.push_back(antlrcpp::downCast<MapInitializerListContext *>(_localctx)->exprContext);
 1783|   545k|    setState(189);
 1784|   545k|    _errHandler->sync(this);
 1785|   545k|    alt = getInterpreter<atn::ParserATNSimulator>()->adaptivePredict(_input, 25, _ctx);
 1786|   560k|    while (alt != 2 && alt != atn::ATN::INVALID_ALT_NUMBER) {
  ------------------
  |  Branch (1786:12): [True: 15.2k, False: 545k]
  |  Branch (1786:24): [True: 15.2k, False: 0]
  ------------------
 1787|  15.2k|      if (alt == 1) {
  ------------------
  |  Branch (1787:11): [True: 15.2k, False: 0]
  ------------------
 1788|  15.2k|        setState(182);
 1789|  15.2k|        match(CelParser::COMMA);
 1790|  15.2k|        setState(183);
 1791|  15.2k|        antlrcpp::downCast<MapInitializerListContext *>(_localctx)->exprContext = expr();
 1792|  15.2k|        antlrcpp::downCast<MapInitializerListContext *>(_localctx)->keys.push_back(antlrcpp::downCast<MapInitializerListContext *>(_localctx)->exprContext);
 1793|  15.2k|        setState(184);
 1794|  15.2k|        antlrcpp::downCast<MapInitializerListContext *>(_localctx)->s21 = match(CelParser::COLON);
 1795|  15.2k|        antlrcpp::downCast<MapInitializerListContext *>(_localctx)->cols.push_back(antlrcpp::downCast<MapInitializerListContext *>(_localctx)->s21);
 1796|  15.2k|        setState(185);
 1797|  15.2k|        antlrcpp::downCast<MapInitializerListContext *>(_localctx)->exprContext = expr();
 1798|  15.2k|        antlrcpp::downCast<MapInitializerListContext *>(_localctx)->values.push_back(antlrcpp::downCast<MapInitializerListContext *>(_localctx)->exprContext); 
 1799|  15.2k|      }
 1800|  15.2k|      setState(191);
 1801|  15.2k|      _errHandler->sync(this);
 1802|  15.2k|      alt = getInterpreter<atn::ParserATNSimulator>()->adaptivePredict(_input, 25, _ctx);
 1803|  15.2k|    }
 1804|       |   
 1805|   545k|  }
 1806|   545k|  catch (RecognitionException &e) {
 1807|  2.38k|    _errHandler->reportError(this, e);
 1808|  2.38k|    _localctx->exception = std::current_exception();
 1809|  2.38k|    _errHandler->recover(this, _localctx->exception);
 1810|  2.38k|  }
 1811|       |
 1812|   545k|  return _localctx;
 1813|   545k|}
_ZN19cel_parser_internal9CelParser14LiteralContextC2EPN6antlr417ParserRuleContextEm:
 1818|  1.27M|  : ParserRuleContext(parent, invokingState) {
 1819|  1.27M|}
_ZNK19cel_parser_internal9CelParser14LiteralContext12getRuleIndexEv:
 1822|  2.54M|size_t CelParser::LiteralContext::getRuleIndex() const {
 1823|  2.54M|  return CelParser::RuleLiteral;
 1824|  2.54M|}
_ZN19cel_parser_internal9CelParser14LiteralContext8copyFromEPS1_:
 1826|  1.27M|void CelParser::LiteralContext::copyFrom(LiteralContext *ctx) {
 1827|  1.27M|  ParserRuleContext::copyFrom(ctx);
 1828|  1.27M|}
_ZN19cel_parser_internal9CelParser12BytesContextC2EPNS0_14LiteralContextE:
 1836|  4.06k|CelParser::BytesContext::BytesContext(LiteralContext *ctx) { copyFrom(ctx); }
_ZN19cel_parser_internal9CelParser11UintContextC2EPNS0_14LiteralContextE:
 1851|  2.27k|CelParser::UintContext::UintContext(LiteralContext *ctx) { copyFrom(ctx); }
_ZN19cel_parser_internal9CelParser11NullContextC2EPNS0_14LiteralContextE:
 1866|    285|CelParser::NullContext::NullContext(LiteralContext *ctx) { copyFrom(ctx); }
_ZN19cel_parser_internal9CelParser16BoolFalseContextC2EPNS0_14LiteralContextE:
 1881|    584|CelParser::BoolFalseContext::BoolFalseContext(LiteralContext *ctx) { copyFrom(ctx); }
_ZN19cel_parser_internal9CelParser13StringContextC2EPNS0_14LiteralContextE:
 1896|   550k|CelParser::StringContext::StringContext(LiteralContext *ctx) { copyFrom(ctx); }
_ZN19cel_parser_internal9CelParser13DoubleContextC2EPNS0_14LiteralContextE:
 1915|  21.1k|CelParser::DoubleContext::DoubleContext(LiteralContext *ctx) { copyFrom(ctx); }
_ZN19cel_parser_internal9CelParser15BoolTrueContextC2EPNS0_14LiteralContextE:
 1930|    367|CelParser::BoolTrueContext::BoolTrueContext(LiteralContext *ctx) { copyFrom(ctx); }
_ZN19cel_parser_internal9CelParser10IntContextC2EPNS0_14LiteralContextE:
 1949|   692k|CelParser::IntContext::IntContext(LiteralContext *ctx) { copyFrom(ctx); }
_ZN19cel_parser_internal9CelParser7literalEv:
 1958|  1.27M|CelParser::LiteralContext* CelParser::literal() {
 1959|  1.27M|  LiteralContext *_localctx = _tracker.createInstance<LiteralContext>(_ctx, getState());
 1960|  1.27M|  enterRule(_localctx, 24, CelParser::RuleLiteral);
 1961|  1.27M|  size_t _la = 0;
 1962|       |
 1963|       |#if __cplusplus > 201703L
 1964|       |  auto onExit = finally([=, this] {
 1965|       |#else
 1966|  1.27M|  auto onExit = finally([=] {
 1967|  1.27M|#endif
 1968|  1.27M|    exitRule();
 1969|  1.27M|  });
 1970|  1.27M|  try {
 1971|  1.27M|    setState(206);
 1972|  1.27M|    _errHandler->sync(this);
 1973|  1.27M|    switch (getInterpreter<atn::ParserATNSimulator>()->adaptivePredict(_input, 28, _ctx)) {
 1974|   692k|    case 1: {
  ------------------
  |  Branch (1974:5): [True: 692k, False: 579k]
  ------------------
 1975|   692k|      _localctx = _tracker.createInstance<CelParser::IntContext>(_localctx);
 1976|   692k|      enterOuterAlt(_localctx, 1);
 1977|   692k|      setState(193);
 1978|   692k|      _errHandler->sync(this);
 1979|       |
 1980|   692k|      _la = _input->LA(1);
 1981|   692k|      if (_la == CelParser::MINUS) {
  ------------------
  |  Branch (1981:11): [True: 11.7k, False: 681k]
  ------------------
 1982|  11.7k|        setState(192);
 1983|  11.7k|        antlrcpp::downCast<IntContext *>(_localctx)->sign = match(CelParser::MINUS);
 1984|  11.7k|      }
 1985|   692k|      setState(195);
 1986|   692k|      antlrcpp::downCast<IntContext *>(_localctx)->tok = match(CelParser::NUM_INT);
 1987|   692k|      break;
 1988|      0|    }
 1989|       |
 1990|  2.27k|    case 2: {
  ------------------
  |  Branch (1990:5): [True: 2.27k, False: 1.27M]
  ------------------
 1991|  2.27k|      _localctx = _tracker.createInstance<CelParser::UintContext>(_localctx);
 1992|  2.27k|      enterOuterAlt(_localctx, 2);
 1993|  2.27k|      setState(196);
 1994|  2.27k|      antlrcpp::downCast<UintContext *>(_localctx)->tok = match(CelParser::NUM_UINT);
 1995|  2.27k|      break;
 1996|      0|    }
 1997|       |
 1998|  21.1k|    case 3: {
  ------------------
  |  Branch (1998:5): [True: 21.1k, False: 1.25M]
  ------------------
 1999|  21.1k|      _localctx = _tracker.createInstance<CelParser::DoubleContext>(_localctx);
 2000|  21.1k|      enterOuterAlt(_localctx, 3);
 2001|  21.1k|      setState(198);
 2002|  21.1k|      _errHandler->sync(this);
 2003|       |
 2004|  21.1k|      _la = _input->LA(1);
 2005|  21.1k|      if (_la == CelParser::MINUS) {
  ------------------
  |  Branch (2005:11): [True: 1.26k, False: 19.8k]
  ------------------
 2006|  1.26k|        setState(197);
 2007|  1.26k|        antlrcpp::downCast<DoubleContext *>(_localctx)->sign = match(CelParser::MINUS);
 2008|  1.26k|      }
 2009|  21.1k|      setState(200);
 2010|  21.1k|      antlrcpp::downCast<DoubleContext *>(_localctx)->tok = match(CelParser::NUM_FLOAT);
 2011|  21.1k|      break;
 2012|      0|    }
 2013|       |
 2014|   550k|    case 4: {
  ------------------
  |  Branch (2014:5): [True: 550k, False: 722k]
  ------------------
 2015|   550k|      _localctx = _tracker.createInstance<CelParser::StringContext>(_localctx);
 2016|   550k|      enterOuterAlt(_localctx, 4);
 2017|   550k|      setState(201);
 2018|   550k|      antlrcpp::downCast<StringContext *>(_localctx)->tok = match(CelParser::STRING);
 2019|   550k|      break;
 2020|      0|    }
 2021|       |
 2022|  4.06k|    case 5: {
  ------------------
  |  Branch (2022:5): [True: 4.06k, False: 1.26M]
  ------------------
 2023|  4.06k|      _localctx = _tracker.createInstance<CelParser::BytesContext>(_localctx);
 2024|  4.06k|      enterOuterAlt(_localctx, 5);
 2025|  4.06k|      setState(202);
 2026|  4.06k|      antlrcpp::downCast<BytesContext *>(_localctx)->tok = match(CelParser::BYTES);
 2027|  4.06k|      break;
 2028|      0|    }
 2029|       |
 2030|    367|    case 6: {
  ------------------
  |  Branch (2030:5): [True: 367, False: 1.27M]
  ------------------
 2031|    367|      _localctx = _tracker.createInstance<CelParser::BoolTrueContext>(_localctx);
 2032|    367|      enterOuterAlt(_localctx, 6);
 2033|    367|      setState(203);
 2034|    367|      antlrcpp::downCast<BoolTrueContext *>(_localctx)->tok = match(CelParser::CEL_TRUE);
 2035|    367|      break;
 2036|      0|    }
 2037|       |
 2038|    584|    case 7: {
  ------------------
  |  Branch (2038:5): [True: 584, False: 1.27M]
  ------------------
 2039|    584|      _localctx = _tracker.createInstance<CelParser::BoolFalseContext>(_localctx);
 2040|    584|      enterOuterAlt(_localctx, 7);
 2041|    584|      setState(204);
 2042|    584|      antlrcpp::downCast<BoolFalseContext *>(_localctx)->tok = match(CelParser::CEL_FALSE);
 2043|    584|      break;
 2044|      0|    }
 2045|       |
 2046|    285|    case 8: {
  ------------------
  |  Branch (2046:5): [True: 285, False: 1.27M]
  ------------------
 2047|    285|      _localctx = _tracker.createInstance<CelParser::NullContext>(_localctx);
 2048|    285|      enterOuterAlt(_localctx, 8);
 2049|    285|      setState(205);
 2050|    285|      antlrcpp::downCast<NullContext *>(_localctx)->tok = match(CelParser::NUL);
 2051|    285|      break;
 2052|      0|    }
 2053|       |
 2054|      0|    default:
  ------------------
  |  Branch (2054:5): [True: 0, False: 1.27M]
  ------------------
 2055|      0|      break;
 2056|  1.27M|    }
 2057|       |   
 2058|  1.27M|  }
 2059|  1.27M|  catch (RecognitionException &e) {
 2060|    635|    _errHandler->reportError(this, e);
 2061|    635|    _localctx->exception = std::current_exception();
 2062|    635|    _errHandler->recover(this, _localctx->exception);
 2063|    635|  }
 2064|       |
 2065|  1.27M|  return _localctx;
 2066|  1.27M|}
_ZN19cel_parser_internal9CelParser10initializeEv:
 2113|  9.21k|void CelParser::initialize() {
 2114|  9.21k|  std::call_once(celParserOnceFlag, celParserInitialize);
 2115|  9.21k|}
CelParser.cpp:_ZN12_GLOBAL__N_119celParserInitializeEv:
   43|      1|void celParserInitialize() {
   44|      1|  assert(celParserStaticData == nullptr);
   45|      1|  auto staticData = std::make_unique<CelParserStaticData>(
   46|      1|    std::vector<std::string>{
   47|      1|      "start", "expr", "conditionalOr", "conditionalAnd", "relation", "calc", 
   48|      1|      "unary", "member", "primary", "exprList", "fieldInitializerList", 
   49|      1|      "mapInitializerList", "literal"
   50|      1|    },
   51|      1|    std::vector<std::string>{
   52|      1|      "", "'in'", "'=='", "'!='", "'<'", "'<='", "'>='", "'>'", "'&&'", 
   53|      1|      "'||'", "'['", "']'", "'{'", "'}'", "'('", "')'", "'.'", "','", "'-'", 
   54|      1|      "'!'", "'\\u003F'", "':'", "'+'", "'*'", "'/'", "'%'", "'true'", "'false'", 
   55|      1|      "'null'"
   56|      1|    },
   57|      1|    std::vector<std::string>{
   58|      1|      "", "", "EQUALS", "NOT_EQUALS", "LESS", "LESS_EQUALS", "GREATER_EQUALS", 
   59|      1|      "GREATER", "LOGICAL_AND", "LOGICAL_OR", "LBRACKET", "RPRACKET", "LBRACE", 
   60|      1|      "RBRACE", "LPAREN", "RPAREN", "DOT", "COMMA", "MINUS", "EXCLAM", "QUESTIONMARK", 
   61|      1|      "COLON", "PLUS", "STAR", "SLASH", "PERCENT", "CEL_TRUE", "CEL_FALSE", 
   62|      1|      "NUL", "WHITESPACE", "COMMENT", "NUM_FLOAT", "NUM_INT", "NUM_UINT", 
   63|      1|      "STRING", "BYTES", "IDENTIFIER"
   64|      1|    }
   65|      1|  );
   66|      1|  static const int32_t serializedATNSegment[] = {
   67|      1|  	4,1,36,209,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,
   68|      1|  	7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,1,0,1,0,1,0,1,1,1,
   69|      1|  	1,1,1,1,1,1,1,1,1,3,1,36,8,1,1,2,1,2,1,2,5,2,41,8,2,10,2,12,2,44,9,2,
   70|      1|  	1,3,1,3,1,3,5,3,49,8,3,10,3,12,3,52,9,3,1,4,1,4,1,4,1,4,1,4,1,4,5,4,60,
   71|      1|  	8,4,10,4,12,4,63,9,4,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,1,5,5,5,74,8,5,10,
   72|      1|  	5,12,5,77,9,5,1,6,1,6,4,6,81,8,6,11,6,12,6,82,1,6,1,6,4,6,87,8,6,11,6,
   73|      1|  	12,6,88,1,6,3,6,92,8,6,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,3,7,102,8,7,1,
   74|      1|  	7,3,7,105,8,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,1,7,3,7,115,8,7,1,7,3,7,118,
   75|      1|  	8,7,1,7,5,7,121,8,7,10,7,12,7,124,9,7,1,8,3,8,127,8,8,1,8,1,8,1,8,3,8,
   76|      1|  	132,8,8,1,8,3,8,135,8,8,1,8,1,8,1,8,1,8,1,8,1,8,3,8,143,8,8,1,8,3,8,146,
   77|      1|  	8,8,1,8,1,8,1,8,3,8,151,8,8,1,8,3,8,154,8,8,1,8,1,8,3,8,158,8,8,1,9,1,
   78|      1|  	9,1,9,5,9,163,8,9,10,9,12,9,166,9,9,1,10,1,10,1,10,1,10,1,10,1,10,1,10,
   79|      1|  	5,10,175,8,10,10,10,12,10,178,9,10,1,11,1,11,1,11,1,11,1,11,1,11,1,11,
   80|      1|  	1,11,5,11,188,8,11,10,11,12,11,191,9,11,1,12,3,12,194,8,12,1,12,1,12,
   81|      1|  	1,12,3,12,199,8,12,1,12,1,12,1,12,1,12,1,12,1,12,3,12,207,8,12,1,12,0,
   82|      1|  	3,8,10,14,13,0,2,4,6,8,10,12,14,16,18,20,22,24,0,3,1,0,1,7,1,0,23,25,
   83|      1|  	2,0,18,18,22,22,235,0,26,1,0,0,0,2,29,1,0,0,0,4,37,1,0,0,0,6,45,1,0,0,
   84|      1|  	0,8,53,1,0,0,0,10,64,1,0,0,0,12,91,1,0,0,0,14,93,1,0,0,0,16,157,1,0,0,
   85|      1|  	0,18,159,1,0,0,0,20,167,1,0,0,0,22,179,1,0,0,0,24,206,1,0,0,0,26,27,3,
   86|      1|  	2,1,0,27,28,5,0,0,1,28,1,1,0,0,0,29,35,3,4,2,0,30,31,5,20,0,0,31,32,3,
   87|      1|  	4,2,0,32,33,5,21,0,0,33,34,3,2,1,0,34,36,1,0,0,0,35,30,1,0,0,0,35,36,
   88|      1|  	1,0,0,0,36,3,1,0,0,0,37,42,3,6,3,0,38,39,5,9,0,0,39,41,3,6,3,0,40,38,
   89|      1|  	1,0,0,0,41,44,1,0,0,0,42,40,1,0,0,0,42,43,1,0,0,0,43,5,1,0,0,0,44,42,
   90|      1|  	1,0,0,0,45,50,3,8,4,0,46,47,5,8,0,0,47,49,3,8,4,0,48,46,1,0,0,0,49,52,
   91|      1|  	1,0,0,0,50,48,1,0,0,0,50,51,1,0,0,0,51,7,1,0,0,0,52,50,1,0,0,0,53,54,
   92|      1|  	6,4,-1,0,54,55,3,10,5,0,55,61,1,0,0,0,56,57,10,1,0,0,57,58,7,0,0,0,58,
   93|      1|  	60,3,8,4,2,59,56,1,0,0,0,60,63,1,0,0,0,61,59,1,0,0,0,61,62,1,0,0,0,62,
   94|      1|  	9,1,0,0,0,63,61,1,0,0,0,64,65,6,5,-1,0,65,66,3,12,6,0,66,75,1,0,0,0,67,
   95|      1|  	68,10,2,0,0,68,69,7,1,0,0,69,74,3,10,5,3,70,71,10,1,0,0,71,72,7,2,0,0,
   96|      1|  	72,74,3,10,5,2,73,67,1,0,0,0,73,70,1,0,0,0,74,77,1,0,0,0,75,73,1,0,0,
   97|      1|  	0,75,76,1,0,0,0,76,11,1,0,0,0,77,75,1,0,0,0,78,92,3,14,7,0,79,81,5,19,
   98|      1|  	0,0,80,79,1,0,0,0,81,82,1,0,0,0,82,80,1,0,0,0,82,83,1,0,0,0,83,84,1,0,
   99|      1|  	0,0,84,92,3,14,7,0,85,87,5,18,0,0,86,85,1,0,0,0,87,88,1,0,0,0,88,86,1,
  100|      1|  	0,0,0,88,89,1,0,0,0,89,90,1,0,0,0,90,92,3,14,7,0,91,78,1,0,0,0,91,80,
  101|      1|  	1,0,0,0,91,86,1,0,0,0,92,13,1,0,0,0,93,94,6,7,-1,0,94,95,3,16,8,0,95,
  102|      1|  	122,1,0,0,0,96,97,10,3,0,0,97,98,5,16,0,0,98,104,5,36,0,0,99,101,5,14,
  103|      1|  	0,0,100,102,3,18,9,0,101,100,1,0,0,0,101,102,1,0,0,0,102,103,1,0,0,0,
  104|      1|  	103,105,5,15,0,0,104,99,1,0,0,0,104,105,1,0,0,0,105,121,1,0,0,0,106,107,
  105|      1|  	10,2,0,0,107,108,5,10,0,0,108,109,3,2,1,0,109,110,5,11,0,0,110,121,1,
  106|      1|  	0,0,0,111,112,10,1,0,0,112,114,5,12,0,0,113,115,3,20,10,0,114,113,1,0,
  107|      1|  	0,0,114,115,1,0,0,0,115,117,1,0,0,0,116,118,5,17,0,0,117,116,1,0,0,0,
  108|      1|  	117,118,1,0,0,0,118,119,1,0,0,0,119,121,5,13,0,0,120,96,1,0,0,0,120,106,
  109|      1|  	1,0,0,0,120,111,1,0,0,0,121,124,1,0,0,0,122,120,1,0,0,0,122,123,1,0,0,
  110|      1|  	0,123,15,1,0,0,0,124,122,1,0,0,0,125,127,5,16,0,0,126,125,1,0,0,0,126,
  111|      1|  	127,1,0,0,0,127,128,1,0,0,0,128,134,5,36,0,0,129,131,5,14,0,0,130,132,
  112|      1|  	3,18,9,0,131,130,1,0,0,0,131,132,1,0,0,0,132,133,1,0,0,0,133,135,5,15,
  113|      1|  	0,0,134,129,1,0,0,0,134,135,1,0,0,0,135,158,1,0,0,0,136,137,5,14,0,0,
  114|      1|  	137,138,3,2,1,0,138,139,5,15,0,0,139,158,1,0,0,0,140,142,5,10,0,0,141,
  115|      1|  	143,3,18,9,0,142,141,1,0,0,0,142,143,1,0,0,0,143,145,1,0,0,0,144,146,
  116|      1|  	5,17,0,0,145,144,1,0,0,0,145,146,1,0,0,0,146,147,1,0,0,0,147,158,5,11,
  117|      1|  	0,0,148,150,5,12,0,0,149,151,3,22,11,0,150,149,1,0,0,0,150,151,1,0,0,
  118|      1|  	0,151,153,1,0,0,0,152,154,5,17,0,0,153,152,1,0,0,0,153,154,1,0,0,0,154,
  119|      1|  	155,1,0,0,0,155,158,5,13,0,0,156,158,3,24,12,0,157,126,1,0,0,0,157,136,
  120|      1|  	1,0,0,0,157,140,1,0,0,0,157,148,1,0,0,0,157,156,1,0,0,0,158,17,1,0,0,
  121|      1|  	0,159,164,3,2,1,0,160,161,5,17,0,0,161,163,3,2,1,0,162,160,1,0,0,0,163,
  122|      1|  	166,1,0,0,0,164,162,1,0,0,0,164,165,1,0,0,0,165,19,1,0,0,0,166,164,1,
  123|      1|  	0,0,0,167,168,5,36,0,0,168,169,5,21,0,0,169,176,3,2,1,0,170,171,5,17,
  124|      1|  	0,0,171,172,5,36,0,0,172,173,5,21,0,0,173,175,3,2,1,0,174,170,1,0,0,0,
  125|      1|  	175,178,1,0,0,0,176,174,1,0,0,0,176,177,1,0,0,0,177,21,1,0,0,0,178,176,
  126|      1|  	1,0,0,0,179,180,3,2,1,0,180,181,5,21,0,0,181,189,3,2,1,0,182,183,5,17,
  127|      1|  	0,0,183,184,3,2,1,0,184,185,5,21,0,0,185,186,3,2,1,0,186,188,1,0,0,0,
  128|      1|  	187,182,1,0,0,0,188,191,1,0,0,0,189,187,1,0,0,0,189,190,1,0,0,0,190,23,
  129|      1|  	1,0,0,0,191,189,1,0,0,0,192,194,5,18,0,0,193,192,1,0,0,0,193,194,1,0,
  130|      1|  	0,0,194,195,1,0,0,0,195,207,5,32,0,0,196,207,5,33,0,0,197,199,5,18,0,
  131|      1|  	0,198,197,1,0,0,0,198,199,1,0,0,0,199,200,1,0,0,0,200,207,5,31,0,0,201,
  132|      1|  	207,5,34,0,0,202,207,5,35,0,0,203,207,5,26,0,0,204,207,5,27,0,0,205,207,
  133|      1|  	5,28,0,0,206,193,1,0,0,0,206,196,1,0,0,0,206,198,1,0,0,0,206,201,1,0,
  134|      1|  	0,0,206,202,1,0,0,0,206,203,1,0,0,0,206,204,1,0,0,0,206,205,1,0,0,0,207,
  135|      1|  	25,1,0,0,0,29,35,42,50,61,73,75,82,88,91,101,104,114,117,120,122,126,
  136|      1|  	131,134,142,145,150,153,157,164,176,189,193,198,206
  137|      1|  };
  138|      1|  staticData->serializedATN = antlr4::atn::SerializedATNView(serializedATNSegment, sizeof(serializedATNSegment) / sizeof(serializedATNSegment[0]));
  139|       |
  140|      1|  antlr4::atn::ATNDeserializer deserializer;
  141|      1|  staticData->atn = deserializer.deserialize(staticData->serializedATN);
  142|       |
  143|      1|  const size_t count = staticData->atn->getNumberOfDecisions();
  144|      1|  staticData->decisionToDFA.reserve(count);
  145|     30|  for (size_t i = 0; i < count; i++) { 
  ------------------
  |  Branch (145:22): [True: 29, False: 1]
  ------------------
  146|     29|    staticData->decisionToDFA.emplace_back(staticData->atn->getDecisionState(i), i);
  147|     29|  }
  148|      1|  celParserStaticData = staticData.release();
  149|      1|}
CelParser.cpp:_ZN12_GLOBAL__N_119CelParserStaticDataC2ENSt3__16vectorINS1_12basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS6_IS8_EEEESA_SA_:
   23|      1|        vocabulary(this->literalNames, this->symbolicNames) {}
CelParser.cpp:_ZZN19cel_parser_internal9CelParser5startEvENK3$_0clEv:
  219|  9.21k|  auto onExit = finally([=] {
  220|  9.21k|#endif
  221|  9.21k|    exitRule();
  222|  9.21k|  });
CelParser.cpp:_ZZN19cel_parser_internal9CelParser4exprEvENK3$_1clEv:
  287|  2.39M|  auto onExit = finally([=] {
  288|  2.39M|#endif
  289|  2.39M|    exitRule();
  290|  2.39M|  });
CelParser.cpp:_ZZN19cel_parser_internal9CelParser13conditionalOrEvENK3$_2clEv:
  363|  2.39M|  auto onExit = finally([=] {
  364|  2.39M|#endif
  365|  2.39M|    exitRule();
  366|  2.39M|  });
CelParser.cpp:_ZZN19cel_parser_internal9CelParser14conditionalAndEvENK3$_3clEv:
  439|  2.49M|  auto onExit = finally([=] {
  440|  2.49M|#endif
  441|  2.49M|    exitRule();
  442|  2.49M|  });
CelParser.cpp:_ZZN19cel_parser_internal9CelParser8relationEiENK3$_4clEv:
  546|  2.56M|  auto onExit = finally([=] {
  547|  2.56M|#endif
  548|  2.56M|    unrollRecursionContexts(parentContext);
  549|  2.56M|  });
CelParser.cpp:_ZZN19cel_parser_internal9CelParser4calcEiENK3$_5clEv:
  672|  3.20M|  auto onExit = finally([=] {
  673|  3.20M|#endif
  674|  3.20M|    unrollRecursionContexts(parentContext);
  675|  3.20M|  });
CelParser.cpp:_ZZN19cel_parser_internal9CelParser5unaryEvENK3$_6clEv:
  841|  3.20M|  auto onExit = finally([=] {
  842|  3.20M|#endif
  843|  3.20M|    exitRule();
  844|  3.20M|  });
CelParser.cpp:_ZZN19cel_parser_internal9CelParser6memberEiENK3$_7clEv:
 1060|  3.19M|  auto onExit = finally([=] {
 1061|  3.19M|#endif
 1062|  3.19M|    unrollRecursionContexts(parentContext);
 1063|  3.19M|  });
CelParser.cpp:_ZZN19cel_parser_internal9CelParser7primaryEvENK3$_8clEv:
 1346|  3.19M|  auto onExit = finally([=] {
 1347|  3.19M|#endif
 1348|  3.19M|    exitRule();
 1349|  3.19M|  });
CelParser.cpp:_ZZN19cel_parser_internal9CelParser8exprListEvENK3$_9clEv:
 1575|  24.2k|  auto onExit = finally([=] {
 1576|  24.2k|#endif
 1577|  24.2k|    exitRule();
 1578|  24.2k|  });
CelParser.cpp:_ZZN19cel_parser_internal9CelParser20fieldInitializerListEvENK4$_10clEv:
 1669|  3.14k|  auto onExit = finally([=] {
 1670|  3.14k|#endif
 1671|  3.14k|    exitRule();
 1672|  3.14k|  });
CelParser.cpp:_ZZN19cel_parser_internal9CelParser18mapInitializerListEvENK4$_11clEv:
 1767|   545k|  auto onExit = finally([=] {
 1768|   545k|#endif
 1769|   545k|    exitRule();
 1770|   545k|  });
CelParser.cpp:_ZZN19cel_parser_internal9CelParser7literalEvENK4$_12clEv:
 1966|  1.27M|  auto onExit = finally([=] {
 1967|  1.27M|#endif
 1968|  1.27M|    exitRule();
 1969|  1.27M|  });

_ZN19cel_parser_internal9CelParser12UnaryContextC2Ev:
  188|  3.19M|    UnaryContext() = default;
_ZN19cel_parser_internal9CelParser13MemberContextC2Ev:
  238|  3.23M|    MemberContext() = default;
_ZN19cel_parser_internal9CelParser14PrimaryContextC2Ev:
  309|  3.19M|    PrimaryContext() = default;
_ZN19cel_parser_internal9CelParser14LiteralContextC2Ev:
  457|  1.27M|    LiteralContext() = default;

_ZN6google3api4expr6common21ReverseLookupOperatorERKNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEE:
  206|   607k|absl::optional<std::string> ReverseLookupOperator(const std::string& op) {
  207|   607k|  auto rev_ops = ReverseOperators();
  208|   607k|  auto o = rev_ops.find(op);
  209|   607k|  if (o == rev_ops.end()) {
  ------------------
  |  Branch (209:7): [True: 0, False: 607k]
  ------------------
  210|      0|    return absl::optional<std::string>();
  211|      0|  }
  212|   607k|  return o->second;
  213|   607k|}
operators.cc:_ZN6google3api4expr6common12_GLOBAL__N_116ReverseOperatorsEv:
   53|   607k|const std::map<std::string, std::string>& ReverseOperators() {
   54|   607k|  static std::shared_ptr<std::map<std::string, std::string>> operators_map =
   55|   607k|      [&]() {
   56|   607k|        auto c = std::make_shared<std::map<std::string, std::string>>(
   57|   607k|            std::map<std::string, std::string>{
   58|   607k|                {"+", CelOperator::ADD},
   59|   607k|                {"-", CelOperator::SUBTRACT},
   60|   607k|                {"*", CelOperator::MULTIPLY},
   61|   607k|                {"/", CelOperator::DIVIDE},
   62|   607k|                {"%", CelOperator::MODULO},
   63|   607k|                {"==", CelOperator::EQUALS},
   64|   607k|                {"!=", CelOperator::NOT_EQUALS},
   65|   607k|                {">", CelOperator::GREATER},
   66|   607k|                {">=", CelOperator::GREATER_EQUALS},
   67|   607k|                {"<", CelOperator::LESS},
   68|   607k|                {"<=", CelOperator::LESS_EQUALS},
   69|   607k|                {"&&", CelOperator::LOGICAL_AND},
   70|   607k|                {"!", CelOperator::LOGICAL_NOT},
   71|   607k|                {"||", CelOperator::LOGICAL_OR},
   72|   607k|                {"in", CelOperator::IN},
   73|   607k|            });
   74|   607k|        return c;
   75|   607k|      }();
   76|   607k|  return *operators_map;
   77|   607k|}
operators.cc:_ZZN6google3api4expr6common12_GLOBAL__N_116ReverseOperatorsEvENK3$_4clEv:
   55|      1|      [&]() {
   56|      1|        auto c = std::make_shared<std::map<std::string, std::string>>(
   57|      1|            std::map<std::string, std::string>{
   58|      1|                {"+", CelOperator::ADD},
   59|      1|                {"-", CelOperator::SUBTRACT},
   60|      1|                {"*", CelOperator::MULTIPLY},
   61|      1|                {"/", CelOperator::DIVIDE},
   62|      1|                {"%", CelOperator::MODULO},
   63|      1|                {"==", CelOperator::EQUALS},
   64|      1|                {"!=", CelOperator::NOT_EQUALS},
   65|      1|                {">", CelOperator::GREATER},
   66|      1|                {">=", CelOperator::GREATER_EQUALS},
   67|      1|                {"<", CelOperator::LESS},
   68|      1|                {"<=", CelOperator::LESS_EQUALS},
   69|      1|                {"&&", CelOperator::LOGICAL_AND},
   70|      1|                {"!", CelOperator::LOGICAL_NOT},
   71|      1|                {"||", CelOperator::LOGICAL_OR},
   72|      1|                {"in", CelOperator::IN},
   73|      1|            });
   74|      1|        return c;
   75|      1|      }();

_ZN6antlr418ANTLRErrorListenerD2Ev:
    9|  27.6k|{
   10|  27.6k|}

_ZN6antlr418ANTLRErrorStrategyD2Ev:
    9|  18.4k|{
   10|  18.4k|}

_ZN6antlr417BaseErrorListener15reportAmbiguityEPNS_6ParserERKNS_3dfa3DFAEmmbRKN8antlrcpp6BitSetEPNS_3atn12ATNConfigSetE:
   16|  15.1k|  size_t /*stopIndex*/, bool /*exact*/, const antlrcpp::BitSet &/*ambigAlts*/, atn::ATNConfigSet * /*configs*/) {
   17|  15.1k|}
_ZN6antlr417BaseErrorListener27reportAttemptingFullContextEPNS_6ParserERKNS_3dfa3DFAEmmRKN8antlrcpp6BitSetEPNS_3atn12ATNConfigSetE:
   20|  15.1k|  size_t /*stopIndex*/, const antlrcpp::BitSet &/*conflictingAlts*/, atn::ATNConfigSet * /*configs*/) {
   21|  15.1k|}

_ZN6antlr419BufferedTokenStreamC2EPNS_11TokenSourceE:
   18|  9.21k|BufferedTokenStream::BufferedTokenStream(TokenSource *tokenSource) : _tokenSource(tokenSource){
   19|  9.21k|  InitializeInstanceFields();
   20|  9.21k|}
_ZNK6antlr419BufferedTokenStream14getTokenSourceEv:
   22|  12.3k|TokenSource* BufferedTokenStream::getTokenSource() const {
   23|  12.3k|  return _tokenSource;
   24|  12.3k|}
_ZN6antlr419BufferedTokenStream5indexEv:
   26|  19.0M|size_t BufferedTokenStream::index() {
   27|  19.0M|  return _p;
   28|  19.0M|}
_ZN6antlr419BufferedTokenStream4markEv:
   30|  18.2M|ssize_t BufferedTokenStream::mark() {
   31|  18.2M|  return 0;
   32|  18.2M|}
_ZN6antlr419BufferedTokenStream7releaseEl:
   34|  18.2M|void BufferedTokenStream::release(ssize_t /*marker*/) {
   35|       |  // no resources to release
   36|  18.2M|}
_ZN6antlr419BufferedTokenStream4seekEm:
   42|  19.0M|void BufferedTokenStream::seek(size_t index) {
   43|  19.0M|  lazyInit();
   44|  19.0M|  _p = adjustSeekIndex(index);
   45|  19.0M|}
_ZN6antlr419BufferedTokenStream4sizeEv:
   47|  62.4M|size_t BufferedTokenStream::size() {
   48|  62.4M|  return _tokens.size();
   49|  62.4M|}
_ZN6antlr419BufferedTokenStream7consumeEv:
   51|  9.24M|void BufferedTokenStream::consume() {
   52|  9.24M|  bool skipEofCheck = false;
   53|  9.24M|  if (!_needSetup) {
  ------------------
  |  Branch (53:7): [True: 9.24M, False: 0]
  ------------------
   54|  9.24M|    if (_fetchedEOF) {
  ------------------
  |  Branch (54:9): [True: 2.41k, False: 9.24M]
  ------------------
   55|       |      // the last token in tokens is EOF. skip check if p indexes any
   56|       |      // fetched token except the last.
   57|  2.41k|      skipEofCheck = _p < _tokens.size() - 1;
   58|  9.24M|    } else {
   59|       |      // no EOF token in tokens. skip check if p indexes a fetched token.
   60|  9.24M|      skipEofCheck = _p < _tokens.size();
   61|  9.24M|    }
   62|  9.24M|  } else {
   63|       |    // not yet initialized
   64|      0|    skipEofCheck = false;
   65|      0|  }
   66|       |
   67|  9.24M|  if (!skipEofCheck && LA(1) == Token::EOF) {
  ------------------
  |  Branch (67:7): [True: 0, False: 9.24M]
  |  Branch (67:24): [True: 0, False: 0]
  ------------------
   68|      0|    throw IllegalStateException("cannot consume EOF");
   69|      0|  }
   70|       |
   71|  9.24M|  if (sync(_p + 1)) {
  ------------------
  |  Branch (71:7): [True: 9.24M, False: 0]
  ------------------
   72|  9.24M|    _p = adjustSeekIndex(_p + 1);
   73|  9.24M|  }
   74|  9.24M|}
_ZN6antlr419BufferedTokenStream4syncEm:
   76|  71.9M|bool BufferedTokenStream::sync(size_t i) {
   77|  71.9M|  if (i + 1 < _tokens.size())
  ------------------
  |  Branch (77:7): [True: 36.1M, False: 35.8M]
  ------------------
   78|  36.1M|    return true;
   79|  35.8M|  size_t n = i - _tokens.size() + 1; // how many more elements we need?
   80|       |
   81|  35.8M|  if (n > 0) {
  ------------------
  |  Branch (81:7): [True: 7.54M, False: 28.2M]
  ------------------
   82|  7.54M|    size_t fetched = fetch(n);
   83|  7.54M|    return fetched >= n;
   84|  7.54M|  }
   85|       |
   86|  28.2M|  return true;
   87|  35.8M|}
_ZN6antlr419BufferedTokenStream5fetchEm:
   89|  7.54M|size_t BufferedTokenStream::fetch(size_t n) {
   90|  7.54M|  if (_fetchedEOF) {
  ------------------
  |  Branch (90:7): [True: 17.5k, False: 7.52M]
  ------------------
   91|  17.5k|    return 0;
   92|  17.5k|  }
   93|       |
   94|  7.52M|  size_t i = 0;
   95|  15.0M|  while (i < n) {
  ------------------
  |  Branch (95:10): [True: 7.52M, False: 7.51M]
  ------------------
   96|  7.52M|    std::unique_ptr<Token> t(_tokenSource->nextToken());
   97|       |
   98|  7.52M|    if (is<WritableToken *>(t.get())) {
  ------------------
  |  Branch (98:9): [True: 7.52M, False: 0]
  ------------------
   99|  7.52M|      (static_cast<WritableToken *>(t.get()))->setTokenIndex(_tokens.size());
  100|  7.52M|    }
  101|       |
  102|  7.52M|    _tokens.push_back(std::move(t));
  103|  7.52M|    ++i;
  104|       |
  105|  7.52M|    if (_tokens.back()->getType() == Token::EOF) {
  ------------------
  |  Branch (105:9): [True: 9.13k, False: 7.51M]
  ------------------
  106|  9.13k|      _fetchedEOF = true;
  107|  9.13k|      break;
  108|  9.13k|    }
  109|  7.52M|  }
  110|       |
  111|  7.52M|  return i;
  112|  7.54M|}
_ZNK6antlr419BufferedTokenStream3getEm:
  114|  36.8k|Token* BufferedTokenStream::get(size_t i) const {
  115|  36.8k|  if (i >= _tokens.size()) {
  ------------------
  |  Branch (115:7): [True: 0, False: 36.8k]
  ------------------
  116|      0|    throw IndexOutOfBoundsException(std::string("token index ") +
  117|      0|                                    std::to_string(i) +
  118|      0|                                    std::string(" out of range 0..") +
  119|      0|                                    std::to_string(_tokens.size() - 1));
  120|      0|  }
  121|  36.8k|  return _tokens[i].get();
  122|  36.8k|}
_ZN6antlr419BufferedTokenStream2LAEl:
  146|  67.2M|size_t BufferedTokenStream::LA(ssize_t i) {
  147|  67.2M|  return LT(i)->getType();
  148|  67.2M|}
_ZN6antlr419BufferedTokenStream8lazyInitEv:
  180|   159M|void BufferedTokenStream::lazyInit() {
  181|   159M|  if (_needSetup) {
  ------------------
  |  Branch (181:7): [True: 9.21k, False: 159M]
  ------------------
  182|  9.21k|    setup();
  183|  9.21k|  }
  184|   159M|}
_ZN6antlr419BufferedTokenStream5setupEv:
  186|  9.21k|void BufferedTokenStream::setup() {
  187|  9.21k|  _needSetup = false;
  188|  9.21k|  sync(0);
  189|  9.21k|  _p = adjustSeekIndex(0);
  190|  9.21k|}
_ZN6antlr419BufferedTokenStream18nextTokenOnChannelEmm:
  243|  28.3M|ssize_t BufferedTokenStream::nextTokenOnChannel(size_t i, size_t channel) {
  244|  28.3M|  sync(i);
  245|  28.3M|  if (i >= size()) {
  ------------------
  |  Branch (245:7): [True: 0, False: 28.3M]
  ------------------
  246|      0|    return size() - 1;
  247|      0|  }
  248|       |
  249|  28.3M|  Token *token = _tokens[i].get();
  250|  28.5M|  while (token->getChannel() != channel) {
  ------------------
  |  Branch (250:10): [True: 258k, False: 28.3M]
  ------------------
  251|   258k|    if (token->getType() == Token::EOF) {
  ------------------
  |  Branch (251:9): [True: 0, False: 258k]
  ------------------
  252|      0|      return i;
  253|      0|    }
  254|   258k|    i++;
  255|   258k|    sync(i);
  256|   258k|    token = _tokens[i].get();
  257|   258k|  }
  258|  28.3M|  return i;
  259|  28.3M|}
_ZN6antlr419BufferedTokenStream22previousTokenOnChannelEmm:
  261|  34.0M|ssize_t BufferedTokenStream::previousTokenOnChannel(size_t i, size_t channel) {
  262|  34.0M|  sync(i);
  263|  34.0M|  if (i >= size()) {
  ------------------
  |  Branch (263:7): [True: 0, False: 34.0M]
  ------------------
  264|       |    // the EOF token is on every channel
  265|      0|    return size() - 1;
  266|      0|  }
  267|       |
  268|  34.6M|  while (true) {
  ------------------
  |  Branch (268:10): [Folded - Ignored]
  ------------------
  269|  34.6M|    Token *token = _tokens[i].get();
  270|  34.6M|    if (token->getType() == Token::EOF || token->getChannel() == channel) {
  ------------------
  |  Branch (270:9): [True: 0, False: 34.6M]
  |  Branch (270:43): [True: 34.0M, False: 596k]
  ------------------
  271|  34.0M|      return i;
  272|  34.0M|    }
  273|       |
  274|   596k|    if (i == 0)
  ------------------
  |  Branch (274:9): [True: 1.13k, False: 595k]
  ------------------
  275|  1.13k|      return -1;
  276|   595k|    i--;
  277|   595k|  }
  278|      0|  return i;
  279|  34.0M|}
_ZN6antlr419BufferedTokenStream7getTextERKNS_4misc8IntervalE:
  365|  2.55k|std::string BufferedTokenStream::getText(const misc::Interval &interval) {
  366|  2.55k|  lazyInit();
  367|  2.55k|  size_t start = interval.a;
  368|  2.55k|  size_t stop = interval.b;
  369|  2.55k|  if (start == INVALID_INDEX || stop == INVALID_INDEX) {
  ------------------
  |  |   97|  5.11k|#define INVALID_INDEX std::numeric_limits<size_t>::max()
  ------------------
                if (start == INVALID_INDEX || stop == INVALID_INDEX) {
  ------------------
  |  |   97|  2.55k|#define INVALID_INDEX std::numeric_limits<size_t>::max()
  ------------------
  |  Branch (369:7): [True: 0, False: 2.55k]
  |  Branch (369:33): [True: 0, False: 2.55k]
  ------------------
  370|      0|    return "";
  371|      0|  }
  372|  2.55k|  sync(stop);
  373|  2.55k|  if (stop >= _tokens.size()) {
  ------------------
  |  Branch (373:7): [True: 0, False: 2.55k]
  ------------------
  374|      0|    stop = _tokens.size() - 1;
  375|      0|  }
  376|       |
  377|  2.55k|  std::stringstream ss;
  378|  45.2k|  for (size_t i = start; i <= stop; i++) {
  ------------------
  |  Branch (378:26): [True: 43.2k, False: 2.01k]
  ------------------
  379|  43.2k|    Token *t = _tokens[i].get();
  380|  43.2k|    if (t->getType() == Token::EOF) {
  ------------------
  |  Branch (380:9): [True: 539, False: 42.7k]
  ------------------
  381|    539|      break;
  382|    539|    }
  383|  42.7k|    ss << t->getText();
  384|  42.7k|  }
  385|  2.55k|  return ss.str();
  386|  2.55k|}
_ZN6antlr419BufferedTokenStream7getTextEPNS_5TokenES2_:
  392|  2.55k|std::string BufferedTokenStream::getText(Token *start, Token *stop) {
  393|  2.55k|  if (start != nullptr && stop != nullptr) {
  ------------------
  |  Branch (393:7): [True: 2.55k, False: 0]
  |  Branch (393:27): [True: 2.55k, False: 0]
  ------------------
  394|  2.55k|    return getText(misc::Interval(start->getTokenIndex(), stop->getTokenIndex()));
  395|  2.55k|  }
  396|       |
  397|      0|  return "";
  398|  2.55k|}
_ZN6antlr419BufferedTokenStream24InitializeInstanceFieldsEv:
  411|  9.21k|void BufferedTokenStream::InitializeInstanceFields() {
  412|  9.21k|  _needSetup = true;
  413|  9.21k|  _fetchedEOF = false;
  414|  9.21k|}

_ZN6antlr410CharStreamD2Ev:
   10|  9.32k|CharStream::~CharStream() {
   11|  9.32k|}

_ZN6antlr411CommonTokenC2ENSt3__14pairIPNS_11TokenSourceEPNS_10CharStreamEEEmmmm:
   30|  7.53M|CommonToken::CommonToken(std::pair<TokenSource*, CharStream*> source, size_t type, size_t channel, size_t start, size_t stop) {
   31|  7.53M|  InitializeInstanceFields();
   32|  7.53M|  _source = source;
   33|  7.53M|  _type = type;
   34|  7.53M|  _channel = channel;
   35|  7.53M|  _start = start;
   36|  7.53M|  _stop = stop;
   37|  7.53M|  if (_source.first != nullptr) {
  ------------------
  |  Branch (37:7): [True: 7.53M, False: 0]
  ------------------
   38|  7.53M|    _line = static_cast<int>(source.first->getLine());
   39|  7.53M|    _charPositionInLine = source.first->getCharPositionInLine();
   40|  7.53M|  }
   41|  7.53M|}
_ZNK6antlr411CommonToken7getTypeEv:
   70|   123M|size_t CommonToken::getType() const {
   71|   123M|  return _type;
   72|   123M|}
_ZN6antlr411CommonToken7setLineEm:
   74|  7.53M|void CommonToken::setLine(size_t line) {
   75|  7.53M|  _line = line;
   76|  7.53M|}
_ZNK6antlr411CommonToken7getTextEv:
   78|  4.64M|std::string CommonToken::getText() const {
   79|  4.64M|  if (!_text.empty()) {
  ------------------
  |  Branch (79:7): [True: 5.38k, False: 4.63M]
  ------------------
   80|  5.38k|    return _text;
   81|  5.38k|  }
   82|       |
   83|  4.63M|  CharStream *input = getInputStream();
   84|  4.63M|  if (input == nullptr) {
  ------------------
  |  Branch (84:7): [True: 0, False: 4.63M]
  ------------------
   85|      0|    return "";
   86|      0|  }
   87|  4.63M|  size_t n = input->size();
   88|  4.63M|  if (_start < n && _stop < n) {
  ------------------
  |  Branch (88:7): [True: 4.63M, False: 4.72k]
  |  Branch (88:21): [True: 4.63M, False: 0]
  ------------------
   89|  4.63M|    return input->getText(misc::Interval(_start, _stop));
   90|  4.63M|  } else {
   91|  4.72k|    return "<EOF>";
   92|  4.72k|  }
   93|  4.63M|}
_ZN6antlr411CommonToken7setTextERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEE:
   95|  12.3k|void CommonToken::setText(const std::string &text) {
   96|  12.3k|  _text = text;
   97|  12.3k|}
_ZNK6antlr411CommonToken7getLineEv:
   99|  4.29M|size_t CommonToken::getLine() const {
  100|  4.29M|  return _line;
  101|  4.29M|}
_ZNK6antlr411CommonToken21getCharPositionInLineEv:
  103|  4.29M|size_t CommonToken::getCharPositionInLine() const {
  104|  4.29M|  return _charPositionInLine;
  105|  4.29M|}
_ZN6antlr411CommonToken21setCharPositionInLineEm:
  107|  7.53M|void CommonToken::setCharPositionInLine(size_t charPositionInLine) {
  108|  7.53M|  _charPositionInLine = charPositionInLine;
  109|  7.53M|}
_ZNK6antlr411CommonToken10getChannelEv:
  111|  63.2M|size_t CommonToken::getChannel() const {
  112|  63.2M|  return _channel;
  113|  63.2M|}
_ZNK6antlr411CommonToken12getStopIndexEv:
  131|  4.23M|size_t CommonToken::getStopIndex() const {
  132|  4.23M|  return _stop;
  133|  4.23M|}
_ZNK6antlr411CommonToken13getTokenIndexEv:
  139|  18.5k|size_t CommonToken::getTokenIndex() const {
  140|  18.5k|  return _index;
  141|  18.5k|}
_ZN6antlr411CommonToken13setTokenIndexEm:
  143|  7.52M|void CommonToken::setTokenIndex(size_t index) {
  144|  7.52M|  _index = index;
  145|  7.52M|}
_ZNK6antlr411CommonToken14getTokenSourceEv:
  147|  24.6k|antlr4::TokenSource *CommonToken::getTokenSource() const {
  148|  24.6k|  return _source.first;
  149|  24.6k|}
_ZNK6antlr411CommonToken14getInputStreamEv:
  151|  4.63M|antlr4::CharStream *CommonToken::getInputStream() const {
  152|  4.63M|  return _source.second;
  153|  4.63M|}
_ZN6antlr411CommonToken24InitializeInstanceFieldsEv:
  184|  7.53M|void CommonToken::InitializeInstanceFields() {
  185|  7.53M|  _type = 0;
  186|  7.53M|  _line = 0;
  187|  7.53M|  _charPositionInLine = INVALID_INDEX;
  ------------------
  |  |   97|  7.53M|#define INVALID_INDEX std::numeric_limits<size_t>::max()
  ------------------
  188|  7.53M|  _channel = DEFAULT_CHANNEL;
  189|  7.53M|  _index = INVALID_INDEX;
  ------------------
  |  |   97|  7.53M|#define INVALID_INDEX std::numeric_limits<size_t>::max()
  ------------------
  190|  7.53M|  _start = 0;
  191|  7.53M|  _stop = 0;
  192|  7.53M|  _source = EMPTY_SOURCE;
  193|  7.53M|}

_ZN6antlr418CommonTokenFactoryC2Eb:
   16|      2|CommonTokenFactory::CommonTokenFactory(bool copyText_) : copyText(copyText_) {
   17|      2|}
_ZN6antlr418CommonTokenFactoryC2Ev:
   19|      2|CommonTokenFactory::CommonTokenFactory() : CommonTokenFactory(false) {
   20|      2|}
_ZN6antlr418CommonTokenFactory6createENSt3__14pairIPNS_11TokenSourceEPNS_10CharStreamEEEmRKNS1_12basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEmmmmm:
   23|  7.53M|  const std::string &text, size_t channel, size_t start, size_t stop, size_t line, size_t charPositionInLine) {
   24|       |
   25|  7.53M|  std::unique_ptr<CommonToken> t(new CommonToken(source, type, channel, start, stop));
   26|  7.53M|  t->setLine(line);
   27|  7.53M|  t->setCharPositionInLine(charPositionInLine);
   28|  7.53M|  if (text != "") {
  ------------------
  |  Branch (28:7): [True: 12.3k, False: 7.52M]
  ------------------
   29|  12.3k|    t->setText(text);
   30|  7.52M|  } else if (copyText && source.second != nullptr) {
  ------------------
  |  Branch (30:14): [True: 0, False: 7.52M]
  |  Branch (30:26): [True: 0, False: 0]
  ------------------
   31|      0|    t->setText(source.second->getText(misc::Interval(start, stop)));
   32|      0|  }
   33|       |
   34|  7.53M|  return t;
   35|  7.53M|}

_ZN6antlr417CommonTokenStreamC2EPNS_11TokenSourceE:
   12|  9.21k|CommonTokenStream::CommonTokenStream(TokenSource *tokenSource) : CommonTokenStream(tokenSource, Token::DEFAULT_CHANNEL) {
   13|  9.21k|}
_ZN6antlr417CommonTokenStreamC2EPNS_11TokenSourceEm:
   16|  9.21k|: BufferedTokenStream(tokenSource), channel(channel_) {
   17|  9.21k|}
_ZN6antlr417CommonTokenStream15adjustSeekIndexEm:
   19|  28.2M|ssize_t CommonTokenStream::adjustSeekIndex(size_t i) {
   20|  28.2M|  return nextTokenOnChannel(i, channel);
   21|  28.2M|}
_ZN6antlr417CommonTokenStream2LBEm:
   23|  34.1M|Token* CommonTokenStream::LB(size_t k) {
   24|  34.1M|  if (k == 0 || k > _p) {
  ------------------
  |  Branch (24:7): [True: 0, False: 34.1M]
  |  Branch (24:17): [True: 5.48k, False: 34.0M]
  ------------------
   25|  5.48k|    return nullptr;
   26|  5.48k|  }
   27|       |
   28|  34.0M|  ssize_t i = static_cast<ssize_t>(_p);
   29|  34.0M|  size_t n = 1;
   30|       |  // find k good tokens looking backwards
   31|  68.1M|  while (n <= k) {
  ------------------
  |  Branch (31:10): [True: 34.0M, False: 34.0M]
  ------------------
   32|       |    // skip off-channel tokens
   33|  34.0M|    i = previousTokenOnChannel(i - 1, channel);
   34|  34.0M|    n++;
   35|  34.0M|  }
   36|  34.0M|  if (i < 0) {
  ------------------
  |  Branch (36:7): [True: 1.13k, False: 34.0M]
  ------------------
   37|  1.13k|    return nullptr;
   38|  1.13k|  }
   39|       |
   40|  34.0M|  return _tokens[i].get();
   41|  34.0M|}
_ZN6antlr417CommonTokenStream2LTEl:
   43|   140M|Token* CommonTokenStream::LT(ssize_t k) {
   44|   140M|  lazyInit();
   45|   140M|  if (k == 0) {
  ------------------
  |  Branch (45:7): [True: 0, False: 140M]
  ------------------
   46|      0|    return nullptr;
   47|      0|  }
   48|   140M|  if (k < 0) {
  ------------------
  |  Branch (48:7): [True: 34.1M, False: 106M]
  ------------------
   49|  34.1M|    return LB(static_cast<size_t>(-k));
   50|  34.1M|  }
   51|   106M|  size_t i = _p;
   52|   106M|  ssize_t n = 1; // we know tokens[p] is a good one
   53|       |                 // find k good tokens
   54|   106M|  while (n < k) {
  ------------------
  |  Branch (54:10): [True: 53.4k, False: 106M]
  ------------------
   55|       |    // skip off-channel tokens, but make sure to not look past EOF
   56|  53.4k|    if (sync(i + 1)) {
  ------------------
  |  Branch (56:9): [True: 35.9k, False: 17.5k]
  ------------------
   57|  35.9k|      i = nextTokenOnChannel(i + 1, channel);
   58|  35.9k|    }
   59|  53.4k|    n++;
   60|  53.4k|  }
   61|       |
   62|   106M|  return _tokens[i].get();
   63|   140M|}

_ZN6antlr420DefaultErrorStrategyC2Ev:
   28|  18.4k|DefaultErrorStrategy::DefaultErrorStrategy() {
   29|  18.4k|  InitializeInstanceFields();
   30|  18.4k|}
_ZN6antlr420DefaultErrorStrategyD2Ev:
   32|  18.4k|DefaultErrorStrategy::~DefaultErrorStrategy() {
   33|  18.4k|}
_ZN6antlr420DefaultErrorStrategy5resetEPNS_6ParserE:
   35|  9.21k|void DefaultErrorStrategy::reset(Parser *recognizer) {
   36|  9.21k|  _errorSymbols.clear();
   37|  9.21k|  endErrorCondition(recognizer);
   38|  9.21k|}
_ZN6antlr420DefaultErrorStrategy19beginErrorConditionEPNS_6ParserE:
   40|  45.8k|void DefaultErrorStrategy::beginErrorCondition(Parser * /*recognizer*/) {
   41|  45.8k|  errorRecoveryMode = true;
   42|  45.8k|}
_ZN6antlr420DefaultErrorStrategy19inErrorRecoveryModeEPNS_6ParserE:
   44|  39.8M|bool DefaultErrorStrategy::inErrorRecoveryMode(Parser * /*recognizer*/) {
   45|  39.8M|  return errorRecoveryMode;
   46|  39.8M|}
_ZN6antlr420DefaultErrorStrategy17endErrorConditionEPNS_6ParserE:
   48|  7.26M|void DefaultErrorStrategy::endErrorCondition(Parser * /*recognizer*/) {
   49|  7.26M|  errorRecoveryMode = false;
   50|  7.26M|  lastErrorIndex = -1;
   51|  7.26M|}
_ZN6antlr420DefaultErrorStrategy11reportMatchEPNS_6ParserE:
   53|  7.25M|void DefaultErrorStrategy::reportMatch(Parser *recognizer) {
   54|  7.25M|  endErrorCondition(recognizer);
   55|  7.25M|}
_ZN6antlr420DefaultErrorStrategy11reportErrorEPNS_6ParserERKNS_20RecognitionExceptionE:
   57|  33.0k|void DefaultErrorStrategy::reportError(Parser *recognizer, const RecognitionException &e) {
   58|       |  // If we've already reported an error and have not matched a token
   59|       |  // yet successfully, don't report any errors.
   60|  33.0k|  if (inErrorRecoveryMode(recognizer)) {
  ------------------
  |  Branch (60:7): [True: 13.4k, False: 19.5k]
  ------------------
   61|  13.4k|    return; // don't report spurious errors
   62|  13.4k|  }
   63|       |
   64|  19.5k|  beginErrorCondition(recognizer);
   65|  19.5k|  if (is<const NoViableAltException *>(&e)) {
  ------------------
  |  Branch (65:7): [True: 2.55k, False: 16.9k]
  ------------------
   66|  2.55k|    reportNoViableAlternative(recognizer, static_cast<const NoViableAltException &>(e));
   67|  16.9k|  } else if (is<const InputMismatchException *>(&e)) {
  ------------------
  |  Branch (67:14): [True: 16.9k, False: 0]
  ------------------
   68|  16.9k|    reportInputMismatch(recognizer, static_cast<const InputMismatchException &>(e));
   69|  16.9k|  } else if (is<const FailedPredicateException *>(&e)) {
  ------------------
  |  Branch (69:14): [True: 0, False: 0]
  ------------------
   70|      0|    reportFailedPredicate(recognizer, static_cast<const FailedPredicateException &>(e));
   71|      0|  } else if (is<const RecognitionException *>(&e)) {
  ------------------
  |  Branch (71:14): [True: 0, False: 0]
  ------------------
   72|      0|    recognizer->notifyErrorListeners(e.getOffendingToken(), e.what(), std::current_exception());
   73|      0|  }
   74|  19.5k|}
_ZN6antlr420DefaultErrorStrategy7recoverEPNS_6ParserESt13exception_ptr:
   76|  32.6k|void DefaultErrorStrategy::recover(Parser *recognizer, std::exception_ptr /*e*/) {
   77|  32.6k|  if (lastErrorIndex == static_cast<int>(recognizer->getInputStream()->index()) &&
  ------------------
  |  Branch (77:7): [True: 11.1k, False: 21.4k]
  ------------------
   78|  32.6k|      lastErrorStates.contains(recognizer->getState())) {
  ------------------
  |  Branch (78:7): [True: 8.40k, False: 2.77k]
  ------------------
   79|       |
   80|       |    // uh oh, another error at same token index and previously-visited
   81|       |    // state in ATN; must be a case where LT(1) is in the recovery
   82|       |    // token set so nothing got consumed. Consume a single token
   83|       |    // at least to prevent an infinite loop; this is a failsafe.
   84|  8.40k|    recognizer->consume();
   85|  8.40k|  }
   86|  32.6k|  lastErrorIndex = static_cast<int>(recognizer->getInputStream()->index());
   87|  32.6k|  lastErrorStates.add(recognizer->getState());
   88|  32.6k|  misc::IntervalSet followSet = getErrorRecoverySet(recognizer);
   89|  32.6k|  consumeUntil(recognizer, followSet);
   90|  32.6k|}
_ZN6antlr420DefaultErrorStrategy4syncEPNS_6ParserE:
   92|  32.3M|void DefaultErrorStrategy::sync(Parser *recognizer) {
   93|  32.3M|  atn::ATNState *s = recognizer->getInterpreter<atn::ATNSimulator>()->atn.states[recognizer->getState()];
   94|       |
   95|       |  // If already recovering, don't try to sync
   96|  32.3M|  if (inErrorRecoveryMode(recognizer)) {
  ------------------
  |  Branch (96:7): [True: 198k, False: 32.1M]
  ------------------
   97|   198k|    return;
   98|   198k|  }
   99|       |
  100|  32.1M|  TokenStream *tokens = recognizer->getTokenStream();
  101|  32.1M|  size_t la = tokens->LA(1);
  102|       |
  103|       |  // try cheaper subset first; might get lucky. seems to shave a wee bit off
  104|  32.1M|  auto nextTokens = recognizer->getATN().nextTokens(s);
  105|  32.1M|  if (nextTokens.contains(Token::EPSILON) || nextTokens.contains(la)) {
  ------------------
  |  Branch (105:7): [True: 19.7M, False: 12.3M]
  |  Branch (105:46): [True: 12.3M, False: 29.1k]
  ------------------
  106|  32.1M|    return;
  107|  32.1M|  }
  108|       |
  109|  29.1k|  switch (s->getStateType()) {
  110|  24.7k|    case atn::ATNStateType::BLOCK_START:
  ------------------
  |  Branch (110:5): [True: 24.7k, False: 4.43k]
  ------------------
  111|  24.7k|    case atn::ATNStateType::STAR_BLOCK_START:
  ------------------
  |  Branch (111:5): [True: 0, False: 29.1k]
  ------------------
  112|  24.7k|    case atn::ATNStateType::PLUS_BLOCK_START:
  ------------------
  |  Branch (112:5): [True: 0, False: 29.1k]
  ------------------
  113|  24.7k|    case atn::ATNStateType::STAR_LOOP_ENTRY:
  ------------------
  |  Branch (113:5): [True: 0, False: 29.1k]
  ------------------
  114|       |      // report error and recover if possible
  115|  24.7k|      if (singleTokenDeletion(recognizer) != nullptr) {
  ------------------
  |  Branch (115:11): [True: 11.3k, False: 13.4k]
  ------------------
  116|  11.3k|        return;
  117|  11.3k|      }
  118|       |
  119|  13.4k|      throw InputMismatchException(recognizer);
  120|       |
  121|  4.43k|    case atn::ATNStateType::PLUS_LOOP_BACK:
  ------------------
  |  Branch (121:5): [True: 4.43k, False: 24.7k]
  ------------------
  122|  4.43k|    case atn::ATNStateType::STAR_LOOP_BACK: {
  ------------------
  |  Branch (122:5): [True: 0, False: 29.1k]
  ------------------
  123|  4.43k|      reportUnwantedToken(recognizer);
  124|  4.43k|      misc::IntervalSet expecting = recognizer->getExpectedTokens();
  125|  4.43k|      misc::IntervalSet whatFollowsLoopIterationOrRule = expecting.Or(getErrorRecoverySet(recognizer));
  126|  4.43k|      consumeUntil(recognizer, whatFollowsLoopIterationOrRule);
  127|  4.43k|    }
  128|  4.43k|      break;
  129|       |
  130|      0|    default:
  ------------------
  |  Branch (130:5): [True: 0, False: 29.1k]
  ------------------
  131|       |      // do nothing if we can't identify the exact kind of ATN state
  132|      0|      break;
  133|  29.1k|  }
  134|  29.1k|}
_ZN6antlr420DefaultErrorStrategy25reportNoViableAlternativeEPNS_6ParserERKNS_20NoViableAltExceptionE:
  136|  2.55k|void DefaultErrorStrategy::reportNoViableAlternative(Parser *recognizer, const NoViableAltException &e) {
  137|  2.55k|  TokenStream *tokens = recognizer->getTokenStream();
  138|  2.55k|  std::string input;
  139|  2.55k|  if (tokens != nullptr) {
  ------------------
  |  Branch (139:7): [True: 2.55k, False: 0]
  ------------------
  140|  2.55k|    if (e.getStartToken()->getType() == Token::EOF) {
  ------------------
  |  Branch (140:9): [True: 0, False: 2.55k]
  ------------------
  141|      0|      input = "<EOF>";
  142|  2.55k|    } else {
  143|  2.55k|      input = tokens->getText(e.getStartToken(), e.getOffendingToken());
  144|  2.55k|    }
  145|  2.55k|  } else {
  146|      0|    input = "<unknown input>";
  147|      0|  }
  148|  2.55k|  std::string msg = "no viable alternative at input " + escapeWSAndQuote(input);
  149|  2.55k|  recognizer->notifyErrorListeners(e.getOffendingToken(), msg, std::make_exception_ptr(e));
  150|  2.55k|}
_ZN6antlr420DefaultErrorStrategy19reportInputMismatchEPNS_6ParserERKNS_22InputMismatchExceptionE:
  152|  16.9k|void DefaultErrorStrategy::reportInputMismatch(Parser *recognizer, const InputMismatchException &e) {
  153|  16.9k|  std::string msg = "mismatched input " + getTokenErrorDisplay(e.getOffendingToken()) +
  154|  16.9k|  " expecting " + e.getExpectedTokens().toString(recognizer->getVocabulary());
  155|  16.9k|  recognizer->notifyErrorListeners(e.getOffendingToken(), msg, std::make_exception_ptr(e));
  156|  16.9k|}
_ZN6antlr420DefaultErrorStrategy19reportUnwantedTokenEPNS_6ParserE:
  164|  16.8k|void DefaultErrorStrategy::reportUnwantedToken(Parser *recognizer) {
  165|  16.8k|  if (inErrorRecoveryMode(recognizer)) {
  ------------------
  |  Branch (165:7): [True: 35, False: 16.7k]
  ------------------
  166|     35|    return;
  167|     35|  }
  168|       |
  169|  16.7k|  beginErrorCondition(recognizer);
  170|       |
  171|  16.7k|  Token *t = recognizer->getCurrentToken();
  172|  16.7k|  std::string tokenName = getTokenErrorDisplay(t);
  173|  16.7k|  misc::IntervalSet expecting = getExpectedTokens(recognizer);
  174|       |
  175|  16.7k|  std::string msg = "extraneous input " + tokenName + " expecting " + expecting.toString(recognizer->getVocabulary());
  176|  16.7k|  recognizer->notifyErrorListeners(t, msg, nullptr);
  177|  16.7k|}
_ZN6antlr420DefaultErrorStrategy18reportMissingTokenEPNS_6ParserE:
  179|  12.3k|void DefaultErrorStrategy::reportMissingToken(Parser *recognizer) {
  180|  12.3k|  if (inErrorRecoveryMode(recognizer)) {
  ------------------
  |  Branch (180:7): [True: 2.82k, False: 9.50k]
  ------------------
  181|  2.82k|    return;
  182|  2.82k|  }
  183|       |
  184|  9.50k|  beginErrorCondition(recognizer);
  185|       |
  186|  9.50k|  Token *t = recognizer->getCurrentToken();
  187|  9.50k|  misc::IntervalSet expecting = getExpectedTokens(recognizer);
  188|  9.50k|  std::string expectedText = expecting.toString(recognizer->getVocabulary());
  189|  9.50k|  std::string msg = "missing " + expectedText + " at " + getTokenErrorDisplay(t);
  190|       |
  191|  9.50k|  recognizer->notifyErrorListeners(t, msg, nullptr);
  192|  9.50k|}
_ZN6antlr420DefaultErrorStrategy13recoverInlineEPNS_6ParserE:
  194|  28.7k|Token* DefaultErrorStrategy::recoverInline(Parser *recognizer) {
  195|       |  // Single token deletion.
  196|  28.7k|  Token *matchedSymbol = singleTokenDeletion(recognizer);
  197|  28.7k|  if (matchedSymbol) {
  ------------------
  |  Branch (197:7): [True: 1.05k, False: 27.6k]
  ------------------
  198|       |    // We have deleted the extra token.
  199|       |    // Now, move past ttype token as if all were ok.
  200|  1.05k|    recognizer->consume();
  201|  1.05k|    return matchedSymbol;
  202|  1.05k|  }
  203|       |
  204|       |  // Single token insertion.
  205|  27.6k|  if (singleTokenInsertion(recognizer)) {
  ------------------
  |  Branch (205:7): [True: 12.3k, False: 15.3k]
  ------------------
  206|  12.3k|    return getMissingSymbol(recognizer);
  207|  12.3k|  }
  208|       |
  209|       |  // Even that didn't work; must throw the exception.
  210|  15.3k|  throw InputMismatchException(recognizer);
  211|  27.6k|}
_ZN6antlr420DefaultErrorStrategy20singleTokenInsertionEPNS_6ParserE:
  213|  27.6k|bool DefaultErrorStrategy::singleTokenInsertion(Parser *recognizer) {
  214|  27.6k|  ssize_t currentSymbolType = recognizer->getInputStream()->LA(1);
  215|       |
  216|       |  // if current token is consistent with what could come after current
  217|       |  // ATN state, then we know we're missing a token; error recovery
  218|       |  // is free to conjure up and insert the missing token
  219|  27.6k|  atn::ATNState *currentState = recognizer->getInterpreter<atn::ATNSimulator>()->atn.states[recognizer->getState()];
  220|  27.6k|  atn::ATNState *next = currentState->transitions[0]->target;
  221|  27.6k|  const atn::ATN &atn = recognizer->getInterpreter<atn::ATNSimulator>()->atn;
  222|  27.6k|  misc::IntervalSet expectingAtLL2 = atn.nextTokens(next, recognizer->getContext());
  223|  27.6k|  if (expectingAtLL2.contains(currentSymbolType)) {
  ------------------
  |  Branch (223:7): [True: 12.3k, False: 15.3k]
  ------------------
  224|  12.3k|    reportMissingToken(recognizer);
  225|  12.3k|    return true;
  226|  12.3k|  }
  227|  15.3k|  return false;
  228|  27.6k|}
_ZN6antlr420DefaultErrorStrategy19singleTokenDeletionEPNS_6ParserE:
  230|  53.4k|Token* DefaultErrorStrategy::singleTokenDeletion(Parser *recognizer) {
  231|  53.4k|  size_t nextTokenType = recognizer->getInputStream()->LA(2);
  232|  53.4k|  misc::IntervalSet expecting = getExpectedTokens(recognizer);
  233|  53.4k|  if (expecting.contains(nextTokenType)) {
  ------------------
  |  Branch (233:7): [True: 12.3k, False: 41.1k]
  ------------------
  234|  12.3k|    reportUnwantedToken(recognizer);
  235|  12.3k|    recognizer->consume(); // simply delete extra token
  236|       |                           // we want to return the token we're actually matching
  237|  12.3k|    Token *matchedSymbol = recognizer->getCurrentToken();
  238|  12.3k|    reportMatch(recognizer); // we know current token is correct
  239|  12.3k|    return matchedSymbol;
  240|  12.3k|  }
  241|  41.1k|  return nullptr;
  242|  53.4k|}
_ZN6antlr420DefaultErrorStrategy16getMissingSymbolEPNS_6ParserE:
  244|  12.3k|Token* DefaultErrorStrategy::getMissingSymbol(Parser *recognizer) {
  245|  12.3k|  Token *currentSymbol = recognizer->getCurrentToken();
  246|  12.3k|  misc::IntervalSet expecting = getExpectedTokens(recognizer);
  247|  12.3k|  size_t expectedTokenType = expecting.getMinElement(); // get any element
  248|  12.3k|  std::string tokenText;
  249|  12.3k|  if (expectedTokenType == Token::EOF) {
  ------------------
  |  Branch (249:7): [True: 0, False: 12.3k]
  ------------------
  250|      0|    tokenText = "<missing EOF>";
  251|  12.3k|  } else {
  252|  12.3k|    tokenText = "<missing " + recognizer->getVocabulary().getDisplayName(expectedTokenType) + ">";
  253|  12.3k|  }
  254|  12.3k|  Token *current = currentSymbol;
  255|  12.3k|  Token *lookback = recognizer->getTokenStream()->LT(-1);
  256|  12.3k|  if (current->getType() == Token::EOF && lookback != nullptr) {
  ------------------
  |  Branch (256:7): [True: 2.01k, False: 10.3k]
  |  Branch (256:43): [True: 2.01k, False: 0]
  ------------------
  257|  2.01k|    current = lookback;
  258|  2.01k|  }
  259|       |
  260|  12.3k|  _errorSymbols.push_back(recognizer->getTokenFactory()->create(
  261|  12.3k|    { current->getTokenSource(), current->getTokenSource()->getInputStream() },
  262|  12.3k|    expectedTokenType, tokenText, Token::DEFAULT_CHANNEL, INVALID_INDEX, INVALID_INDEX,
  ------------------
  |  |   97|  12.3k|#define INVALID_INDEX std::numeric_limits<size_t>::max()
  ------------------
                  expectedTokenType, tokenText, Token::DEFAULT_CHANNEL, INVALID_INDEX, INVALID_INDEX,
  ------------------
  |  |   97|  12.3k|#define INVALID_INDEX std::numeric_limits<size_t>::max()
  ------------------
  263|  12.3k|    current->getLine(), current->getCharPositionInLine()));
  264|       |
  265|  12.3k|  return _errorSymbols.back().get();
  266|  12.3k|}
_ZN6antlr420DefaultErrorStrategy17getExpectedTokensEPNS_6ParserE:
  268|  92.0k|misc::IntervalSet DefaultErrorStrategy::getExpectedTokens(Parser *recognizer) {
  269|  92.0k|  return recognizer->getExpectedTokens();
  270|  92.0k|}
_ZN6antlr420DefaultErrorStrategy20getTokenErrorDisplayEPNS_5TokenE:
  272|  43.2k|std::string DefaultErrorStrategy::getTokenErrorDisplay(Token *t) {
  273|  43.2k|  if (t == nullptr) {
  ------------------
  |  Branch (273:7): [True: 0, False: 43.2k]
  ------------------
  274|      0|    return "<no Token>";
  275|      0|  }
  276|  43.2k|  std::string s = getSymbolText(t);
  277|  43.2k|  if (s == "") {
  ------------------
  |  Branch (277:7): [True: 0, False: 43.2k]
  ------------------
  278|      0|    if (getSymbolType(t) == Token::EOF) {
  ------------------
  |  Branch (278:9): [True: 0, False: 0]
  ------------------
  279|      0|      s = "<EOF>";
  280|      0|    } else {
  281|      0|      s = "<" + std::to_string(getSymbolType(t)) + ">";
  282|      0|    }
  283|      0|  }
  284|  43.2k|  return escapeWSAndQuote(s);
  285|  43.2k|}
_ZN6antlr420DefaultErrorStrategy13getSymbolTextEPNS_5TokenE:
  287|  43.2k|std::string DefaultErrorStrategy::getSymbolText(Token *symbol) {
  288|  43.2k|  return symbol->getText();
  289|  43.2k|}
_ZN6antlr420DefaultErrorStrategy19getErrorRecoverySetEPNS_6ParserE:
  305|  37.0k|misc::IntervalSet DefaultErrorStrategy::getErrorRecoverySet(Parser *recognizer) {
  306|  37.0k|  const atn::ATN &atn = recognizer->getInterpreter<atn::ATNSimulator>()->atn;
  307|  37.0k|  RuleContext *ctx = recognizer->getContext();
  308|  37.0k|  misc::IntervalSet recoverSet;
  309|  3.76M|  while (ctx->invokingState != ATNState::INVALID_STATE_NUMBER) {
  ------------------
  |  Branch (309:10): [True: 3.73M, False: 37.0k]
  ------------------
  310|       |    // compute what follows who invoked us
  311|  3.73M|    atn::ATNState *invokingState = atn.states[ctx->invokingState];
  312|  3.73M|    const atn::RuleTransition *rt = downCast<const atn::RuleTransition*>(invokingState->transitions[0].get());
  313|  3.73M|    misc::IntervalSet follow = atn.nextTokens(rt->followState);
  314|  3.73M|    recoverSet.addAll(follow);
  315|       |
  316|  3.73M|    if (ctx->parent == nullptr)
  ------------------
  |  Branch (316:9): [True: 0, False: 3.73M]
  ------------------
  317|      0|      break;
  318|  3.73M|    ctx = static_cast<RuleContext *>(ctx->parent);
  319|  3.73M|  }
  320|  37.0k|  recoverSet.remove(Token::EPSILON);
  321|       |
  322|  37.0k|  return recoverSet;
  323|  37.0k|}
_ZN6antlr420DefaultErrorStrategy24InitializeInstanceFieldsEv:
  333|  18.4k|void DefaultErrorStrategy::InitializeInstanceFields() {
  334|  18.4k|  errorRecoveryMode = false;
  335|  18.4k|  lastErrorIndex = -1;
  336|  18.4k|}

_ZN6antlr416RuntimeExceptionC2ERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEE:
   10|  1.99M|RuntimeException::RuntimeException(const std::string &msg) : std::exception(), _message(msg) {
   11|  1.99M|}
_ZNK6antlr416RuntimeException4whatEv:
   13|      1|const char* RuntimeException::what() const noexcept {
   14|      1|  return _message.c_str();
   15|      1|}
_ZN6antlr421IllegalStateExceptionD2Ev:
   28|    623|IllegalStateException::~IllegalStateException() {
   29|    623|}

_ZN6antlr421IllegalStateExceptionC2ERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEE:
   24|    623|    IllegalStateException(const std::string &msg = "") : RuntimeException(msg) {}
_ZN6antlr421CancellationExceptionC2ERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEE:
   85|    623|    CancellationException(const std::string &msg = "") : IllegalStateException(msg) {}
_ZN6antlr426ParseCancellationExceptionC2ERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEE:
   93|    623|    ParseCancellationException(const std::string &msg = "") : CancellationException(msg) {}

_ZN6antlr422InputMismatchExceptionC2EPNS_6ParserE:
   14|  28.7k|                         recognizer->getCurrentToken()) {
   15|  28.7k|}
_ZN6antlr422InputMismatchExceptionD2Ev:
   17|  62.7k|InputMismatchException::~InputMismatchException() {
   18|  62.7k|}

_ZN6antlr422InputMismatchExceptionC2ERKS0_:
   19|  33.9k|    InputMismatchException(InputMismatchException const&) = default;

_ZN6antlr49IntStreamD2Ev:
   12|  18.5k|IntStream::~IntStream() = default;

_ZN6antlr45LexerC2EPNS_10CharStreamE:
   27|  9.21k|Lexer::Lexer(CharStream *input) : Recognizer(), _input(input) {
   28|  9.21k|  InitializeInstanceFields();
   29|  9.21k|}
_ZN6antlr45Lexer9nextTokenEv:
   52|  7.52M|std::unique_ptr<Token> Lexer::nextToken() {
   53|       |  // Mark start location in char stream so unbuffered streams are
   54|       |  // guaranteed at least have text of current token
   55|  7.52M|  ssize_t tokenStartMarker = _input->mark();
   56|       |
   57|  7.52M|  auto onExit = finally([this, tokenStartMarker]{
   58|       |    // make sure we release marker after match or
   59|       |    // unbuffered char stream will keep buffering
   60|  7.52M|    _input->release(tokenStartMarker);
   61|  7.52M|  });
   62|       |
   63|  7.52M|  while (true) {
  ------------------
  |  Branch (63:10): [Folded - Ignored]
  ------------------
   64|  9.45M|  outerContinue:
   65|  9.45M|    if (hitEOF) {
  ------------------
  |  Branch (65:9): [True: 9.13k, False: 9.44M]
  ------------------
   66|  9.13k|      emitEOF();
   67|  9.13k|      return std::move(token);
   68|  9.13k|    }
   69|       |
   70|  9.44M|    token.reset();
   71|  9.44M|    channel = Token::DEFAULT_CHANNEL;
   72|  9.44M|    tokenStartCharIndex = _input->index();
   73|  9.44M|    tokenStartCharPositionInLine = getInterpreter<atn::LexerATNSimulator>()->getCharPositionInLine();
   74|  9.44M|    tokenStartLine = getInterpreter<atn::LexerATNSimulator>()->getLine();
   75|  9.44M|    _text = "";
   76|  9.44M|    do {
   77|  9.44M|      type = Token::INVALID_TYPE;
   78|  9.44M|      size_t ttype;
   79|  9.44M|      try {
   80|  9.44M|        ttype = getInterpreter<atn::LexerATNSimulator>()->match(_input, mode);
   81|  9.44M|      } catch (LexerNoViableAltException &e) {
   82|  1.92M|        notifyListeners(e); // report error
   83|  1.92M|        recover(e);
   84|  1.92M|        ttype = SKIP;
   85|  1.92M|      }
   86|  9.44M|      if (_input->LA(1) == EOF) {
  ------------------
  |  Branch (86:11): [True: 9.13k, False: 9.43M]
  ------------------
   87|  9.13k|        hitEOF = true;
   88|  9.13k|      }
   89|  9.44M|      if (type == Token::INVALID_TYPE) {
  ------------------
  |  Branch (89:11): [True: 9.44M, False: 0]
  ------------------
   90|  9.44M|        type = ttype;
   91|  9.44M|      }
   92|  9.44M|      if (type == SKIP) {
  ------------------
  |  Branch (92:11): [True: 1.92M, False: 7.51M]
  ------------------
   93|  1.92M|        goto outerContinue;
   94|  1.92M|      }
   95|  9.44M|    } while (type == MORE);
  ------------------
  |  Branch (95:14): [True: 0, False: 7.51M]
  ------------------
   96|  7.51M|    if (token == nullptr) {
  ------------------
  |  Branch (96:9): [True: 7.51M, False: 0]
  ------------------
   97|  7.51M|      emit();
   98|  7.51M|    }
   99|  7.51M|    return std::move(token);
  100|  9.44M|  }
  101|  7.52M|}
_ZN6antlr45Lexer15getTokenFactoryEv:
  138|  12.3k|TokenFactory<CommonToken>* Lexer::getTokenFactory() {
  139|  12.3k|  return _factory;
  140|  12.3k|}
_ZN6antlr45Lexer14getInputStreamEv:
  151|  12.3k|CharStream* Lexer::getInputStream() {
  152|  12.3k|  return _input;
  153|  12.3k|}
_ZN6antlr45Lexer4emitENSt3__110unique_ptrINS_5TokenENS1_14default_deleteIS3_EEEE:
  155|  7.52M|void Lexer::emit(std::unique_ptr<Token> newToken) {
  156|  7.52M|  token = std::move(newToken);
  157|  7.52M|}
_ZN6antlr45Lexer4emitEv:
  159|  7.51M|Token* Lexer::emit() {
  160|  7.51M|  emit(_factory->create({ this, _input }, type, _text, channel,
  161|  7.51M|    tokenStartCharIndex, getCharIndex() - 1, tokenStartLine, tokenStartCharPositionInLine));
  162|  7.51M|  return token.get();
  163|  7.51M|}
_ZN6antlr45Lexer7emitEOFEv:
  165|  9.13k|Token* Lexer::emitEOF() {
  166|  9.13k|  size_t cpos = getCharPositionInLine();
  167|  9.13k|  size_t line = getLine();
  168|  9.13k|  emit(_factory->create({ this, _input }, EOF, "", Token::DEFAULT_CHANNEL, _input->index(), _input->index() - 1, line, cpos));
  169|  9.13k|  return token.get();
  170|  9.13k|}
_ZNK6antlr45Lexer7getLineEv:
  172|  7.54M|size_t Lexer::getLine() const {
  173|  7.54M|  return getInterpreter<atn::LexerATNSimulator>()->getLine();
  174|  7.54M|}
_ZN6antlr45Lexer21getCharPositionInLineEv:
  176|  7.54M|size_t Lexer::getCharPositionInLine() {
  177|  7.54M|  return getInterpreter<atn::LexerATNSimulator>()->getCharPositionInLine();
  178|  7.54M|}
_ZN6antlr45Lexer12getCharIndexEv:
  188|  7.51M|size_t Lexer::getCharIndex() {
  189|  7.51M|  return _input->index();
  190|  7.51M|}
_ZN6antlr45Lexer10setChannelEm:
  219|   147k|void Lexer::setChannel(size_t newChannel) {
  220|   147k|  channel = newChannel;
  221|   147k|}
_ZN6antlr45Lexer7recoverERKNS_25LexerNoViableAltExceptionE:
  237|  1.92M|void Lexer::recover(const LexerNoViableAltException &/*e*/) {
  238|  1.92M|  if (_input->LA(1) != EOF) {
  ------------------
  |  Branch (238:7): [True: 1.92M, False: 571]
  ------------------
  239|       |    // skip a char and try again
  240|  1.92M|    getInterpreter<atn::LexerATNSimulator>()->consume(_input);
  241|  1.92M|  }
  242|  1.92M|}
_ZN6antlr45Lexer15notifyListenersERKNS_25LexerNoViableAltExceptionE:
  244|  1.92M|void Lexer::notifyListeners(const LexerNoViableAltException & /*e*/) {
  245|  1.92M|  ++_syntaxErrors;
  246|  1.92M|  std::string text = _input->getText(misc::Interval(tokenStartCharIndex, _input->index()));
  247|  1.92M|  std::string msg = std::string("token recognition error at: '") + getErrorDisplay(text) + std::string("'");
  248|       |
  249|  1.92M|  ProxyErrorListener &listener = getErrorListenerDispatch();
  250|  1.92M|  listener.syntaxError(this, nullptr, tokenStartLine, tokenStartCharPositionInLine, msg, std::current_exception());
  251|  1.92M|}
_ZN6antlr45Lexer15getErrorDisplayERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEE:
  253|  1.92M|std::string Lexer::getErrorDisplay(const std::string &s) {
  254|  1.92M|  std::stringstream ss;
  255|  2.68M|  for (auto c : s) {
  ------------------
  |  Branch (255:15): [True: 2.68M, False: 1.92M]
  ------------------
  256|  2.68M|    switch (c) {
  257|  1.37k|    case '\n':
  ------------------
  |  Branch (257:5): [True: 1.37k, False: 2.68M]
  ------------------
  258|  1.37k|      ss << "\\n";
  259|  1.37k|      break;
  260|  9.97k|    case '\t':
  ------------------
  |  Branch (260:5): [True: 9.97k, False: 2.67M]
  ------------------
  261|  9.97k|      ss << "\\t";
  262|  9.97k|      break;
  263|    793|    case '\r':
  ------------------
  |  Branch (263:5): [True: 793, False: 2.68M]
  ------------------
  264|    793|      ss << "\\r";
  265|    793|      break;
  266|  2.67M|    default:
  ------------------
  |  Branch (266:5): [True: 2.67M, False: 12.1k]
  ------------------
  267|  2.67M|      ss << c;
  268|  2.67M|      break;
  269|  2.68M|    }
  270|  2.68M|  }
  271|  1.92M|  return ss.str();
  272|  1.92M|}
_ZN6antlr45Lexer24InitializeInstanceFieldsEv:
  283|  9.21k|void Lexer::InitializeInstanceFields() {
  284|  9.21k|  _syntaxErrors = 0;
  285|  9.21k|  token = nullptr;
  286|  9.21k|  _factory = CommonTokenFactory::DEFAULT.get();
  287|  9.21k|  tokenStartCharIndex = INVALID_INDEX;
  288|  9.21k|  tokenStartLine = 0;
  289|  9.21k|  tokenStartCharPositionInLine = 0;
  290|  9.21k|  hitEOF = false;
  291|  9.21k|  channel = 0;
  292|  9.21k|  type = 0;
  293|  9.21k|  mode = Lexer::DEFAULT_MODE;
  294|  9.21k|}
Lexer.cpp:_ZZN6antlr45Lexer9nextTokenEvENK3$_0clEv:
   57|  7.52M|  auto onExit = finally([this, tokenStartMarker]{
   58|       |    // make sure we release marker after match or
   59|       |    // unbuffered char stream will keep buffering
   60|  7.52M|    _input->release(tokenStartMarker);
   61|  7.52M|  });

_ZN6antlr45LexerD2Ev:
   80|  9.21k|    virtual ~Lexer() {}

_ZN6antlr425LexerNoViableAltExceptionC2EPNS_5LexerEPNS_10CharStreamEmPNS_3atn12ATNConfigSetE:
   17|  1.92M|  : RecognitionException(lexer, input, nullptr, nullptr), _startIndex(startIndex), _deadEndConfigs(deadEndConfigs) {
   18|  1.92M|}

_ZN6antlr420NoViableAltExceptionC2EPNS_6ParserE:
   28|  1.66k|                         recognizer->getCurrentToken(), nullptr, recognizer->getContext(), false) {
   29|  1.66k|}
_ZN6antlr420NoViableAltExceptionC2EPNS_6ParserEPNS_11TokenStreamEPNS_5TokenES6_PNS_3atn12ATNConfigSetEPNS_17ParserRuleContextEb:
   34|  38.4k|    _deadEndConfigs(buildConfigsRef(deadEndConfigs, deleteConfigs)), _startToken(startToken) {
   35|  38.4k|}
_ZN6antlr420NoViableAltExceptionD2Ev:
   37|  46.1k|NoViableAltException::~NoViableAltException() {
   38|  46.1k|}
_ZNK6antlr420NoViableAltException13getStartTokenEv:
   40|  5.11k|Token* NoViableAltException::getStartToken() const {
   41|  5.11k|  return _startToken;
   42|  5.11k|}
NoViableAltException.cpp:_ZN12_GLOBAL__N_115buildConfigsRefEPN6antlr43atn12ATNConfigSetEb:
   16|  38.4k|Ref<atn::ATNConfigSet> buildConfigsRef(atn::ATNConfigSet *configs, bool deleteConfigs) {
   17|  38.4k|  if (deleteConfigs) {
  ------------------
  |  Branch (17:7): [True: 0, False: 38.4k]
  ------------------
   18|      0|    return Ref<atn::ATNConfigSet>(configs);
   19|  38.4k|  } else {
   20|  38.4k|    return Ref<atn::ATNConfigSet>(configs, [](atn::ATNConfigSet *){});
   21|  38.4k|  }
   22|  38.4k|}
NoViableAltException.cpp:_ZZN12_GLOBAL__N_115buildConfigsRefEPN6antlr43atn12ATNConfigSetEbENK3$_0clES3_:
   20|  38.4k|    return Ref<atn::ATNConfigSet>(configs, [](atn::ATNConfigSet *){});

_ZN6antlr46ParserC2EPNS_11TokenStreamE:
   93|  9.21k|Parser::Parser(TokenStream *input) {
   94|  9.21k|  InitializeInstanceFields();
   95|  9.21k|  setInputStream(input);
   96|  9.21k|}
_ZN6antlr46ParserD2Ev:
   98|  9.21k|Parser::~Parser() {
   99|  9.21k|  _tracker.reset();
  100|  9.21k|  delete _tracer;
  101|  9.21k|}
_ZN6antlr46Parser5resetEv:
  103|  9.21k|void Parser::reset() {
  104|  9.21k|  if (getInputStream() != nullptr) {
  ------------------
  |  Branch (104:7): [True: 0, False: 9.21k]
  ------------------
  105|      0|    getInputStream()->seek(0);
  106|      0|  }
  107|  9.21k|  _errHandler->reset(this); // Watch out, this is not shared_ptr.reset().
  108|       |
  109|  9.21k|  _matchedEOF = false;
  110|  9.21k|  _syntaxErrors = 0;
  111|  9.21k|  setTrace(false);
  112|  9.21k|  _precedenceStack.clear();
  113|  9.21k|  _precedenceStack.push_back(0);
  114|  9.21k|  _ctx = nullptr;
  115|  9.21k|  _tracker.reset();
  116|       |
  117|  9.21k|  atn::ATNSimulator *interpreter = getInterpreter<atn::ParserATNSimulator>();
  118|  9.21k|  if (interpreter != nullptr) {
  ------------------
  |  Branch (118:7): [True: 0, False: 9.21k]
  ------------------
  119|      0|    interpreter->reset();
  120|      0|  }
  121|  9.21k|}
_ZN6antlr46Parser5matchEm:
  123|  6.61M|Token* Parser::match(size_t ttype) {
  124|  6.61M|  Token *t = getCurrentToken();
  125|  6.61M|  if (t->getType() == ttype) {
  ------------------
  |  Branch (125:7): [True: 6.58M, False: 28.9k]
  ------------------
  126|  6.58M|    if (ttype == EOF) {
  ------------------
  |  Branch (126:9): [True: 7.85k, False: 6.57M]
  ------------------
  127|  7.85k|      _matchedEOF = true;
  128|  7.85k|    }
  129|  6.58M|    _errHandler->reportMatch(this);
  130|  6.58M|    consume();
  131|  6.58M|  } else {
  132|  28.9k|    t = _errHandler->recoverInline(this);
  133|  28.9k|    if (_buildParseTrees && t->getTokenIndex() == INVALID_INDEX) {
  ------------------
  |  Branch (133:9): [True: 13.3k, False: 15.5k]
  |  Branch (133:29): [True: 12.3k, False: 1.05k]
  ------------------
  134|       |      // we must have conjured up a new token during single token insertion
  135|       |      // if it's not the current symbol
  136|  12.3k|      _ctx->addChild(createErrorNode(t));
  137|  12.3k|    }
  138|  28.9k|  }
  139|  6.61M|  return t;
  140|  6.61M|}
_ZN6antlr46Parser16addParseListenerEPNS_4tree17ParseTreeListenerE:
  186|  9.21k|void Parser::addParseListener(tree::ParseTreeListener *listener) {
  187|  9.21k|  if (!listener) {
  ------------------
  |  Branch (187:7): [True: 0, False: 9.21k]
  ------------------
  188|      0|    throw NullPointerException("listener");
  189|      0|  }
  190|       |
  191|  9.21k|  this->_parseListeners.push_back(listener);
  192|  9.21k|}
_ZN6antlr46Parser21triggerEnterRuleEventEv:
  207|  25.1M|void Parser::triggerEnterRuleEvent() {
  208|  25.1M|  for (auto *listener : _parseListeners) {
  ------------------
  |  Branch (208:23): [True: 25.1M, False: 25.1M]
  ------------------
  209|  25.1M|    listener->enterEveryRule(_ctx);
  210|  25.1M|    _ctx->enterRule(listener);
  211|  25.1M|  }
  212|  25.1M|}
_ZN6antlr46Parser20triggerExitRuleEventEv:
  214|  25.1M|void Parser::triggerExitRuleEvent() {
  215|       |  // reverse order walk of listeners
  216|  50.3M|  for (auto it = _parseListeners.rbegin(); it != _parseListeners.rend(); ++it) {
  ------------------
  |  Branch (216:44): [True: 25.1M, False: 25.1M]
  ------------------
  217|  25.1M|    _ctx->exitRule(*it);
  218|  25.1M|    (*it)->exitEveryRule(_ctx);
  219|  25.1M|  }
  220|  25.1M|}
_ZN6antlr46Parser15getTokenFactoryEv:
  226|  12.3k|TokenFactory<CommonToken>* Parser::getTokenFactory() {
  227|  12.3k|  return _input->getTokenSource()->getTokenFactory();
  228|  12.3k|}
_ZN6antlr46Parser15setErrorHandlerERKNSt3__110shared_ptrINS_18ANTLRErrorStrategyEEE:
  279|  9.21k|void Parser::setErrorHandler(Ref<ANTLRErrorStrategy> const& handler) {
  280|  9.21k|  _errHandler = handler;
  281|  9.21k|}
_ZN6antlr46Parser14getInputStreamEv:
  283|  7.71M|IntStream* Parser::getInputStream() {
  284|  7.71M|  return getTokenStream();
  285|  7.71M|}
_ZN6antlr46Parser14setInputStreamEPNS_9IntStreamE:
  287|  9.21k|void Parser::setInputStream(IntStream *input) {
  288|  9.21k|  setTokenStream(static_cast<TokenStream*>(input));
  289|  9.21k|}
_ZN6antlr46Parser14getTokenStreamEv:
  291|  39.8M|TokenStream* Parser::getTokenStream() {
  292|  39.8M|  return _input;
  293|  39.8M|}
_ZN6antlr46Parser14setTokenStreamEPNS_11TokenStreamE:
  295|  9.21k|void Parser::setTokenStream(TokenStream *input) {
  296|  9.21k|  _input = nullptr; // Just a reference we don't own.
  297|  9.21k|  reset();
  298|  9.21k|  _input = input;
  299|  9.21k|}
_ZN6antlr46Parser15getCurrentTokenEv:
  301|  14.0M|Token* Parser::getCurrentToken() {
  302|  14.0M|  return _input->LT(1);
  303|  14.0M|}
_ZN6antlr46Parser20notifyErrorListenersERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEE:
  305|    615|void Parser::notifyErrorListeners(const std::string &msg) {
  306|    615|  notifyErrorListeners(getCurrentToken(), msg, nullptr);
  307|    615|}
_ZN6antlr46Parser20notifyErrorListenersEPNS_5TokenERKNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEESt13exception_ptr:
  309|  46.4k|void Parser::notifyErrorListeners(Token *offendingToken, const std::string &msg, std::exception_ptr e) {
  310|  46.4k|  _syntaxErrors++;
  311|  46.4k|  size_t line = offendingToken->getLine();
  312|  46.4k|  size_t charPositionInLine = offendingToken->getCharPositionInLine();
  313|       |
  314|  46.4k|  ProxyErrorListener &listener = getErrorListenerDispatch();
  315|  46.4k|  listener.syntaxError(this, offendingToken, line, charPositionInLine, msg, e);
  316|  46.4k|}
_ZN6antlr46Parser7consumeEv:
  318|  7.38M|Token* Parser::consume() {
  319|  7.38M|  Token *o = getCurrentToken();
  320|  7.38M|  if (o->getType() != EOF) {
  ------------------
  |  Branch (320:7): [True: 7.37M, False: 16.4k]
  ------------------
  321|  7.37M|    getInputStream()->consume();
  322|  7.37M|  }
  323|       |
  324|  7.38M|  bool hasListener = _parseListeners.size() > 0 && !_parseListeners.empty();
  ------------------
  |  Branch (324:22): [True: 7.38M, False: 0]
  |  Branch (324:52): [True: 7.38M, False: 0]
  ------------------
  325|  7.38M|  if (_buildParseTrees || hasListener) {
  ------------------
  |  Branch (325:7): [True: 7.38M, False: 0]
  |  Branch (325:27): [True: 0, False: 0]
  ------------------
  326|  7.38M|    if (_errHandler->inErrorRecoveryMode(this)) {
  ------------------
  |  Branch (326:9): [True: 145k, False: 7.24M]
  ------------------
  327|   145k|      tree::ErrorNode *node = createErrorNode(o);
  328|   145k|      _ctx->addChild(node);
  329|   145k|      if (_parseListeners.size() > 0) {
  ------------------
  |  Branch (329:11): [True: 145k, False: 0]
  ------------------
  330|   145k|        for (auto *listener : _parseListeners) {
  ------------------
  |  Branch (330:29): [True: 145k, False: 145k]
  ------------------
  331|   145k|          listener->visitErrorNode(node);
  332|   145k|        }
  333|   145k|      }
  334|  7.24M|    } else {
  335|  7.24M|      tree::TerminalNode *node = _ctx->addChild(createTerminalNode(o));
  336|  7.24M|      if (_parseListeners.size() > 0) {
  ------------------
  |  Branch (336:11): [True: 7.24M, False: 0]
  ------------------
  337|  7.24M|        for (auto *listener : _parseListeners) {
  ------------------
  |  Branch (337:29): [True: 7.24M, False: 7.24M]
  ------------------
  338|  7.24M|          listener->visitTerminal(node);
  339|  7.24M|        }
  340|  7.24M|      }
  341|  7.24M|    }
  342|  7.38M|  }
  343|  7.38M|  return o;
  344|  7.38M|}
_ZN6antlr46Parser21addContextToParseTreeEv:
  346|  15.5M|void Parser::addContextToParseTree() {
  347|       |  // Add current context to parent if we have a parent.
  348|  15.5M|  if (_ctx->parent == nullptr)
  ------------------
  |  Branch (348:7): [True: 9.21k, False: 15.5M]
  ------------------
  349|  9.21k|    return;
  350|       |
  351|  15.5M|  downCast<ParserRuleContext*>(_ctx->parent)->addChild(_ctx);
  352|  15.5M|}
_ZN6antlr46Parser9enterRuleEPNS_17ParserRuleContextEmm:
  354|  15.5M|void Parser::enterRule(ParserRuleContext *localctx, size_t state, size_t /*ruleIndex*/) {
  355|  15.5M|  setState(state);
  356|  15.5M|  _ctx = localctx;
  357|  15.5M|  _ctx->start = _input->LT(1);
  358|  15.5M|  if (_buildParseTrees) {
  ------------------
  |  Branch (358:7): [True: 15.5M, False: 0]
  ------------------
  359|  15.5M|    addContextToParseTree();
  360|  15.5M|  }
  361|  15.5M|  if (_parseListeners.size() > 0) {
  ------------------
  |  Branch (361:7): [True: 15.5M, False: 0]
  ------------------
  362|  15.5M|    triggerEnterRuleEvent();
  363|  15.5M|  }
  364|  15.5M|}
_ZN6antlr46Parser8exitRuleEv:
  366|  15.5M|void Parser::exitRule() {
  367|  15.5M|  if (_matchedEOF) {
  ------------------
  |  Branch (367:7): [True: 7.85k, False: 15.5M]
  ------------------
  368|       |    // if we have matched EOF, it cannot consume past EOF so we use LT(1) here
  369|  7.85k|    _ctx->stop = _input->LT(1); // LT(1) will be end of file
  370|  15.5M|  } else {
  371|  15.5M|    _ctx->stop = _input->LT(-1); // stop node is what we just matched
  372|  15.5M|  }
  373|       |
  374|       |  // trigger event on ctx, before it reverts to parent
  375|  15.5M|  if (_parseListeners.size() > 0) {
  ------------------
  |  Branch (375:7): [True: 15.5M, False: 0]
  ------------------
  376|  15.5M|    triggerExitRuleEvent();
  377|  15.5M|  }
  378|  15.5M|  setState(_ctx->invokingState);
  379|  15.5M|  _ctx = downCast<ParserRuleContext*>(_ctx->parent);
  380|  15.5M|}
_ZN6antlr46Parser13enterOuterAltEPNS_17ParserRuleContextEm:
  382|  24.4M|void Parser::enterOuterAlt(ParserRuleContext *localctx, size_t altNum) {
  383|  24.4M|  localctx->setAltNumber(altNum);
  384|       |
  385|       |  // if we have new localctx, make sure we replace existing ctx
  386|       |  // that is previous child of parse tree
  387|  24.4M|  if (_buildParseTrees && _ctx != localctx) {
  ------------------
  |  Branch (387:7): [True: 24.4M, False: 0]
  |  Branch (387:27): [True: 7.66M, False: 16.8M]
  ------------------
  388|  7.66M|    if (_ctx->parent != nullptr) {
  ------------------
  |  Branch (388:9): [True: 7.66M, False: 0]
  ------------------
  389|  7.66M|      ParserRuleContext *parent = downCast<ParserRuleContext*>(_ctx->parent);
  390|  7.66M|      parent->removeLastChild();
  391|  7.66M|      parent->addChild(localctx);
  392|  7.66M|    }
  393|  7.66M|  }
  394|  24.4M|  _ctx = localctx;
  395|  24.4M|}
_ZNK6antlr46Parser13getPrecedenceEv:
  397|  9.57M|int Parser::getPrecedence() const {
  398|  9.57M|  if (_precedenceStack.empty()) {
  ------------------
  |  Branch (398:7): [True: 0, False: 9.57M]
  ------------------
  399|      0|    return -1;
  400|      0|  }
  401|       |
  402|  9.57M|  return _precedenceStack.back();
  403|  9.57M|}
_ZN6antlr46Parser18enterRecursionRuleEPNS_17ParserRuleContextEmmi:
  409|  8.96M|void Parser::enterRecursionRule(ParserRuleContext *localctx, size_t state, size_t /*ruleIndex*/, int precedence) {
  410|  8.96M|  setState(state);
  411|  8.96M|  _precedenceStack.push_back(precedence);
  412|  8.96M|  _ctx = localctx;
  413|  8.96M|  _ctx->start = _input->LT(1);
  414|  8.96M|  if (!_parseListeners.empty()) {
  ------------------
  |  Branch (414:7): [True: 8.96M, False: 0]
  ------------------
  415|  8.96M|    triggerEnterRuleEvent(); // simulates rule entry for left-recursive rules
  416|  8.96M|  }
  417|  8.96M|}
_ZN6antlr46Parser23pushNewRecursionContextEPNS_17ParserRuleContextEmm:
  419|   690k|void Parser::pushNewRecursionContext(ParserRuleContext *localctx, size_t state, size_t /*ruleIndex*/) {
  420|   690k|  ParserRuleContext *previous = _ctx;
  421|   690k|  previous->parent = localctx;
  422|   690k|  previous->invokingState = state;
  423|   690k|  previous->stop = _input->LT(-1);
  424|       |
  425|   690k|  _ctx = localctx;
  426|   690k|  _ctx->start = previous->start;
  427|   690k|  if (_buildParseTrees) {
  ------------------
  |  Branch (427:7): [True: 690k, False: 0]
  ------------------
  428|   690k|    _ctx->addChild(previous);
  429|   690k|  }
  430|       |
  431|   690k|  if (_parseListeners.size() > 0) {
  ------------------
  |  Branch (431:7): [True: 690k, False: 0]
  ------------------
  432|   690k|    triggerEnterRuleEvent(); // simulates rule entry for left-recursive rules
  433|   690k|  }
  434|   690k|}
_ZN6antlr46Parser23unrollRecursionContextsEPNS_17ParserRuleContextE:
  436|  8.96M|void Parser::unrollRecursionContexts(ParserRuleContext *parentctx) {
  437|  8.96M|  _precedenceStack.pop_back();
  438|  8.96M|  _ctx->stop = _input->LT(-1);
  439|  8.96M|  ParserRuleContext *retctx = _ctx; // save current ctx (return value)
  440|       |
  441|       |  // unroll so ctx is as it was before call to recursive method
  442|  8.96M|  if (_parseListeners.size() > 0) {
  ------------------
  |  Branch (442:7): [True: 8.96M, False: 0]
  ------------------
  443|  17.9M|    while (_ctx != parentctx) {
  ------------------
  |  Branch (443:12): [True: 8.96M, False: 8.96M]
  ------------------
  444|  8.96M|      triggerExitRuleEvent();
  445|  8.96M|      _ctx = downCast<ParserRuleContext*>(_ctx->parent);
  446|  8.96M|    }
  447|  8.96M|  } else {
  448|      0|    _ctx = parentctx;
  449|      0|  }
  450|       |
  451|       |  // hook into tree
  452|  8.96M|  retctx->parent = parentctx;
  453|       |
  454|  8.96M|  if (_buildParseTrees && parentctx != nullptr) {
  ------------------
  |  Branch (454:7): [True: 8.96M, False: 0]
  |  Branch (454:27): [True: 8.96M, False: 0]
  ------------------
  455|       |    // add return ctx into invoking rule's tree
  456|  8.96M|    parentctx->addChild(retctx);
  457|  8.96M|  }
  458|  8.96M|}
_ZN6antlr46Parser10getContextEv:
  473|   191k|ParserRuleContext* Parser::getContext() {
  474|   191k|  return _ctx;
  475|   191k|}
_ZN6antlr46Parser8precpredEPNS_11RuleContextEi:
  481|  1.37M|bool Parser::precpred(RuleContext * /*localctx*/, int precedence) {
  482|  1.37M|  return precedence >= _precedenceStack.back();
  483|  1.37M|}
_ZN6antlr46Parser17getExpectedTokensEv:
  526|  96.5k|misc::IntervalSet Parser::getExpectedTokens() {
  527|  96.5k|  return getATN().getExpectedTokens(getState(), getContext());
  528|  96.5k|}
_ZN6antlr46Parser8setTraceEb:
  631|  9.21k|void Parser::setTrace(bool trace) {
  632|  9.21k|  if (!trace) {
  ------------------
  |  Branch (632:7): [True: 9.21k, False: 0]
  ------------------
  633|  9.21k|    if (_tracer)
  ------------------
  |  Branch (633:9): [True: 0, False: 9.21k]
  ------------------
  634|      0|      removeParseListener(_tracer);
  635|  9.21k|    delete _tracer;
  636|  9.21k|    _tracer = nullptr;
  637|  9.21k|  } else {
  638|      0|    if (_tracer)
  ------------------
  |  Branch (638:9): [True: 0, False: 0]
  ------------------
  639|      0|      removeParseListener(_tracer); // Just in case this is triggered multiple times.
  640|      0|    _tracer = new TraceListener(this);
  641|      0|    addParseListener(_tracer);
  642|      0|  }
  643|  9.21k|}
_ZN6antlr46Parser18createTerminalNodeEPNS_5TokenE:
  649|  7.24M|tree::TerminalNode *Parser::createTerminalNode(Token *t) {
  650|  7.24M|  return _tracker.createInstance<tree::TerminalNodeImpl>(t);
  651|  7.24M|}
_ZN6antlr46Parser15createErrorNodeEPNS_5TokenE:
  653|   157k|tree::ErrorNode *Parser::createErrorNode(Token *t) {
  654|   157k|  return _tracker.createInstance<tree::ErrorNodeImpl>(t);
  655|   157k|}
_ZN6antlr46Parser24InitializeInstanceFieldsEv:
  657|  9.21k|void Parser::InitializeInstanceFields() {
  658|  9.21k|  _errHandler = std::make_shared<DefaultErrorStrategy>();
  659|  9.21k|  _precedenceStack.clear();
  660|  9.21k|  _precedenceStack.push_back(0);
  661|  9.21k|  _buildParseTrees = true;
  662|  9.21k|  _syntaxErrors = 0;
  663|  9.21k|  _matchedEOF = false;
  664|  9.21k|  _input = nullptr;
  665|  9.21k|  _tracer = nullptr;
  666|  9.21k|  _ctx = nullptr;
  667|  9.21k|}

_ZN6antlr417ParserRuleContextC2Ev:
   25|  10.8M|  : start(nullptr), stop(nullptr) {
   26|  10.8M|}
_ZN6antlr417ParserRuleContextC2EPS0_m:
   29|  25.1M|: RuleContext(parent, invokingStateNumber), start(nullptr), stop(nullptr) {
   30|  25.1M|}
_ZN6antlr417ParserRuleContext8copyFromEPS0_:
   32|  10.8M|void ParserRuleContext::copyFrom(ParserRuleContext *ctx) {
   33|       |  // from RuleContext
   34|  10.8M|  this->parent = ctx->parent;
   35|  10.8M|  this->invokingState = ctx->invokingState;
   36|       |
   37|  10.8M|  this->start = ctx->start;
   38|  10.8M|  this->stop = ctx->stop;
   39|       |
   40|       |  // copy any error nodes to alt label node
   41|  10.8M|  if (!ctx->children.empty()) {
  ------------------
  |  Branch (41:7): [True: 8.67k, False: 10.8M]
  ------------------
   42|  8.67k|    for (auto *child : ctx->children) {
  ------------------
  |  Branch (42:22): [True: 8.67k, False: 8.67k]
  ------------------
   43|  8.67k|      if (ErrorNode::is(child)) {
  ------------------
  |  Branch (43:11): [True: 8.67k, False: 0]
  ------------------
   44|  8.67k|        downCast<ErrorNode*>(child)->setParent(this);
   45|  8.67k|        children.push_back(child);
   46|  8.67k|      }
   47|  8.67k|    }
   48|       |
   49|       |    // Remove the just reparented error nodes from the source context.
   50|  8.67k|    ctx->children.erase(std::remove_if(ctx->children.begin(), ctx->children.end(), [this](tree::ParseTree *e) -> bool {
   51|  8.67k|      return std::find(children.begin(), children.end(), e) != children.end();
   52|  8.67k|    }), ctx->children.end());
   53|  8.67k|  }
   54|  10.8M|}
_ZN6antlr417ParserRuleContext9enterRuleEPNS_4tree17ParseTreeListenerE:
   56|  25.1M|void ParserRuleContext::enterRule(tree::ParseTreeListener * /*listener*/) {
   57|  25.1M|}
_ZN6antlr417ParserRuleContext8exitRuleEPNS_4tree17ParseTreeListenerE:
   59|  25.1M|void ParserRuleContext::exitRule(tree::ParseTreeListener * /*listener*/) {
   60|  25.1M|}
_ZN6antlr417ParserRuleContext8addChildEPNS_4tree12TerminalNodeE:
   62|  7.39M|tree::TerminalNode* ParserRuleContext::addChild(tree::TerminalNode *t) {
   63|  7.39M|  t->setParent(this);
   64|  7.39M|  children.push_back(t);
   65|  7.39M|  return t;
   66|  7.39M|}
_ZN6antlr417ParserRuleContext8addChildEPNS_11RuleContextE:
   68|  32.8M|RuleContext* ParserRuleContext::addChild(RuleContext *ruleInvocation) {
   69|  32.8M|  children.push_back(ruleInvocation);
   70|  32.8M|  return ruleInvocation;
   71|  32.8M|}
_ZN6antlr417ParserRuleContext15removeLastChildEv:
   73|  7.66M|void ParserRuleContext::removeLastChild() {
   74|  7.66M|  if (!children.empty()) {
  ------------------
  |  Branch (74:7): [True: 7.66M, False: 0]
  ------------------
   75|  7.66M|    children.pop_back();
   76|  7.66M|  }
   77|  7.66M|}
_ZNK6antlr417ParserRuleContext8getStartEv:
  123|  1.13M|Token* ParserRuleContext::getStart() const {
  124|  1.13M|  return start;
  125|  1.13M|}
ParserRuleContext.cpp:_ZZN6antlr417ParserRuleContext8copyFromEPS0_ENK3$_0clEPNS_4tree9ParseTreeE:
   50|  8.67k|    ctx->children.erase(std::remove_if(ctx->children.begin(), ctx->children.end(), [this](tree::ParseTree *e) -> bool {
   51|  8.67k|      return std::find(children.begin(), children.end(), e) != children.end();
   52|  8.67k|    }), ctx->children.end());

_ZN6antlr418ProxyErrorListener16addErrorListenerEPNS_18ANTLRErrorListenerE:
   10|  36.8k|void ProxyErrorListener::addErrorListener(ANTLRErrorListener *listener) {
   11|  36.8k|  if (listener == nullptr) {
  ------------------
  |  Branch (11:7): [True: 0, False: 36.8k]
  ------------------
   12|      0|    throw "listener cannot be null.";
   13|      0|  }
   14|       |
   15|  36.8k|  _delegates.insert(listener);
   16|  36.8k|}
_ZN6antlr418ProxyErrorListener20removeErrorListenersEv:
   22|  18.4k|void ProxyErrorListener::removeErrorListeners() {
   23|  18.4k|  _delegates.clear();
   24|  18.4k|}
_ZN6antlr418ProxyErrorListener11syntaxErrorEPNS_10RecognizerEPNS_5TokenEmmRKNSt3__112basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEESt13exception_ptr:
   27|  1.97M|  size_t charPositionInLine, const std::string &msg, std::exception_ptr e) {
   28|       |
   29|  1.97M|  for (auto *listener : _delegates) {
  ------------------
  |  Branch (29:23): [True: 1.97M, False: 1.97M]
  ------------------
   30|  1.97M|    listener->syntaxError(recognizer, offendingSymbol, line, charPositionInLine, msg, e);
   31|  1.97M|  }
   32|  1.97M|}
_ZN6antlr418ProxyErrorListener15reportAmbiguityEPNS_6ParserERKNS_3dfa3DFAEmmbRKN8antlrcpp6BitSetEPNS_3atn12ATNConfigSetE:
   35|  15.1k|  bool exact, const antlrcpp::BitSet &ambigAlts, atn::ATNConfigSet *configs) {
   36|  15.1k|  for (auto *listener : _delegates) {
  ------------------
  |  Branch (36:23): [True: 15.1k, False: 15.1k]
  ------------------
   37|  15.1k|    listener->reportAmbiguity(recognizer, dfa, startIndex, stopIndex, exact, ambigAlts, configs);
   38|  15.1k|  }
   39|  15.1k|}
_ZN6antlr418ProxyErrorListener27reportAttemptingFullContextEPNS_6ParserERKNS_3dfa3DFAEmmRKN8antlrcpp6BitSetEPNS_3atn12ATNConfigSetE:
   42|  15.1k|  size_t stopIndex, const antlrcpp::BitSet &conflictingAlts, atn::ATNConfigSet *configs) {
   43|  15.1k|  for (auto *listener : _delegates) {
  ------------------
  |  Branch (43:23): [True: 15.1k, False: 15.1k]
  ------------------
   44|  15.1k|    listener->reportAttemptingFullContext(recognizer, dfa, startIndex, stopIndex, conflictingAlts, configs);
   45|  15.1k|  }
   46|  15.1k|}

_ZN6antlr420RecognitionExceptionC2EPNS_10RecognizerEPNS_9IntStreamEPNS_17ParserRuleContextEPNS_5TokenE:
   17|  1.95M|  : RecognitionException("", recognizer, input, ctx, offendingToken) {
   18|  1.95M|}
_ZN6antlr420RecognitionExceptionC2ERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEPNS_10RecognizerEPNS_9IntStreamEPNS_17ParserRuleContextEPNS_5TokenE:
   22|  1.99M|  : RuntimeException(message), _recognizer(recognizer), _input(input), _ctx(ctx), _offendingToken(offendingToken) {
   23|  1.99M|  InitializeInstanceFields();
   24|  1.99M|  if (recognizer != nullptr) {
  ------------------
  |  Branch (24:7): [True: 1.99M, False: 0]
  ------------------
   25|  1.99M|    _offendingState = recognizer->getState();
   26|  1.99M|  }
   27|  1.99M|}
_ZN6antlr420RecognitionExceptionD2Ev:
   29|  2.03M|RecognitionException::~RecognitionException() {
   30|  2.03M|}
_ZNK6antlr420RecognitionException17getExpectedTokensEv:
   40|  16.9k|misc::IntervalSet RecognitionException::getExpectedTokens() const {
   41|  16.9k|  if (_recognizer) {
  ------------------
  |  Branch (41:7): [True: 16.9k, False: 0]
  ------------------
   42|  16.9k|    return _recognizer->getATN().getExpectedTokens(_offendingState, _ctx);
   43|  16.9k|  }
   44|      0|  return misc::IntervalSet::EMPTY_SET;
   45|  16.9k|}
_ZNK6antlr420RecognitionException17getOffendingTokenEv:
   55|  39.0k|Token* RecognitionException::getOffendingToken() const {
   56|  39.0k|  return _offendingToken;
   57|  39.0k|}
_ZN6antlr420RecognitionException24InitializeInstanceFieldsEv:
   63|  1.99M|void RecognitionException::InitializeInstanceFields() {
   64|  1.99M|  _offendingState = INVALID_INDEX;
   65|  1.99M|}

_ZN6antlr420RecognitionExceptionC2ERKS0_:
   36|  41.6k|    RecognitionException(RecognitionException const&) = default;

_ZN6antlr410RecognizerC2Ev:
   25|  18.4k|Recognizer::Recognizer() {
   26|  18.4k|  InitializeInstanceFields();
   27|  18.4k|  _proxListener.addErrorListener(&ConsoleErrorListener::INSTANCE);
   28|  18.4k|}
_ZN6antlr410RecognizerD2Ev:
   30|  18.4k|Recognizer::~Recognizer() {
   31|  18.4k|}
_ZN6antlr410Recognizer16addErrorListenerEPNS_18ANTLRErrorListenerE:
  125|  18.4k|void Recognizer::addErrorListener(ANTLRErrorListener *listener) {
  126|  18.4k|  _proxListener.addErrorListener(listener);
  127|  18.4k|}
_ZN6antlr410Recognizer20removeErrorListenersEv:
  133|  18.4k|void Recognizer::removeErrorListeners() {
  134|  18.4k|  _proxListener.removeErrorListeners();
  135|  18.4k|}
_ZN6antlr410Recognizer24getErrorListenerDispatchEv:
  137|  2.00M|ProxyErrorListener& Recognizer::getErrorListenerDispatch() {
  138|  2.00M|  return _proxListener;
  139|  2.00M|}
_ZN6antlr410Recognizer24InitializeInstanceFieldsEv:
  152|  18.4k|void Recognizer::InitializeInstanceFields() {
  153|  18.4k|  _stateNumber = ATNState::INVALID_STATE_NUMBER;
  154|  18.4k|  _interpreter = nullptr;
  155|  18.4k|}

_ZNK6antlr410Recognizer8getStateEv:
  117|  59.0M|    size_t getState() const { return _stateNumber; }

_ZN6antlr411RuleContextC2Ev:
   19|  10.8M|RuleContext::RuleContext() : ParseTree(ParseTreeType::RULE) {
   20|  10.8M|  InitializeInstanceFields();
   21|  10.8M|}
_ZN6antlr411RuleContextC2EPS0_m:
   23|  25.1M|RuleContext::RuleContext(RuleContext *parent_, size_t invokingState_) : ParseTree(ParseTreeType::RULE) {
   24|  25.1M|  InitializeInstanceFields();
   25|  25.1M|  this->parent = parent_;
   26|  25.1M|  this->invokingState = invokingState_;
   27|  25.1M|}
_ZN6antlr411RuleContext12setAltNumberEm:
   72|  24.4M|void RuleContext::setAltNumber(size_t /*altNumber*/) {
   73|  24.4M|}
_ZN6antlr411RuleContext24InitializeInstanceFieldsEv:
  141|  36.0M|void RuleContext::InitializeInstanceFields() {
  142|  36.0M|  invokingState = INVALID_INDEX;
  143|  36.0M|}

_ZN6antlr45TokenD2Ev:
    8|  7.53M|antlr4::Token::~Token() {
    9|  7.53M|}

_ZN6antlr411TokenSourceD2Ev:
    8|  9.21k|antlr4::TokenSource::~TokenSource() {
    9|  9.21k|}

_ZN6antlr411TokenStreamD2Ev:
   10|  9.21k|TokenStream::~TokenStream() {
   11|  9.21k|}

_ZN6antlr43dfa10VocabularyC2ENSt3__16vectorINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS7_IS9_EEEESB_:
   15|      2|: Vocabulary(std::move(literalNames), std::move(symbolicNames), {}) {
   16|      2|}
_ZN6antlr43dfa10VocabularyC2ENSt3__16vectorINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS7_IS9_EEEESB_SB_:
   21|      2|    _maxTokenType(std::max(_displayNames.size(), std::max(_literalNames.size(), _symbolicNames.size())) - 1) {
   22|       |  // See note here on -1 part: https://github.com/antlr/antlr4/pull/1146
   23|      2|}
_ZNK6antlr43dfa10Vocabulary14getLiteralNameEm:
   25|   410k|std::string_view Vocabulary::getLiteralName(size_t tokenType) const {
   26|   410k|  if (tokenType < _literalNames.size()) {
  ------------------
  |  Branch (26:7): [True: 248k, False: 161k]
  ------------------
   27|   248k|    return _literalNames[tokenType];
   28|   248k|  }
   29|       |
   30|   161k|  return "";
   31|   410k|}
_ZNK6antlr43dfa10Vocabulary15getSymbolicNameEm:
   33|   161k|std::string_view Vocabulary::getSymbolicName(size_t tokenType) const {
   34|   161k|  if (tokenType == Token::EOF) {
  ------------------
  |  Branch (34:7): [True: 0, False: 161k]
  ------------------
   35|      0|    return "EOF";
   36|      0|  }
   37|       |
   38|   161k|  if (tokenType < _symbolicNames.size()) {
  ------------------
  |  Branch (38:7): [True: 161k, False: 0]
  ------------------
   39|   161k|    return _symbolicNames[tokenType];
   40|   161k|  }
   41|       |
   42|      0|  return "";
   43|   161k|}
_ZNK6antlr43dfa10Vocabulary14getDisplayNameEm:
   45|   410k|std::string Vocabulary::getDisplayName(size_t tokenType) const {
   46|   410k|  if (tokenType < _displayNames.size()) {
  ------------------
  |  Branch (46:7): [True: 0, False: 410k]
  ------------------
   47|      0|    std::string_view displayName = _displayNames[tokenType];
   48|      0|    if (!displayName.empty()) {
  ------------------
  |  Branch (48:9): [True: 0, False: 0]
  ------------------
   49|      0|      return std::string(displayName);
   50|      0|    }
   51|      0|  }
   52|       |
   53|   410k|  std::string_view literalName = getLiteralName(tokenType);
   54|   410k|  if (!literalName.empty()) {
  ------------------
  |  Branch (54:7): [True: 248k, False: 161k]
  ------------------
   55|   248k|    return std::string(literalName);
   56|   248k|  }
   57|       |
   58|   161k|  std::string_view symbolicName = getSymbolicName(tokenType);
   59|   161k|  if (!symbolicName.empty()) {
  ------------------
  |  Branch (59:7): [True: 161k, False: 0]
  ------------------
   60|   161k|    return std::string(symbolicName);
   61|   161k|  }
   62|       |
   63|      0|  return std::to_string(tokenType);
   64|   161k|}

_ZN6antlr43dfa10VocabularyC2Ev:
   25|      2|    Vocabulary() {}

_ZN6antlr413WritableTokenD2Ev:
    8|  7.53M|antlr4::WritableToken::~WritableToken() {
    9|  7.53M|}

_ZN6antlr43atn3ATNC2ENS0_7ATNTypeEm:
   25|      2|ATN::ATN(ATNType grammarType_, size_t maxTokenType_) : grammarType(grammarType_), maxTokenType(maxTokenType_) {}
_ZNK6antlr43atn3ATN10nextTokensEPNS0_8ATNStateEPNS_11RuleContextE:
   33|  27.7k|misc::IntervalSet ATN::nextTokens(ATNState *s, RuleContext *ctx) const {
   34|  27.7k|  LL1Analyzer analyzer(*this);
   35|  27.7k|  return analyzer.LOOK(s, ctx);
   36|       |
   37|  27.7k|}
_ZNK6antlr43atn3ATN10nextTokensEPNS0_8ATNStateE:
   39|  35.9M|misc::IntervalSet const& ATN::nextTokens(ATNState *s) const {
   40|  35.9M|  if (!s->_nextTokenUpdated) {
  ------------------
  |  Branch (40:7): [True: 72, False: 35.9M]
  ------------------
   41|     72|    std::unique_lock<std::mutex> lock(_mutex);
   42|     72|    if (!s->_nextTokenUpdated) {
  ------------------
  |  Branch (42:9): [True: 72, False: 0]
  ------------------
   43|     72|      s->_nextTokenWithinRule = nextTokens(s, nullptr);
   44|     72|      s->_nextTokenUpdated = true;
   45|     72|    }
   46|     72|  }
   47|  35.9M|  return s->_nextTokenWithinRule;
   48|  35.9M|}
_ZN6antlr43atn3ATN8addStateEPNS0_8ATNStateE:
   50|    632|void ATN::addState(ATNState *state) {
   51|    632|  if (state != nullptr) {
  ------------------
  |  Branch (51:7): [True: 632, False: 0]
  ------------------
   52|       |    //state->atn = this;
   53|    632|    state->stateNumber = static_cast<int>(states.size());
   54|    632|  }
   55|       |
   56|    632|  states.push_back(state);
   57|    632|}
_ZNK6antlr43atn3ATN16getDecisionStateEm:
   70|     76|DecisionState *ATN::getDecisionState(size_t decision) const {
   71|     76|  if (!decisionToState.empty()) {
  ------------------
  |  Branch (71:7): [True: 76, False: 0]
  ------------------
   72|     76|    return decisionToState[decision];
   73|     76|  }
   74|      0|  return nullptr;
   75|     76|}
_ZNK6antlr43atn3ATN20getNumberOfDecisionsEv:
   77|      2|size_t ATN::getNumberOfDecisions() const {
   78|      2|  return decisionToState.size();
   79|      2|}
_ZNK6antlr43atn3ATN17getExpectedTokensEmPNS_11RuleContextE:
   81|   113k|misc::IntervalSet ATN::getExpectedTokens(size_t stateNumber, RuleContext *context) const {
   82|   113k|  if (stateNumber == ATNState::INVALID_STATE_NUMBER || stateNumber >= states.size()) {
  ------------------
  |  Branch (82:7): [True: 0, False: 113k]
  |  Branch (82:56): [True: 0, False: 113k]
  ------------------
   83|      0|    throw IllegalArgumentException("Invalid state number.");
   84|      0|  }
   85|       |
   86|   113k|  RuleContext *ctx = context;
   87|   113k|  ATNState *s = states.at(stateNumber);
   88|   113k|  misc::IntervalSet following = nextTokens(s);
   89|   113k|  if (!following.contains(Token::EPSILON)) {
  ------------------
  |  Branch (89:7): [True: 113k, False: 0]
  ------------------
   90|   113k|    return following;
   91|   113k|  }
   92|       |
   93|      0|  misc::IntervalSet expected;
   94|      0|  expected.addAll(following);
   95|      0|  expected.remove(Token::EPSILON);
   96|      0|  while (ctx && ctx->invokingState != ATNState::INVALID_STATE_NUMBER && following.contains(Token::EPSILON)) {
  ------------------
  |  Branch (96:10): [True: 0, False: 0]
  |  Branch (96:17): [True: 0, False: 0]
  |  Branch (96:73): [True: 0, False: 0]
  ------------------
   97|      0|    ATNState *invokingState = states.at(ctx->invokingState);
   98|      0|    const RuleTransition *rt = static_cast<const RuleTransition*>(invokingState->transitions[0].get());
   99|      0|    following = nextTokens(rt->followState);
  100|      0|    expected.addAll(following);
  101|      0|    expected.remove(Token::EPSILON);
  102|       |
  103|      0|    if (ctx->parent == nullptr) {
  ------------------
  |  Branch (103:9): [True: 0, False: 0]
  ------------------
  104|      0|      break;
  105|      0|    }
  106|      0|    ctx = static_cast<RuleContext *>(ctx->parent);
  107|      0|  }
  108|       |
  109|      0|  if (following.contains(Token::EPSILON)) {
  ------------------
  |  Branch (109:7): [True: 0, False: 0]
  ------------------
  110|      0|    expected.add(Token::EOF);
  111|      0|  }
  112|       |
  113|      0|  return expected;
  114|   113k|}

_ZN6antlr43atn9ATNConfigC2EPNS0_8ATNStateEmNSt3__110shared_ptrIKNS0_17PredictionContextEEE:
   26|  1.45M|    : ATNConfig(state, alt, std::move(context), 0, SemanticContext::NONE) {}
_ZN6antlr43atn9ATNConfigC2EPNS0_8ATNStateEmNSt3__110shared_ptrIKNS0_17PredictionContextEEENS5_IKNS0_15SemanticContextEEE:
   29|   267k|    : ATNConfig(state, alt, std::move(context), 0, std::move(semanticContext)) {}
_ZN6antlr43atn9ATNConfigC2ERKS1_NSt3__110shared_ptrIKNS0_15SemanticContextEEE:
   32|      7|    : ATNConfig(other.state, other.alt, other.context, other.reachesIntoOuterContext, std::move(semanticContext)) {}
_ZN6antlr43atn9ATNConfigC2ERKS1_PNS0_8ATNStateE:
   35|  2.46M|    : ATNConfig(state, other.alt, other.context, other.reachesIntoOuterContext, other.semanticContext) {}
_ZN6antlr43atn9ATNConfigC2ERKS1_PNS0_8ATNStateENSt3__110shared_ptrIKNS0_15SemanticContextEEE:
   38|     19|    : ATNConfig(state, other.alt, other.context, other.reachesIntoOuterContext, std::move(semanticContext)) {}
_ZN6antlr43atn9ATNConfigC2ERKS1_PNS0_8ATNStateENSt3__110shared_ptrIKNS0_17PredictionContextEEE:
   41|   191k|    : ATNConfig(state, other.alt, std::move(context), other.reachesIntoOuterContext, other.semanticContext) {}
_ZN6antlr43atn9ATNConfigC2EPNS0_8ATNStateEmNSt3__110shared_ptrIKNS0_17PredictionContextEEEmNS5_IKNS0_15SemanticContextEEE:
   47|  4.38M|    : state(state), alt(alt), context(std::move(context)), reachesIntoOuterContext(reachesIntoOuterContext), semanticContext(std::move(semanticContext)) {}
_ZNK6antlr43atn9ATNConfig8hashCodeEv:
   49|  1.41M|size_t ATNConfig::hashCode() const {
   50|  1.41M|  size_t hashCode = misc::MurmurHash::initialize(7);
   51|  1.41M|  hashCode = misc::MurmurHash::update(hashCode, state->stateNumber);
   52|  1.41M|  hashCode = misc::MurmurHash::update(hashCode, alt);
   53|  1.41M|  hashCode = misc::MurmurHash::update(hashCode, context);
   54|  1.41M|  hashCode = misc::MurmurHash::update(hashCode, semanticContext);
   55|  1.41M|  hashCode = misc::MurmurHash::finish(hashCode, 4);
   56|  1.41M|  return hashCode;
   57|  1.41M|}
_ZNK6antlr43atn9ATNConfig20getOuterContextDepthEv:
   59|  2.22M|size_t ATNConfig::getOuterContextDepth() const {
   60|  2.22M|  return reachesIntoOuterContext & ~SUPPRESS_PRECEDENCE_FILTER;
   61|  2.22M|}
_ZNK6antlr43atn9ATNConfig28isPrecedenceFilterSuppressedEv:
   63|   170k|bool ATNConfig::isPrecedenceFilterSuppressed() const {
   64|   170k|  return (reachesIntoOuterContext & SUPPRESS_PRECEDENCE_FILTER) != 0;
   65|   170k|}
_ZN6antlr43atn9ATNConfig29setPrecedenceFilterSuppressedEb:
   67|     58|void ATNConfig::setPrecedenceFilterSuppressed(bool value) {
   68|     58|  if (value) {
  ------------------
  |  Branch (68:7): [True: 58, False: 0]
  ------------------
   69|     58|    reachesIntoOuterContext |= SUPPRESS_PRECEDENCE_FILTER;
   70|     58|  } else {
   71|      0|    reachesIntoOuterContext &= ~SUPPRESS_PRECEDENCE_FILTER;
   72|      0|  }
   73|     58|}
_ZNK6antlr43atn9ATNConfigeqERKS1_:
   75|  1.49M|bool ATNConfig::operator==(const ATNConfig &other) const {
   76|  1.49M|  return state->stateNumber == other.state->stateNumber && alt == other.alt &&
  ------------------
  |  Branch (76:10): [True: 118k, False: 1.37M]
  |  Branch (76:60): [True: 118k, False: 68]
  ------------------
   77|  1.49M|    ((context == other.context) || (*context == *other.context)) &&
  ------------------
  |  Branch (77:6): [True: 35.2k, False: 83.6k]
  |  Branch (77:36): [True: 49.9k, False: 33.7k]
  ------------------
   78|  1.49M|    *semanticContext == *other.semanticContext &&
  ------------------
  |  Branch (78:5): [True: 85.1k, False: 0]
  ------------------
   79|  1.49M|    isPrecedenceFilterSuppressed() == other.isPrecedenceFilterSuppressed();
  ------------------
  |  Branch (79:5): [True: 85.1k, False: 14]
  ------------------
   80|  1.49M|}

_ZN6antlr43atn12ATNConfigSetC2Ev:
   22|  41.7k|ATNConfigSet::ATNConfigSet() : ATNConfigSet(true) {}
_ZN6antlr43atn12ATNConfigSetC2Eb:
   34|   187k|    : fullCtx(fullCtx), _configLookup(0, ATNConfigHasher{this}, ATNConfigComparer{this}) {}
_ZN6antlr43atn12ATNConfigSet3addERKNSt3__110shared_ptrINS0_9ATNConfigEEE:
   36|   715k|bool ATNConfigSet::add(const Ref<ATNConfig> &config) {
   37|   715k|  return add(config, nullptr);
   38|   715k|}
_ZN6antlr43atn12ATNConfigSet3addERKNSt3__110shared_ptrINS0_9ATNConfigEEEPNS0_27PredictionContextMergeCacheE:
   40|  1.59M|bool ATNConfigSet::add(const Ref<ATNConfig> &config, PredictionContextMergeCache *mergeCache) {
   41|  1.59M|  assert(config);
   42|       |
   43|  1.59M|  if (_readonly) {
  ------------------
  |  Branch (43:7): [True: 0, False: 1.59M]
  ------------------
   44|      0|    throw IllegalStateException("This set is readonly");
   45|      0|  }
   46|  1.59M|  if (config->semanticContext != SemanticContext::NONE) {
  ------------------
  |  Branch (46:7): [True: 555, False: 1.59M]
  ------------------
   47|    555|    hasSemanticContext = true;
   48|    555|  }
   49|  1.59M|  if (config->getOuterContextDepth() > 0) {
  ------------------
  |  Branch (49:7): [True: 531k, False: 1.06M]
  ------------------
   50|   531k|    dipsIntoOuterContext = true;
   51|   531k|  }
   52|       |
   53|  1.59M|  auto existing = _configLookup.find(config.get());
   54|  1.59M|  if (existing == _configLookup.end()) {
  ------------------
  |  Branch (54:7): [True: 1.59M, False: 123]
  ------------------
   55|  1.59M|    _configLookup.insert(config.get());
   56|  1.59M|    _cachedHashCode = 0;
   57|  1.59M|    configs.push_back(config); // track order here
   58|       |
   59|  1.59M|    return true;
   60|  1.59M|  }
   61|       |
   62|       |  // a previous (s,i,pi,_), merge with it and save result
   63|    123|  bool rootIsWildcard = !fullCtx;
   64|    123|  Ref<const PredictionContext> merged = PredictionContext::merge((*existing)->context, config->context, rootIsWildcard, mergeCache);
   65|       |  // no need to check for existing.context, config.context in cache
   66|       |  // since only way to create new graphs is "call rule" and here. We
   67|       |  // cache at both places.
   68|    123|  (*existing)->reachesIntoOuterContext = std::max((*existing)->reachesIntoOuterContext, config->reachesIntoOuterContext);
   69|       |
   70|       |  // make sure to preserve the precedence filter suppression during the merge
   71|    123|  if (config->isPrecedenceFilterSuppressed()) {
  ------------------
  |  Branch (71:7): [True: 43, False: 80]
  ------------------
   72|     43|    (*existing)->setPrecedenceFilterSuppressed(true);
   73|     43|  }
   74|       |
   75|    123|  (*existing)->context = std::move(merged); // replace context; no need to alt mapping
   76|       |
   77|    123|  return true;
   78|  1.59M|}
_ZNK6antlr43atn12ATNConfigSet7getAltsEv:
  105|  15.1k|BitSet ATNConfigSet::getAlts() const {
  106|  15.1k|  BitSet alts;
  107|   318k|  for (const auto &config : configs) {
  ------------------
  |  Branch (107:27): [True: 318k, False: 15.1k]
  ------------------
  108|   318k|    alts.set(config->alt);
  109|   318k|  }
  110|  15.1k|  return alts;
  111|  15.1k|}
_ZN6antlr43atn12ATNConfigSet15optimizeConfigsEPNS0_12ATNSimulatorE:
  128|    154|void ATNConfigSet::optimizeConfigs(ATNSimulator *interpreter) {
  129|    154|  assert(interpreter);
  130|       |
  131|    154|  if (_readonly) {
  ------------------
  |  Branch (131:7): [True: 0, False: 154]
  ------------------
  132|      0|    throw IllegalStateException("This set is readonly");
  133|      0|  }
  134|    154|  if (_configLookup.empty())
  ------------------
  |  Branch (134:7): [True: 0, False: 154]
  ------------------
  135|      0|    return;
  136|       |
  137|    624|  for (const auto &config : configs) {
  ------------------
  |  Branch (137:27): [True: 624, False: 154]
  ------------------
  138|    624|    config->context = interpreter->getCachedContext(config->context);
  139|    624|  }
  140|    154|}
_ZNK6antlr43atn12ATNConfigSet6equalsERKS1_:
  142|  24.9k|bool ATNConfigSet::equals(const ATNConfigSet &other) const {
  143|  24.9k|  if (&other == this) {
  ------------------
  |  Branch (143:7): [True: 0, False: 24.9k]
  ------------------
  144|      0|    return true;
  145|      0|  }
  146|       |
  147|  24.9k|  if (configs.size() != other.configs.size())
  ------------------
  |  Branch (147:7): [True: 2.35k, False: 22.6k]
  ------------------
  148|  2.35k|    return false;
  149|       |
  150|  22.6k|  if (fullCtx != other.fullCtx || uniqueAlt != other.uniqueAlt ||
  ------------------
  |  Branch (150:7): [True: 0, False: 22.6k]
  |  Branch (150:35): [True: 35, False: 22.5k]
  ------------------
  151|  22.6k|      conflictingAlts != other.conflictingAlts || hasSemanticContext != other.hasSemanticContext ||
  ------------------
  |  Branch (151:7): [True: 0, False: 22.5k]
  |  Branch (151:51): [True: 3, False: 22.5k]
  ------------------
  152|  22.6k|      dipsIntoOuterContext != other.dipsIntoOuterContext) // includes stack context
  ------------------
  |  Branch (152:7): [True: 0, False: 22.5k]
  ------------------
  153|     38|    return false;
  154|       |
  155|  22.5k|  return Arrays::equals(configs, other.configs);
  156|  22.6k|}
_ZNK6antlr43atn12ATNConfigSet8hashCodeEv:
  158|  18.6k|size_t ATNConfigSet::hashCode() const {
  159|  18.6k|  size_t cachedHashCode = _cachedHashCode.load(std::memory_order_relaxed);
  160|  18.6k|  if (!isReadonly() || cachedHashCode == 0) {
  ------------------
  |  Branch (160:7): [True: 18.6k, False: 0]
  |  Branch (160:24): [True: 0, False: 0]
  ------------------
  161|  18.6k|    cachedHashCode = 1;
  162|  85.9k|    for (const auto &i : configs) {
  ------------------
  |  Branch (162:24): [True: 85.9k, False: 18.6k]
  ------------------
  163|  85.9k|      cachedHashCode = 31 * cachedHashCode + i->hashCode(); // Same as Java's list hashCode impl.
  164|  85.9k|    }
  165|  18.6k|    _cachedHashCode.store(cachedHashCode, std::memory_order_relaxed);
  166|  18.6k|  }
  167|  18.6k|  return cachedHashCode;
  168|  18.6k|}
_ZNK6antlr43atn12ATNConfigSet4sizeEv:
  170|  28.5k|size_t ATNConfigSet::size() const {
  171|  28.5k|  return configs.size();
  172|  28.5k|}
_ZNK6antlr43atn12ATNConfigSet7isEmptyEv:
  174|  70.3k|bool ATNConfigSet::isEmpty() const {
  175|  70.3k|  return configs.empty();
  176|  70.3k|}
_ZNK6antlr43atn12ATNConfigSet10isReadonlyEv:
  187|  18.7k|bool ATNConfigSet::isReadonly() const {
  188|  18.7k|  return _readonly;
  189|  18.7k|}
_ZN6antlr43atn12ATNConfigSet11setReadonlyEb:
  191|    408|void ATNConfigSet::setReadonly(bool readonly) {
  192|    408|  _readonly = readonly;
  193|    408|  LookupContainer(0, ATNConfigHasher{this}, ATNConfigComparer{this}).swap(_configLookup);
  194|    408|}
_ZNK6antlr43atn12ATNConfigSet8hashCodeERKNS0_9ATNConfigE:
  222|  3.01M|size_t ATNConfigSet::hashCode(const ATNConfig &other) const {
  223|  3.01M|  size_t hashCode = 7;
  224|  3.01M|  hashCode = 31 * hashCode + other.state->stateNumber;
  225|  3.01M|  hashCode = 31 * hashCode + other.alt;
  226|  3.01M|  hashCode = 31 * hashCode + other.semanticContext->hashCode();
  227|  3.01M|  return hashCode;
  228|  3.01M|}
_ZNK6antlr43atn12ATNConfigSet6equalsERKNS0_9ATNConfigES4_:
  230|  1.08M|bool ATNConfigSet::equals(const ATNConfig &lhs, const ATNConfig &rhs) const {
  231|  1.08M|  return lhs.state->stateNumber == rhs.state->stateNumber && lhs.alt == rhs.alt && *lhs.semanticContext == *rhs.semanticContext;
  ------------------
  |  Branch (231:10): [True: 13.0k, False: 1.06M]
  |  Branch (231:62): [True: 123, False: 12.9k]
  |  Branch (231:84): [True: 123, False: 0]
  ------------------
  232|  1.08M|}

_ZN6antlr43atn25ATNDeserializationOptions17getDefaultOptionsEv:
   30|      2|const ATNDeserializationOptions& ATNDeserializationOptions::getDefaultOptions() {
   31|      2|  std::call_once(defaultATNDeserializationOptionsOnceFlag,
   32|      2|                 initializeDefaultATNDeserializationOptions);
   33|      2|  return *defaultATNDeserializationOptions;
   34|      2|}
ATNDeserializationOptions.cpp:_ZN12_GLOBAL__N_142initializeDefaultATNDeserializationOptionsEv:
   20|      1|void initializeDefaultATNDeserializationOptions() {
   21|      1|  defaultATNDeserializationOptions.reset(new ATNDeserializationOptions());
   22|      1|}

_ZN6antlr43atn25ATNDeserializationOptionsC2Ev:
   16|      1|    : _readOnly(false), _verifyATN(true), _generateRuleBypassTransitions(false) {}

_ZN6antlr43atn15ATNDeserializerC2Ev:
  254|      2|ATNDeserializer::ATNDeserializer() : ATNDeserializer(ATNDeserializationOptions::getDefaultOptions()) {}
_ZN6antlr43atn15ATNDeserializerC2ENS0_25ATNDeserializationOptionsE:
  256|      2|ATNDeserializer::ATNDeserializer(ATNDeserializationOptions deserializationOptions) : _deserializationOptions(std::move(deserializationOptions)) {}
_ZNK6antlr43atn15ATNDeserializer11deserializeENS0_17SerializedATNViewE:
  258|      2|std::unique_ptr<ATN> ATNDeserializer::deserialize(SerializedATNView data) const {
  259|      2|  int p = 0;
  260|      2|  int version = data[p++];
  261|      2|  if (version != SERIALIZED_VERSION) {
  ------------------
  |  Branch (261:7): [True: 0, False: 2]
  ------------------
  262|      0|    std::string reason = "Could not deserialize ATN with version" + std::to_string(version) + "(expected " + std::to_string(SERIALIZED_VERSION) + ").";
  263|       |
  264|      0|    throw UnsupportedOperationException(reason);
  265|      0|  }
  266|       |
  267|      2|  ATNType grammarType = (ATNType)data[p++];
  268|      2|  size_t maxTokenType = data[p++];
  269|      2|  auto atn = std::make_unique<ATN>(grammarType, maxTokenType);
  270|       |
  271|       |  //
  272|       |  // STATES
  273|       |  //
  274|      2|  {
  275|      2|    std::vector<std::pair<LoopEndState*, size_t>> loopBackStateNumbers;
  276|      2|    std::vector<std::pair<BlockStartState*, size_t>> endStateNumbers;
  277|      2|    size_t nstates = data[p++];
  278|      2|    atn->states.reserve(nstates);
  279|      2|    loopBackStateNumbers.reserve(nstates);  // Reserve worst case size, its short lived.
  280|      2|    endStateNumbers.reserve(nstates);  // Reserve worst case size, its short lived.
  281|    634|    for (size_t i = 0; i < nstates; i++) {
  ------------------
  |  Branch (281:24): [True: 632, False: 2]
  ------------------
  282|    632|      ATNStateType stype = static_cast<ATNStateType>(data[p++]);
  283|       |      // ignore bad type of states
  284|    632|      if (stype == ATNStateType::INVALID) {
  ------------------
  |  Branch (284:11): [True: 0, False: 632]
  ------------------
  285|      0|        atn->addState(nullptr);
  286|      0|        continue;
  287|      0|      }
  288|       |
  289|    632|      size_t ruleIndex = data[p++];
  290|    632|      ATNState *s = stateFactory(stype, ruleIndex);
  291|    632|      if (stype == ATNStateType::LOOP_END) { // special case
  ------------------
  |  Branch (291:11): [True: 30, False: 602]
  ------------------
  292|     30|        int loopBackStateNumber = data[p++];
  293|     30|        loopBackStateNumbers.push_back({ downCast<LoopEndState*>(s),  loopBackStateNumber });
  294|    602|      } else if (BlockStartState::is(s)) {
  ------------------
  |  Branch (294:18): [True: 57, False: 545]
  ------------------
  295|     57|        int endStateNumber = data[p++];
  296|     57|        endStateNumbers.push_back({ downCast<BlockStartState*>(s), endStateNumber });
  297|     57|      }
  298|    632|      atn->addState(s);
  299|    632|    }
  300|       |
  301|       |    // delay the assignment of loop back and end states until we know all the state instances have been initialized
  302|     30|    for (auto &pair : loopBackStateNumbers) {
  ------------------
  |  Branch (302:21): [True: 30, False: 2]
  ------------------
  303|     30|      pair.first->loopBackState = atn->states[pair.second];
  304|     30|    }
  305|       |
  306|     57|    for (auto &pair : endStateNumbers) {
  ------------------
  |  Branch (306:21): [True: 57, False: 2]
  ------------------
  307|     57|      pair.first->endState = downCast<BlockEndState*>(atn->states[pair.second]);
  308|     57|    }
  309|      2|  }
  310|       |
  311|      2|  size_t numNonGreedyStates = data[p++];
  312|      6|  for (size_t i = 0; i < numNonGreedyStates; i++) {
  ------------------
  |  Branch (312:22): [True: 4, False: 2]
  ------------------
  313|      4|    size_t stateNumber = data[p++];
  314|       |    // The serialized ATN must be specifying the right states, so that the
  315|       |    // cast below is correct.
  316|      4|    downCast<DecisionState*>(atn->states[stateNumber])->nonGreedy = true;
  317|      4|  }
  318|       |
  319|      2|  size_t numPrecedenceStates = data[p++];
  320|      5|  for (size_t i = 0; i < numPrecedenceStates; i++) {
  ------------------
  |  Branch (320:22): [True: 3, False: 2]
  ------------------
  321|      3|    size_t stateNumber = data[p++];
  322|      3|    downCast<RuleStartState*>(atn->states[stateNumber])->isLeftRecursiveRule = true;
  323|      3|  }
  324|       |
  325|       |  //
  326|       |  // RULES
  327|       |  //
  328|      2|  size_t nrules = data[p++];
  329|      2|  atn->ruleToStartState.reserve(nrules);
  330|     62|  for (size_t i = 0; i < nrules; i++) {
  ------------------
  |  Branch (330:22): [True: 60, False: 2]
  ------------------
  331|     60|    size_t s = data[p++];
  332|       |    // Also here, the serialized atn must ensure to point to the correct class type.
  333|     60|    RuleStartState *startState = downCast<RuleStartState*>(atn->states[s]);
  334|     60|    atn->ruleToStartState.push_back(startState);
  335|     60|    if (atn->grammarType == ATNType::LEXER) {
  ------------------
  |  Branch (335:9): [True: 47, False: 13]
  ------------------
  336|     47|      size_t tokenType = data[p++];
  337|     47|      atn->ruleToTokenType.push_back(tokenType);
  338|     47|    }
  339|     60|  }
  340|       |
  341|      2|  atn->ruleToStopState.resize(nrules);
  342|    632|  for (ATNState *state : atn->states) {
  ------------------
  |  Branch (342:24): [True: 632, False: 2]
  ------------------
  343|    632|    if (!RuleStopState::is(state)) {
  ------------------
  |  Branch (343:9): [True: 572, False: 60]
  ------------------
  344|    572|      continue;
  345|    572|    }
  346|       |
  347|     60|    RuleStopState *stopState = downCast<RuleStopState*>(state);
  348|     60|    atn->ruleToStopState[state->ruleIndex] = stopState;
  349|     60|    atn->ruleToStartState[state->ruleIndex]->stopState = stopState;
  350|     60|  }
  351|       |
  352|       |  //
  353|       |  // MODES
  354|       |  //
  355|      2|  size_t nmodes = data[p++];
  356|      2|  atn->modeToStartState.reserve(nmodes);
  357|      3|  for (size_t i = 0; i < nmodes; i++) {
  ------------------
  |  Branch (357:22): [True: 1, False: 2]
  ------------------
  358|      1|    size_t s = data[p++];
  359|      1|    atn->modeToStartState.push_back(downCast<TokensStartState*>(atn->states[s]));
  360|      1|  }
  361|       |
  362|       |  //
  363|       |  // SETS
  364|       |  //
  365|      2|  {
  366|      2|    std::vector<misc::IntervalSet> sets;
  367|       |
  368|      2|    deserializeSets(data, p, sets);
  369|      2|    sets.shrink_to_fit();
  370|       |
  371|       |    //
  372|       |    // EDGES
  373|       |    //
  374|      2|    int nedges = data[p++];
  375|    693|    for (int i = 0; i < nedges; i++) {
  ------------------
  |  Branch (375:21): [True: 691, False: 2]
  ------------------
  376|    691|      size_t src = data[p];
  377|    691|      size_t trg = data[p + 1];
  378|    691|      TransitionType ttype = static_cast<TransitionType>(data[p + 2]);
  379|    691|      size_t arg1 = data[p + 3];
  380|    691|      size_t arg2 = data[p + 4];
  381|    691|      size_t arg3 = data[p + 5];
  382|    691|      ConstTransitionPtr trans = edgeFactory(*atn, ttype, trg, arg1, arg2, arg3, sets);
  383|    691|      ATNState *srcState = atn->states[src];
  384|    691|      srcState->addTransition(std::move(trans));
  385|    691|      p += 6;
  386|    691|    }
  387|      2|  }
  388|       |  // edges for rule stop states can be derived, so they aren't serialized
  389|    632|  for (ATNState *state : atn->states) {
  ------------------
  |  Branch (389:24): [True: 632, False: 2]
  ------------------
  390|  1.32k|    for (size_t i = 0; i < state->transitions.size(); i++) {
  ------------------
  |  Branch (390:24): [True: 691, False: 632]
  ------------------
  391|    691|      const Transition *t = state->transitions[i].get();
  392|    691|      if (!RuleTransition::is(t)) {
  ------------------
  |  Branch (392:11): [True: 611, False: 80]
  ------------------
  393|    611|        continue;
  394|    611|      }
  395|       |
  396|     80|      const RuleTransition *ruleTransition = downCast<const RuleTransition*>(t);
  397|     80|      size_t outermostPrecedenceReturn = INVALID_INDEX;
  398|     80|      if (atn->ruleToStartState[ruleTransition->target->ruleIndex]->isLeftRecursiveRule) {
  ------------------
  |  Branch (398:11): [True: 9, False: 71]
  ------------------
  399|      9|        if (ruleTransition->precedence == 0) {
  ------------------
  |  Branch (399:13): [True: 6, False: 3]
  ------------------
  400|      6|          outermostPrecedenceReturn = ruleTransition->target->ruleIndex;
  401|      6|        }
  402|      9|      }
  403|       |
  404|     80|      ConstTransitionPtr returnTransition = std::make_unique<EpsilonTransition>(ruleTransition->followState, outermostPrecedenceReturn);
  405|     80|      atn->ruleToStopState[ruleTransition->target->ruleIndex]->addTransition(std::move(returnTransition));
  406|     80|    }
  407|    632|  }
  408|       |
  409|    632|  for (ATNState *state : atn->states) {
  ------------------
  |  Branch (409:24): [True: 632, False: 2]
  ------------------
  410|    632|    if (BlockStartState::is(state)) {
  ------------------
  |  Branch (410:9): [True: 57, False: 575]
  ------------------
  411|     57|      BlockStartState *startState = downCast<BlockStartState*>(state);
  412|       |
  413|       |      // we need to know the end state to set its start state
  414|     57|      if (startState->endState == nullptr) {
  ------------------
  |  Branch (414:11): [True: 0, False: 57]
  ------------------
  415|      0|        throw IllegalStateException();
  416|      0|      }
  417|       |
  418|       |      // block end states can only be associated to a single block start state
  419|     57|      if (startState->endState->startState != nullptr) {
  ------------------
  |  Branch (419:11): [True: 0, False: 57]
  ------------------
  420|      0|        throw IllegalStateException();
  421|      0|      }
  422|       |
  423|     57|      startState->endState->startState = downCast<BlockStartState*>(state);
  424|     57|    }
  425|       |
  426|    632|    if (PlusLoopbackState::is(state)) {
  ------------------
  |  Branch (426:9): [True: 12, False: 620]
  ------------------
  427|     12|      PlusLoopbackState *loopbackState = downCast<PlusLoopbackState*>(state);
  428|     36|      for (size_t i = 0; i < loopbackState->transitions.size(); i++) {
  ------------------
  |  Branch (428:26): [True: 24, False: 12]
  ------------------
  429|     24|        ATNState *target = loopbackState->transitions[i]->target;
  430|     24|        if (PlusBlockStartState::is(target)) {
  ------------------
  |  Branch (430:13): [True: 12, False: 12]
  ------------------
  431|     12|          (downCast<PlusBlockStartState*>(target))->loopBackState = loopbackState;
  432|     12|        }
  433|     24|      }
  434|    620|    } else if (StarLoopbackState::is(state)) {
  ------------------
  |  Branch (434:16): [True: 18, False: 602]
  ------------------
  435|     18|      StarLoopbackState *loopbackState = downCast<StarLoopbackState*>(state);
  436|     36|      for (size_t i = 0; i < loopbackState->transitions.size(); i++) {
  ------------------
  |  Branch (436:26): [True: 18, False: 18]
  ------------------
  437|     18|        ATNState *target = loopbackState->transitions[i]->target;
  438|     18|        if (StarLoopEntryState::is(target)) {
  ------------------
  |  Branch (438:13): [True: 18, False: 0]
  ------------------
  439|     18|          downCast<StarLoopEntryState*>(target)->loopBackState = loopbackState;
  440|     18|        }
  441|     18|      }
  442|     18|    }
  443|    632|  }
  444|       |
  445|       |  //
  446|       |  // DECISIONS
  447|       |  //
  448|      2|  size_t ndecisions = data[p++];
  449|      2|  atn->decisionToState.reserve(ndecisions);
  450|     67|  for (size_t i = 0; i < ndecisions; i++) {
  ------------------
  |  Branch (450:22): [True: 65, False: 2]
  ------------------
  451|     65|    size_t s = data[p++];
  452|     65|    DecisionState *decState = downCast<DecisionState*>(atn->states[s]);
  453|     65|    if (decState == nullptr)
  ------------------
  |  Branch (453:9): [True: 0, False: 65]
  ------------------
  454|      0|      throw IllegalStateException();
  455|       |
  456|     65|    atn->decisionToState.push_back(decState);
  457|     65|    decState->decision = static_cast<int>(i);
  458|     65|  }
  459|       |
  460|       |  //
  461|       |  // LEXER ACTIONS
  462|       |  //
  463|      2|  if (atn->grammarType == ATNType::LEXER) {
  ------------------
  |  Branch (463:7): [True: 1, False: 1]
  ------------------
  464|      1|    atn->lexerActions.resize(data[p++]);
  465|      2|    for (size_t i = 0; i < atn->lexerActions.size(); i++) {
  ------------------
  |  Branch (465:24): [True: 1, False: 1]
  ------------------
  466|      1|      LexerActionType actionType = static_cast<LexerActionType>(data[p++]);
  467|      1|      int data1 = data[p++];
  468|      1|      int data2 = data[p++];
  469|      1|      atn->lexerActions[i] = lexerActionFactory(actionType, data1, data2);
  470|      1|    }
  471|      1|  }
  472|       |
  473|      2|  markPrecedenceDecisions(*atn);
  474|       |
  475|      2|  if (_deserializationOptions.isVerifyATN()) {
  ------------------
  |  Branch (475:7): [True: 2, False: 0]
  ------------------
  476|      2|    verifyATN(*atn);
  477|      2|  }
  478|       |
  479|      2|  if (_deserializationOptions.isGenerateRuleBypassTransitions() && atn->grammarType == ATNType::PARSER) {
  ------------------
  |  Branch (479:7): [True: 0, False: 2]
  |  Branch (479:68): [True: 0, False: 0]
  ------------------
  480|      0|    atn->ruleToTokenType.resize(atn->ruleToStartState.size());
  481|      0|    for (size_t i = 0; i < atn->ruleToStartState.size(); i++) {
  ------------------
  |  Branch (481:24): [True: 0, False: 0]
  ------------------
  482|      0|      atn->ruleToTokenType[i] = static_cast<int>(atn->maxTokenType + i + 1);
  483|      0|    }
  484|       |
  485|      0|    for (std::vector<RuleStartState*>::size_type i = 0; i < atn->ruleToStartState.size(); i++) {
  ------------------
  |  Branch (485:57): [True: 0, False: 0]
  ------------------
  486|      0|      BasicBlockStartState *bypassStart = new BasicBlockStartState(); /* mem check: freed in ATN d-tor */
  487|      0|      bypassStart->ruleIndex = static_cast<int>(i);
  488|      0|      atn->addState(bypassStart);
  489|       |
  490|      0|      BlockEndState *bypassStop = new BlockEndState(); /* mem check: freed in ATN d-tor */
  491|      0|      bypassStop->ruleIndex = static_cast<int>(i);
  492|      0|      atn->addState(bypassStop);
  493|       |
  494|      0|      bypassStart->endState = bypassStop;
  495|      0|      atn->defineDecisionState(bypassStart);
  496|       |
  497|      0|      bypassStop->startState = bypassStart;
  498|       |
  499|      0|      ATNState *endState;
  500|      0|      const Transition *excludeTransition = nullptr;
  501|      0|      if (atn->ruleToStartState[i]->isLeftRecursiveRule) {
  ------------------
  |  Branch (501:11): [True: 0, False: 0]
  ------------------
  502|       |        // wrap from the beginning of the rule to the StarLoopEntryState
  503|      0|        endState = nullptr;
  504|      0|        for (ATNState *state : atn->states) {
  ------------------
  |  Branch (504:30): [True: 0, False: 0]
  ------------------
  505|      0|          if (state->ruleIndex != i) {
  ------------------
  |  Branch (505:15): [True: 0, False: 0]
  ------------------
  506|      0|            continue;
  507|      0|          }
  508|       |
  509|      0|          if (!StarLoopEntryState::is(state)) {
  ------------------
  |  Branch (509:15): [True: 0, False: 0]
  ------------------
  510|      0|            continue;
  511|      0|          }
  512|       |
  513|      0|          ATNState *maybeLoopEndState = state->transitions[state->transitions.size() - 1]->target;
  514|      0|          if (!LoopEndState::is(maybeLoopEndState)) {
  ------------------
  |  Branch (514:15): [True: 0, False: 0]
  ------------------
  515|      0|            continue;
  516|      0|          }
  517|       |
  518|      0|          if (maybeLoopEndState->epsilonOnlyTransitions && RuleStopState::is(maybeLoopEndState->transitions[0]->target)) {
  ------------------
  |  Branch (518:15): [True: 0, False: 0]
  |  Branch (518:60): [True: 0, False: 0]
  ------------------
  519|      0|            endState = state;
  520|      0|            break;
  521|      0|          }
  522|      0|        }
  523|       |
  524|      0|        if (endState == nullptr) {
  ------------------
  |  Branch (524:13): [True: 0, False: 0]
  ------------------
  525|      0|          throw UnsupportedOperationException("Couldn't identify final state of the precedence rule prefix section.");
  526|       |
  527|      0|        }
  528|       |
  529|      0|        excludeTransition = (static_cast<StarLoopEntryState*>(endState))->loopBackState->transitions[0].get();
  530|      0|      } else {
  531|      0|        endState = atn->ruleToStopState[i];
  532|      0|      }
  533|       |
  534|       |      // all non-excluded transitions that currently target end state need to target blockEnd instead
  535|      0|      for (ATNState *state : atn->states) {
  ------------------
  |  Branch (535:28): [True: 0, False: 0]
  ------------------
  536|      0|        for (auto &transition : state->transitions) {
  ------------------
  |  Branch (536:31): [True: 0, False: 0]
  ------------------
  537|      0|          if (transition.get() == excludeTransition) {
  ------------------
  |  Branch (537:15): [True: 0, False: 0]
  ------------------
  538|      0|            continue;
  539|      0|          }
  540|       |
  541|      0|          if (transition->target == endState) {
  ------------------
  |  Branch (541:15): [True: 0, False: 0]
  ------------------
  542|      0|            const_cast<Transition*>(transition.get())->target = bypassStop;
  543|      0|          }
  544|      0|        }
  545|      0|      }
  546|       |
  547|       |      // all transitions leaving the rule start state need to leave blockStart instead
  548|      0|      while (atn->ruleToStartState[i]->transitions.size() > 0) {
  ------------------
  |  Branch (548:14): [True: 0, False: 0]
  ------------------
  549|      0|        ConstTransitionPtr transition = atn->ruleToStartState[i]->removeTransition(atn->ruleToStartState[i]->transitions.size() - 1);
  550|      0|        bypassStart->addTransition(std::move(transition));
  551|      0|      }
  552|       |
  553|       |      // link the new states
  554|      0|      atn->ruleToStartState[i]->addTransition(std::make_unique<EpsilonTransition>(bypassStart));
  555|      0|      bypassStop->addTransition(std::make_unique<EpsilonTransition>(endState));
  556|       |
  557|      0|      ATNState *matchState = new BasicState(); /* mem check: freed in ATN d-tor */
  558|      0|      atn->addState(matchState);
  559|      0|      matchState->addTransition(std::make_unique<AtomTransition>(bypassStop, atn->ruleToTokenType[i]));
  560|      0|      bypassStart->addTransition(std::make_unique<EpsilonTransition>(matchState));
  561|      0|    }
  562|       |
  563|      0|    if (_deserializationOptions.isVerifyATN()) {
  ------------------
  |  Branch (563:9): [True: 0, False: 0]
  ------------------
  564|       |      // reverify after modification
  565|      0|      verifyATN(*atn);
  566|      0|    }
  567|      0|  }
  568|       |
  569|      2|  return atn;
  570|      2|}
_ZNK6antlr43atn15ATNDeserializer9verifyATNERKNS0_3ATNE:
  572|      2|void ATNDeserializer::verifyATN(const ATN &atn) const {
  573|       |  // verify assumptions
  574|    632|  for (ATNState *state : atn.states) {
  ------------------
  |  Branch (574:24): [True: 632, False: 2]
  ------------------
  575|    632|    if (state == nullptr) {
  ------------------
  |  Branch (575:9): [True: 0, False: 632]
  ------------------
  576|      0|      continue;
  577|      0|    }
  578|       |
  579|    632|    checkCondition(state->epsilonOnlyTransitions || state->transitions.size() <= 1);
  ------------------
  |  Branch (579:20): [True: 431, False: 201]
  |  Branch (579:53): [True: 201, False: 0]
  ------------------
  580|       |
  581|    632|    if (PlusBlockStartState::is(state)) {
  ------------------
  |  Branch (581:9): [True: 12, False: 620]
  ------------------
  582|     12|      checkCondition((downCast<PlusBlockStartState*>(state))->loopBackState != nullptr);
  583|     12|    }
  584|       |
  585|    632|    if (StarLoopEntryState::is(state)) {
  ------------------
  |  Branch (585:9): [True: 18, False: 614]
  ------------------
  586|     18|      StarLoopEntryState *starLoopEntryState = downCast<StarLoopEntryState*>(state);
  587|     18|      checkCondition(starLoopEntryState->loopBackState != nullptr);
  588|     18|      checkCondition(starLoopEntryState->transitions.size() == 2);
  589|       |
  590|     18|      if (StarBlockStartState::is(starLoopEntryState->transitions[0]->target)) {
  ------------------
  |  Branch (590:11): [True: 14, False: 4]
  ------------------
  591|     14|        checkCondition(downCast<LoopEndState*>(starLoopEntryState->transitions[1]->target) != nullptr);
  592|     14|        checkCondition(!starLoopEntryState->nonGreedy);
  593|     14|      } else if (LoopEndState::is(starLoopEntryState->transitions[0]->target)) {
  ------------------
  |  Branch (593:18): [True: 4, False: 0]
  ------------------
  594|      4|        checkCondition(StarBlockStartState::is(starLoopEntryState->transitions[1]->target));
  595|      4|        checkCondition(starLoopEntryState->nonGreedy);
  596|      4|      } else {
  597|      0|        throw IllegalStateException();
  598|      0|      }
  599|     18|    }
  600|       |
  601|    632|    if (StarLoopbackState::is(state)) {
  ------------------
  |  Branch (601:9): [True: 18, False: 614]
  ------------------
  602|     18|      checkCondition(state->transitions.size() == 1);
  603|     18|      checkCondition(StarLoopEntryState::is(state->transitions[0]->target));
  604|     18|    }
  605|       |
  606|    632|    if (LoopEndState::is(state)) {
  ------------------
  |  Branch (606:9): [True: 30, False: 602]
  ------------------
  607|     30|      checkCondition((downCast<LoopEndState*>(state))->loopBackState != nullptr);
  608|     30|    }
  609|       |
  610|    632|    if (RuleStartState::is(state)) {
  ------------------
  |  Branch (610:9): [True: 60, False: 572]
  ------------------
  611|     60|      checkCondition((downCast<RuleStartState*>(state))->stopState != nullptr);
  612|     60|    }
  613|       |
  614|    632|    if (BlockStartState::is(state)) {
  ------------------
  |  Branch (614:9): [True: 57, False: 575]
  ------------------
  615|     57|      checkCondition((downCast<BlockStartState*>(state))->endState != nullptr);
  616|     57|    }
  617|       |
  618|    632|    if (BlockEndState::is(state)) {
  ------------------
  |  Branch (618:9): [True: 57, False: 575]
  ------------------
  619|     57|      checkCondition((downCast<BlockEndState*>(state))->startState != nullptr);
  620|     57|    }
  621|       |
  622|    632|    if (DecisionState::is(state)) {
  ------------------
  |  Branch (622:9): [True: 88, False: 544]
  ------------------
  623|     88|      DecisionState *decisionState = downCast<DecisionState*>(state);
  624|     88|      checkCondition(decisionState->transitions.size() <= 1 || decisionState->decision >= 0);
  ------------------
  |  Branch (624:22): [True: 23, False: 65]
  |  Branch (624:64): [True: 65, False: 0]
  ------------------
  625|    544|    } else {
  626|    544|      checkCondition(state->transitions.size() <= 1 || RuleStopState::is(state));
  ------------------
  |  Branch (626:22): [True: 531, False: 13]
  |  Branch (626:56): [True: 13, False: 0]
  ------------------
  627|    544|    }
  628|    632|  }
  629|      2|}
ATNDeserializer.cpp:_ZN12_GLOBAL__N_112stateFactoryEN6antlr43atn12ATNStateTypeEm:
  174|    632|  ATNState* stateFactory(ATNStateType type, size_t ruleIndex) {
  175|    632|    ATNState *s;
  176|    632|    switch (type) {
  177|      0|      case ATNStateType::INVALID:
  ------------------
  |  Branch (177:7): [True: 0, False: 632]
  ------------------
  178|      0|        return nullptr;
  179|    319|      case ATNStateType::BASIC :
  ------------------
  |  Branch (179:7): [True: 319, False: 313]
  ------------------
  180|    319|        s = new BasicState();
  181|    319|        break;
  182|     60|      case ATNStateType::RULE_START :
  ------------------
  |  Branch (182:7): [True: 60, False: 572]
  ------------------
  183|     60|        s = new RuleStartState();
  184|     60|        break;
  185|     27|      case ATNStateType::BLOCK_START :
  ------------------
  |  Branch (185:7): [True: 27, False: 605]
  ------------------
  186|     27|        s = new BasicBlockStartState();
  187|     27|        break;
  188|     12|      case ATNStateType::PLUS_BLOCK_START :
  ------------------
  |  Branch (188:7): [True: 12, False: 620]
  ------------------
  189|     12|        s = new PlusBlockStartState();
  190|     12|        break;
  191|     18|      case ATNStateType::STAR_BLOCK_START :
  ------------------
  |  Branch (191:7): [True: 18, False: 614]
  ------------------
  192|     18|        s = new StarBlockStartState();
  193|     18|        break;
  194|      1|      case ATNStateType::TOKEN_START :
  ------------------
  |  Branch (194:7): [True: 1, False: 631]
  ------------------
  195|      1|        s = new TokensStartState();
  196|      1|        break;
  197|     60|      case ATNStateType::RULE_STOP :
  ------------------
  |  Branch (197:7): [True: 60, False: 572]
  ------------------
  198|     60|        s = new RuleStopState();
  199|     60|        break;
  200|     57|      case ATNStateType::BLOCK_END :
  ------------------
  |  Branch (200:7): [True: 57, False: 575]
  ------------------
  201|     57|        s = new BlockEndState();
  202|     57|        break;
  203|     18|      case ATNStateType::STAR_LOOP_BACK :
  ------------------
  |  Branch (203:7): [True: 18, False: 614]
  ------------------
  204|     18|        s = new StarLoopbackState();
  205|     18|        break;
  206|     18|      case ATNStateType::STAR_LOOP_ENTRY :
  ------------------
  |  Branch (206:7): [True: 18, False: 614]
  ------------------
  207|     18|        s = new StarLoopEntryState();
  208|     18|        break;
  209|     12|      case ATNStateType::PLUS_LOOP_BACK :
  ------------------
  |  Branch (209:7): [True: 12, False: 620]
  ------------------
  210|     12|        s = new PlusLoopbackState();
  211|     12|        break;
  212|     30|      case ATNStateType::LOOP_END :
  ------------------
  |  Branch (212:7): [True: 30, False: 602]
  ------------------
  213|     30|        s = new LoopEndState();
  214|     30|        break;
  215|      0|      default :
  ------------------
  |  Branch (215:7): [True: 0, False: 632]
  ------------------
  216|      0|        std::string message = "The specified state type " + std::to_string(static_cast<size_t>(type)) + " is not valid.";
  217|      0|        throw IllegalArgumentException(message);
  218|    632|    }
  219|    632|    assert(s->getStateType() == type);
  220|    632|    s->ruleIndex = ruleIndex;
  221|    632|    return s;
  222|    632|  }
ATNDeserializer.cpp:_ZN12_GLOBAL__N_115deserializeSetsEN6antlr43atn17SerializedATNViewERiRNSt3__16vectorINS0_4misc11IntervalSetENS4_9allocatorIS7_EEEE:
  231|      2|    std::vector<misc::IntervalSet>& sets) {
  232|      2|    size_t nsets = data[p++];
  233|      2|    sets.reserve(sets.size() + nsets);
  234|     21|    for (size_t i = 0; i < nsets; i++) {
  ------------------
  |  Branch (234:24): [True: 19, False: 2]
  ------------------
  235|     19|      size_t nintervals = data[p++];
  236|     19|      misc::IntervalSet set;
  237|       |
  238|     19|      bool containsEof = data[p++] != 0;
  239|     19|      if (containsEof) {
  ------------------
  |  Branch (239:11): [True: 0, False: 19]
  ------------------
  240|      0|        set.add(-1);
  241|      0|      }
  242|       |
  243|     69|      for (size_t j = 0; j < nintervals; j++) {
  ------------------
  |  Branch (243:26): [True: 50, False: 19]
  ------------------
  244|     50|        auto a = readUnicodeInt32(data, p);
  245|     50|        auto b = readUnicodeInt32(data, p);
  246|     50|        set.add(a, b);
  247|     50|      }
  248|     19|      sets.push_back(set);
  249|     19|    }
  250|      2|  }
ATNDeserializer.cpp:_ZN12_GLOBAL__N_116readUnicodeInt32EN6antlr43atn17SerializedATNViewERi:
  224|    100|  ssize_t readUnicodeInt32(SerializedATNView data, int& p) {
  225|    100|    return static_cast<ssize_t>(data[p++]);
  226|    100|  }
ATNDeserializer.cpp:_ZN12_GLOBAL__N_111edgeFactoryERKN6antlr43atn3ATNENS1_14TransitionTypeEmmmmRKNSt3__16vectorINS0_4misc11IntervalSetENS6_9allocatorIS9_EEEE:
  137|    691|                                        size_t arg3, const std::vector<misc::IntervalSet> &sets) {
  138|    691|    ATNState *target = atn.states[trg];
  139|    691|    switch (type) {
  ------------------
  |  Branch (139:13): [True: 0, False: 691]
  ------------------
  140|    436|      case TransitionType::EPSILON:
  ------------------
  |  Branch (140:7): [True: 436, False: 255]
  ------------------
  141|    436|        return std::make_unique<EpsilonTransition>(target);
  142|      4|      case TransitionType::RANGE:
  ------------------
  |  Branch (142:7): [True: 4, False: 687]
  ------------------
  143|      4|        if (arg3 != 0) {
  ------------------
  |  Branch (143:13): [True: 0, False: 4]
  ------------------
  144|      0|          return std::make_unique<RangeTransition>(target, Token::EOF, arg2);
  145|      4|        } else {
  146|      4|          return std::make_unique<RangeTransition>(target, arg1, arg2);
  147|      4|        }
  148|     80|      case TransitionType::RULE:
  ------------------
  |  Branch (148:7): [True: 80, False: 611]
  ------------------
  149|     80|        return std::make_unique<RuleTransition>(downCast<RuleStartState*>(atn.states[arg1]), arg2, (int)arg3, target);
  150|      0|      case TransitionType::PREDICATE:
  ------------------
  |  Branch (150:7): [True: 0, False: 691]
  ------------------
  151|      0|        return std::make_unique<PredicateTransition>(target, arg1, arg2, arg3 != 0);
  152|      6|      case TransitionType::PRECEDENCE:
  ------------------
  |  Branch (152:7): [True: 6, False: 685]
  ------------------
  153|      6|        return std::make_unique<PrecedencePredicateTransition>(target, (int)arg1);
  154|    137|      case TransitionType::ATOM:
  ------------------
  |  Branch (154:7): [True: 137, False: 554]
  ------------------
  155|    137|        if (arg3 != 0) {
  ------------------
  |  Branch (155:13): [True: 1, False: 136]
  ------------------
  156|      1|          return std::make_unique<AtomTransition>(target, Token::EOF);
  157|    136|        } else {
  158|    136|          return std::make_unique<AtomTransition>(target, arg1);
  159|    136|        }
  160|      5|      case TransitionType::ACTION:
  ------------------
  |  Branch (160:7): [True: 5, False: 686]
  ------------------
  161|      5|        return std::make_unique<ActionTransition>(target, arg1, arg2, arg3 != 0);
  162|     14|      case TransitionType::SET:
  ------------------
  |  Branch (162:7): [True: 14, False: 677]
  ------------------
  163|     14|        return std::make_unique<SetTransition>(target, sets[arg1]);
  164|      7|      case TransitionType::NOT_SET:
  ------------------
  |  Branch (164:7): [True: 7, False: 684]
  ------------------
  165|      7|        return std::make_unique<NotSetTransition>(target, sets[arg1]);
  166|      2|      case TransitionType::WILDCARD:
  ------------------
  |  Branch (166:7): [True: 2, False: 689]
  ------------------
  167|      2|        return std::make_unique<WildcardTransition>(target);
  168|    691|    }
  169|       |
  170|      0|    throw IllegalArgumentException("The specified transition type is not valid.");
  171|    691|  }
ATNDeserializer.cpp:_ZN12_GLOBAL__N_118lexerActionFactoryEN6antlr43atn15LexerActionTypeEii:
  104|      1|  Ref<const LexerAction> lexerActionFactory(LexerActionType type, int data1, int data2) {
  105|      1|    switch (type) {
  106|      1|      case LexerActionType::CHANNEL:
  ------------------
  |  Branch (106:7): [True: 1, False: 0]
  ------------------
  107|      1|        return std::make_shared<LexerChannelAction>(data1);
  108|       |
  109|      0|      case LexerActionType::CUSTOM:
  ------------------
  |  Branch (109:7): [True: 0, False: 1]
  ------------------
  110|      0|        return std::make_shared<LexerCustomAction>(data1, data2);
  111|       |
  112|      0|      case LexerActionType::MODE:
  ------------------
  |  Branch (112:7): [True: 0, False: 1]
  ------------------
  113|      0|        return std::make_shared< LexerModeAction>(data1);
  114|       |
  115|      0|      case LexerActionType::MORE:
  ------------------
  |  Branch (115:7): [True: 0, False: 1]
  ------------------
  116|      0|        return LexerMoreAction::getInstance();
  117|       |
  118|      0|      case LexerActionType::POP_MODE:
  ------------------
  |  Branch (118:7): [True: 0, False: 1]
  ------------------
  119|      0|        return LexerPopModeAction::getInstance();
  120|       |
  121|      0|      case LexerActionType::PUSH_MODE:
  ------------------
  |  Branch (121:7): [True: 0, False: 1]
  ------------------
  122|      0|        return std::make_shared<LexerPushModeAction>(data1);
  123|       |
  124|      0|      case LexerActionType::SKIP:
  ------------------
  |  Branch (124:7): [True: 0, False: 1]
  ------------------
  125|      0|        return LexerSkipAction::getInstance();
  126|       |
  127|      0|      case LexerActionType::TYPE:
  ------------------
  |  Branch (127:7): [True: 0, False: 1]
  ------------------
  128|      0|        return std::make_shared<LexerTypeAction>(data1);
  129|       |
  130|      0|      default:
  ------------------
  |  Branch (130:7): [True: 0, False: 1]
  ------------------
  131|      0|        throw IllegalArgumentException("The specified lexer action type " + std::to_string(static_cast<size_t>(type)) +
  132|      0|                                      " is not valid.");
  133|      1|    }
  134|      1|  }
ATNDeserializer.cpp:_ZN12_GLOBAL__N_123markPrecedenceDecisionsERKN6antlr43atn3ATNE:
   83|      2|  void markPrecedenceDecisions(const ATN &atn) {
   84|    632|    for (ATNState *state : atn.states) {
  ------------------
  |  Branch (84:26): [True: 632, False: 2]
  ------------------
   85|    632|      if (!StarLoopEntryState::is(state)) {
  ------------------
  |  Branch (85:11): [True: 614, False: 18]
  ------------------
   86|    614|        continue;
   87|    614|      }
   88|       |
   89|       |      /* We analyze the ATN to determine if this ATN decision state is the
   90|       |      * decision for the closure block that determines whether a
   91|       |      * precedence rule should continue or complete.
   92|       |      */
   93|     18|      if (atn.ruleToStartState[state->ruleIndex]->isLeftRecursiveRule) {
  ------------------
  |  Branch (93:11): [True: 3, False: 15]
  ------------------
   94|      3|        ATNState *maybeLoopEndState = state->transitions[state->transitions.size() - 1]->target;
   95|      3|        if (LoopEndState::is(maybeLoopEndState)) {
  ------------------
  |  Branch (95:13): [True: 3, False: 0]
  ------------------
   96|      3|          if (maybeLoopEndState->epsilonOnlyTransitions && RuleStopState::is(maybeLoopEndState->transitions[0]->target)) {
  ------------------
  |  Branch (96:15): [True: 3, False: 0]
  |  Branch (96:60): [True: 3, False: 0]
  ------------------
   97|      3|            downCast<StarLoopEntryState*>(state)->isPrecedenceDecision = true;
   98|      3|          }
   99|      3|        }
  100|      3|      }
  101|     18|    }
  102|      2|  }
ATNDeserializer.cpp:_ZN12_GLOBAL__N_114checkConditionEb:
   72|  1.58k|  void checkCondition(bool condition) {
   73|  1.58k|    checkCondition(condition, "");
   74|  1.58k|  }
ATNDeserializer.cpp:_ZN12_GLOBAL__N_114checkConditionEbNSt3__117basic_string_viewIcNS0_11char_traitsIcEEEE:
   66|  1.58k|  void checkCondition(bool condition, std::string_view message) {
   67|  1.58k|    if (!condition) {
  ------------------
  |  Branch (67:9): [True: 0, False: 1.58k]
  ------------------
   68|      0|      throw IllegalStateException(std::string(message));
   69|      0|    }
   70|  1.58k|  }

_ZN6antlr43atn12ATNSimulatorC2ERKNS0_3ATNERNS0_22PredictionContextCacheE:
   20|  18.4k|    : atn(atn), _sharedContextCache(sharedContextCache) {}
_ZNK6antlr43atn12ATNSimulator21getSharedContextCacheEv:
   26|    624|PredictionContextCache& ATNSimulator::getSharedContextCache() const {
   27|    624|  return _sharedContextCache;
   28|    624|}
_ZN6antlr43atn12ATNSimulator16getCachedContextERKNSt3__110shared_ptrIKNS0_17PredictionContextEEE:
   30|    624|Ref<const PredictionContext> ATNSimulator::getCachedContext(const Ref<const PredictionContext> &context) {
   31|       |  // This function must only be called with an active state lock, as we are going to change a shared structure.
   32|    624|  return PredictionContext::getCachedContext(context, getSharedContextCache());
   33|    624|}

_ZN6antlr43atn8ATNState13addTransitionENSt3__110unique_ptrIKNS0_10TransitionENS2_14default_deleteIS5_EEEE:
   32|    771|void ATNState::addTransition(ConstTransitionPtr e) {
   33|    771|  addTransition(transitions.size(), std::move(e));
   34|    771|}
_ZN6antlr43atn8ATNState13addTransitionEmNSt3__110unique_ptrIKNS0_10TransitionENS2_14default_deleteIS5_EEEE:
   36|    771|void ATNState::addTransition(size_t index, ConstTransitionPtr e) {
   37|    771|  for (const auto &transition : transitions)
  ------------------
  |  Branch (37:31): [True: 1.02k, False: 768]
  ------------------
   38|  1.02k|    if (transition->target->stateNumber == e->target->stateNumber) {
  ------------------
  |  Branch (38:9): [True: 3, False: 1.02k]
  ------------------
   39|      3|      return;
   40|      3|    }
   41|       |
   42|    768|  if (transitions.empty()) {
  ------------------
  |  Branch (42:7): [True: 595, False: 173]
  ------------------
   43|    595|    epsilonOnlyTransitions = e->isEpsilon();
   44|    595|  } else if (epsilonOnlyTransitions != e->isEpsilon()) {
  ------------------
  |  Branch (44:14): [True: 0, False: 173]
  ------------------
   45|      0|    std::cerr << "ATN state %d has both epsilon and non-epsilon transitions.\n" << stateNumber;
   46|      0|    epsilonOnlyTransitions = false;
   47|      0|  }
   48|       |
   49|    768|  transitions.insert(transitions.begin() + index, std::move(e));
   50|    768|}

_ZN6antlr43atn16ActionTransitionC2EPNS0_8ATNStateEmmb:
   15|      5|  : Transition(TransitionType::ACTION, target), ruleIndex(ruleIndex), actionIndex(actionIndex), isCtxDependent(isCtxDependent) {
   16|      5|}
_ZNK6antlr43atn16ActionTransition9isEpsilonEv:
   18|  50.3k|bool ActionTransition::isEpsilon() const {
   19|  50.3k|  return true; // we are to be ignored by analysis 'cept for predicates
   20|  50.3k|}

_ZN6antlr43atn14AtomTransitionC2EPNS0_8ATNStateEm:
   14|    137|AtomTransition::AtomTransition(ATNState *target, size_t label) : Transition(TransitionType::ATOM, target), _label(label) {
   15|    137|}
_ZNK6antlr43atn14AtomTransition5labelEv:
   17|   277k|IntervalSet AtomTransition::label() const {
   18|   277k|  return IntervalSet::of((int)_label);
   19|   277k|}
_ZNK6antlr43atn14AtomTransition7matchesEmmm:
   21|   799k|bool AtomTransition::matches(size_t symbol, size_t /*minVocabSymbol*/, size_t /*maxVocabSymbol*/) const {
   22|   799k|  return _label == symbol;
   23|   799k|}

_ZN6antlr43atn17EpsilonTransitionC2EPNS0_8ATNStateE:
   10|    436|EpsilonTransition::EpsilonTransition(ATNState *target) : EpsilonTransition(target, INVALID_INDEX) {
   11|    436|}
_ZN6antlr43atn17EpsilonTransitionC2EPNS0_8ATNStateEm:
   14|    516|  : Transition(TransitionType::EPSILON, target), _outermostPrecedenceReturn(outermostPrecedenceReturn) {
   15|    516|}
_ZNK6antlr43atn17EpsilonTransition25outermostPrecedenceReturnEv:
   17|    161|size_t EpsilonTransition::outermostPrecedenceReturn() const {
   18|    161|  return _outermostPrecedenceReturn;
   19|    161|}
_ZNK6antlr43atn17EpsilonTransition9isEpsilonEv:
   21|  2.93M|bool EpsilonTransition::isEpsilon() const {
   22|  2.93M|  return true;
   23|  2.93M|}
_ZNK6antlr43atn17EpsilonTransition7matchesEmmm:
   25|  1.36k|bool EpsilonTransition::matches(size_t /*symbol*/, size_t /*minVocabSymbol*/, size_t /*maxVocabSymbol*/) const {
   26|  1.36k|  return false;
   27|  1.36k|}

_ZNK6antlr43atn11LL1Analyzer4LOOKEPNS0_8ATNStateEPNS_11RuleContextE:
  179|  27.7k|misc::IntervalSet LL1Analyzer::LOOK(ATNState *s, RuleContext *ctx) const {
  180|  27.7k|  return LOOK(s, nullptr, ctx);
  181|  27.7k|}
_ZNK6antlr43atn11LL1Analyzer4LOOKEPNS0_8ATNStateES3_PNS_11RuleContextE:
  183|  27.7k|misc::IntervalSet LL1Analyzer::LOOK(ATNState *s, ATNState *stopState, RuleContext *ctx) const {
  184|  27.7k|  Ref<const PredictionContext> lookContext = ctx != nullptr ? PredictionContext::fromRuleContext(_atn, ctx) : nullptr;
  ------------------
  |  Branch (184:46): [True: 27.6k, False: 72]
  ------------------
  185|  27.7k|  misc::IntervalSet r;
  186|  27.7k|  LL1AnalyzerImpl impl(_atn, r, true, true);
  187|  27.7k|  impl.LOOK(s, stopState, lookContext);
  188|  27.7k|  return r;
  189|  27.7k|}
LL1Analyzer.cpp:_ZN12_GLOBAL__N_115LL1AnalyzerImplC2ERKN6antlr43atn3ATNERNS1_4misc11IntervalSetEbb:
   39|  27.7k|    LL1AnalyzerImpl(const ATN& atn, misc::IntervalSet& look, bool seeThruPreds, bool addEOF) : _atn(atn), _look(look), _seeThruPreds(seeThruPreds), _addEOF(addEOF) {}
LL1Analyzer.cpp:_ZN12_GLOBAL__N_115LL1AnalyzerImpl4LOOKEPN6antlr43atn8ATNStateES4_RKNSt3__110shared_ptrIKNS2_17PredictionContextEEE:
   70|  1.41M|    void LOOK(ATNState *s, ATNState *stopState, Ref<const PredictionContext> const& ctx) {
   71|  1.41M|      if (!_lookBusy.insert(ATNConfig(s, 0, ctx)).second) {
  ------------------
  |  Branch (71:11): [True: 0, False: 1.41M]
  ------------------
   72|      0|        return;
   73|      0|      }
   74|       |
   75|       |      // ml: s can never be null, hence no need to check if stopState is != null.
   76|  1.41M|      if (s == stopState) {
  ------------------
  |  Branch (76:11): [True: 0, False: 1.41M]
  ------------------
   77|      0|        if (ctx == nullptr) {
  ------------------
  |  Branch (77:13): [True: 0, False: 0]
  ------------------
   78|      0|          _look.add(Token::EPSILON);
   79|      0|          return;
   80|      0|        } else if (ctx->isEmpty() && _addEOF) {
  ------------------
  |  Branch (80:20): [True: 0, False: 0]
  |  Branch (80:38): [True: 0, False: 0]
  ------------------
   81|      0|          _look.add(Token::EOF);
   82|      0|          return;
   83|      0|        }
   84|      0|      }
   85|       |
   86|  1.41M|      if (s->getStateType() == ATNStateType::RULE_STOP) {
  ------------------
  |  Branch (86:11): [True: 170k, False: 1.24M]
  ------------------
   87|   170k|        if (ctx == nullptr) {
  ------------------
  |  Branch (87:13): [True: 32, False: 170k]
  ------------------
   88|     32|          _look.add(Token::EPSILON);
   89|     32|          return;
   90|   170k|        } else if (ctx->isEmpty() && _addEOF) {
  ------------------
  |  Branch (90:20): [True: 472, False: 170k]
  |  Branch (90:38): [True: 472, False: 0]
  ------------------
   91|    472|          _look.add(Token::EOF);
   92|    472|          return;
   93|    472|        }
   94|       |
   95|   170k|        if (ctx != PredictionContext::EMPTY) {
  ------------------
  |  Branch (95:13): [True: 170k, False: 0]
  ------------------
   96|   170k|          bool removed = _calledRuleStack.test(s->ruleIndex);
   97|   170k|          _calledRuleStack[s->ruleIndex] = false;
   98|       |          // run thru all possible stack tops in ctx
   99|   340k|          for (size_t i = 0; i < ctx->size(); i++) {
  ------------------
  |  Branch (99:30): [True: 170k, False: 170k]
  ------------------
  100|   170k|            ATNState *returnState = _atn.states[ctx->getReturnState(i)];
  101|   170k|            LOOK(returnState, stopState, ctx->getParent(i));
  102|   170k|          }
  103|   170k|          if (removed) {
  ------------------
  |  Branch (103:15): [True: 0, False: 170k]
  ------------------
  104|      0|            _calledRuleStack.set(s->ruleIndex);
  105|      0|          }
  106|   170k|          return;
  107|   170k|        }
  108|   170k|      }
  109|       |
  110|  1.24M|      size_t n = s->transitions.size();
  111|  2.80M|      for (size_t i = 0; i < n; i++) {
  ------------------
  |  Branch (111:26): [True: 1.56M, False: 1.24M]
  ------------------
  112|  1.56M|        const Transition *t = s->transitions[i].get();
  113|  1.56M|        const auto tType = t->getTransitionType();
  114|       |
  115|  1.56M|        if (tType == TransitionType::RULE) {
  ------------------
  |  Branch (115:13): [True: 60.4k, False: 1.50M]
  ------------------
  116|  60.4k|          if (_calledRuleStack[(static_cast<const RuleTransition*>(t))->target->ruleIndex]) {
  ------------------
  |  Branch (116:15): [True: 0, False: 60.4k]
  ------------------
  117|      0|            continue;
  118|      0|          }
  119|       |
  120|  60.4k|          Ref<const PredictionContext> newContext = SingletonPredictionContext::create(ctx, (static_cast<const RuleTransition*>(t))->followState->stateNumber);
  121|       |
  122|  60.4k|          _calledRuleStack.set((static_cast<const RuleTransition*>(t))->target->ruleIndex);
  123|  60.4k|          LOOK(t->target, stopState, newContext);
  124|  60.4k|          _calledRuleStack[(static_cast<const RuleTransition*>(t))->target->ruleIndex] = false;
  125|       |
  126|  1.50M|        } else if (tType == TransitionType::PREDICATE || tType == TransitionType::PRECEDENCE) {
  ------------------
  |  Branch (126:20): [True: 0, False: 1.50M]
  |  Branch (126:58): [True: 130k, False: 1.37M]
  ------------------
  127|   130k|          if (_seeThruPreds) {
  ------------------
  |  Branch (127:15): [True: 130k, False: 0]
  ------------------
  128|   130k|            LOOK(t->target, stopState, ctx);
  129|   130k|          } else {
  130|      0|            _look.add(LL1Analyzer::HIT_PRED);
  131|      0|          }
  132|  1.37M|        } else if (t->isEpsilon()) {
  ------------------
  |  Branch (132:20): [True: 1.02M, False: 346k]
  ------------------
  133|  1.02M|          LOOK(t->target, stopState, ctx);
  134|  1.02M|        } else if (tType == TransitionType::WILDCARD) {
  ------------------
  |  Branch (134:20): [True: 0, False: 346k]
  ------------------
  135|      0|          _look.addAll(misc::IntervalSet::of(Token::MIN_USER_TOKEN_TYPE, static_cast<ssize_t>(_atn.maxTokenType)));
  136|   346k|        } else {
  137|   346k|          misc::IntervalSet set = t->label();
  138|   346k|          if (!set.isEmpty()) {
  ------------------
  |  Branch (138:15): [True: 346k, False: 0]
  ------------------
  139|   346k|            if (tType == TransitionType::NOT_SET) {
  ------------------
  |  Branch (139:17): [True: 0, False: 346k]
  ------------------
  140|      0|              set = set.complement(misc::IntervalSet::of(Token::MIN_USER_TOKEN_TYPE, static_cast<ssize_t>(_atn.maxTokenType)));
  141|      0|            }
  142|   346k|            _look.addAll(set);
  143|   346k|          }
  144|   346k|        }
  145|  1.56M|      }
  146|  1.24M|    }
LL1Analyzer.cpp:_ZNK12_GLOBAL__N_115ATNConfigHasherclERKN6antlr43atn9ATNConfigE:
   26|  1.41M|    size_t operator()(const ATNConfig& atn_config) const {
   27|  1.41M|      return atn_config.hashCode();
   28|  1.41M|    }
LL1Analyzer.cpp:_ZNK12_GLOBAL__N_117ATNConfigComparerclERKN6antlr43atn9ATNConfigES5_:
   32|  1.33M|    bool operator()(const ATNConfig& lhs, const ATNConfig& rhs) const {
   33|  1.33M|      return lhs == rhs;
   34|  1.33M|    }

_ZN6antlr43atn14LexerATNConfigC2EPNS0_8ATNStateEiNSt3__110shared_ptrIKNS0_17PredictionContextEEE:
   21|     36|    : ATNConfig(state, alt, std::move(context)) {}
_ZN6antlr43atn14LexerATNConfigC2ERKS1_PNS0_8ATNStateE:
   27|   275k|    : ATNConfig(other, state), _lexerActionExecutor(other._lexerActionExecutor), _passedThroughNonGreedyDecision(checkNonGreedyDecision(other, state)) {}
_ZN6antlr43atn14LexerATNConfigC2ERKS1_PNS0_8ATNStateENSt3__110shared_ptrIKNS0_19LexerActionExecutorEEE:
   30|  20.2k|    : ATNConfig(other, state), _lexerActionExecutor(std::move(lexerActionExecutor)), _passedThroughNonGreedyDecision(checkNonGreedyDecision(other, state)) {}
_ZN6antlr43atn14LexerATNConfigC2ERKS1_PNS0_8ATNStateENSt3__110shared_ptrIKNS0_17PredictionContextEEE:
   33|   100k|    : ATNConfig(other, state, std::move(context)), _lexerActionExecutor(other._lexerActionExecutor), _passedThroughNonGreedyDecision(checkNonGreedyDecision(other, state)) {}
_ZNK6antlr43atn14LexerATNConfig8hashCodeEv:
   35|   255k|size_t LexerATNConfig::hashCode() const {
   36|   255k|  size_t hashCode = misc::MurmurHash::initialize(7);
   37|   255k|  hashCode = misc::MurmurHash::update(hashCode, state->stateNumber);
   38|   255k|  hashCode = misc::MurmurHash::update(hashCode, alt);
   39|   255k|  hashCode = misc::MurmurHash::update(hashCode, context);
   40|   255k|  hashCode = misc::MurmurHash::update(hashCode, semanticContext);
   41|   255k|  hashCode = misc::MurmurHash::update(hashCode, _passedThroughNonGreedyDecision ? 1 : 0);
  ------------------
  |  Branch (41:49): [True: 149k, False: 105k]
  ------------------
   42|   255k|  hashCode = misc::MurmurHash::update(hashCode, _lexerActionExecutor);
   43|   255k|  hashCode = misc::MurmurHash::finish(hashCode, 6);
   44|   255k|  return hashCode;
   45|   255k|}
_ZN6antlr43atn14LexerATNConfig22checkNonGreedyDecisionERKS1_PNS0_8ATNStateE:
   64|   396k|bool LexerATNConfig::checkNonGreedyDecision(LexerATNConfig const& source, ATNState *target) {
   65|   396k|  return source._passedThroughNonGreedyDecision ||
  ------------------
  |  Branch (65:10): [True: 228k, False: 167k]
  ------------------
   66|   396k|    (DecisionState::is(target) && downCast<DecisionState*>(target)->nonGreedy);
  ------------------
  |  Branch (66:6): [True: 21.6k, False: 146k]
  |  Branch (66:35): [True: 8, False: 21.6k]
  ------------------
   67|   396k|}

_ZN6antlr43atn17LexerATNSimulator8SimState5resetEv:
   33|  9.44M|void LexerATNSimulator::SimState::reset() {
   34|  9.44M|  *this = SimState();
   35|  9.44M|}
_ZN6antlr43atn17LexerATNSimulatorC2EPNS_5LexerERKNS0_3ATNERNSt3__16vectorINS_3dfa3DFAENS7_9allocatorISA_EEEERNS0_22PredictionContextCacheE:
   44|  9.21k|  : ATNSimulator(atn, sharedContextCache), _recog(recog), _decisionToDFA(decisionToDFA) {
   45|  9.21k|  InitializeInstanceFields();
   46|  9.21k|}
_ZN6antlr43atn17LexerATNSimulator5matchEPNS_10CharStreamEm:
   55|  9.44M|size_t LexerATNSimulator::match(CharStream *input, size_t mode) {
   56|  9.44M|  _mode = mode;
   57|  9.44M|  ssize_t mark = input->mark();
   58|       |
   59|  9.44M|  auto onExit = finally([input, mark] {
   60|  9.44M|    input->release(mark);
   61|  9.44M|  });
   62|       |
   63|  9.44M|  _startIndex = input->index();
   64|  9.44M|  _prevAccept.reset();
   65|  9.44M|  const dfa::DFA &dfa = _decisionToDFA[mode];
   66|  9.44M|  dfa::DFAState* s0;
   67|  9.44M|  {
   68|  9.44M|    std::shared_lock<std::shared_mutex> stateLock(atn._stateMutex);
   69|  9.44M|    s0 = dfa.s0;
   70|  9.44M|  }
   71|  9.44M|  if (s0 == nullptr) {
  ------------------
  |  Branch (71:7): [True: 1, False: 9.44M]
  ------------------
   72|      1|    return matchATN(input);
   73|  9.44M|  } else {
   74|  9.44M|    return execATN(input, s0);
   75|  9.44M|  }
   76|  9.44M|}
_ZN6antlr43atn17LexerATNSimulator8matchATNEPNS_10CharStreamE:
   94|      1|size_t LexerATNSimulator::matchATN(CharStream *input) {
   95|      1|  ATNState *startState = atn.modeToStartState[_mode];
   96|       |
   97|      1|  std::unique_ptr<ATNConfigSet> s0_closure = computeStartState(input, startState);
   98|       |
   99|      1|  bool suppressEdge = s0_closure->hasSemanticContext;
  100|      1|  s0_closure->hasSemanticContext = false;
  101|       |
  102|      1|  dfa::DFAState *next = addDFAState(s0_closure.release(), suppressEdge);
  103|       |
  104|      1|  size_t predict = execATN(input, next);
  105|       |
  106|      1|  return predict;
  107|      1|}
_ZN6antlr43atn17LexerATNSimulator7execATNEPNS_10CharStreamEPNS_3dfa8DFAStateE:
  109|  9.44M|size_t LexerATNSimulator::execATN(CharStream *input, dfa::DFAState *ds0) {
  110|  9.44M|  if (ds0->isAcceptState) {
  ------------------
  |  Branch (110:7): [True: 0, False: 9.44M]
  ------------------
  111|       |    // allow zero-length tokens
  112|       |    // ml: in Java code this method uses 3 params. The first is a member var of the class anyway (_prevAccept), so why pass it here?
  113|      0|    captureSimState(input, ds0);
  114|      0|  }
  115|       |
  116|  9.44M|  size_t t = input->LA(1);
  117|  9.44M|  dfa::DFAState *s = ds0; // s is current/from DFA state
  118|       |
  119|  65.4M|  while (true) { // while more work
  ------------------
  |  Branch (119:10): [Folded - Ignored]
  ------------------
  120|       |    // As we move src->trg, src->trg, we keep track of the previous trg to
  121|       |    // avoid looking up the DFA state again, which is expensive.
  122|       |    // If the previous target was already part of the DFA, we might
  123|       |    // be able to avoid doing a reach operation upon t. If s!=null,
  124|       |    // it means that semantic predicates didn't prevent us from
  125|       |    // creating a DFA state. Once we know s!=null, we check to see if
  126|       |    // the DFA state has an edge already for t. If so, we can just reuse
  127|       |    // it's configuration set; there's no point in re-computing it.
  128|       |    // This is kind of like doing DFA simulation within the ATN
  129|       |    // simulation because DFA simulation is really just a way to avoid
  130|       |    // computing reach/closure sets. Technically, once we know that
  131|       |    // we have a previously added DFA state, we could jump over to
  132|       |    // the DFA simulator. But, that would mean popping back and forth
  133|       |    // a lot and making things more complicated algorithmically.
  134|       |    // This optimization makes a lot of sense for loops within DFA.
  135|       |    // A character will take us back to an existing DFA state
  136|       |    // that already has lots of edges out of it. e.g., .* in comments.
  137|  65.4M|    dfa::DFAState *target = getExistingTargetState(s, t);
  138|  65.4M|    if (target == nullptr) {
  ------------------
  |  Branch (138:9): [True: 41.7k, False: 65.4M]
  ------------------
  139|  41.7k|      target = computeTargetState(input, s, t);
  140|  41.7k|    }
  141|       |
  142|  65.4M|    if (target == ERROR.get()) {
  ------------------
  |  Branch (142:9): [True: 9.44M, False: 56.0M]
  ------------------
  143|  9.44M|      break;
  144|  9.44M|    }
  145|       |
  146|       |    // If this is a consumable input element, make sure to consume before
  147|       |    // capturing the accept state so the input index, line, and char
  148|       |    // position accurately reflect the state of the interpreter at the
  149|       |    // end of the token.
  150|  56.0M|    if (t != Token::EOF) {
  ------------------
  |  Branch (150:9): [True: 56.0M, False: 0]
  ------------------
  151|  56.0M|      consume(input);
  152|  56.0M|    }
  153|       |
  154|  56.0M|    if (target->isAcceptState) {
  ------------------
  |  Branch (154:9): [True: 18.3M, False: 37.6M]
  ------------------
  155|  18.3M|      captureSimState(input, target);
  156|  18.3M|      if (t == Token::EOF) {
  ------------------
  |  Branch (156:11): [True: 0, False: 18.3M]
  ------------------
  157|      0|        break;
  158|      0|      }
  159|  18.3M|    }
  160|       |
  161|  56.0M|    t = input->LA(1);
  162|  56.0M|    s = target; // flip; current DFA target becomes new src/from state
  163|  56.0M|  }
  164|       |
  165|  9.44M|  return failOrAccept(input, s->configs.get(), t);
  166|  9.44M|}
_ZN6antlr43atn17LexerATNSimulator22getExistingTargetStateEPNS_3dfa8DFAStateEm:
  168|  65.4M|dfa::DFAState *LexerATNSimulator::getExistingTargetState(dfa::DFAState *s, size_t t) {
  169|  65.4M|  dfa::DFAState* retval = nullptr;
  170|  65.4M|  std::shared_lock<std::shared_mutex> edgeLock(atn._edgeMutex);
  171|  65.4M|  if (t <= MAX_DFA_EDGE) {
  ------------------
  |  Branch (171:7): [True: 65.4M, False: 34.2k]
  ------------------
  172|  65.4M|    auto iterator = s->edges.find(t - MIN_DFA_EDGE);
  173|       |#if DEBUG_ATN == 1
  174|       |    if (iterator != s->edges.end()) {
  175|       |      std::cout << std::string("reuse state ") << s->stateNumber << std::string(" edge to ") << iterator->second->stateNumber << std::endl;
  176|       |    }
  177|       |#endif
  178|       |
  179|  65.4M|    if (iterator != s->edges.end())
  ------------------
  |  Branch (179:9): [True: 65.4M, False: 7.50k]
  ------------------
  180|  65.4M|      retval = iterator->second;
  181|  65.4M|  }
  182|  65.4M|  return retval;
  183|  65.4M|}
_ZN6antlr43atn17LexerATNSimulator18computeTargetStateEPNS_10CharStreamEPNS_3dfa8DFAStateEm:
  185|  41.7k|dfa::DFAState *LexerATNSimulator::computeTargetState(CharStream *input, dfa::DFAState *s, size_t t) {
  186|  41.7k|  OrderedATNConfigSet *reach = new OrderedATNConfigSet(); /* mem-check: deleted on error or managed by new DFA state. */
  187|       |
  188|       |  // if we don't find an existing DFA state
  189|       |  // Fill reach starting from closure, following t transitions
  190|  41.7k|  getReachableConfigSet(input, s->configs.get(), reach, t);
  191|       |
  192|  41.7k|  if (reach->isEmpty()) { // we got nowhere on t from s
  ------------------
  |  Branch (192:7): [True: 23.4k, False: 18.3k]
  ------------------
  193|  23.4k|    if (!reach->hasSemanticContext) {
  ------------------
  |  Branch (193:9): [True: 23.4k, False: 0]
  ------------------
  194|       |      // we got nowhere on t, don't throw out this knowledge; it'd
  195|       |      // cause a failover from DFA later.
  196|  23.4k|      addDFAEdge(s, t, ERROR.get());
  197|  23.4k|    }
  198|  23.4k|    delete reach;
  199|       |
  200|       |    // stop when we can't match any more char
  201|  23.4k|    return ERROR.get();
  202|  23.4k|  }
  203|       |
  204|       |  // Add an edge from s to target DFA found/created for reach
  205|  18.3k|  return addDFAEdge(s, t, reach);
  206|  41.7k|}
_ZN6antlr43atn17LexerATNSimulator12failOrAcceptEPNS_10CharStreamEPNS0_12ATNConfigSetEm:
  208|  9.44M|size_t LexerATNSimulator::failOrAccept(CharStream *input, ATNConfigSet *reach, size_t t) {
  209|  9.44M|  if (_prevAccept.dfaState != nullptr) {
  ------------------
  |  Branch (209:7): [True: 7.51M, False: 1.92M]
  ------------------
  210|  7.51M|    accept(input, _prevAccept.dfaState->lexerActionExecutor, _startIndex, _prevAccept.index, _prevAccept.line, _prevAccept.charPos);
  211|  7.51M|    return _prevAccept.dfaState->prediction;
  212|  7.51M|  } else {
  213|       |    // if no accept and EOF is first char, return EOF
  214|  1.92M|    if (t == Token::EOF && input->index() == _startIndex) {
  ------------------
  |  Branch (214:9): [True: 571, False: 1.92M]
  |  Branch (214:28): [True: 0, False: 571]
  ------------------
  215|      0|      return Token::EOF;
  216|      0|    }
  217|       |
  218|  1.92M|    throw LexerNoViableAltException(_recog, input, _startIndex, reach);
  219|  1.92M|  }
  220|  9.44M|}
_ZN6antlr43atn17LexerATNSimulator21getReachableConfigSetEPNS_10CharStreamEPNS0_12ATNConfigSetES5_m:
  222|  41.7k|void LexerATNSimulator::getReachableConfigSet(CharStream *input, ATNConfigSet *closure_, ATNConfigSet *reach, size_t t) {
  223|       |  // this is used to skip processing for configs which have a lower priority
  224|       |  // than a config that already reached an accept state for the same rule
  225|  41.7k|  size_t skipAlt = ATN::INVALID_ALT_NUMBER;
  226|       |
  227|   428k|  for (const auto &c : closure_->configs) {
  ------------------
  |  Branch (227:22): [True: 428k, False: 41.7k]
  ------------------
  228|   428k|    bool currentAltReachedAcceptState = c->alt == skipAlt;
  229|   428k|    if (currentAltReachedAcceptState && (std::static_pointer_cast<LexerATNConfig>(c))->hasPassedThroughNonGreedyDecision()) {
  ------------------
  |  Branch (229:9): [True: 2.78k, False: 425k]
  |  Branch (229:9): [True: 44, False: 428k]
  |  Branch (229:41): [True: 44, False: 2.74k]
  ------------------
  230|     44|      continue;
  231|     44|    }
  232|       |
  233|       |#if DEBUG_ATN == 1
  234|       |      std::cout << "testing " << getTokenName((int)t) << " at " << c->toString(true) << std::endl;
  235|       |#endif
  236|       |
  237|   428k|    size_t n = c->state->transitions.size();
  238|   838k|    for (size_t ti = 0; ti < n; ti++) { // for each transition
  ------------------
  |  Branch (238:25): [True: 412k, False: 426k]
  ------------------
  239|   412k|      const Transition *trans = c->state->transitions[ti].get();
  240|   412k|      ATNState *target = getReachableTarget(trans, (int)t);
  241|   412k|      if (target != nullptr) {
  ------------------
  |  Branch (241:11): [True: 18.6k, False: 393k]
  ------------------
  242|  18.6k|        auto lexerActionExecutor = downCast<const LexerATNConfig&>(*c).getLexerActionExecutor();
  243|  18.6k|        if (lexerActionExecutor != nullptr) {
  ------------------
  |  Branch (243:13): [True: 0, False: 18.6k]
  ------------------
  244|      0|          lexerActionExecutor = lexerActionExecutor->fixOffsetBeforeMatch((int)input->index() - (int)_startIndex);
  245|      0|        }
  246|       |
  247|  18.6k|        bool treatEofAsEpsilon = t == Token::EOF;
  248|  18.6k|        Ref<LexerATNConfig> config = std::make_shared<LexerATNConfig>(downCast<const LexerATNConfig&>(*c),
  249|  18.6k|          target, std::move(lexerActionExecutor));
  250|       |
  251|  18.6k|        if (closure(input, config, reach, currentAltReachedAcceptState, true, treatEofAsEpsilon)) {
  ------------------
  |  Branch (251:13): [True: 2.24k, False: 16.3k]
  ------------------
  252|       |          // any remaining configs for this alt have a lower priority than
  253|       |          // the one that just reached an accept state.
  254|  2.24k|          skipAlt = c->alt;
  255|  2.24k|          break;
  256|  2.24k|        }
  257|  18.6k|      }
  258|   412k|    }
  259|   428k|  }
  260|  41.7k|}
_ZN6antlr43atn17LexerATNSimulator6acceptEPNS_10CharStreamERKNSt3__110shared_ptrIKNS0_19LexerActionExecutorEEEmmmm:
  263|  7.51M|                               size_t index, size_t line, size_t charPos) {
  264|       |#if DEBUG_ATN == 1
  265|       |    std::cout << "ACTION ";
  266|       |    std::cout << toString(lexerActionExecutor) << std::endl;
  267|       |#endif
  268|       |
  269|       |  // seek to after last char in token
  270|  7.51M|  input->seek(index);
  271|  7.51M|  _line = line;
  272|  7.51M|  _charPositionInLine = (int)charPos;
  273|       |
  274|  7.51M|  if (lexerActionExecutor != nullptr && _recog != nullptr) {
  ------------------
  |  Branch (274:7): [True: 147k, False: 7.37M]
  |  Branch (274:41): [True: 147k, False: 0]
  ------------------
  275|   147k|    lexerActionExecutor->execute(_recog, input, _startIndex);
  276|   147k|  }
  277|  7.51M|}
_ZN6antlr43atn17LexerATNSimulator18getReachableTargetEPKNS0_10TransitionEm:
  279|   412k|atn::ATNState *LexerATNSimulator::getReachableTarget(const Transition *trans, size_t t) {
  280|   412k|  if (trans->matches(t, Lexer::MIN_CHAR_VALUE, Lexer::MAX_CHAR_VALUE)) {
  ------------------
  |  Branch (280:7): [True: 18.6k, False: 393k]
  ------------------
  281|  18.6k|    return trans->target;
  282|  18.6k|  }
  283|       |
  284|   393k|  return nullptr;
  285|   412k|}
_ZN6antlr43atn17LexerATNSimulator17computeStartStateEPNS_10CharStreamEPNS0_8ATNStateE:
  287|      1|std::unique_ptr<ATNConfigSet> LexerATNSimulator::computeStartState(CharStream *input, ATNState *p) {
  288|      1|  Ref<const PredictionContext> initialContext = PredictionContext::EMPTY; // ml: the purpose of this assignment is unclear
  289|      1|  std::unique_ptr<ATNConfigSet> configs(new OrderedATNConfigSet());
  290|     37|  for (size_t i = 0; i < p->transitions.size(); i++) {
  ------------------
  |  Branch (290:22): [True: 36, False: 1]
  ------------------
  291|     36|    ATNState *target = p->transitions[i]->target;
  292|     36|    Ref<LexerATNConfig> c = std::make_shared<LexerATNConfig>(target, (int)(i + 1), initialContext);
  293|     36|    closure(input, c, configs.get(), false, false, false);
  294|     36|  }
  295|       |
  296|      1|  return configs;
  297|      1|}
_ZN6antlr43atn17LexerATNSimulator7closureEPNS_10CharStreamERKNSt3__110shared_ptrINS0_14LexerATNConfigEEEPNS0_12ATNConfigSetEbbb:
  300|   396k|                                bool currentAltReachedAcceptState, bool speculative, bool treatEofAsEpsilon) {
  301|       |#if DEBUG_ATN == 1
  302|       |    std::cout << "closure(" << config->toString(true) << ")" << std::endl;
  303|       |#endif
  304|       |
  305|   396k|  if (config->state != nullptr && config->state->getStateType() == ATNStateType::RULE_STOP) {
  ------------------
  |  Branch (305:7): [True: 396k, False: 0]
  |  Branch (305:35): [True: 4.92k, False: 391k]
  ------------------
  306|       |#if DEBUG_ATN == 1
  307|       |      if (_recog != nullptr) {
  308|       |        std::cout << "closure at " << _recog->getRuleNames()[config->state->ruleIndex] << " rule stop " << config << std::endl;
  309|       |      } else {
  310|       |        std::cout << "closure at rule stop " << config << std::endl;
  311|       |      }
  312|       |#endif
  313|       |
  314|  4.92k|    if (config->context == nullptr || config->context->hasEmptyPath()) {
  ------------------
  |  Branch (314:9): [True: 0, False: 4.92k]
  |  Branch (314:39): [True: 2.23k, False: 2.68k]
  ------------------
  315|  2.23k|      if (config->context == nullptr || config->context->isEmpty()) {
  ------------------
  |  Branch (315:11): [True: 0, False: 2.23k]
  |  Branch (315:41): [True: 2.23k, False: 0]
  ------------------
  316|  2.23k|        configs->add(config);
  317|  2.23k|        return true;
  318|  2.23k|      } else {
  319|      0|        configs->add(std::make_shared<LexerATNConfig>(*config, config->state, PredictionContext::EMPTY));
  320|      0|        currentAltReachedAcceptState = true;
  321|      0|      }
  322|  2.23k|    }
  323|       |
  324|  2.68k|    if (config->context != nullptr && !config->context->isEmpty()) {
  ------------------
  |  Branch (324:9): [True: 2.68k, False: 0]
  |  Branch (324:39): [True: 2.68k, False: 0]
  ------------------
  325|  5.36k|      for (size_t i = 0; i < config->context->size(); i++) {
  ------------------
  |  Branch (325:26): [True: 2.68k, False: 2.68k]
  ------------------
  326|  2.68k|        if (config->context->getReturnState(i) != PredictionContext::EMPTY_RETURN_STATE) {
  ------------------
  |  Branch (326:13): [True: 2.68k, False: 0]
  ------------------
  327|  2.68k|          Ref<const PredictionContext> newContext = config->context->getParent(i); // "pop" return state
  328|  2.68k|          ATNState *returnState = atn.states[config->context->getReturnState(i)];
  329|  2.68k|          Ref<LexerATNConfig> c = std::make_shared<LexerATNConfig>(*config, returnState, newContext);
  330|  2.68k|          currentAltReachedAcceptState = closure(input, c, configs, currentAltReachedAcceptState, speculative, treatEofAsEpsilon);
  331|  2.68k|        }
  332|  2.68k|      }
  333|  2.68k|    }
  334|       |
  335|  2.68k|    return currentAltReachedAcceptState;
  336|  4.92k|  }
  337|       |
  338|       |  // optimization
  339|   391k|  if (!config->state->epsilonOnlyTransitions) {
  ------------------
  |  Branch (339:7): [True: 82.8k, False: 309k]
  ------------------
  340|  82.8k|    if (!currentAltReachedAcceptState || !config->hasPassedThroughNonGreedyDecision()) {
  ------------------
  |  Branch (340:9): [True: 82.8k, False: 9]
  |  Branch (340:42): [True: 9, False: 0]
  ------------------
  341|  82.8k|      configs->add(config);
  342|  82.8k|    }
  343|  82.8k|  }
  344|       |
  345|   391k|  ATNState *p = config->state;
  346|   850k|  for (size_t i = 0; i < p->transitions.size(); i++) {
  ------------------
  |  Branch (346:22): [True: 458k, False: 391k]
  ------------------
  347|   458k|    const Transition *t = p->transitions[i].get();
  348|   458k|    Ref<LexerATNConfig> c = getEpsilonTarget(input, config, t, configs, speculative, treatEofAsEpsilon);
  349|   458k|    if (c != nullptr) {
  ------------------
  |  Branch (349:9): [True: 375k, False: 82.8k]
  ------------------
  350|   375k|      currentAltReachedAcceptState = closure(input, c, configs, currentAltReachedAcceptState, speculative, treatEofAsEpsilon);
  351|   375k|    }
  352|   458k|  }
  353|       |
  354|   391k|  return currentAltReachedAcceptState;
  355|   396k|}
_ZN6antlr43atn17LexerATNSimulator16getEpsilonTargetEPNS_10CharStreamERKNSt3__110shared_ptrINS0_14LexerATNConfigEEEPKNS0_10TransitionEPNS0_12ATNConfigSetEbb:
  358|   458k|  ATNConfigSet *configs, bool speculative, bool treatEofAsEpsilon) {
  359|       |
  360|   458k|  Ref<LexerATNConfig> c = nullptr;
  361|   458k|  switch (t->getTransitionType()) {
  362|  98.2k|    case TransitionType::RULE: {
  ------------------
  |  Branch (362:5): [True: 98.2k, False: 360k]
  ------------------
  363|  98.2k|      const RuleTransition *ruleTransition = static_cast<const RuleTransition*>(t);
  364|  98.2k|      Ref<const PredictionContext> newContext = SingletonPredictionContext::create(config->context, ruleTransition->followState->stateNumber);
  365|  98.2k|      c = std::make_shared<LexerATNConfig>(*config, t->target, newContext);
  366|  98.2k|      break;
  367|      0|    }
  368|       |
  369|      0|    case TransitionType::PRECEDENCE:
  ------------------
  |  Branch (369:5): [True: 0, False: 458k]
  ------------------
  370|      0|      throw UnsupportedOperationException("Precedence predicates are not supported in lexers.");
  371|       |
  372|      0|    case TransitionType::PREDICATE: {
  ------------------
  |  Branch (372:5): [True: 0, False: 458k]
  ------------------
  373|       |      /*  Track traversing semantic predicates. If we traverse,
  374|       |       we cannot add a DFA state for this "reach" computation
  375|       |       because the DFA would not test the predicate again in the
  376|       |       future. Rather than creating collections of semantic predicates
  377|       |       like v3 and testing them on prediction, v4 will test them on the
  378|       |       fly all the time using the ATN not the DFA. This is slower but
  379|       |       semantically it's not used that often. One of the key elements to
  380|       |       this predicate mechanism is not adding DFA states that see
  381|       |       predicates immediately afterwards in the ATN. For example,
  382|       |
  383|       |       a : ID {p1}? | ID {p2}? ;
  384|       |
  385|       |       should create the start state for rule 'a' (to save start state
  386|       |       competition), but should not create target of ID state. The
  387|       |       collection of ATN states the following ID references includes
  388|       |       states reached by traversing predicates. Since this is when we
  389|       |       test them, we cannot cash the DFA state target of ID.
  390|       |       */
  391|      0|      const PredicateTransition *pt = static_cast<const PredicateTransition*>(t);
  392|       |
  393|       |#if DEBUG_ATN == 1
  394|       |        std::cout << "EVAL rule " << pt->getRuleIndex() << ":" << pt->getPredIndex() << std::endl;
  395|       |#endif
  396|       |
  397|      0|      configs->hasSemanticContext = true;
  398|      0|      if (evaluatePredicate(input, pt->getRuleIndex(), pt->getPredIndex(), speculative)) {
  ------------------
  |  Branch (398:11): [True: 0, False: 0]
  ------------------
  399|      0|        c = std::make_shared<LexerATNConfig>(*config, t->target);
  400|      0|      }
  401|      0|      break;
  402|      0|    }
  403|       |
  404|  1.60k|    case TransitionType::ACTION:
  ------------------
  |  Branch (404:5): [True: 1.60k, False: 456k]
  ------------------
  405|  1.60k|      if (config->context == nullptr|| config->context->hasEmptyPath()) {
  ------------------
  |  Branch (405:11): [True: 0, False: 1.60k]
  |  Branch (405:40): [True: 1.60k, False: 0]
  ------------------
  406|       |        // execute actions anywhere in the start rule for a token.
  407|       |        //
  408|       |        // TODO: if the entry rule is invoked recursively, some
  409|       |        // actions may be executed during the recursive call. The
  410|       |        // problem can appear when hasEmptyPath() is true but
  411|       |        // isEmpty() is false. In this case, the config needs to be
  412|       |        // split into two contexts - one with just the empty path
  413|       |        // and another with everything but the empty path.
  414|       |        // Unfortunately, the current algorithm does not allow
  415|       |        // getEpsilonTarget to return two configurations, so
  416|       |        // additional modifications are needed before we can support
  417|       |        // the split operation.
  418|  1.60k|        auto lexerActionExecutor = LexerActionExecutor::append(config->getLexerActionExecutor(),
  419|  1.60k|          atn.lexerActions[static_cast<const ActionTransition *>(t)->actionIndex]);
  420|  1.60k|        c = std::make_shared<LexerATNConfig>(*config, t->target, std::move(lexerActionExecutor));
  421|  1.60k|        break;
  422|  1.60k|      }
  423|      0|      else {
  424|       |        // ignore actions in referenced rules
  425|      0|        c = std::make_shared<LexerATNConfig>(*config, t->target);
  426|      0|        break;
  427|      0|      }
  428|       |
  429|   275k|    case TransitionType::EPSILON:
  ------------------
  |  Branch (429:5): [True: 275k, False: 182k]
  ------------------
  430|   275k|      c = std::make_shared<LexerATNConfig>(*config, t->target);
  431|   275k|      break;
  432|       |
  433|  63.8k|    case TransitionType::ATOM:
  ------------------
  |  Branch (433:5): [True: 63.8k, False: 394k]
  ------------------
  434|  64.5k|    case TransitionType::RANGE:
  ------------------
  |  Branch (434:5): [True: 745, False: 457k]
  ------------------
  435|  66.0k|    case TransitionType::SET:
  ------------------
  |  Branch (435:5): [True: 1.53k, False: 456k]
  ------------------
  436|  66.0k|      if (treatEofAsEpsilon) {
  ------------------
  |  Branch (436:11): [True: 0, False: 66.0k]
  ------------------
  437|      0|        if (t->matches(Token::EOF, Lexer::MIN_CHAR_VALUE, Lexer::MAX_CHAR_VALUE)) {
  ------------------
  |  Branch (437:13): [True: 0, False: 0]
  ------------------
  438|      0|          c = std::make_shared<LexerATNConfig>(*config, t->target);
  439|      0|          break;
  440|      0|        }
  441|      0|      }
  442|       |
  443|  66.0k|      break;
  444|       |
  445|  66.0k|    default: // To silence the compiler. Other transition types are not used here.
  ------------------
  |  Branch (445:5): [True: 16.7k, False: 441k]
  ------------------
  446|  16.7k|      break;
  447|   458k|  }
  448|       |
  449|   458k|  return c;
  450|   458k|}
_ZN6antlr43atn17LexerATNSimulator15captureSimStateEPNS_10CharStreamEPNS_3dfa8DFAStateE:
  478|  18.3M|void LexerATNSimulator::captureSimState(CharStream *input, dfa::DFAState *dfaState) {
  479|  18.3M|  _prevAccept.index = input->index();
  480|  18.3M|  _prevAccept.line = _line;
  481|  18.3M|  _prevAccept.charPos = _charPositionInLine;
  482|  18.3M|  _prevAccept.dfaState = dfaState;
  483|  18.3M|}
_ZN6antlr43atn17LexerATNSimulator10addDFAEdgeEPNS_3dfa8DFAStateEmPNS0_12ATNConfigSetE:
  485|  18.3k|dfa::DFAState *LexerATNSimulator::addDFAEdge(dfa::DFAState *from, size_t t, ATNConfigSet *q) {
  486|       |  /* leading to this call, ATNConfigSet.hasSemanticContext is used as a
  487|       |   * marker indicating dynamic predicate evaluation makes this edge
  488|       |   * dependent on the specific input sequence, so the static edge in the
  489|       |   * DFA should be omitted. The target DFAState is still created since
  490|       |   * execATN has the ability to resynchronize with the DFA state cache
  491|       |   * following the predicate evaluation step.
  492|       |   *
  493|       |   * TJP notes: next time through the DFA, we see a pred again and eval.
  494|       |   * If that gets us to a previously created (but dangling) DFA
  495|       |   * state, we can continue in pure DFA mode from there.
  496|       |   */
  497|  18.3k|  bool suppressEdge = q->hasSemanticContext;
  498|  18.3k|  q->hasSemanticContext = false;
  499|       |
  500|  18.3k|  dfa::DFAState *to = addDFAState(q);
  501|       |
  502|  18.3k|  if (suppressEdge) {
  ------------------
  |  Branch (502:7): [True: 0, False: 18.3k]
  ------------------
  503|      0|    return to;
  504|      0|  }
  505|       |
  506|  18.3k|  addDFAEdge(from, t, to);
  507|  18.3k|  return to;
  508|  18.3k|}
_ZN6antlr43atn17LexerATNSimulator10addDFAEdgeEPNS_3dfa8DFAStateEmS4_:
  510|  41.7k|void LexerATNSimulator::addDFAEdge(dfa::DFAState *p, size_t t, dfa::DFAState *q) {
  511|  41.7k|  if (/*t < MIN_DFA_EDGE ||*/ t > MAX_DFA_EDGE) { // MIN_DFA_EDGE is 0
  ------------------
  |  Branch (511:31): [True: 34.2k, False: 7.50k]
  ------------------
  512|       |    // Only track edges within the DFA bounds
  513|  34.2k|    return;
  514|  34.2k|  }
  515|       |
  516|  7.50k|  std::unique_lock<std::shared_mutex> edgeLock(atn._edgeMutex);
  517|  7.50k|  p->edges[t - MIN_DFA_EDGE] = q; // connect
  518|  7.50k|}
_ZN6antlr43atn17LexerATNSimulator11addDFAStateEPNS0_12ATNConfigSetE:
  520|  18.3k|dfa::DFAState *LexerATNSimulator::addDFAState(ATNConfigSet *configs) {
  521|  18.3k|  return addDFAState(configs, true);
  522|  18.3k|}
_ZN6antlr43atn17LexerATNSimulator11addDFAStateEPNS0_12ATNConfigSetEb:
  524|  18.3k|dfa::DFAState *LexerATNSimulator::addDFAState(ATNConfigSet *configs, bool suppressEdge) {
  525|       |  /* the lexer evaluates predicates on-the-fly; by this point configs
  526|       |   * should not contain any configurations with unevaluated predicates.
  527|       |   */
  528|  18.3k|  assert(!configs->hasSemanticContext);
  529|       |
  530|  18.3k|  dfa::DFAState *proposed = new dfa::DFAState(std::unique_ptr<ATNConfigSet>(configs)); /* mem-check: managed by the DFA or deleted below */
  531|  18.3k|  Ref<ATNConfig> firstConfigWithRuleStopState = nullptr;
  532|  84.8k|  for (const auto &c : configs->configs) {
  ------------------
  |  Branch (532:22): [True: 84.8k, False: 16.1k]
  ------------------
  533|  84.8k|    if (RuleStopState::is(c->state)) {
  ------------------
  |  Branch (533:9): [True: 2.23k, False: 82.6k]
  ------------------
  534|  2.23k|      firstConfigWithRuleStopState = c;
  535|  2.23k|      break;
  536|  2.23k|    }
  537|  84.8k|  }
  538|       |
  539|  18.3k|  if (firstConfigWithRuleStopState != nullptr) {
  ------------------
  |  Branch (539:7): [True: 2.23k, False: 16.1k]
  ------------------
  540|  2.23k|    proposed->isAcceptState = true;
  541|  2.23k|    proposed->lexerActionExecutor = downCast<const LexerATNConfig&>(*firstConfigWithRuleStopState).getLexerActionExecutor();
  542|  2.23k|    proposed->prediction = atn.ruleToTokenType[firstConfigWithRuleStopState->state->ruleIndex];
  543|  2.23k|  }
  544|       |
  545|  18.3k|  dfa::DFA &dfa = _decisionToDFA[_mode];
  546|       |
  547|  18.3k|  {
  548|  18.3k|    std::unique_lock<std::shared_mutex> stateLock(atn._stateMutex);
  549|  18.3k|    auto [existing, inserted] = dfa.states.insert(proposed);
  550|  18.3k|    if (!inserted) {
  ------------------
  |  Branch (550:9): [True: 18.0k, False: 254]
  ------------------
  551|  18.0k|      delete proposed;
  552|  18.0k|      proposed = *existing;
  553|  18.0k|    } else {
  554|       |      // Previously we did a lookup, then set fields, then inserted. It was `dfa.states.size()`,
  555|       |      // since we already inserted we need to subtract one.
  556|    254|      proposed->stateNumber = static_cast<int>(dfa.states.size() - 1);
  557|    254|      proposed->configs->setReadonly(true);
  558|    254|    }
  559|  18.3k|    if (!suppressEdge) {
  ------------------
  |  Branch (559:9): [True: 1, False: 18.3k]
  ------------------
  560|      1|      dfa.s0 = proposed;
  561|      1|    }
  562|  18.3k|  }
  563|       |
  564|  18.3k|  return proposed;
  565|  18.3k|}
_ZNK6antlr43atn17LexerATNSimulator7getLineEv:
  576|  16.9M|size_t LexerATNSimulator::getLine() const {
  577|  16.9M|  return _line;
  578|  16.9M|}
_ZN6antlr43atn17LexerATNSimulator21getCharPositionInLineEv:
  584|  16.9M|size_t LexerATNSimulator::getCharPositionInLine() {
  585|  16.9M|  return _charPositionInLine;
  586|  16.9M|}
_ZN6antlr43atn17LexerATNSimulator7consumeEPNS_10CharStreamE:
  592|  57.9M|void LexerATNSimulator::consume(CharStream *input) {
  593|  57.9M|  size_t curChar = input->LA(1);
  594|  57.9M|  if (curChar == '\n') {
  ------------------
  |  Branch (594:7): [True: 3.70M, False: 54.2M]
  ------------------
  595|  3.70M|    _line++;
  596|  3.70M|    _charPositionInLine = 0;
  597|  54.2M|  } else {
  598|  54.2M|    _charPositionInLine++;
  599|  54.2M|  }
  600|  57.9M|  input->consume();
  601|  57.9M|}
_ZN6antlr43atn17LexerATNSimulator24InitializeInstanceFieldsEv:
  610|  9.21k|void LexerATNSimulator::InitializeInstanceFields() {
  611|  9.21k|  _startIndex = 0;
  612|  9.21k|  _line = 1;
  613|  9.21k|  _charPositionInLine = 0;
  614|  9.21k|  _mode = antlr4::Lexer::DEFAULT_MODE;
  615|  9.21k|}
LexerATNSimulator.cpp:_ZZN6antlr43atn17LexerATNSimulator5matchEPNS_10CharStreamEmENK3$_0clEv:
   59|  9.44M|  auto onExit = finally([input, mark] {
   60|  9.44M|    input->release(mark);
   61|  9.44M|  });

_ZNK6antlr43atn11LexerAction8hashCodeEv:
    5|  1.60k|size_t LexerAction::hashCode() const {
    6|  1.60k|  auto hash = cachedHashCode();
    7|  1.60k|  if (hash == 0) {
  ------------------
  |  Branch (7:7): [True: 1, False: 1.60k]
  ------------------
    8|      1|    hash = hashCodeImpl();
    9|      1|    if (hash == 0) {
  ------------------
  |  Branch (9:9): [True: 0, False: 1]
  ------------------
   10|      0|      hash = std::numeric_limits<size_t>::max();
   11|      0|    }
   12|      1|    _hashCode.store(hash, std::memory_order_relaxed);
   13|      1|  }
   14|  1.60k|  return hash;
   15|  1.60k|}

_ZNK6antlr43atn11LexerAction14cachedHashCodeEv:
   72|  1.60k|    size_t cachedHashCode() const { return _hashCode.load(std::memory_order_relaxed); }

_ZN6antlr43atn19LexerActionExecutorC2ENSt3__16vectorINS2_10shared_ptrIKNS0_11LexerActionEEENS2_9allocatorIS7_EEEE:
   32|  1.60k|    : _lexerActions(std::move(lexerActions)), _hashCode(0) {}
_ZN6antlr43atn19LexerActionExecutor6appendERKNSt3__110shared_ptrIKS1_EENS3_IKNS0_11LexerActionEEE:
   35|  1.60k|                                                           Ref<const LexerAction> lexerAction) {
   36|  1.60k|  if (lexerActionExecutor == nullptr) {
  ------------------
  |  Branch (36:7): [True: 1.60k, False: 0]
  ------------------
   37|  1.60k|    return std::make_shared<LexerActionExecutor>(std::vector<Ref<const LexerAction>>{ std::move(lexerAction) });
   38|  1.60k|  }
   39|      0|  std::vector<Ref<const LexerAction>> lexerActions;
   40|      0|  lexerActions.reserve(lexerActionExecutor->_lexerActions.size() + 1);
   41|      0|  lexerActions.insert(lexerActions.begin(), lexerActionExecutor->_lexerActions.begin(), lexerActionExecutor->_lexerActions.end());
   42|      0|  lexerActions.push_back(std::move(lexerAction));
   43|      0|  return std::make_shared<LexerActionExecutor>(std::move(lexerActions));
   44|  1.60k|}
_ZNK6antlr43atn19LexerActionExecutor7executeEPNS_5LexerEPNS_10CharStreamEm:
   66|   147k|void LexerActionExecutor::execute(Lexer *lexer, CharStream *input, size_t startIndex) const {
   67|   147k|  bool requiresSeek = false;
   68|   147k|  size_t stopIndex = input->index();
   69|       |
   70|   147k|  auto onExit = finally([requiresSeek, input, stopIndex]() {
   71|   147k|    if (requiresSeek) {
   72|   147k|      input->seek(stopIndex);
   73|   147k|    }
   74|   147k|  });
   75|   147k|  for (const auto &lexerAction : _lexerActions) {
  ------------------
  |  Branch (75:32): [True: 147k, False: 147k]
  ------------------
   76|   147k|    if (LexerIndexedCustomAction::is(*lexerAction)) {
  ------------------
  |  Branch (76:9): [True: 0, False: 147k]
  ------------------
   77|      0|      int offset = downCast<const LexerIndexedCustomAction&>(*lexerAction).getOffset();
   78|      0|      input->seek(startIndex + offset);
   79|      0|      requiresSeek = (startIndex + offset) != stopIndex;
   80|   147k|    } else if (lexerAction->isPositionDependent()) {
  ------------------
  |  Branch (80:16): [True: 0, False: 147k]
  ------------------
   81|      0|      input->seek(stopIndex);
   82|      0|      requiresSeek = false;
   83|      0|    }
   84|   147k|    lexerAction->execute(lexer);
   85|   147k|  }
   86|   147k|}
_ZNK6antlr43atn19LexerActionExecutor8hashCodeEv:
   88|  4.80k|size_t LexerActionExecutor::hashCode() const {
   89|  4.80k|  auto hash = _hashCode.load(std::memory_order_relaxed);
   90|  4.80k|  if (hash == 0) {
  ------------------
  |  Branch (90:7): [True: 1.60k, False: 3.20k]
  ------------------
   91|  1.60k|    hash = MurmurHash::initialize();
   92|  1.60k|    for (const auto &lexerAction : _lexerActions) {
  ------------------
  |  Branch (92:34): [True: 1.60k, False: 1.60k]
  ------------------
   93|  1.60k|      hash = MurmurHash::update(hash, lexerAction);
   94|  1.60k|    }
   95|  1.60k|    hash = MurmurHash::finish(hash, _lexerActions.size());
   96|  1.60k|    if (hash == 0) {
  ------------------
  |  Branch (96:9): [True: 0, False: 1.60k]
  ------------------
   97|      0|      hash = std::numeric_limits<size_t>::max();
   98|      0|    }
   99|  1.60k|    _hashCode.store(hash, std::memory_order_relaxed);
  100|  1.60k|  }
  101|  4.80k|  return hash;
  102|  4.80k|}
LexerActionExecutor.cpp:_ZZNK6antlr43atn19LexerActionExecutor7executeEPNS_5LexerEPNS_10CharStreamEmENK3$_0clEv:
   70|   147k|  auto onExit = finally([requiresSeek, input, stopIndex]() {
   71|   147k|    if (requiresSeek) {
  ------------------
  |  Branch (71:9): [True: 0, False: 147k]
  ------------------
   72|      0|      input->seek(stopIndex);
   73|      0|    }
   74|   147k|  });

_ZN6antlr43atn18LexerChannelActionC2Ei:
   17|      1|    : LexerAction(LexerActionType::CHANNEL, false), _channel(channel) {}
_ZNK6antlr43atn18LexerChannelAction7executeEPNS_5LexerE:
   19|   147k|void LexerChannelAction::execute(Lexer *lexer) const {
   20|   147k|  lexer->setChannel(getChannel());
   21|   147k|}
_ZNK6antlr43atn18LexerChannelAction12hashCodeImplEv:
   23|      1|size_t LexerChannelAction::hashCodeImpl() const {
   24|      1|  size_t hash = MurmurHash::initialize();
   25|      1|  hash = MurmurHash::update(hash, static_cast<size_t>(getActionType()));
   26|      1|  hash = MurmurHash::update(hash, getChannel());
   27|      1|  return MurmurHash::finish(hash, 2);
   28|      1|}

_ZN6antlr43atn12LoopEndState2isEPKNS0_8ATNStateE:
   18|    639|    static bool is(const ATNState *atnState) { return atnState != nullptr && is(*atnState); }
  ------------------
  |  Branch (18:55): [True: 639, False: 0]
  |  Branch (18:78): [True: 37, False: 602]
  ------------------
_ZN6antlr43atn12LoopEndState2isERKNS0_8ATNStateE:
   16|    639|    static bool is(const ATNState &atnState) { return atnState.getStateType() == ATNStateType::LOOP_END; }

_ZN6antlr43atn16NotSetTransitionC2EPNS0_8ATNStateENS_4misc11IntervalSetE:
   13|      7|NotSetTransition::NotSetTransition(ATNState *target, misc::IntervalSet set) : SetTransition(TransitionType::NOT_SET, target, std::move(set)) {}
_ZNK6antlr43atn16NotSetTransition7matchesEmmm:
   15|  13.0k|bool NotSetTransition::matches(size_t symbol, size_t minVocabSymbol, size_t maxVocabSymbol) const {
   16|  13.0k|  return symbol >= minVocabSymbol && symbol <= maxVocabSymbol
  ------------------
  |  Branch (16:10): [True: 13.0k, False: 0]
  |  Branch (16:38): [True: 11.3k, False: 1.75k]
  ------------------
   17|  13.0k|    && !SetTransition::matches(symbol, minVocabSymbol, maxVocabSymbol);
  ------------------
  |  Branch (17:8): [True: 11.2k, False: 47]
  ------------------
   18|  13.0k|}

_ZNK6antlr43atn19OrderedATNConfigSet8hashCodeERKNS0_9ATNConfigE:
   10|   170k|size_t OrderedATNConfigSet::hashCode(const ATNConfig &atnConfig) const {
   11|   170k|  return atnConfig.hashCode();
   12|   170k|}
_ZNK6antlr43atn19OrderedATNConfigSet6equalsERKNS0_9ATNConfigES4_:
   14|  63.8k|bool OrderedATNConfigSet::equals(const ATNConfig &lhs, const ATNConfig &rhs) const {
   15|  63.8k|  return lhs == rhs;
   16|  63.8k|}

_ZN6antlr43atn18ParserATNSimulatorC2EPNS_6ParserERKNS0_3ATNERNSt3__16vectorINS_3dfa3DFAENS7_9allocatorISA_EEEERNS0_22PredictionContextCacheERKNS0_25ParserATNSimulatorOptionsE:
   63|  9.21k|  mergeCache(options.getPredictionContextMergeCacheOptions()) {
   64|  9.21k|  InitializeInstanceFields();
   65|  9.21k|}
_ZN6antlr43atn18ParserATNSimulator15adaptivePredictEPNS_11TokenStreamEmPNS_17ParserRuleContextE:
   78|  18.2M|size_t ParserATNSimulator::adaptivePredict(TokenStream *input, size_t decision, ParserRuleContext *outerContext) {
   79|       |
   80|       |#if DEBUG_ATN == 1 || DEBUG_LIST_ATN_DECISIONS == 1
   81|       |    std::cout << "adaptivePredict decision " << decision << " exec LA(1)==" << getLookaheadName(input) << " line "
   82|       |      << input->LT(1)->getLine() << ":" << input->LT(1)->getCharPositionInLine() << std::endl;
   83|       |#endif
   84|       |
   85|  18.2M|  _input = input;
   86|  18.2M|  _startIndex = input->index();
   87|  18.2M|  _outerContext = outerContext;
   88|  18.2M|  dfa::DFA &dfa = decisionToDFA[decision];
   89|  18.2M|  _dfa = &dfa;
   90|       |
   91|  18.2M|  ssize_t m = input->mark();
   92|  18.2M|  size_t index = _startIndex;
   93|       |
   94|       |  // Now we are certain to have a specific decision's DFA
   95|       |  // But, do we still need an initial state?
   96|  18.2M|  auto onExit = finally([this, input, index, m] {
   97|  18.2M|    if (mergeCache.getOptions().getClearEveryN() != 0) {
   98|  18.2M|      if (++_mergeCacheCounter == mergeCache.getOptions().getClearEveryN()) {
   99|  18.2M|        mergeCache.clear();
  100|  18.2M|        _mergeCacheCounter = 0;
  101|  18.2M|      }
  102|  18.2M|    }
  103|  18.2M|    _dfa = nullptr;
  104|  18.2M|    input->seek(index);
  105|  18.2M|    input->release(m);
  106|  18.2M|  });
  107|       |
  108|  18.2M|  dfa::DFAState *s0;
  109|  18.2M|  {
  110|  18.2M|    std::shared_lock<std::shared_mutex> stateLock(atn._stateMutex);
  111|  18.2M|    if (dfa.isPrecedenceDfa()) {
  ------------------
  |  Branch (111:9): [True: 9.57M, False: 8.70M]
  ------------------
  112|       |      // the start state for a precedence DFA depends on the current
  113|       |      // parser precedence, and is provided by a DFA method.
  114|  9.57M|      std::shared_lock<std::shared_mutex> edgeLock(atn._edgeMutex);
  115|  9.57M|      s0 = dfa.getPrecedenceStartState(parser->getPrecedence());
  116|  9.57M|    } else {
  117|       |      // the start state for a "regular" DFA is just s0
  118|  8.70M|      s0 = dfa.s0;
  119|  8.70M|    }
  120|  18.2M|  }
  121|       |
  122|  18.2M|  if (s0 == nullptr) {
  ------------------
  |  Branch (122:7): [True: 16, False: 18.2M]
  ------------------
  123|     16|    auto s0_closure = computeStartState(dfa.atnStartState, &ParserRuleContext::EMPTY, false);
  124|     16|    std::unique_ptr<dfa::DFAState> newState;
  125|     16|    std::unique_ptr<dfa::DFAState> oldState;
  126|     16|    std::unique_lock<std::shared_mutex> stateLock(atn._stateMutex);
  127|     16|    dfa::DFAState* ds0 = dfa.s0;
  128|     16|    if (dfa.isPrecedenceDfa()) {
  ------------------
  |  Branch (128:9): [True: 6, False: 10]
  ------------------
  129|       |      /* If this is a precedence DFA, we use applyPrecedenceFilter
  130|       |       * to convert the computed start state to a precedence start
  131|       |       * state. We then use DFA.setPrecedenceStartState to set the
  132|       |       * appropriate start state for the precedence level rather
  133|       |       * than simply setting DFA.s0.
  134|       |       */
  135|      6|      ds0->configs = std::move(s0_closure); // not used for prediction but useful to know start configs anyway
  136|      6|      newState = std::make_unique<dfa::DFAState>(applyPrecedenceFilter(ds0->configs.get()));
  137|      6|      s0 = addDFAState(dfa, newState.get());
  138|      6|      std::unique_lock<std::shared_mutex> edgeLock(atn._edgeMutex);
  139|      6|      dfa.setPrecedenceStartState(parser->getPrecedence(), s0);
  140|     10|    } else {
  141|     10|      newState = std::make_unique<dfa::DFAState>(std::move(s0_closure));
  142|     10|      s0 = addDFAState(dfa, newState.get());
  143|     10|      if (ds0 != s0) {
  ------------------
  |  Branch (143:11): [True: 10, False: 0]
  ------------------
  144|     10|        oldState.reset(ds0);
  145|     10|        dfa.s0 = s0;
  146|     10|      }
  147|     10|    }
  148|     16|    if (s0 == newState.get()) {
  ------------------
  |  Branch (148:9): [True: 16, False: 0]
  ------------------
  149|     16|      newState.release();
  150|     16|    }
  151|     16|  }
  152|       |
  153|       |  // We can start with an existing DFA.
  154|  18.2M|  size_t alt = execATN(dfa, s0, input, index, outerContext != nullptr ? outerContext : &ParserRuleContext::EMPTY);
  ------------------
  |  Branch (154:47): [True: 18.2M, False: 0]
  ------------------
  155|       |
  156|  18.2M|  return alt;
  157|  18.2M|}
_ZN6antlr43atn18ParserATNSimulator7execATNERNS_3dfa3DFAEPNS2_8DFAStateEPNS_11TokenStreamEmPNS_17ParserRuleContextE:
  160|  18.2M|                                   ParserRuleContext *outerContext) {
  161|       |
  162|       |#if DEBUG_ATN == 1 || DEBUG_LIST_ATN_DECISIONS == 1
  163|       |    std::cout << "execATN decision " << dfa.decision << " exec LA(1)==" << getLookaheadName(input) <<
  164|       |      " line " << input->LT(1)->getLine() << ":" << input->LT(1)->getCharPositionInLine() << std::endl;
  165|       |#endif
  166|       |
  167|  18.2M|  dfa::DFAState *previousD = s0;
  168|       |
  169|       |#if DEBUG_ATN == 1
  170|       |    std::cout << "s0 = " << s0 << std::endl;
  171|       |#endif
  172|       |
  173|  18.2M|  size_t t = input->LA(1);
  174|       |
  175|  20.1M|  while (true) { // while more work
  ------------------
  |  Branch (175:10): [Folded - Ignored]
  ------------------
  176|  20.1M|    dfa::DFAState *D = getExistingTargetState(previousD, t);
  177|  20.1M|    if (D == nullptr) {
  ------------------
  |  Branch (177:9): [True: 467, False: 20.1M]
  ------------------
  178|    467|      D = computeTargetState(dfa, previousD, t);
  179|    467|    }
  180|       |
  181|  20.1M|    if (D == ERROR.get()) {
  ------------------
  |  Branch (181:9): [True: 36.8k, False: 20.1M]
  ------------------
  182|       |      // if any configs in previous dipped into outer context, that
  183|       |      // means that input up to t actually finished entry rule
  184|       |      // at least for SLL decision. Full LL doesn't dip into outer
  185|       |      // so don't need special case.
  186|       |      // We will get an error no matter what so delay until after
  187|       |      // decision; better error message. Also, no reachable target
  188|       |      // ATN states in SLL implies LL will also get nowhere.
  189|       |      // If conflict in states that dip out, choose min since we
  190|       |      // will get error no matter what.
  191|  36.8k|      NoViableAltException e = noViableAlt(input, outerContext, previousD->configs.get(), startIndex, false);
  192|  36.8k|      input->seek(startIndex);
  193|  36.8k|      size_t alt = getSynValidOrSemInvalidAltThatFinishedDecisionEntryRule(previousD->configs.get(), outerContext);
  194|  36.8k|      if (alt != ATN::INVALID_ALT_NUMBER) {
  ------------------
  |  Branch (194:11): [True: 34.2k, False: 2.57k]
  ------------------
  195|  34.2k|        return alt;
  196|  34.2k|      }
  197|       |
  198|  2.57k|      throw e;
  199|  36.8k|    }
  200|       |
  201|  20.1M|    if (D->requiresFullContext && _mode != PredictionMode::SLL) {
  ------------------
  |  Branch (201:9): [True: 15.1k, False: 20.0M]
  |  Branch (201:35): [True: 15.1k, False: 0]
  ------------------
  202|       |      // IF PREDS, MIGHT RESOLVE TO SINGLE ALT => SLL (or syntax error)
  203|  15.1k|      BitSet conflictingAlts;
  204|  15.1k|      if (D->predicates.size() != 0) {
  ------------------
  |  Branch (204:11): [True: 0, False: 15.1k]
  ------------------
  205|       |#if DEBUG_ATN == 1
  206|       |          std::cout << "DFA state has preds in DFA sim LL failover" << std::endl;
  207|       |#endif
  208|       |
  209|      0|        size_t conflictIndex = input->index();
  210|      0|        if (conflictIndex != startIndex) {
  ------------------
  |  Branch (210:13): [True: 0, False: 0]
  ------------------
  211|      0|          input->seek(startIndex);
  212|      0|        }
  213|       |
  214|      0|        conflictingAlts = evalSemanticContext(D->predicates, outerContext, true);
  215|      0|        if (conflictingAlts.count() == 1) {
  ------------------
  |  Branch (215:13): [True: 0, False: 0]
  ------------------
  216|       |#if DEBUG_ATN == 1
  217|       |            std::cout << "Full LL avoided" << std::endl;
  218|       |#endif
  219|       |
  220|      0|          return conflictingAlts.nextSetBit(0);
  221|      0|        }
  222|       |
  223|      0|        if (conflictIndex != startIndex) {
  ------------------
  |  Branch (223:13): [True: 0, False: 0]
  ------------------
  224|       |          // restore the index so reporting the fallback to full
  225|       |          // context occurs with the index at the correct spot
  226|      0|          input->seek(conflictIndex);
  227|      0|        }
  228|      0|      }
  229|       |
  230|       |#if DEBUG_DFA == 1
  231|       |        std::cout << "ctx sensitive state " << outerContext << " in " << D << std::endl;
  232|       |#endif
  233|       |
  234|  15.1k|      bool fullCtx = true;
  235|  15.1k|      std::unique_ptr<ATNConfigSet> s0_closure = computeStartState(dfa.atnStartState, outerContext, fullCtx);
  236|  15.1k|      reportAttemptingFullContext(dfa, conflictingAlts, D->configs.get(), startIndex, input->index());
  237|  15.1k|      size_t alt = execATNWithFullContext(dfa, D, s0_closure.get(), input, startIndex, outerContext);
  238|  15.1k|      return alt;
  239|  15.1k|    }
  240|       |
  241|  20.0M|    if (D->isAcceptState) {
  ------------------
  |  Branch (241:9): [True: 18.2M, False: 1.85M]
  ------------------
  242|  18.2M|      if (D->predicates.empty()) {
  ------------------
  |  Branch (242:11): [True: 17.5M, False: 687k]
  ------------------
  243|  17.5M|        return D->prediction;
  244|  17.5M|      }
  245|       |
  246|   687k|      size_t stopIndex = input->index();
  247|   687k|      input->seek(startIndex);
  248|   687k|      BitSet alts = evalSemanticContext(D->predicates, outerContext, true);
  249|   687k|      switch (alts.count()) {
  250|      0|        case 0:
  ------------------
  |  Branch (250:9): [True: 0, False: 687k]
  ------------------
  251|      0|          throw noViableAlt(input, outerContext, D->configs.get(), startIndex, false);
  252|       |
  253|   687k|        case 1:
  ------------------
  |  Branch (253:9): [True: 687k, False: 0]
  ------------------
  254|   687k|          return alts.nextSetBit(0);
  255|       |
  256|      0|        default:
  ------------------
  |  Branch (256:9): [True: 0, False: 687k]
  ------------------
  257|       |          // report ambiguity after predicate evaluation to make sure the correct
  258|       |          // set of ambig alts is reported.
  259|      0|          reportAmbiguity(dfa, D, startIndex, stopIndex, false, alts, D->configs.get());
  260|      0|          return alts.nextSetBit(0);
  261|   687k|      }
  262|   687k|    }
  263|       |
  264|  1.85M|    previousD = D;
  265|       |
  266|  1.85M|    if (t != Token::EOF) {
  ------------------
  |  Branch (266:9): [True: 1.85M, False: 0]
  ------------------
  267|  1.85M|      input->consume();
  268|  1.85M|      t = input->LA(1);
  269|  1.85M|    }
  270|  1.85M|  }
  271|  18.2M|}
_ZN6antlr43atn18ParserATNSimulator22getExistingTargetStateEPNS_3dfa8DFAStateEm:
  273|  20.1M|dfa::DFAState *ParserATNSimulator::getExistingTargetState(dfa::DFAState *previousD, size_t t) {
  274|  20.1M|  dfa::DFAState* retval;
  275|  20.1M|  std::shared_lock<std::shared_mutex> edgeLock(atn._edgeMutex);
  276|  20.1M|  auto iterator = previousD->edges.find(t);
  277|  20.1M|  retval = (iterator == previousD->edges.end()) ? nullptr : iterator->second;
  ------------------
  |  Branch (277:12): [True: 467, False: 20.1M]
  ------------------
  278|  20.1M|  return retval;
  279|  20.1M|}
_ZN6antlr43atn18ParserATNSimulator18computeTargetStateERNS_3dfa3DFAEPNS2_8DFAStateEm:
  281|    467|dfa::DFAState *ParserATNSimulator::computeTargetState(dfa::DFA &dfa, dfa::DFAState *previousD, size_t t) {
  282|    467|  std::unique_ptr<ATNConfigSet> reach = computeReachSet(previousD->configs.get(), t, false);
  283|    467|  if (reach == nullptr) {
  ------------------
  |  Branch (283:7): [True: 204, False: 263]
  ------------------
  284|    204|    addDFAEdge(dfa, previousD, t, ERROR.get());
  285|    204|    return ERROR.get();
  286|    204|  }
  287|       |
  288|       |  // create new target state; we'll add to DFA after it's complete
  289|    263|  dfa::DFAState *D = new dfa::DFAState(std::move(reach)); /* mem-check: managed by the DFA or deleted below, "reach" is no longer valid now. */
  290|    263|  size_t predictedAlt = getUniqueAlt(D->configs.get());
  291|       |
  292|    263|  if (predictedAlt != ATN::INVALID_ALT_NUMBER) {
  ------------------
  |  Branch (292:7): [True: 253, False: 10]
  ------------------
  293|       |    // NO CONFLICT, UNIQUELY PREDICTED ALT
  294|    253|    D->isAcceptState = true;
  295|    253|    D->configs->uniqueAlt = predictedAlt;
  296|    253|    D->prediction = predictedAlt;
  297|    253|  } else if (PredictionModeClass::hasSLLConflictTerminatingPrediction(_mode, D->configs.get())) {
  ------------------
  |  Branch (297:14): [True: 4, False: 6]
  ------------------
  298|       |    // MORE THAN ONE VIABLE ALTERNATIVE
  299|      4|    D->configs->conflictingAlts = getConflictingAlts(D->configs.get());
  300|      4|    D->requiresFullContext = true;
  301|       |    // in SLL-only mode, we will stop at this state and return the minimum alt
  302|      4|    D->isAcceptState = true;
  303|      4|    D->prediction = D->configs->conflictingAlts.nextSetBit(0);
  304|      4|  }
  305|       |
  306|    263|  if (D->isAcceptState && D->configs->hasSemanticContext) {
  ------------------
  |  Branch (306:7): [True: 257, False: 6]
  |  Branch (306:27): [True: 11, False: 246]
  ------------------
  307|     11|    predicateDFAState(D, atn.getDecisionState(dfa.decision));
  308|     11|    if (D->predicates.size() != 0) {
  ------------------
  |  Branch (308:9): [True: 11, False: 0]
  ------------------
  309|     11|      D->prediction = ATN::INVALID_ALT_NUMBER;
  310|     11|    }
  311|     11|  }
  312|       |
  313|       |  // all adds to dfa are done after we've created full D state
  314|    263|  dfa::DFAState *state = addDFAEdge(dfa, previousD, t, D);
  315|    263|  if (state != D) {
  ------------------
  |  Branch (315:7): [True: 125, False: 138]
  ------------------
  316|    125|    delete D; // If the new state exists already we don't need it and use the existing one instead.
  317|    125|  }
  318|    263|  return state;
  319|    467|}
_ZN6antlr43atn18ParserATNSimulator17predicateDFAStateEPNS_3dfa8DFAStateEPNS0_13DecisionStateE:
  321|     11|void ParserATNSimulator::predicateDFAState(dfa::DFAState *dfaState, DecisionState *decisionState) {
  322|       |  // We need to test all predicates, even in DFA states that
  323|       |  // uniquely predict alternative.
  324|     11|  size_t nalts = decisionState->transitions.size();
  325|       |
  326|       |  // Update DFA so reach becomes accept state with (predicate,alt)
  327|       |  // pairs if preds found for conflicting alts
  328|     11|  BitSet altsToCollectPredsFrom = getConflictingAltsOrUniqueAlt(dfaState->configs.get());
  329|     11|  std::vector<Ref<const SemanticContext>> altToPred = getPredsForAmbigAlts(altsToCollectPredsFrom, dfaState->configs.get(), nalts);
  330|     11|  if (!altToPred.empty()) {
  ------------------
  |  Branch (330:7): [True: 11, False: 0]
  ------------------
  331|     11|    dfaState->predicates = getPredicatePredictions(altsToCollectPredsFrom, altToPred);
  332|     11|    dfaState->prediction = ATN::INVALID_ALT_NUMBER; // make sure we use preds
  333|     11|  } else {
  334|       |    // There are preds in configs but they might go away
  335|       |    // when OR'd together like {p}? || NONE == NONE. If neither
  336|       |    // alt has preds, resolve to min alt
  337|      0|    dfaState->prediction = altsToCollectPredsFrom.nextSetBit(0);
  338|      0|  }
  339|     11|}
_ZN6antlr43atn18ParserATNSimulator22execATNWithFullContextERNS_3dfa3DFAEPNS2_8DFAStateEPNS0_12ATNConfigSetEPNS_11TokenStreamEmPNS_17ParserRuleContextE:
  342|  15.1k|  TokenStream *input, size_t startIndex, ParserRuleContext *outerContext) {
  343|       |
  344|  15.1k|  bool fullCtx = true;
  345|  15.1k|  bool foundExactAmbig = false;
  346|       |
  347|  15.1k|  std::unique_ptr<ATNConfigSet> reach;
  348|  15.1k|  ATNConfigSet *previous = s0;
  349|  15.1k|  input->seek(startIndex);
  350|  15.1k|  size_t t = input->LA(1);
  351|  15.1k|  size_t predictedAlt;
  352|       |
  353|  28.0k|  while (true) {
  ------------------
  |  Branch (353:10): [Folded - Ignored]
  ------------------
  354|  28.0k|    reach = computeReachSet(previous, t, fullCtx);
  355|  28.0k|    if (reach == nullptr) {
  ------------------
  |  Branch (355:9): [True: 0, False: 28.0k]
  ------------------
  356|       |      // if any configs in previous dipped into outer context, that
  357|       |      // means that input up to t actually finished entry rule
  358|       |      // at least for LL decision. Full LL doesn't dip into outer
  359|       |      // so don't need special case.
  360|       |      // We will get an error no matter what so delay until after
  361|       |      // decision; better error message. Also, no reachable target
  362|       |      // ATN states in SLL implies LL will also get nowhere.
  363|       |      // If conflict in states that dip out, choose min since we
  364|       |      // will get error no matter what.
  365|      0|      NoViableAltException e = noViableAlt(input, outerContext, previous, startIndex, previous != s0);
  366|      0|      input->seek(startIndex);
  367|      0|      size_t alt = getSynValidOrSemInvalidAltThatFinishedDecisionEntryRule(previous, outerContext);
  368|      0|      if (alt != ATN::INVALID_ALT_NUMBER) {
  ------------------
  |  Branch (368:11): [True: 0, False: 0]
  ------------------
  369|      0|        return alt;
  370|      0|      }
  371|      0|      throw e;
  372|      0|    }
  373|  28.0k|    if (previous != s0) // Don't delete the start set.
  ------------------
  |  Branch (373:9): [True: 12.9k, False: 15.1k]
  ------------------
  374|  12.9k|        delete previous;
  375|  28.0k|    previous = nullptr;
  376|       |
  377|  28.0k|    std::vector<BitSet> altSubSets = PredictionModeClass::getConflictingAltSubsets(reach.get());
  378|  28.0k|    reach->uniqueAlt = getUniqueAlt(reach.get());
  379|       |    // unique prediction?
  380|  28.0k|    if (reach->uniqueAlt != ATN::INVALID_ALT_NUMBER) {
  ------------------
  |  Branch (380:9): [True: 0, False: 28.0k]
  ------------------
  381|      0|      predictedAlt = reach->uniqueAlt;
  382|      0|      break;
  383|      0|    }
  384|  28.0k|    if (_mode != PredictionMode::LL_EXACT_AMBIG_DETECTION) {
  ------------------
  |  Branch (384:9): [True: 28.0k, False: 0]
  ------------------
  385|  28.0k|      predictedAlt = PredictionModeClass::resolvesToJustOneViableAlt(altSubSets);
  386|  28.0k|      if (predictedAlt != ATN::INVALID_ALT_NUMBER) {
  ------------------
  |  Branch (386:11): [True: 15.1k, False: 12.9k]
  ------------------
  387|  15.1k|        break;
  388|  15.1k|      }
  389|  28.0k|    } else {
  390|       |      // In exact ambiguity mode, we never try to terminate early.
  391|       |      // Just keeps scarfing until we know what the conflict is
  392|      0|      if (PredictionModeClass::allSubsetsConflict(altSubSets) && PredictionModeClass::allSubsetsEqual(altSubSets)) {
  ------------------
  |  Branch (392:11): [True: 0, False: 0]
  |  Branch (392:66): [True: 0, False: 0]
  ------------------
  393|      0|        foundExactAmbig = true;
  394|      0|        predictedAlt = PredictionModeClass::getSingleViableAlt(altSubSets);
  395|      0|        break;
  396|      0|      }
  397|       |      // else there are multiple non-conflicting subsets or
  398|       |      // we're not sure what the ambiguity is yet.
  399|       |      // So, keep going.
  400|      0|    }
  401|  12.9k|    previous = reach.release();
  402|       |
  403|  12.9k|    if (t != Token::EOF) {
  ------------------
  |  Branch (403:9): [True: 12.9k, False: 0]
  ------------------
  404|  12.9k|      input->consume();
  405|  12.9k|      t = input->LA(1);
  406|  12.9k|    }
  407|  12.9k|  }
  408|       |
  409|       |  // If the configuration set uniquely predicts an alternative,
  410|       |  // without conflict, then we know that it's a full LL decision
  411|       |  // not SLL.
  412|  15.1k|  if (reach->uniqueAlt != ATN::INVALID_ALT_NUMBER) {
  ------------------
  |  Branch (412:7): [True: 0, False: 15.1k]
  ------------------
  413|      0|    reportContextSensitivity(dfa, predictedAlt, reach.get(), startIndex, input->index());
  414|      0|    return predictedAlt;
  415|      0|  }
  416|       |
  417|       |  // We do not check predicates here because we have checked them
  418|       |  // on-the-fly when doing full context prediction.
  419|       |
  420|       |  /*
  421|       |   In non-exact ambiguity detection mode, we might	actually be able to
  422|       |   detect an exact ambiguity, but I'm not going to spend the cycles
  423|       |   needed to check. We only emit ambiguity warnings in exact ambiguity
  424|       |   mode.
  425|       |
  426|       |   For example, we might know that we have conflicting configurations.
  427|       |   But, that does not mean that there is no way forward without a
  428|       |   conflict. It's possible to have nonconflicting alt subsets as in:
  429|       |
  430|       |   LL altSubSets=[{1, 2}, {1, 2}, {1}, {1, 2}]
  431|       |
  432|       |   from
  433|       |
  434|       |   [(17,1,[5 $]), (13,1,[5 10 $]), (21,1,[5 10 $]), (11,1,[$]),
  435|       |   (13,2,[5 10 $]), (21,2,[5 10 $]), (11,2,[$])]
  436|       |
  437|       |   In this case, (17,1,[5 $]) indicates there is some next sequence that
  438|       |   would resolve this without conflict to alternative 1. Any other viable
  439|       |   next sequence, however, is associated with a conflict.  We stop
  440|       |   looking for input because no amount of further lookahead will alter
  441|       |   the fact that we should predict alternative 1.  We just can't say for
  442|       |   sure that there is an ambiguity without looking further.
  443|       |   */
  444|  15.1k|  reportAmbiguity(dfa, D, startIndex, input->index(), foundExactAmbig, reach->getAlts(), reach.get());
  445|       |
  446|  15.1k|  return predictedAlt;
  447|  15.1k|}
_ZN6antlr43atn18ParserATNSimulator15computeReachSetEPNS0_12ATNConfigSetEmb:
  449|  28.5k|std::unique_ptr<ATNConfigSet> ParserATNSimulator::computeReachSet(ATNConfigSet *closure_, size_t t, bool fullCtx) {
  450|       |
  451|  28.5k|  std::unique_ptr<ATNConfigSet> intermediate(new ATNConfigSet(fullCtx));
  452|       |
  453|       |  /* Configurations already in a rule stop state indicate reaching the end
  454|       |   * of the decision rule (local context) or end of the start rule (full
  455|       |   * context). Once reached, these configurations are never updated by a
  456|       |   * closure operation, so they are handled separately for the performance
  457|       |   * advantage of having a smaller intermediate set when calling closure.
  458|       |   *
  459|       |   * For full-context reach operations, separate handling is required to
  460|       |   * ensure that the alternative matching the longest overall sequence is
  461|       |   * chosen when multiple such configurations can match the input.
  462|       |   */
  463|  28.5k|  std::vector<Ref<ATNConfig>> skippedStopStates;
  464|       |
  465|       |  // First figure out where we can reach on input t
  466|   496k|  for (const auto &c : closure_->configs) {
  ------------------
  |  Branch (466:22): [True: 496k, False: 28.5k]
  ------------------
  467|   496k|    if (RuleStopState::is(c->state)) {
  ------------------
  |  Branch (467:9): [True: 0, False: 496k]
  ------------------
  468|      0|      assert(c->context->isEmpty());
  469|       |
  470|      0|      if (fullCtx || t == Token::EOF) {
  ------------------
  |  Branch (470:11): [True: 0, False: 0]
  |  Branch (470:22): [True: 0, False: 0]
  ------------------
  471|      0|        skippedStopStates.push_back(c);
  472|      0|      }
  473|       |
  474|      0|      continue;
  475|      0|    }
  476|       |
  477|   496k|    size_t n = c->state->transitions.size();
  478|   993k|    for (size_t ti = 0; ti < n; ti++) { // for each transition
  ------------------
  |  Branch (478:25): [True: 496k, False: 496k]
  ------------------
  479|   496k|      const Transition *trans = c->state->transitions[ti].get();
  480|   496k|      ATNState *target = getReachableTarget(trans, (int)t);
  481|   496k|      if (target != nullptr) {
  ------------------
  |  Branch (481:11): [True: 71.6k, False: 425k]
  ------------------
  482|  71.6k|        intermediate->add(std::make_shared<ATNConfig>(*c, target), &mergeCache);
  483|  71.6k|      }
  484|   496k|    }
  485|   496k|  }
  486|       |
  487|       |  // Now figure out where the reach operation can take us...
  488|  28.5k|  std::unique_ptr<ATNConfigSet> reach;
  489|       |
  490|       |  /* This block optimizes the reach operation for intermediate sets which
  491|       |   * trivially indicate a termination state for the overall
  492|       |   * adaptivePredict operation.
  493|       |   *
  494|       |   * The conditions assume that intermediate
  495|       |   * contains all configurations relevant to the reach set, but this
  496|       |   * condition is not true when one or more configurations have been
  497|       |   * withheld in skippedStopStates, or when the current symbol is EOF.
  498|       |   */
  499|  28.5k|  if (skippedStopStates.empty() && t != Token::EOF) {
  ------------------
  |  Branch (499:7): [True: 28.5k, False: 0]
  |  Branch (499:36): [True: 28.5k, False: 17]
  ------------------
  500|  28.5k|    if (intermediate->size() == 1) {
  ------------------
  |  Branch (500:9): [True: 200, False: 28.3k]
  ------------------
  501|       |      // Don't pursue the closure if there is just one state.
  502|       |      // It can only have one alternative; just add to result
  503|       |      // Also don't pursue the closure if there is unique alternative
  504|       |      // among the configurations.
  505|    200|      reach = std::move(intermediate);
  506|  28.3k|    } else if (getUniqueAlt(intermediate.get()) != ATN::INVALID_ALT_NUMBER) {
  ------------------
  |  Branch (506:16): [True: 45, False: 28.2k]
  ------------------
  507|       |      // Also don't pursue the closure if there is unique alternative
  508|       |      // among the configurations.
  509|     45|      reach = std::move(intermediate);
  510|     45|    }
  511|  28.5k|  }
  512|       |
  513|       |  /* If the reach set could not be trivially determined, perform a closure
  514|       |   * operation on the intermediate set to compute its initial value.
  515|       |   */
  516|  28.5k|  if (reach == nullptr) {
  ------------------
  |  Branch (516:7): [True: 28.3k, False: 245]
  ------------------
  517|  28.3k|    reach.reset(new ATNConfigSet(fullCtx));
  518|  28.3k|    ATNConfig::Set closureBusy;
  519|       |
  520|  28.3k|    bool treatEofAsEpsilon = t == Token::EOF;
  521|  71.3k|    for (const auto &c : intermediate->configs) {
  ------------------
  |  Branch (521:24): [True: 71.3k, False: 28.3k]
  ------------------
  522|  71.3k|      closure(c, reach.get(), closureBusy, false, fullCtx, treatEofAsEpsilon);
  523|  71.3k|    }
  524|  28.3k|  }
  525|       |
  526|  28.5k|  if (t == IntStream::EOF) {
  ------------------
  |  Branch (526:7): [True: 17, False: 28.5k]
  ------------------
  527|       |    /* After consuming EOF no additional input is possible, so we are
  528|       |     * only interested in configurations which reached the end of the
  529|       |     * decision rule (local context) or end of the start rule (full
  530|       |     * context). Update reach to contain only these configurations. This
  531|       |     * handles both explicit EOF transitions in the grammar and implicit
  532|       |     * EOF transitions following the end of the decision or start rule.
  533|       |     *
  534|       |     * When reach==intermediate, no closure operation was performed. In
  535|       |     * this case, removeAllConfigsNotInRuleStopState needs to check for
  536|       |     * reachable rule stop states as well as configurations already in
  537|       |     * a rule stop state.
  538|       |     *
  539|       |     * This is handled before the configurations in skippedStopStates,
  540|       |     * because any configurations potentially added from that list are
  541|       |     * already guaranteed to meet this condition whether or not it's
  542|       |     * required.
  543|       |     */
  544|     17|    ATNConfigSet *temp = removeAllConfigsNotInRuleStopState(reach.get(), *reach == *intermediate);
  545|     17|    if (temp != reach.get())
  ------------------
  |  Branch (545:9): [True: 0, False: 17]
  ------------------
  546|      0|      reach.reset(temp); // We got a new set, so use that.
  547|     17|  }
  548|       |
  549|       |  /* If skippedStopStates is not null, then it contains at least one
  550|       |   * configuration. For full-context reach operations, these
  551|       |   * configurations reached the end of the start rule, in which case we
  552|       |   * only add them back to reach if no configuration during the current
  553|       |   * closure operation reached such a state. This ensures adaptivePredict
  554|       |   * chooses an alternative matching the longest overall sequence when
  555|       |   * multiple alternatives are viable.
  556|       |   */
  557|  28.5k|  if (skippedStopStates.size() > 0 && (!fullCtx || !PredictionModeClass::hasConfigInRuleStopState(reach.get()))) {
  ------------------
  |  Branch (557:7): [True: 0, False: 28.5k]
  |  Branch (557:40): [True: 0, False: 0]
  |  Branch (557:52): [True: 0, False: 0]
  ------------------
  558|      0|    assert(!skippedStopStates.empty());
  559|       |
  560|      0|    for (const auto &c : skippedStopStates) {
  ------------------
  |  Branch (560:24): [True: 0, False: 0]
  ------------------
  561|      0|      reach->add(c, &mergeCache);
  562|      0|    }
  563|      0|  }
  564|       |
  565|  28.5k|  if (reach->isEmpty()) {
  ------------------
  |  Branch (565:7): [True: 204, False: 28.3k]
  ------------------
  566|    204|    return nullptr;
  567|    204|  }
  568|  28.3k|  return reach;
  569|  28.5k|}
_ZN6antlr43atn18ParserATNSimulator34removeAllConfigsNotInRuleStopStateEPNS0_12ATNConfigSetEb:
  572|     17|  bool lookToEndOfRule) {
  573|     17|  if (PredictionModeClass::allConfigsInRuleStopStates(configs)) {
  ------------------
  |  Branch (573:7): [True: 17, False: 0]
  ------------------
  574|     17|    return configs;
  575|     17|  }
  576|       |
  577|      0|  ATNConfigSet *result = new ATNConfigSet(configs->fullCtx); /* mem-check: released by caller */
  578|       |
  579|      0|  for (const auto &config : configs->configs) {
  ------------------
  |  Branch (579:27): [True: 0, False: 0]
  ------------------
  580|      0|    if (config->state != nullptr && config->state->getStateType() == ATNStateType::RULE_STOP) {
  ------------------
  |  Branch (580:9): [True: 0, False: 0]
  |  Branch (580:37): [True: 0, False: 0]
  ------------------
  581|      0|      result->add(config, &mergeCache);
  582|      0|      continue;
  583|      0|    }
  584|       |
  585|      0|    if (lookToEndOfRule && config->state->epsilonOnlyTransitions) {
  ------------------
  |  Branch (585:9): [True: 0, False: 0]
  |  Branch (585:28): [True: 0, False: 0]
  ------------------
  586|      0|      misc::IntervalSet nextTokens = atn.nextTokens(config->state);
  587|      0|      if (nextTokens.contains(Token::EPSILON)) {
  ------------------
  |  Branch (587:11): [True: 0, False: 0]
  ------------------
  588|      0|        ATNState *endOfRuleState = atn.ruleToStopState[config->state->ruleIndex];
  589|      0|        result->add(std::make_shared<ATNConfig>(*config, endOfRuleState), &mergeCache);
  590|      0|      }
  591|      0|    }
  592|      0|  }
  593|       |
  594|      0|  return result;
  595|     17|}
_ZN6antlr43atn18ParserATNSimulator17computeStartStateEPNS0_8ATNStateEPNS_11RuleContextEb:
  597|  15.1k|std::unique_ptr<ATNConfigSet> ParserATNSimulator::computeStartState(ATNState *p, RuleContext *ctx, bool fullCtx) {
  598|       |  // always at least the implicit call to start rule
  599|  15.1k|  Ref<const PredictionContext> initialContext = PredictionContext::fromRuleContext(atn, ctx);
  600|  15.1k|  std::unique_ptr<ATNConfigSet> configs(new ATNConfigSet(fullCtx));
  601|       |
  602|  58.3k|  for (size_t i = 0; i < p->transitions.size(); i++) {
  ------------------
  |  Branch (602:22): [True: 43.2k, False: 15.1k]
  ------------------
  603|  43.2k|    ATNState *target = p->transitions[i]->target;
  604|  43.2k|    Ref<ATNConfig> c = std::make_shared<ATNConfig>(target, (int)i + 1, initialContext);
  605|  43.2k|    ATNConfig::Set closureBusy;
  606|  43.2k|    closure(c, configs.get(), closureBusy, true, fullCtx, false);
  607|  43.2k|  }
  608|       |
  609|  15.1k|  return configs;
  610|  15.1k|}
_ZN6antlr43atn18ParserATNSimulator21applyPrecedenceFilterEPNS0_12ATNConfigSetE:
  612|      6|std::unique_ptr<ATNConfigSet> ParserATNSimulator::applyPrecedenceFilter(ATNConfigSet *configs) {
  613|      6|  std::map<size_t, Ref<const PredictionContext>> statesFromAlt1;
  614|      6|  std::unique_ptr<ATNConfigSet> configSet(new ATNConfigSet(configs->fullCtx));
  615|    145|  for (const auto &config : configs->configs) {
  ------------------
  |  Branch (615:27): [True: 145, False: 6]
  ------------------
  616|       |    // handle alt 1 first
  617|    145|    if (config->alt != 1) {
  ------------------
  |  Branch (617:9): [True: 134, False: 11]
  ------------------
  618|    134|      continue;
  619|    134|    }
  620|       |
  621|     11|    Ref<const SemanticContext> updatedContext = config->semanticContext->evalPrecedence(parser, _outerContext);
  622|     11|    if (updatedContext == nullptr) {
  ------------------
  |  Branch (622:9): [True: 4, False: 7]
  ------------------
  623|       |      // the configuration was eliminated
  624|      4|      continue;
  625|      4|    }
  626|       |
  627|      7|    statesFromAlt1[config->state->stateNumber] = config->context;
  628|      7|    if (updatedContext != config->semanticContext) {
  ------------------
  |  Branch (628:9): [True: 7, False: 0]
  ------------------
  629|      7|      configSet->add(std::make_shared<ATNConfig>(*config, updatedContext), &mergeCache);
  630|      7|    }
  631|      0|    else {
  632|      0|      configSet->add(config, &mergeCache);
  633|      0|    }
  634|      7|  }
  635|       |
  636|    145|  for (const auto &config : configs->configs) {
  ------------------
  |  Branch (636:27): [True: 145, False: 6]
  ------------------
  637|    145|    if (config->alt == 1) {
  ------------------
  |  Branch (637:9): [True: 11, False: 134]
  ------------------
  638|       |      // already handled
  639|     11|      continue;
  640|     11|    }
  641|       |
  642|    134|    if (!config->isPrecedenceFilterSuppressed()) {
  ------------------
  |  Branch (642:9): [True: 8, False: 126]
  ------------------
  643|       |      /* In the future, this elimination step could be updated to also
  644|       |       * filter the prediction context for alternatives predicting alt>1
  645|       |       * (basically a graph subtraction algorithm).
  646|       |       */
  647|      8|      auto iterator = statesFromAlt1.find(config->state->stateNumber);
  648|      8|      if (iterator != statesFromAlt1.end() && *iterator->second == *config->context) {
  ------------------
  |  Branch (648:11): [True: 4, False: 4]
  |  Branch (648:11): [True: 4, False: 4]
  |  Branch (648:47): [True: 4, False: 0]
  ------------------
  649|       |        // eliminated
  650|      4|        continue;
  651|      4|      }
  652|      8|    }
  653|       |
  654|    130|    configSet->add(config, &mergeCache);
  655|    130|  }
  656|       |
  657|      6|  return configSet;
  658|      6|}
_ZN6antlr43atn18ParserATNSimulator18getReachableTargetEPKNS0_10TransitionEm:
  660|   496k|atn::ATNState* ParserATNSimulator::getReachableTarget(const Transition *trans, size_t ttype) {
  661|   496k|  if (trans->matches(ttype, 0, atn.maxTokenType)) {
  ------------------
  |  Branch (661:7): [True: 71.6k, False: 425k]
  ------------------
  662|  71.6k|    return trans->target;
  663|  71.6k|  }
  664|       |
  665|   425k|  return nullptr;
  666|   496k|}
_ZN6antlr43atn18ParserATNSimulator20getPredsForAmbigAltsERKN8antlrcpp6BitSetEPNS0_12ATNConfigSetEm:
  670|     11|  ATNConfigSet *configs, size_t nalts) {
  671|       |  // REACH=[1|1|[]|0:0, 1|2|[]|0:1]
  672|       |  /* altToPred starts as an array of all null contexts. The entry at index i
  673|       |   * corresponds to alternative i. altToPred[i] may have one of three values:
  674|       |   *   1. null: no ATNConfig c is found such that c.alt==i
  675|       |   *   2. SemanticContext.NONE: At least one ATNConfig c exists such that
  676|       |   *      c.alt==i and c.semanticContext==SemanticContext.NONE. In other words,
  677|       |   *      alt i has at least one un-predicated config.
  678|       |   *   3. Non-NONE Semantic Context: There exists at least one, and for all
  679|       |   *      ATNConfig c such that c.alt==i, c.semanticContext!=SemanticContext.NONE.
  680|       |   *
  681|       |   * From this, it is clear that NONE||anything==NONE.
  682|       |   */
  683|     11|  std::vector<Ref<const SemanticContext>> altToPred(nalts + 1);
  684|       |
  685|     11|  for (const auto &c : configs->configs) {
  ------------------
  |  Branch (685:22): [True: 11, False: 11]
  ------------------
  686|     11|    if (ambigAlts.test(c->alt)) {
  ------------------
  |  Branch (686:9): [True: 11, False: 0]
  ------------------
  687|     11|      altToPred[c->alt] = SemanticContext::Or(altToPred[c->alt], c->semanticContext);
  688|     11|    }
  689|     11|  }
  690|       |
  691|     11|  size_t nPredAlts = 0;
  692|     36|  for (size_t i = 1; i <= nalts; i++) {
  ------------------
  |  Branch (692:22): [True: 25, False: 11]
  ------------------
  693|     25|    if (altToPred[i] == nullptr) {
  ------------------
  |  Branch (693:9): [True: 14, False: 11]
  ------------------
  694|     14|      altToPred[i] = SemanticContext::NONE;
  695|     14|    } else if (altToPred[i] != SemanticContext::NONE) {
  ------------------
  |  Branch (695:16): [True: 11, False: 0]
  ------------------
  696|     11|      nPredAlts++;
  697|     11|    }
  698|     25|  }
  699|       |
  700|       |  // nonambig alts are null in altToPred
  701|     11|  if (nPredAlts == 0) {
  ------------------
  |  Branch (701:7): [True: 0, False: 11]
  ------------------
  702|      0|    altToPred.clear();
  703|      0|  }
  704|       |#if DEBUG_ATN == 1
  705|       |    std::cout << "getPredsForAmbigAlts result " << Arrays::toString(altToPred) << std::endl;
  706|       |#endif
  707|       |
  708|     11|  return altToPred;
  709|     11|}
_ZN6antlr43atn18ParserATNSimulator23getPredicatePredictionsERKN8antlrcpp6BitSetERKNSt3__16vectorINS6_10shared_ptrIKNS0_15SemanticContextEEENS6_9allocatorISB_EEEE:
  712|     11|                                                                                       const std::vector<Ref<const SemanticContext>> &altToPred) {
  713|     11|  bool containsPredicate = std::find_if(altToPred.begin(), altToPred.end(), [](const Ref<const SemanticContext> &context) {
  714|     11|    return context != SemanticContext::NONE;
  715|     11|  }) != altToPred.end();
  716|     11|  std::vector<dfa::DFAState::PredPrediction> pairs;
  717|     11|  if (containsPredicate) {
  ------------------
  |  Branch (717:7): [True: 11, False: 0]
  ------------------
  718|     36|    for (size_t i = 1; i < altToPred.size(); i++) {
  ------------------
  |  Branch (718:24): [True: 25, False: 11]
  ------------------
  719|     25|      const auto &pred = altToPred[i];
  720|     25|      assert(pred != nullptr); // unpredicted is indicated by SemanticContext.NONE
  721|     25|      if (ambigAlts.test(i)) {
  ------------------
  |  Branch (721:11): [True: 11, False: 14]
  ------------------
  722|     11|        pairs.emplace_back(pred, static_cast<int>(i));
  723|     11|      }
  724|     25|    }
  725|     11|  }
  726|     11|  return pairs;
  727|     11|}
_ZN6antlr43atn18ParserATNSimulator55getSynValidOrSemInvalidAltThatFinishedDecisionEntryRuleEPNS0_12ATNConfigSetEPNS_17ParserRuleContextE:
  731|  36.8k|{
  732|  36.8k|  std::pair<ATNConfigSet *, ATNConfigSet *> sets = splitAccordingToSemanticValidity(configs, outerContext);
  733|  36.8k|  std::unique_ptr<ATNConfigSet> semValidConfigs(sets.first);
  734|  36.8k|  std::unique_ptr<ATNConfigSet> semInvalidConfigs(sets.second);
  735|  36.8k|  size_t alt = getAltThatFinishedDecisionEntryRule(semValidConfigs.get());
  736|  36.8k|  if (alt != ATN::INVALID_ALT_NUMBER) { // semantically/syntactically viable path exists
  ------------------
  |  Branch (736:7): [True: 34.2k, False: 2.57k]
  ------------------
  737|  34.2k|    return alt;
  738|  34.2k|  }
  739|       |  // Is there a syntactically valid path with a failed pred?
  740|  2.57k|  if (!semInvalidConfigs->configs.empty()) {
  ------------------
  |  Branch (740:7): [True: 0, False: 2.57k]
  ------------------
  741|      0|    alt = getAltThatFinishedDecisionEntryRule(semInvalidConfigs.get());
  742|      0|    if (alt != ATN::INVALID_ALT_NUMBER) { // syntactically viable path exists
  ------------------
  |  Branch (742:9): [True: 0, False: 0]
  ------------------
  743|      0|      return alt;
  744|      0|    }
  745|      0|  }
  746|  2.57k|  return ATN::INVALID_ALT_NUMBER;
  747|  2.57k|}
_ZN6antlr43atn18ParserATNSimulator35getAltThatFinishedDecisionEntryRuleEPNS0_12ATNConfigSetE:
  749|  36.8k|size_t ParserATNSimulator::getAltThatFinishedDecisionEntryRule(ATNConfigSet *configs) {
  750|  36.8k|  misc::IntervalSet alts;
  751|   630k|  for (const auto &c : configs->configs) {
  ------------------
  |  Branch (751:22): [True: 630k, False: 36.8k]
  ------------------
  752|   630k|    if (c->getOuterContextDepth() > 0 || (c->state != nullptr && c->state->getStateType() == ATNStateType::RULE_STOP && c->context->hasEmptyPath())) {
  ------------------
  |  Branch (752:9): [True: 531k, False: 99.1k]
  |  Branch (752:43): [True: 99.1k, False: 0]
  |  Branch (752:66): [True: 0, False: 99.1k]
  |  Branch (752:121): [True: 0, False: 0]
  ------------------
  753|   531k|      alts.add(c->alt);
  754|   531k|    }
  755|   630k|  }
  756|  36.8k|  if (alts.size() == 0) {
  ------------------
  |  Branch (756:7): [True: 2.57k, False: 34.2k]
  ------------------
  757|  2.57k|    return ATN::INVALID_ALT_NUMBER;
  758|  2.57k|  }
  759|  34.2k|  return alts.getMinElement();
  760|  36.8k|}
_ZN6antlr43atn18ParserATNSimulator32splitAccordingToSemanticValidityEPNS0_12ATNConfigSetEPNS_17ParserRuleContextE:
  763|  36.8k|  ParserRuleContext *outerContext) {
  764|       |
  765|       |  // mem-check: both pointers must be freed by the caller.
  766|  36.8k|  ATNConfigSet *succeeded(new ATNConfigSet(configs->fullCtx));
  767|  36.8k|  ATNConfigSet *failed(new ATNConfigSet(configs->fullCtx));
  768|   630k|  for (const auto &c : configs->configs) {
  ------------------
  |  Branch (768:22): [True: 630k, False: 36.8k]
  ------------------
  769|   630k|    if (c->semanticContext != SemanticContext::NONE) {
  ------------------
  |  Branch (769:9): [True: 525, False: 629k]
  ------------------
  770|    525|      bool predicateEvaluationResult = evalSemanticContext(c->semanticContext, outerContext, c->alt, configs->fullCtx);
  771|    525|      if (predicateEvaluationResult) {
  ------------------
  |  Branch (771:11): [True: 525, False: 0]
  ------------------
  772|    525|        succeeded->add(c);
  773|    525|      } else {
  774|      0|        failed->add(c);
  775|      0|      }
  776|   629k|    } else {
  777|   629k|      succeeded->add(c);
  778|   629k|    }
  779|   630k|  }
  780|  36.8k|  return { succeeded, failed };
  781|  36.8k|}
_ZN6antlr43atn18ParserATNSimulator19evalSemanticContextERKNSt3__16vectorINS_3dfa8DFAState14PredPredictionENS2_9allocatorIS6_EEEEPNS_17ParserRuleContextEb:
  784|   687k|                                               ParserRuleContext *outerContext, bool complete) {
  785|   687k|  BitSet predictions;
  786|   687k|  for (const auto &prediction : predPredictions) {
  ------------------
  |  Branch (786:31): [True: 687k, False: 687k]
  ------------------
  787|   687k|    if (prediction.pred == SemanticContext::NONE) {
  ------------------
  |  Branch (787:9): [True: 0, False: 687k]
  ------------------
  788|      0|      predictions.set(prediction.alt);
  789|      0|      if (!complete) {
  ------------------
  |  Branch (789:11): [True: 0, False: 0]
  ------------------
  790|      0|        break;
  791|      0|      }
  792|      0|      continue;
  793|      0|    }
  794|       |
  795|   687k|    bool fullCtx = false; // in dfa
  796|   687k|    bool predicateEvaluationResult = evalSemanticContext(prediction.pred, outerContext, prediction.alt, fullCtx);
  797|       |#if DEBUG_ATN == 1 || DEBUG_DFA == 1
  798|       |      std::cout << "eval pred " << prediction.toString() << " = " << predicateEvaluationResult << std::endl;
  799|       |#endif
  800|       |
  801|   687k|    if (predicateEvaluationResult) {
  ------------------
  |  Branch (801:9): [True: 687k, False: 0]
  ------------------
  802|       |#if DEBUG_ATN == 1 || DEBUG_DFA == 1
  803|       |        std::cout << "PREDICT " << prediction.alt << std::endl;
  804|       |#endif
  805|       |
  806|   687k|      predictions.set(prediction.alt);
  807|   687k|      if (!complete) {
  ------------------
  |  Branch (807:11): [True: 0, False: 687k]
  ------------------
  808|      0|        break;
  809|      0|      }
  810|   687k|    }
  811|   687k|  }
  812|       |
  813|   687k|  return predictions;
  814|   687k|}
_ZN6antlr43atn18ParserATNSimulator19evalSemanticContextERKNSt3__110shared_ptrIKNS0_15SemanticContextEEEPNS_17ParserRuleContextEmb:
  817|   688k|                                             size_t /*alt*/, bool /*fullCtx*/) {
  818|   688k|  return pred->eval(parser, parserCallStack);
  819|   688k|}
_ZN6antlr43atn18ParserATNSimulator7closureERKNSt3__110shared_ptrINS0_9ATNConfigEEEPNS0_12ATNConfigSetERNS2_13unordered_setIS5_NS4_6HasherENS4_8ComparerENS2_9allocatorIS5_EEEEbbb:
  822|   114k|                                 bool collectPredicates, bool fullCtx, bool treatEofAsEpsilon) {
  823|   114k|  const int initialDepth = 0;
  824|   114k|  closureCheckingStopState(config, configs, closureBusy, collectPredicates, fullCtx, initialDepth, treatEofAsEpsilon);
  825|       |
  826|   114k|  assert(!fullCtx || !configs->dipsIntoOuterContext);
  827|   114k|}
_ZN6antlr43atn18ParserATNSimulator24closureCheckingStopStateERKNSt3__110shared_ptrINS0_9ATNConfigEEEPNS0_12ATNConfigSetERNS2_13unordered_setIS5_NS4_6HasherENS4_8ComparerENS2_9allocatorIS5_EEEEbbib:
  830|  2.57M|  ATNConfig::Set &closureBusy, bool collectPredicates, bool fullCtx, int depth, bool treatEofAsEpsilon) {
  831|       |
  832|       |#if DEBUG_ATN == 1
  833|       |    std::cout << "closure(" << config->toString(true) << ")" << std::endl;
  834|       |#endif
  835|       |
  836|  2.57M|  if (config->state != nullptr && config->state->getStateType() == ATNStateType::RULE_STOP) {
  ------------------
  |  Branch (836:7): [True: 2.57M, False: 0]
  |  Branch (836:35): [True: 268k, False: 2.30M]
  ------------------
  837|       |    // We hit rule end. If we have context info, use it
  838|       |    // run thru all possible stack tops in ctx
  839|   268k|    if (!config->context->isEmpty()) {
  ------------------
  |  Branch (839:9): [True: 267k, False: 285]
  ------------------
  840|   535k|      for (size_t i = 0; i < config->context->size(); i++) {
  ------------------
  |  Branch (840:26): [True: 267k, False: 267k]
  ------------------
  841|   267k|        if (config->context->getReturnState(i) == PredictionContext::EMPTY_RETURN_STATE) {
  ------------------
  |  Branch (841:13): [True: 0, False: 267k]
  ------------------
  842|      0|          if (fullCtx) {
  ------------------
  |  Branch (842:15): [True: 0, False: 0]
  ------------------
  843|      0|            configs->add(std::make_shared<ATNConfig>(*config, config->state, PredictionContext::EMPTY), &mergeCache);
  844|      0|            continue;
  845|      0|          } else {
  846|       |            // we have no context info, just chase follow links (if greedy)
  847|       |#if DEBUG_ATN == 1
  848|       |              std::cout << "FALLING off rule " << getRuleName(config->state->ruleIndex) << std::endl;
  849|       |#endif
  850|      0|            closure_(config, configs, closureBusy, collectPredicates, fullCtx, depth, treatEofAsEpsilon);
  851|      0|          }
  852|      0|          continue;
  853|      0|        }
  854|   267k|        ATNState *returnState = atn.states[config->context->getReturnState(i)];
  855|   267k|        Ref<const PredictionContext> newContext = config->context->getParent(i); // "pop" return state
  856|   267k|        Ref<ATNConfig> c = std::make_shared<ATNConfig>(returnState, config->alt, newContext, config->semanticContext);
  857|       |        // While we have context to pop back from, we may have
  858|       |        // gotten that context AFTER having falling off a rule.
  859|       |        // Make sure we track that we are now out of context.
  860|       |        //
  861|       |        // This assignment also propagates the
  862|       |        // isPrecedenceFilterSuppressed() value to the new
  863|       |        // configuration.
  864|   267k|        c->reachesIntoOuterContext = config->reachesIntoOuterContext;
  865|   267k|        assert(depth > INT_MIN);
  866|       |
  867|   267k|        closureCheckingStopState(c, configs, closureBusy, collectPredicates, fullCtx, depth - 1, treatEofAsEpsilon);
  868|   267k|      }
  869|   267k|      return;
  870|   267k|    } else if (fullCtx) {
  ------------------
  |  Branch (870:16): [True: 0, False: 285]
  ------------------
  871|       |      // reached end of start rule
  872|      0|      configs->add(config, &mergeCache);
  873|      0|      return;
  874|    285|    } else {
  875|       |      // else if we have no context info, just chase follow links (if greedy)
  876|    285|    }
  877|   268k|  }
  878|       |
  879|  2.30M|  closure_(config, configs, closureBusy, collectPredicates, fullCtx, depth, treatEofAsEpsilon);
  880|  2.30M|}
_ZN6antlr43atn18ParserATNSimulator8closure_ERKNSt3__110shared_ptrINS0_9ATNConfigEEEPNS0_12ATNConfigSetERNS2_13unordered_setIS5_NS4_6HasherENS4_8ComparerENS2_9allocatorIS5_EEEEbbib:
  883|  2.30M|                                  bool collectPredicates, bool fullCtx, int depth, bool treatEofAsEpsilon) {
  884|  2.30M|  ATNState *p = config->state;
  885|       |  // optimization
  886|  2.30M|  if (!p->epsilonOnlyTransitions) {
  ------------------
  |  Branch (886:7): [True: 807k, False: 1.49M]
  ------------------
  887|       |    // make sure to not return here, because EOF transitions can act as
  888|       |    // both epsilon transitions and non-epsilon transitions.
  889|   807k|    configs->add(config, &mergeCache);
  890|   807k|  }
  891|       |
  892|  5.32M|  for (size_t i = 0; i < p->transitions.size(); i++) {
  ------------------
  |  Branch (892:22): [True: 3.01M, False: 2.30M]
  ------------------
  893|  3.01M|    if (i == 0 && canDropLoopEntryEdgeInLeftRecursiveRule(config.get()))
  ------------------
  |  Branch (893:9): [True: 2.30M, False: 714k]
  |  Branch (893:19): [True: 21.2k, False: 2.28M]
  ------------------
  894|  21.2k|      continue;
  895|       |
  896|  2.99M|    const Transition *t = p->transitions[i].get();
  897|  2.99M|    bool continueCollecting = !(t != nullptr && t->getTransitionType() == TransitionType::ACTION) && collectPredicates;
  ------------------
  |  Branch (897:33): [True: 2.99M, False: 0]
  |  Branch (897:49): [True: 30.2k, False: 2.96M]
  |  Branch (897:102): [True: 90.1k, False: 2.87M]
  ------------------
  898|  2.99M|    Ref<ATNConfig> c = getEpsilonTarget(config, t, continueCollecting, depth == 0, fullCtx, treatEofAsEpsilon);
  899|  2.99M|    if (c != nullptr) {
  ------------------
  |  Branch (899:9): [True: 2.19M, False: 807k]
  ------------------
  900|  2.19M|      int newDepth = depth;
  901|  2.19M|      if (config->state != nullptr && config->state->getStateType() == ATNStateType::RULE_STOP) {
  ------------------
  |  Branch (901:11): [True: 2.19M, False: 0]
  |  Branch (901:39): [True: 861, False: 2.18M]
  ------------------
  902|    861|        assert(!fullCtx);
  903|       |
  904|       |        // target fell off end of rule; mark resulting c as having dipped into outer context
  905|       |        // We can't get here if incoming config was rule stop and we had context
  906|       |        // track how far we dip into outer context.  Might
  907|       |        // come in handy and we avoid evaluating context dependent
  908|       |        // preds if this is > 0.
  909|       |
  910|    861|        if (closureBusy.count(c) > 0) {
  ------------------
  |  Branch (910:13): [True: 422, False: 439]
  ------------------
  911|       |          // avoid infinite recursion for right-recursive rules
  912|    422|          continue;
  913|    422|        }
  914|    439|        closureBusy.insert(c);
  915|       |
  916|    439|        if (_dfa != nullptr && _dfa->isPrecedenceDfa()) {
  ------------------
  |  Branch (916:13): [True: 439, False: 0]
  |  Branch (916:32): [True: 161, False: 278]
  ------------------
  917|    161|          size_t outermostPrecedenceReturn = downCast<const EpsilonTransition *>(t)->outermostPrecedenceReturn();
  918|    161|          if (outermostPrecedenceReturn == _dfa->atnStartState->ruleIndex) {
  ------------------
  |  Branch (918:15): [True: 15, False: 146]
  ------------------
  919|     15|            c->setPrecedenceFilterSuppressed(true);
  920|     15|          }
  921|    161|        }
  922|       |
  923|    439|        c->reachesIntoOuterContext++;
  924|       |
  925|    439|        if (!t->isEpsilon()) {
  ------------------
  |  Branch (925:13): [True: 0, False: 439]
  ------------------
  926|       |          // avoid infinite recursion for EOF* and EOF+
  927|      0|          if (closureBusy.count(c) == 0) {
  ------------------
  |  Branch (927:15): [True: 0, False: 0]
  ------------------
  928|      0|            closureBusy.insert(c);
  929|      0|          } else {
  930|      0|            continue;
  931|      0|          }
  932|      0|        }
  933|       |
  934|    439|        configs->dipsIntoOuterContext = true; // TODO: can remove? only care when we add to set per middle of this method
  935|    439|        assert(newDepth > INT_MIN);
  936|       |
  937|    439|        newDepth--;
  938|       |#if DEBUG_DFA == 1
  939|       |          std::cout << "dips into outer ctx: " << c << std::endl;
  940|       |#endif
  941|       |
  942|  2.18M|      } else  if (!t->isEpsilon()) {
  ------------------
  |  Branch (942:19): [True: 0, False: 2.18M]
  ------------------
  943|       |        // avoid infinite recursion for EOF* and EOF+
  944|      0|        if (closureBusy.count(c) == 0) {
  ------------------
  |  Branch (944:13): [True: 0, False: 0]
  ------------------
  945|      0|          closureBusy.insert(c);
  946|      0|        } else {
  947|      0|          continue;
  948|      0|        }
  949|      0|      }
  950|       |
  951|  2.18M|      if (t != nullptr && t->getTransitionType() == TransitionType::RULE) {
  ------------------
  |  Branch (951:11): [True: 2.18M, False: 0]
  |  Branch (951:27): [True: 90.7k, False: 2.09M]
  ------------------
  952|       |        // latch when newDepth goes negative - once we step out of the entry context we can't return
  953|  90.7k|        if (newDepth >= 0) {
  ------------------
  |  Branch (953:13): [True: 90.7k, False: 0]
  ------------------
  954|  90.7k|          newDepth++;
  955|  90.7k|        }
  956|  90.7k|      }
  957|       |
  958|  2.18M|      closureCheckingStopState(c, configs, closureBusy, continueCollecting, fullCtx, newDepth, treatEofAsEpsilon);
  959|  2.18M|    }
  960|  2.99M|  }
  961|  2.30M|}
_ZNK6antlr43atn18ParserATNSimulator39canDropLoopEntryEdgeInLeftRecursiveRuleEPNS0_9ATNConfigE:
  963|  2.30M|bool ParserATNSimulator::canDropLoopEntryEdgeInLeftRecursiveRule(ATNConfig *config) const {
  964|  2.30M|  if (TURN_OFF_LR_LOOP_ENTRY_BRANCH_OPT)
  ------------------
  |  Branch (964:7): [True: 0, False: 2.30M]
  ------------------
  965|      0|    return false;
  966|       |
  967|  2.30M|  ATNState *p = config->state;
  968|       |
  969|       |  // First check to see if we are in StarLoopEntryState generated during
  970|       |  // left-recursion elimination. For efficiency, also check if
  971|       |  // the context has an empty stack case. If so, it would mean
  972|       |  // global FOLLOW so we can't perform optimization
  973|  2.30M|  if (p->getStateType() != ATNStateType::STAR_LOOP_ENTRY ||
  ------------------
  |  Branch (973:7): [True: 2.14M, False: 163k]
  ------------------
  974|  2.30M|      !((StarLoopEntryState *)p)->isPrecedenceDecision || // Are we the special loop entry/exit state?
  ------------------
  |  Branch (974:7): [True: 64.1k, False: 99.0k]
  ------------------
  975|  2.30M|      config->context->isEmpty() ||                      // If SLL wildcard
  ------------------
  |  Branch (975:7): [True: 60, False: 99.0k]
  ------------------
  976|  2.30M|      config->context->hasEmptyPath())
  ------------------
  |  Branch (976:7): [True: 0, False: 99.0k]
  ------------------
  977|  2.20M|  {
  978|  2.20M|    return false;
  979|  2.20M|  }
  980|       |
  981|       |  // Require all return states to return back to the same rule
  982|       |  // that p is in.
  983|  99.0k|  size_t numCtxs = config->context->size();
  984|   120k|  for (size_t i = 0; i < numCtxs; i++) { // for each stack context
  ------------------
  |  Branch (984:22): [True: 99.0k, False: 21.2k]
  ------------------
  985|  99.0k|    ATNState *returnState = atn.states[config->context->getReturnState(i)];
  986|  99.0k|    if (returnState->ruleIndex != p->ruleIndex)
  ------------------
  |  Branch (986:9): [True: 77.8k, False: 21.2k]
  ------------------
  987|  77.8k|      return false;
  988|  99.0k|  }
  989|       |
  990|  21.2k|  BlockStartState *decisionStartState = (BlockStartState *)p->transitions[0]->target;
  991|  21.2k|  size_t blockEndStateNum = decisionStartState->endState->stateNumber;
  992|  21.2k|  BlockEndState *blockEndState = (BlockEndState *)atn.states[blockEndStateNum];
  993|       |
  994|       |  // Verify that the top of each stack context leads to loop entry/exit
  995|       |  // state through epsilon edges and w/o leaving rule.
  996|  42.4k|  for (size_t i = 0; i < numCtxs; i++) {                           // for each stack context
  ------------------
  |  Branch (996:22): [True: 21.2k, False: 21.2k]
  ------------------
  997|  21.2k|    size_t returnStateNumber = config->context->getReturnState(i);
  998|  21.2k|    ATNState *returnState = atn.states[returnStateNumber];
  999|       |    // All states must have single outgoing epsilon edge.
 1000|  21.2k|    if (returnState->transitions.size() != 1 || !returnState->transitions[0]->isEpsilon())
  ------------------
  |  Branch (1000:9): [True: 0, False: 21.2k]
  |  Branch (1000:49): [True: 0, False: 21.2k]
  ------------------
 1001|      0|    {
 1002|      0|      return false;
 1003|      0|    }
 1004|       |
 1005|       |    // Look for prefix op case like 'not expr', (' type ')' expr
 1006|  21.2k|    ATNState *returnStateTarget = returnState->transitions[0]->target;
 1007|  21.2k|    if (returnState->getStateType() == ATNStateType::BLOCK_END && returnStateTarget == p) {
  ------------------
  |  Branch (1007:9): [True: 21.2k, False: 0]
  |  Branch (1007:67): [True: 0, False: 21.2k]
  ------------------
 1008|      0|      continue;
 1009|      0|    }
 1010|       |
 1011|       |    // Look for 'expr op expr' or case where expr's return state is block end
 1012|       |    // of (...)* internal block; the block end points to loop back
 1013|       |    // which points to p but we don't need to check that
 1014|  21.2k|    if (returnState == blockEndState) {
  ------------------
  |  Branch (1014:9): [True: 21.2k, False: 0]
  ------------------
 1015|  21.2k|      continue;
 1016|  21.2k|    }
 1017|       |
 1018|       |    // Look for ternary expr ? expr : expr. The return state points at block end,
 1019|       |    // which points at loop entry state
 1020|      0|    if (returnStateTarget == blockEndState) {
  ------------------
  |  Branch (1020:9): [True: 0, False: 0]
  ------------------
 1021|      0|      continue;
 1022|      0|    }
 1023|       |
 1024|       |    // Look for complex prefix 'between expr and expr' case where 2nd expr's
 1025|       |    // return state points at block end state of (...)* internal block
 1026|      0|    if (returnStateTarget->getStateType() == ATNStateType::BLOCK_END &&
  ------------------
  |  Branch (1026:9): [True: 0, False: 0]
  ------------------
 1027|      0|        returnStateTarget->transitions.size() == 1 &&
  ------------------
  |  Branch (1027:9): [True: 0, False: 0]
  ------------------
 1028|      0|        returnStateTarget->transitions[0]->isEpsilon() &&
  ------------------
  |  Branch (1028:9): [True: 0, False: 0]
  ------------------
 1029|      0|        returnStateTarget->transitions[0]->target == p)
  ------------------
  |  Branch (1029:9): [True: 0, False: 0]
  ------------------
 1030|      0|    {
 1031|      0|      continue;
 1032|      0|    }
 1033|       |
 1034|       |    // Anything else ain't conforming.
 1035|      0|    return false;
 1036|      0|  }
 1037|       |
 1038|  21.2k|  return true;
 1039|  21.2k|}
_ZN6antlr43atn18ParserATNSimulator16getEpsilonTargetERKNSt3__110shared_ptrINS0_9ATNConfigEEEPKNS0_10TransitionEbbbb:
 1049|  2.99M|                                                    bool inContext, bool fullCtx, bool treatEofAsEpsilon) {
 1050|  2.99M|  switch (t->getTransitionType()) {
 1051|  90.7k|    case TransitionType::RULE:
  ------------------
  |  Branch (1051:5): [True: 90.7k, False: 2.90M]
  ------------------
 1052|  90.7k|      return ruleTransition(config, static_cast<const RuleTransition*>(t));
 1053|       |
 1054|   155k|    case TransitionType::PRECEDENCE:
  ------------------
  |  Branch (1054:5): [True: 155k, False: 2.84M]
  ------------------
 1055|   155k|      return precedenceTransition(config, static_cast<const PrecedencePredicateTransition*>(t), collectPredicates, inContext, fullCtx);
 1056|       |
 1057|      0|    case TransitionType::PREDICATE:
  ------------------
  |  Branch (1057:5): [True: 0, False: 2.99M]
  ------------------
 1058|      0|      return predTransition(config, static_cast<const PredicateTransition*>(t), collectPredicates, inContext, fullCtx);
 1059|       |
 1060|  30.2k|    case TransitionType::ACTION:
  ------------------
  |  Branch (1060:5): [True: 30.2k, False: 2.96M]
  ------------------
 1061|  30.2k|      return actionTransition(config, static_cast<const ActionTransition*>(t));
 1062|       |
 1063|  1.91M|    case TransitionType::EPSILON:
  ------------------
  |  Branch (1063:5): [True: 1.91M, False: 1.08M]
  ------------------
 1064|  1.91M|      return std::make_shared<ATNConfig>(*config, t->target);
 1065|       |
 1066|   729k|    case TransitionType::ATOM:
  ------------------
  |  Branch (1066:5): [True: 729k, False: 2.26M]
  ------------------
 1067|   729k|    case TransitionType::RANGE:
  ------------------
  |  Branch (1067:5): [True: 0, False: 2.99M]
  ------------------
 1068|   807k|    case TransitionType::SET:
  ------------------
  |  Branch (1068:5): [True: 77.9k, False: 2.92M]
  ------------------
 1069|       |      // EOF transitions act like epsilon transitions after the first EOF
 1070|       |      // transition is traversed
 1071|   807k|      if (treatEofAsEpsilon) {
  ------------------
  |  Branch (1071:11): [True: 0, False: 807k]
  ------------------
 1072|      0|        if (t->matches(Token::EOF, 0, 1)) {
  ------------------
  |  Branch (1072:13): [True: 0, False: 0]
  ------------------
 1073|      0|          return std::make_shared<ATNConfig>(*config, t->target);
 1074|      0|        }
 1075|      0|      }
 1076|       |
 1077|   807k|      return nullptr;
 1078|       |
 1079|      0|    default:
  ------------------
  |  Branch (1079:5): [True: 0, False: 2.99M]
  ------------------
 1080|      0|      return nullptr;
 1081|  2.99M|  }
 1082|  2.99M|}
_ZN6antlr43atn18ParserATNSimulator16actionTransitionERKNSt3__110shared_ptrINS0_9ATNConfigEEEPKNS0_16ActionTransitionE:
 1084|  30.2k|Ref<ATNConfig> ParserATNSimulator::actionTransition(Ref<ATNConfig> const& config, const ActionTransition *t) {
 1085|       |#if DEBUG_DFA == 1
 1086|       |    std::cout << "ACTION edge " << t->ruleIndex << ":" << t->actionIndex << std::endl;
 1087|       |#endif
 1088|       |
 1089|  30.2k|  return std::make_shared<ATNConfig>(*config, t->target);
 1090|  30.2k|}
_ZN6antlr43atn18ParserATNSimulator20precedenceTransitionERKNSt3__110shared_ptrINS0_9ATNConfigEEEPKNS0_29PrecedencePredicateTransitionEbbb:
 1093|   155k|    bool collectPredicates, bool inContext, bool fullCtx) {
 1094|       |#if DEBUG_DFA == 1
 1095|       |    std::cout << "PRED (collectPredicates=" << collectPredicates << ") " << pt->getPrecedence() << ">=_p" << ", ctx dependent=true" << std::endl;
 1096|       |    if (parser != nullptr) {
 1097|       |      std::cout << "context surrounding pred is " << Arrays::listToString(parser->getRuleInvocationStack(), ", ") << std::endl;
 1098|       |    }
 1099|       |#endif
 1100|       |
 1101|   155k|  Ref<ATNConfig> c;
 1102|   155k|  if (collectPredicates && inContext) {
  ------------------
  |  Branch (1102:7): [True: 57, False: 155k]
  |  Branch (1102:28): [True: 19, False: 38]
  ------------------
 1103|     19|    const auto &predicate = pt->getPredicate();
 1104|       |
 1105|     19|    if (fullCtx) {
  ------------------
  |  Branch (1105:9): [True: 0, False: 19]
  ------------------
 1106|       |      // In full context mode, we can evaluate predicates on-the-fly
 1107|       |      // during closure, which dramatically reduces the size of
 1108|       |      // the config sets. It also obviates the need to test predicates
 1109|       |      // later during conflict resolution.
 1110|      0|      size_t currentPosition = _input->index();
 1111|      0|      _input->seek(_startIndex);
 1112|      0|      bool predSucceeds = evalSemanticContext(predicate, _outerContext, config->alt, fullCtx);
 1113|      0|      _input->seek(currentPosition);
 1114|      0|      if (predSucceeds) {
  ------------------
  |  Branch (1114:11): [True: 0, False: 0]
  ------------------
 1115|      0|        c = std::make_shared<ATNConfig>(*config, pt->target); // no pred context
 1116|      0|      }
 1117|     19|    } else {
 1118|     19|      Ref<const SemanticContext> newSemCtx = SemanticContext::And(config->semanticContext, predicate);
 1119|     19|      c = std::make_shared<ATNConfig>(*config, pt->target, std::move(newSemCtx));
 1120|     19|    }
 1121|   155k|  } else {
 1122|   155k|    c = std::make_shared<ATNConfig>(*config, pt->target);
 1123|   155k|  }
 1124|       |
 1125|       |#if DEBUG_DFA == 1
 1126|       |    std::cout << "config from pred transition=" << c << std::endl;
 1127|       |#endif
 1128|       |
 1129|   155k|  return c;
 1130|   155k|}
_ZN6antlr43atn18ParserATNSimulator14ruleTransitionERKNSt3__110shared_ptrINS0_9ATNConfigEEEPKNS0_14RuleTransitionE:
 1171|  90.7k|Ref<ATNConfig> ParserATNSimulator::ruleTransition(Ref<ATNConfig> const& config, const RuleTransition *t) {
 1172|       |#if DEBUG_DFA == 1
 1173|       |    std::cout << "CALL rule " << getRuleName(t->target->ruleIndex) << ", ctx=" << config->context << std::endl;
 1174|       |#endif
 1175|       |
 1176|  90.7k|  atn::ATNState *returnState = t->followState;
 1177|  90.7k|  Ref<const PredictionContext> newContext = SingletonPredictionContext::create(config->context, returnState->stateNumber);
 1178|  90.7k|  return std::make_shared<ATNConfig>(*config, t->target, newContext);
 1179|  90.7k|}
_ZN6antlr43atn18ParserATNSimulator18getConflictingAltsEPNS0_12ATNConfigSetE:
 1181|      4|BitSet ParserATNSimulator::getConflictingAlts(ATNConfigSet *configs) {
 1182|      4|  std::vector<BitSet> altsets = PredictionModeClass::getConflictingAltSubsets(configs);
 1183|      4|  return PredictionModeClass::getAlts(altsets);
 1184|      4|}
_ZN6antlr43atn18ParserATNSimulator29getConflictingAltsOrUniqueAltEPNS0_12ATNConfigSetE:
 1186|     11|BitSet ParserATNSimulator::getConflictingAltsOrUniqueAlt(ATNConfigSet *configs) {
 1187|     11|  BitSet conflictingAlts;
 1188|     11|  if (configs->uniqueAlt != ATN::INVALID_ALT_NUMBER) {
  ------------------
  |  Branch (1188:7): [True: 11, False: 0]
  ------------------
 1189|     11|    conflictingAlts.set(configs->uniqueAlt);
 1190|     11|  } else {
 1191|      0|    conflictingAlts = configs->conflictingAlts;
 1192|      0|  }
 1193|     11|  return conflictingAlts;
 1194|     11|}
_ZN6antlr43atn18ParserATNSimulator11noViableAltEPNS_11TokenStreamEPNS_17ParserRuleContextEPNS0_12ATNConfigSetEmb:
 1238|  36.8k|  ATNConfigSet *configs, size_t startIndex, bool deleteConfigs) {
 1239|  36.8k|  return NoViableAltException(parser, input, input->get(startIndex), input->LT(1), configs, outerContext, deleteConfigs);
 1240|  36.8k|}
_ZN6antlr43atn18ParserATNSimulator12getUniqueAltEPNS0_12ATNConfigSetE:
 1242|  56.6k|size_t ParserATNSimulator::getUniqueAlt(ATNConfigSet *configs) {
 1243|  56.6k|  size_t alt = ATN::INVALID_ALT_NUMBER;
 1244|   298k|  for (const auto &c : configs->configs) {
  ------------------
  |  Branch (1244:22): [True: 298k, False: 493]
  ------------------
 1245|   298k|    if (alt == ATN::INVALID_ALT_NUMBER) {
  ------------------
  |  Branch (1245:9): [True: 56.4k, False: 241k]
  ------------------
 1246|  56.4k|      alt = c->alt; // found first alt
 1247|   241k|    } else if (c->alt != alt) {
  ------------------
  |  Branch (1247:16): [True: 56.1k, False: 185k]
  ------------------
 1248|  56.1k|      return ATN::INVALID_ALT_NUMBER;
 1249|  56.1k|    }
 1250|   298k|  }
 1251|    493|  return alt;
 1252|  56.6k|}
_ZN6antlr43atn18ParserATNSimulator10addDFAEdgeERNS_3dfa3DFAEPNS2_8DFAStateElS6_:
 1254|    467|dfa::DFAState *ParserATNSimulator::addDFAEdge(dfa::DFA &dfa, dfa::DFAState *from, ssize_t t, dfa::DFAState *to) {
 1255|       |#if DEBUG_DFA == 1
 1256|       |    std::cout << "EDGE " << from << " -> " << to << " upon " << getTokenName(t) << std::endl;
 1257|       |#endif
 1258|       |
 1259|    467|  if (to == nullptr) {
  ------------------
  |  Branch (1259:7): [True: 0, False: 467]
  ------------------
 1260|      0|    return nullptr;
 1261|      0|  }
 1262|       |
 1263|    467|  {
 1264|    467|    std::unique_lock<std::shared_mutex> stateLock(atn._stateMutex);
 1265|    467|    to = addDFAState(dfa, to); // used existing if possible not incoming
 1266|    467|  }
 1267|    467|  if (from == nullptr || t > (int)atn.maxTokenType) {
  ------------------
  |  Branch (1267:7): [True: 0, False: 467]
  |  Branch (1267:26): [True: 0, False: 467]
  ------------------
 1268|      0|    return to;
 1269|      0|  }
 1270|       |
 1271|    467|  {
 1272|    467|    std::unique_lock<std::shared_mutex> edgeLock(atn._edgeMutex);
 1273|    467|    from->edges[t] = to; // connect
 1274|    467|  }
 1275|       |
 1276|       |#if DEBUG_DFA == 1
 1277|       |    std::string dfaText;
 1278|       |    if (parser != nullptr) {
 1279|       |      dfaText = dfa.toString(parser->getVocabulary());
 1280|       |    } else {
 1281|       |      dfaText = dfa.toString(dfa::Vocabulary());
 1282|       |    }
 1283|       |    std::cout << "DFA=\n" << dfaText << std::endl;
 1284|       |#endif
 1285|       |
 1286|    467|  return to;
 1287|    467|}
_ZN6antlr43atn18ParserATNSimulator11addDFAStateERNS_3dfa3DFAEPNS2_8DFAStateE:
 1289|    483|dfa::DFAState *ParserATNSimulator::addDFAState(dfa::DFA &dfa, dfa::DFAState *D) {
 1290|    483|  if (D == ERROR.get()) {
  ------------------
  |  Branch (1290:7): [True: 204, False: 279]
  ------------------
 1291|    204|    return D;
 1292|    204|  }
 1293|       |
 1294|       |  // Optimizing the configs below should not alter the hash code. Thus we can just do an insert
 1295|       |  // which will only succeed if an equivalent DFAState does not already exist.
 1296|    279|  auto [existing, inserted] = dfa.states.insert(D);
 1297|    279|  if (!inserted) {
  ------------------
  |  Branch (1297:7): [True: 125, False: 154]
  ------------------
 1298|    125|    return *existing;
 1299|    125|  }
 1300|       |
 1301|       |  // Previously we did a lookup, then set fields, then inserted. It was `dfa.states.size()`, since
 1302|       |  // we already inserted we need to subtract one.
 1303|    154|  D->stateNumber = static_cast<int>(dfa.states.size() - 1);
 1304|    154|  if (!D->configs->isReadonly()) {
  ------------------
  |  Branch (1304:7): [True: 154, False: 0]
  ------------------
 1305|    154|    D->configs->optimizeConfigs(this);
 1306|    154|    D->configs->setReadonly(true);
 1307|    154|  }
 1308|       |
 1309|       |#if DEBUG_DFA == 1
 1310|       |  std::cout << "adding new DFA state: " << D << std::endl;
 1311|       |#endif
 1312|       |
 1313|    154|  return D;
 1314|    279|}
_ZN6antlr43atn18ParserATNSimulator27reportAttemptingFullContextERNS_3dfa3DFAERKN8antlrcpp6BitSetEPNS0_12ATNConfigSetEmm:
 1317|  15.1k|  ATNConfigSet *configs, size_t startIndex, size_t stopIndex) {
 1318|       |#if DEBUG_DFA == 1 || RETRY_DEBUG == 1
 1319|       |    misc::Interval interval = misc::Interval((int)startIndex, (int)stopIndex);
 1320|       |    std::cout << "reportAttemptingFullContext decision=" << dfa.decision << ":" << configs << ", input=" << parser->getTokenStream()->getText(interval) << std::endl;
 1321|       |#endif
 1322|       |
 1323|  15.1k|  if (parser != nullptr) {
  ------------------
  |  Branch (1323:7): [True: 15.1k, False: 0]
  ------------------
 1324|  15.1k|    parser->getErrorListenerDispatch().reportAttemptingFullContext(parser, dfa, startIndex, stopIndex, conflictingAlts, configs);
 1325|  15.1k|  }
 1326|  15.1k|}
_ZN6antlr43atn18ParserATNSimulator15reportAmbiguityERNS_3dfa3DFAEPNS2_8DFAStateEmmbRKN8antlrcpp6BitSetEPNS0_12ATNConfigSetE:
 1341|  15.1k|                                         bool exact, const antlrcpp::BitSet &ambigAlts, ATNConfigSet *configs) {
 1342|       |#if DEBUG_DFA == 1 || RETRY_DEBUG == 1
 1343|       |    misc::Interval interval = misc::Interval((int)startIndex, (int)stopIndex);
 1344|       |    std::cout << "reportAmbiguity " << ambigAlts << ":" << configs << ", input=" << parser->getTokenStream()->getText(interval) << std::endl;
 1345|       |#endif
 1346|       |
 1347|  15.1k|  if (parser != nullptr) {
  ------------------
  |  Branch (1347:7): [True: 15.1k, False: 0]
  ------------------
 1348|  15.1k|    parser->getErrorListenerDispatch().reportAmbiguity(parser, dfa, startIndex, stopIndex, exact, ambigAlts, configs);
 1349|  15.1k|  }
 1350|  15.1k|}
_ZN6antlr43atn18ParserATNSimulator16getLrLoopSettingEv:
 1368|      2|bool ParserATNSimulator::getLrLoopSetting() {
 1369|      2|  char *var = std::getenv("TURN_OFF_LR_LOOP_ENTRY_BRANCH_OPT");
 1370|      2|  if (var == nullptr)
  ------------------
  |  Branch (1370:7): [True: 2, False: 0]
  ------------------
 1371|      2|    return false;
 1372|      0|  std::string value(var);
 1373|      0|  return value == "true" || value == "1";
  ------------------
  |  Branch (1373:10): [True: 0, False: 0]
  |  Branch (1373:29): [True: 0, False: 0]
  ------------------
 1374|      2|}
_ZN6antlr43atn18ParserATNSimulator24InitializeInstanceFieldsEv:
 1380|  9.21k|void ParserATNSimulator::InitializeInstanceFields() {
 1381|  9.21k|  _mode = PredictionMode::LL;
 1382|  9.21k|  _startIndex = 0;
 1383|  9.21k|}
ParserATNSimulator.cpp:_ZZN6antlr43atn18ParserATNSimulator15adaptivePredictEPNS_11TokenStreamEmPNS_17ParserRuleContextEENK3$_0clEv:
   96|  18.2M|  auto onExit = finally([this, input, index, m] {
   97|  18.2M|    if (mergeCache.getOptions().getClearEveryN() != 0) {
  ------------------
  |  Branch (97:9): [True: 18.2M, False: 0]
  ------------------
   98|  18.2M|      if (++_mergeCacheCounter == mergeCache.getOptions().getClearEveryN()) {
  ------------------
  |  Branch (98:11): [True: 18.2M, False: 0]
  ------------------
   99|  18.2M|        mergeCache.clear();
  100|  18.2M|        _mergeCacheCounter = 0;
  101|  18.2M|      }
  102|  18.2M|    }
  103|  18.2M|    _dfa = nullptr;
  104|  18.2M|    input->seek(index);
  105|  18.2M|    input->release(m);
  106|  18.2M|  });
ParserATNSimulator.cpp:_ZZN6antlr43atn18ParserATNSimulator23getPredicatePredictionsERKN8antlrcpp6BitSetERKNSt3__16vectorINS6_10shared_ptrIKNS0_15SemanticContextEEENS6_9allocatorISB_EEEEENK3$_1clERKSB_:
  713|     11|  bool containsPredicate = std::find_if(altToPred.begin(), altToPred.end(), [](const Ref<const SemanticContext> &context) {
  714|     11|    return context != SemanticContext::NONE;
  715|     11|  }) != altToPred.end();

_ZN6antlr43atn29PrecedencePredicateTransitionC2EPNS0_8ATNStateEi:
   11|      6|  : Transition(TransitionType::PRECEDENCE, target), _predicate(std::make_shared<SemanticContext::PrecedencePredicate>(precedence)) {}
_ZNK6antlr43atn29PrecedencePredicateTransition9isEpsilonEv:
   13|   155k|bool PrecedencePredicateTransition::isEpsilon() const {
   14|   155k|  return true;
   15|   155k|}

_ZN6antlr43atn17PredictionContextC2ENS0_21PredictionContextTypeE:
  131|  5.52M|PredictionContext::PredictionContext(PredictionContextType contextType) : _contextType(contextType), _hashCode(0) {}
_ZN6antlr43atn17PredictionContext15fromRuleContextERKNS0_3ATNEPNS_11RuleContextE:
  135|  5.32M|Ref<const PredictionContext> PredictionContext::fromRuleContext(const ATN &atn, RuleContext *outerContext) {
  136|  5.32M|  if (outerContext == nullptr) {
  ------------------
  |  Branch (136:7): [True: 0, False: 5.32M]
  ------------------
  137|      0|    return PredictionContext::EMPTY;
  138|      0|  }
  139|       |
  140|       |  // if we are in RuleContext of start rule, s, then PredictionContext
  141|       |  // is EMPTY. Nobody called us. (if we are empty, return empty)
  142|  5.32M|  if (outerContext->parent == nullptr || outerContext == &ParserRuleContext::EMPTY) {
  ------------------
  |  Branch (142:7): [True: 42.8k, False: 5.27M]
  |  Branch (142:42): [True: 0, False: 5.27M]
  ------------------
  143|  42.8k|    return PredictionContext::EMPTY;
  144|  42.8k|  }
  145|       |
  146|       |  // If we have a parent, convert it to a PredictionContext graph
  147|  5.27M|  auto parent = PredictionContext::fromRuleContext(atn, RuleContext::is(outerContext->parent) ? downCast<RuleContext*>(outerContext->parent) : nullptr);
  ------------------
  |  Branch (147:57): [True: 5.27M, False: 0]
  ------------------
  148|  5.27M|  const auto *transition = downCast<const RuleTransition*>(atn.states[outerContext->invokingState]->transitions[0].get());
  149|  5.27M|  return SingletonPredictionContext::create(std::move(parent), transition->followState->stateNumber);
  150|  5.32M|}
_ZNK6antlr43atn17PredictionContext12hasEmptyPathEv:
  152|   105k|bool PredictionContext::hasEmptyPath() const {
  153|       |  // since EMPTY_RETURN_STATE can only appear in the last position, we check last one
  154|   105k|  return getReturnState(size() - 1) == EMPTY_RETURN_STATE;
  155|   105k|}
_ZNK6antlr43atn17PredictionContext8hashCodeEv:
  157|  7.75M|size_t PredictionContext::hashCode() const {
  158|  7.75M|  auto hash = cachedHashCode();
  159|  7.75M|  if (hash == 0) {
  ------------------
  |  Branch (159:7): [True: 5.52M, False: 2.22M]
  ------------------
  160|  5.52M|    hash = hashCodeImpl();
  161|  5.52M|    if (hash == 0) {
  ------------------
  |  Branch (161:9): [True: 0, False: 5.52M]
  ------------------
  162|      0|      hash = std::numeric_limits<size_t>::max();
  163|      0|    }
  164|  5.52M|    _hashCode.store(hash, std::memory_order_relaxed);
  165|  5.52M|  }
  166|  7.75M|  return hash;
  167|  7.75M|}
_ZN6antlr43atn17PredictionContext5mergeENSt3__110shared_ptrIKS1_EES5_bPNS0_27PredictionContextMergeCacheE:
  170|    123|                                                      bool rootIsWildcard, PredictionContextMergeCache *mergeCache) {
  171|    123|  assert(a && b);
  172|       |
  173|       |  // share same graph if both same
  174|    123|  if (a == b || *a == *b) {
  ------------------
  |  Branch (174:7): [True: 123, False: 0]
  |  Branch (174:17): [True: 0, False: 0]
  ------------------
  175|    123|    return a;
  176|    123|  }
  177|       |
  178|      0|  const auto aType = a->getContextType();
  179|      0|  const auto bType = b->getContextType();
  180|       |
  181|      0|  if (aType == PredictionContextType::SINGLETON && bType == PredictionContextType::SINGLETON) {
  ------------------
  |  Branch (181:7): [True: 0, False: 0]
  |  Branch (181:52): [True: 0, False: 0]
  ------------------
  182|      0|    return mergeSingletons(std::static_pointer_cast<const SingletonPredictionContext>(std::move(a)),
  183|      0|                           std::static_pointer_cast<const SingletonPredictionContext>(std::move(b)), rootIsWildcard, mergeCache);
  184|      0|  }
  185|       |
  186|       |  // At least one of a or b is array.
  187|       |  // If one is $ and rootIsWildcard, return $ as * wildcard.
  188|      0|  if (rootIsWildcard) {
  ------------------
  |  Branch (188:7): [True: 0, False: 0]
  ------------------
  189|      0|    if (a == PredictionContext::EMPTY) {
  ------------------
  |  Branch (189:9): [True: 0, False: 0]
  ------------------
  190|      0|      return a;
  191|      0|    }
  192|      0|    if (b == PredictionContext::EMPTY) {
  ------------------
  |  Branch (192:9): [True: 0, False: 0]
  ------------------
  193|      0|      return b;
  194|      0|    }
  195|      0|  }
  196|       |
  197|       |  // convert singleton so both are arrays to normalize
  198|      0|  Ref<const ArrayPredictionContext> left;
  199|      0|  if (aType == PredictionContextType::SINGLETON) {
  ------------------
  |  Branch (199:7): [True: 0, False: 0]
  ------------------
  200|      0|    left = std::make_shared<ArrayPredictionContext>(downCast<const SingletonPredictionContext&>(*a));
  201|      0|  } else {
  202|      0|    left = std::static_pointer_cast<const ArrayPredictionContext>(std::move(a));
  203|      0|  }
  204|      0|  Ref<const ArrayPredictionContext> right;
  205|      0|  if (bType == PredictionContextType::SINGLETON) {
  ------------------
  |  Branch (205:7): [True: 0, False: 0]
  ------------------
  206|      0|    right = std::make_shared<ArrayPredictionContext>(downCast<const SingletonPredictionContext&>(*b));
  207|      0|  } else {
  208|      0|    right = std::static_pointer_cast<const ArrayPredictionContext>(std::move(b));
  209|      0|  }
  210|      0|  return mergeArrays(std::move(left), std::move(right), rootIsWildcard, mergeCache);
  211|      0|}
_ZN6antlr43atn17PredictionContext16getCachedContextERKNSt3__110shared_ptrIKS1_EERNS0_22PredictionContextCacheE:
  496|    624|                                                                 PredictionContextCache &contextCache) {
  497|    624|  std::unordered_map<Ref<const PredictionContext>, Ref<const PredictionContext>> visited;
  498|    624|  return getCachedContextImpl(context, contextCache, visited);
  499|    624|}
PredictionContext.cpp:_ZN12_GLOBAL__N_120getCachedContextImplERKNSt3__110shared_ptrIKN6antlr43atn17PredictionContextEEERNS3_22PredictionContextCacheERNS0_13unordered_mapIS6_S6_NS0_4hashIS6_EENS0_8equal_toIS6_EENS0_9allocatorINS0_4pairIS7_S6_EEEEEE:
   41|    645|                                                    Ref<const PredictionContext>> &visited) {
   42|    645|    if (context->isEmpty()) {
  ------------------
  |  Branch (42:9): [True: 472, False: 173]
  ------------------
   43|    472|      return context;
   44|    472|    }
   45|       |
   46|    173|    {
   47|    173|      auto iterator = visited.find(context);
   48|    173|      if (iterator != visited.end()) {
  ------------------
  |  Branch (48:11): [True: 0, False: 173]
  ------------------
   49|      0|        return iterator->second; // Not necessarly the same as context.
   50|      0|      }
   51|    173|    }
   52|       |
   53|    173|    auto cached = contextCache.get(context);
   54|    173|    if (cached) {
  ------------------
  |  Branch (54:9): [True: 152, False: 21]
  ------------------
   55|    152|      visited[context] = cached;
   56|    152|      return cached;
   57|    152|    }
   58|       |
   59|     21|    bool changed = false;
   60|       |
   61|     21|    std::vector<Ref<const PredictionContext>> parents(context->size());
   62|     42|    for (size_t i = 0; i < parents.size(); i++) {
  ------------------
  |  Branch (62:24): [True: 21, False: 21]
  ------------------
   63|     21|      auto parent = getCachedContextImpl(context->getParent(i), contextCache, visited);
   64|     21|      if (changed || parent != context->getParent(i)) {
  ------------------
  |  Branch (64:11): [True: 0, False: 21]
  |  Branch (64:22): [True: 0, False: 21]
  ------------------
   65|      0|        if (!changed) {
  ------------------
  |  Branch (65:13): [True: 0, False: 0]
  ------------------
   66|      0|          parents.clear();
   67|      0|          for (size_t j = 0; j < context->size(); j++) {
  ------------------
  |  Branch (67:30): [True: 0, False: 0]
  ------------------
   68|      0|            parents.push_back(context->getParent(j));
   69|      0|          }
   70|       |
   71|      0|          changed = true;
   72|      0|        }
   73|       |
   74|      0|        parents[i] = std::move(parent);
   75|      0|      }
   76|     21|    }
   77|       |
   78|     21|    if (!changed) {
  ------------------
  |  Branch (78:9): [True: 21, False: 0]
  ------------------
   79|     21|      visited[context] = context;
   80|     21|      contextCache.put(context);
   81|     21|      return context;
   82|     21|    }
   83|       |
   84|      0|    Ref<const PredictionContext> updated;
   85|      0|    if (parents.empty()) {
  ------------------
  |  Branch (85:9): [True: 0, False: 0]
  ------------------
   86|      0|      updated = PredictionContext::EMPTY;
   87|      0|    } else if (parents.size() == 1) {
  ------------------
  |  Branch (87:16): [True: 0, False: 0]
  ------------------
   88|      0|      updated = SingletonPredictionContext::create(std::move(parents[0]), context->getReturnState(0));
   89|      0|      contextCache.put(updated);
   90|      0|    } else {
   91|      0|      updated = std::make_shared<ArrayPredictionContext>(std::move(parents), downCast<const ArrayPredictionContext*>(context.get())->returnStates);
   92|      0|      contextCache.put(updated);
   93|      0|    }
   94|       |
   95|      0|    visited[updated] = updated;
   96|      0|    visited[context] = updated;
   97|       |
   98|      0|    return updated;
   99|     21|  }

_ZN6antlr43atn22PredictionContextCache3putERKNSt3__110shared_ptrIKNS0_17PredictionContextEEE:
   30|     21|void PredictionContextCache::put(const Ref<const PredictionContext> &value) {
   31|     21|  assert(value);
   32|       |
   33|     21|  _data.insert(value);
   34|     21|}
_ZNK6antlr43atn22PredictionContextCache3getERKNSt3__110shared_ptrIKNS0_17PredictionContextEEE:
   37|    173|    const Ref<const PredictionContext> &value) const {
   38|    173|  assert(value);
   39|       |
   40|    173|  auto iterator = _data.find(value);
   41|    173|  if (iterator == _data.end()) {
  ------------------
  |  Branch (41:7): [True: 21, False: 152]
  ------------------
   42|     21|    return nullptr;
   43|     21|  }
   44|    152|  return *iterator;
   45|    173|}
_ZNK6antlr43atn22PredictionContextCache23PredictionContextHasherclERKNSt3__110shared_ptrIKNS0_17PredictionContextEEE:
   48|    194|    const Ref<const PredictionContext> &predictionContext) const {
   49|    194|  return predictionContext->hashCode();
   50|    194|}
_ZNK6antlr43atn22PredictionContextCache25PredictionContextComparerclERKNSt3__110shared_ptrIKNS0_17PredictionContextEEES9_:
   54|    175|    const Ref<const PredictionContext> &rhs) const {
   55|    175|  return *lhs == *rhs;
   56|    175|}

_ZN6antlr43atn27PredictionContextMergeCacheC2ERKNS0_34PredictionContextMergeCacheOptionsE:
   34|  9.21k|    const PredictionContextMergeCacheOptions &options) : _options(options) {}
_ZN6antlr43atn27PredictionContextMergeCache5clearEv:
   88|  18.2M|void PredictionContextMergeCache::clear() {
   89|  18.2M|  Container().swap(_entries);
   90|  18.2M|  _head = _tail = nullptr;
   91|  18.2M|  _size = 0;
   92|  18.2M|}

_ZN6antlr43atn19PredictionModeClass35hasSLLConflictTerminatingPredictionENS0_14PredictionModeEPNS0_12ATNConfigSetE:
   42|     10|bool PredictionModeClass::hasSLLConflictTerminatingPrediction(PredictionMode mode, ATNConfigSet *configs) {
   43|       |  /* Configs in rule stop states indicate reaching the end of the decision
   44|       |   * rule (local context) or end of start rule (full context). If all
   45|       |   * configs meet this condition, then none of the configurations is able
   46|       |   * to match additional input so we terminate prediction.
   47|       |   */
   48|     10|  if (allConfigsInRuleStopStates(configs)) {
  ------------------
  |  Branch (48:7): [True: 0, False: 10]
  ------------------
   49|      0|    return true;
   50|      0|  }
   51|       |
   52|     10|  bool heuristic;
   53|       |
   54|       |  // Pure SLL mode parsing or SLL+LL if:
   55|       |  // Don't bother with combining configs from different semantic
   56|       |  // contexts if we can fail over to full LL; costs more time
   57|       |  // since we'll often fail over anyway.
   58|     10|  if (mode == PredictionMode::SLL || !configs->hasSemanticContext) {
  ------------------
  |  Branch (58:7): [True: 0, False: 10]
  |  Branch (58:38): [True: 10, False: 0]
  ------------------
   59|     10|    std::vector<antlrcpp::BitSet> altsets = getConflictingAltSubsets(configs);
   60|     10|    heuristic = hasConflictingAltSet(altsets) && !hasStateAssociatedWithOneAlt(configs);
  ------------------
  |  Branch (60:17): [True: 6, False: 4]
  |  Branch (60:50): [True: 4, False: 2]
  ------------------
   61|     10|  } else {
   62|       |    // dup configs, tossing out semantic predicates
   63|      0|    ATNConfigSet dup(true);
   64|      0|    for (auto &config : configs->configs) {
  ------------------
  |  Branch (64:23): [True: 0, False: 0]
  ------------------
   65|      0|      Ref<ATNConfig> c = std::make_shared<ATNConfig>(*config, SemanticContext::NONE);
   66|      0|      dup.add(c);
   67|      0|    }
   68|      0|    std::vector<antlrcpp::BitSet> altsets = getConflictingAltSubsets(&dup);
   69|      0|    heuristic = hasConflictingAltSet(altsets) && !hasStateAssociatedWithOneAlt(&dup);
  ------------------
  |  Branch (69:17): [True: 0, False: 0]
  |  Branch (69:50): [True: 0, False: 0]
  ------------------
   70|      0|  }
   71|       |
   72|     10|  return heuristic;
   73|     10|}
_ZN6antlr43atn19PredictionModeClass26allConfigsInRuleStopStatesEPNS0_12ATNConfigSetE:
   85|     27|bool PredictionModeClass::allConfigsInRuleStopStates(ATNConfigSet *configs) {
   86|     27|  for (const auto &config : configs->configs) {
  ------------------
  |  Branch (86:27): [True: 18, False: 17]
  ------------------
   87|     18|    if (!RuleStopState::is(config->state)) {
  ------------------
  |  Branch (87:9): [True: 10, False: 8]
  ------------------
   88|     10|      return false;
   89|     10|    }
   90|     18|  }
   91|       |
   92|     17|  return true;
   93|     27|}
_ZN6antlr43atn19PredictionModeClass26resolvesToJustOneViableAltERKNSt3__16vectorIN8antlrcpp6BitSetENS2_9allocatorIS5_EEEE:
   95|  28.0k|size_t PredictionModeClass::resolvesToJustOneViableAlt(const std::vector<antlrcpp::BitSet>& altsets) {
   96|  28.0k|  return getSingleViableAlt(altsets);
   97|  28.0k|}
_ZN6antlr43atn19PredictionModeClass20hasConflictingAltSetERKNSt3__16vectorIN8antlrcpp6BitSetENS2_9allocatorIS5_EEEE:
  112|     10|bool PredictionModeClass::hasConflictingAltSet(const std::vector<antlrcpp::BitSet>& altsets) {
  113|     66|  for (antlrcpp::BitSet alts : altsets) {
  ------------------
  |  Branch (113:30): [True: 66, False: 4]
  ------------------
  114|     66|    if (alts.count() > 1) {
  ------------------
  |  Branch (114:9): [True: 6, False: 60]
  ------------------
  115|      6|      return true;
  116|      6|    }
  117|     66|  }
  118|      4|  return false;
  119|     10|}
_ZN6antlr43atn19PredictionModeClass7getAltsERKNSt3__16vectorIN8antlrcpp6BitSetENS2_9allocatorIS5_EEEE:
  143|      4|antlrcpp::BitSet PredictionModeClass::getAlts(const std::vector<antlrcpp::BitSet>& altsets) {
  144|      4|  antlrcpp::BitSet all;
  145|    104|  for (const auto &alts : altsets) {
  ------------------
  |  Branch (145:25): [True: 104, False: 4]
  ------------------
  146|    104|    all |= alts;
  147|    104|  }
  148|       |
  149|      4|  return all;
  150|      4|}
_ZN6antlr43atn19PredictionModeClass24getConflictingAltSubsetsEPNS0_12ATNConfigSetE:
  160|  28.0k|std::vector<antlrcpp::BitSet> PredictionModeClass::getConflictingAltSubsets(ATNConfigSet *configs) {
  161|  28.0k|  std::unordered_map<ATNConfig*, antlrcpp::BitSet, AltAndContextConfigHasher, AltAndContextConfigComparer> configToAlts;
  162|   552k|  for (auto &config : configs->configs) {
  ------------------
  |  Branch (162:21): [True: 552k, False: 28.0k]
  ------------------
  163|   552k|    configToAlts[config.get()].set(config->alt);
  164|   552k|  }
  165|  28.0k|  std::vector<antlrcpp::BitSet> values;
  166|  28.0k|  values.reserve(configToAlts.size());
  167|   382k|  for (const auto &pair : configToAlts) {
  ------------------
  |  Branch (167:25): [True: 382k, False: 28.0k]
  ------------------
  168|   382k|    values.push_back(pair.second);
  169|   382k|  }
  170|  28.0k|  return values;
  171|  28.0k|}
_ZN6antlr43atn19PredictionModeClass16getStateToAltMapEPNS0_12ATNConfigSetE:
  173|      6|std::unordered_map<ATNState*, antlrcpp::BitSet> PredictionModeClass::getStateToAltMap(ATNConfigSet *configs) {
  174|      6|  std::unordered_map<ATNState*, antlrcpp::BitSet> m;
  175|    244|  for (const auto &c : configs->configs) {
  ------------------
  |  Branch (175:22): [True: 244, False: 6]
  ------------------
  176|    244|    m[c->state].set(c->alt);
  177|    244|  }
  178|      6|  return m;
  179|      6|}
_ZN6antlr43atn19PredictionModeClass28hasStateAssociatedWithOneAltEPNS0_12ATNConfigSetE:
  181|      6|bool PredictionModeClass::hasStateAssociatedWithOneAlt(ATNConfigSet *configs) {
  182|      6|  auto x = getStateToAltMap(configs);
  183|    106|  for (const auto &pair : x){
  ------------------
  |  Branch (183:25): [True: 106, False: 4]
  ------------------
  184|    106|    if (pair.second.count() == 1) return true;
  ------------------
  |  Branch (184:9): [True: 2, False: 104]
  ------------------
  185|    106|  }
  186|      4|  return false;
  187|      6|}
_ZN6antlr43atn19PredictionModeClass18getSingleViableAltERKNSt3__16vectorIN8antlrcpp6BitSetENS2_9allocatorIS5_EEEE:
  189|  28.0k|size_t PredictionModeClass::getSingleViableAlt(const std::vector<antlrcpp::BitSet>& altsets) {
  190|  28.0k|  antlrcpp::BitSet viableAlts;
  191|   325k|  for (const auto &alts : altsets) {
  ------------------
  |  Branch (191:25): [True: 325k, False: 15.1k]
  ------------------
  192|   325k|    size_t minAlt = alts.nextSetBit(0);
  193|       |
  194|   325k|    viableAlts.set(minAlt);
  195|   325k|    if (viableAlts.count() > 1)  // more than 1 viable alt
  ------------------
  |  Branch (195:9): [True: 12.9k, False: 312k]
  ------------------
  196|  12.9k|    {
  197|  12.9k|      return ATN::INVALID_ALT_NUMBER;
  198|  12.9k|    }
  199|   325k|  }
  200|       |
  201|  15.1k|  return viableAlts.nextSetBit(0);
  202|  28.0k|}
_ZNK25AltAndContextConfigHasherclEPN6antlr43atn9ATNConfigE:
   24|   552k|  size_t operator () (ATNConfig *o) const {
   25|   552k|    size_t hashCode = misc::MurmurHash::initialize(7);
   26|   552k|    hashCode = misc::MurmurHash::update(hashCode, o->state->stateNumber);
   27|   552k|    hashCode = misc::MurmurHash::update(hashCode, o->context);
   28|   552k|    return misc::MurmurHash::finish(hashCode, 2);
   29|   552k|  }
_ZNK27AltAndContextConfigComparerclEPN6antlr43atn9ATNConfigES3_:
   34|   537k|  {
   35|   537k|    if (a == b) {
  ------------------
  |  Branch (35:9): [True: 0, False: 537k]
  ------------------
   36|      0|      return true;
   37|      0|    }
   38|   537k|    return a->state->stateNumber == b->state->stateNumber && *a->context == *b->context;
  ------------------
  |  Branch (38:12): [True: 170k, False: 367k]
  |  Branch (38:62): [True: 170k, False: 0]
  ------------------
   39|   537k|  }

_ZN6antlr43atn15RangeTransitionC2EPNS0_8ATNStateEmm:
   13|      4|RangeTransition::RangeTransition(ATNState *target, size_t from, size_t to) : Transition(TransitionType::RANGE, target), from(from), to(to) {
   14|      4|}
_ZNK6antlr43atn15RangeTransition7matchesEmmm:
   20|  34.9k|bool RangeTransition::matches(size_t symbol, size_t /*minVocabSymbol*/, size_t /*maxVocabSymbol*/) const {
   21|  34.9k|  return symbol >= from && symbol <= to;
  ------------------
  |  Branch (21:10): [True: 33.9k, False: 958]
  |  Branch (21:28): [True: 433, False: 33.5k]
  ------------------
   22|  34.9k|}

_ZN6antlr43atn14RuleTransitionC2EPNS0_14RuleStartStateEmiPNS0_8ATNStateE:
   16|     80|  : Transition(TransitionType::RULE, ruleStart), ruleIndex(ruleIndex), precedence(precedence) {
   17|     80|  this->followState = followState;
   18|     80|}
_ZNK6antlr43atn14RuleTransition9isEpsilonEv:
   20|  90.7k|bool RuleTransition::isEpsilon() const {
   21|  90.7k|  return true;
   22|  90.7k|}

_ZN6antlr43atn15SemanticContext9PredicateC2Emmb:
   94|      2|    : SemanticContext(SemanticContextType::PREDICATE), ruleIndex(ruleIndex), predIndex(predIndex), isCtxDependent(isCtxDependent) {}
_ZNK6antlr43atn15SemanticContext9Predicate8hashCodeEv:
  104|  4.68M|size_t SemanticContext::Predicate::hashCode() const {
  105|  4.68M|  size_t hashCode = misc::MurmurHash::initialize();
  106|  4.68M|  hashCode = misc::MurmurHash::update(hashCode, static_cast<size_t>(getContextType()));
  107|  4.68M|  hashCode = misc::MurmurHash::update(hashCode, ruleIndex);
  108|  4.68M|  hashCode = misc::MurmurHash::update(hashCode, predIndex);
  109|  4.68M|  hashCode = misc::MurmurHash::update(hashCode, isCtxDependent ? 1 : 0);
  ------------------
  |  Branch (109:49): [True: 0, False: 4.68M]
  ------------------
  110|  4.68M|  hashCode = misc::MurmurHash::finish(hashCode, 4);
  111|  4.68M|  return hashCode;
  112|  4.68M|}
_ZNK6antlr43atn15SemanticContext9Predicate6equalsERKS1_:
  114|  85.2k|bool SemanticContext::Predicate::equals(const SemanticContext &other) const {
  115|  85.2k|  if (this == &other) {
  ------------------
  |  Branch (115:7): [True: 85.2k, False: 0]
  ------------------
  116|  85.2k|    return true;
  117|  85.2k|  }
  118|      0|  if (getContextType() != other.getContextType()) {
  ------------------
  |  Branch (118:7): [True: 0, False: 0]
  ------------------
  119|      0|    return false;
  120|      0|  }
  121|      0|  const Predicate &p = downCast<const Predicate&>(other);
  122|      0|  return ruleIndex == p.ruleIndex && predIndex == p.predIndex && isCtxDependent == p.isCtxDependent;
  ------------------
  |  Branch (122:10): [True: 0, False: 0]
  |  Branch (122:38): [True: 0, False: 0]
  |  Branch (122:66): [True: 0, False: 0]
  ------------------
  123|      0|}
_ZN6antlr43atn15SemanticContext19PrecedencePredicateC2Ei:
  131|      6|SemanticContext::PrecedencePredicate::PrecedencePredicate(int precedence) : SemanticContext(SemanticContextType::PRECEDENCE), precedence(precedence) {}
_ZNK6antlr43atn15SemanticContext19PrecedencePredicate4evalEPNS_10RecognizerEPNS_11RuleContextE:
  133|   688k|bool SemanticContext::PrecedencePredicate::eval(Recognizer *parser, RuleContext *parserCallStack) const {
  134|   688k|  return parser->precpred(parserCallStack, precedence);
  135|   688k|}
_ZNK6antlr43atn15SemanticContext19PrecedencePredicate14evalPrecedenceEPNS_10RecognizerEPNS_11RuleContextE:
  138|     11|  RuleContext *parserCallStack) const {
  139|     11|  if (parser->precpred(parserCallStack, precedence)) {
  ------------------
  |  Branch (139:7): [True: 7, False: 4]
  ------------------
  140|      7|    return SemanticContext::NONE;
  141|      7|  }
  142|      4|  return nullptr;
  143|     11|}
_ZNK6antlr43atn15SemanticContext19PrecedencePredicate8hashCodeEv:
  145|  1.12k|size_t SemanticContext::PrecedencePredicate::hashCode() const {
  146|  1.12k|  size_t hashCode = misc::MurmurHash::initialize();
  147|  1.12k|  hashCode = misc::MurmurHash::update(hashCode, static_cast<size_t>(getContextType()));
  148|  1.12k|  hashCode = misc::MurmurHash::update(hashCode, static_cast<size_t>(precedence));
  149|  1.12k|  return misc::MurmurHash::finish(hashCode, 2);
  150|  1.12k|}
_ZNK6antlr43atn15SemanticContext19PrecedencePredicate6equalsERKS1_:
  152|      3|bool SemanticContext::PrecedencePredicate::equals(const SemanticContext &other) const {
  153|      3|  if (this == &other) {
  ------------------
  |  Branch (153:7): [True: 3, False: 0]
  ------------------
  154|      3|    return true;
  155|      3|  }
  156|      0|  if (getContextType() != other.getContextType()) {
  ------------------
  |  Branch (156:7): [True: 0, False: 0]
  ------------------
  157|      0|    return false;
  158|      0|  }
  159|      0|  const PrecedencePredicate &predicate = downCast<const PrecedencePredicate&>(other);
  160|      0|  return precedence == predicate.precedence;
  161|      0|}
_ZN6antlr43atn15SemanticContext3AndENSt3__110shared_ptrIKS1_EES5_:
  383|     19|Ref<const SemanticContext> SemanticContext::And(Ref<const SemanticContext> a, Ref<const SemanticContext> b) {
  384|     19|  if (!a || a == NONE) {
  ------------------
  |  Branch (384:7): [True: 0, False: 19]
  |  Branch (384:13): [True: 19, False: 0]
  ------------------
  385|     19|    return b;
  386|     19|  }
  387|       |
  388|      0|  if (!b || b == NONE) {
  ------------------
  |  Branch (388:7): [True: 0, False: 0]
  |  Branch (388:13): [True: 0, False: 0]
  ------------------
  389|      0|    return a;
  390|      0|  }
  391|       |
  392|      0|  Ref<AND> result = std::make_shared<AND>(std::move(a), std::move(b));
  393|      0|  if (result->getOperands().size() == 1) {
  ------------------
  |  Branch (393:7): [True: 0, False: 0]
  ------------------
  394|      0|    return result->getOperands()[0];
  395|      0|  }
  396|       |
  397|      0|  return result;
  398|      0|}
_ZN6antlr43atn15SemanticContext2OrENSt3__110shared_ptrIKS1_EES5_:
  400|     11|Ref<const SemanticContext> SemanticContext::Or(Ref<const SemanticContext> a, Ref<const SemanticContext> b) {
  401|     11|  if (!a) {
  ------------------
  |  Branch (401:7): [True: 11, False: 0]
  ------------------
  402|     11|    return b;
  403|     11|  }
  404|      0|  if (!b) {
  ------------------
  |  Branch (404:7): [True: 0, False: 0]
  ------------------
  405|      0|    return a;
  406|      0|  }
  407|       |
  408|      0|  if (a == NONE || b == NONE) {
  ------------------
  |  Branch (408:7): [True: 0, False: 0]
  |  Branch (408:20): [True: 0, False: 0]
  ------------------
  409|      0|    return NONE;
  410|      0|  }
  411|       |
  412|      0|  Ref<OR> result = std::make_shared<OR>(std::move(a), std::move(b));
  413|      0|  if (result->getOperands().size() == 1) {
  ------------------
  |  Branch (413:7): [True: 0, False: 0]
  ------------------
  414|      0|    return result->getOperands()[0];
  415|      0|  }
  416|       |
  417|      0|  return result;
  418|      0|}

_ZNK6antlr43atn15SemanticContext14getContextTypeEv:
   31|  4.69M|    SemanticContextType getContextType() const { return _contextType; }
_ZN6antlr43atn15SemanticContextC2ENS0_19SemanticContextTypeE:
   86|      8|    explicit SemanticContext(SemanticContextType contextType) : _contextType(contextType) {}
_ZN6antlr43atneqERKNS0_15SemanticContextES3_:
   92|  85.2k|  inline bool operator==(const SemanticContext &lhs, const SemanticContext &rhs) {
   93|  85.2k|    return lhs.equals(rhs);
   94|  85.2k|  }

_ZN6antlr43atn13SetTransitionC2ENS0_14TransitionTypeEPNS0_8ATNStateENS_4misc11IntervalSetE:
   15|     21|  : Transition(transitionType, target), set(aSet.isEmpty() ? misc::IntervalSet::of(Token::INVALID_TYPE) : std::move(aSet)) {
   16|     21|}
_ZNK6antlr43atn13SetTransition5labelEv:
   18|  68.8k|misc::IntervalSet SetTransition::label() const {
   19|  68.8k|  return set;
   20|  68.8k|}
_ZNK6antlr43atn13SetTransition7matchesEmmm:
   22|  66.6k|bool SetTransition::matches(size_t symbol, size_t /*minVocabSymbol*/, size_t /*maxVocabSymbol*/) const {
   23|  66.6k|  return set.contains(symbol);
   24|  66.6k|}

_ZN6antlr43atn26SingletonPredictionContextC2ENSt3__110shared_ptrIKNS0_17PredictionContextEEEm:
   23|  5.52M|    : PredictionContext(PredictionContextType::SINGLETON), parent(std::move(parent)), returnState(returnState) {
   24|  5.52M|  assert(returnState != ATNState::INVALID_STATE_NUMBER);
   25|  5.52M|}
_ZN6antlr43atn26SingletonPredictionContext6createENSt3__110shared_ptrIKNS0_17PredictionContextEEEm:
   27|  5.52M|Ref<const SingletonPredictionContext> SingletonPredictionContext::create(Ref<const PredictionContext> parent, size_t returnState) {
   28|  5.52M|  if (returnState == EMPTY_RETURN_STATE && parent == nullptr) {
  ------------------
  |  Branch (28:7): [True: 0, False: 5.52M]
  |  Branch (28:44): [True: 0, False: 0]
  ------------------
   29|       |    // someone can pass in the bits of an array ctx that mean $
   30|      0|    return std::dynamic_pointer_cast<const SingletonPredictionContext>(EMPTY);
   31|      0|  }
   32|  5.52M|  return std::make_shared<SingletonPredictionContext>(std::move(parent), returnState);
   33|  5.52M|}
_ZNK6antlr43atn26SingletonPredictionContext7isEmptyEv:
   35|   543k|bool SingletonPredictionContext::isEmpty() const {
   36|   543k|  return parent == nullptr && returnState == EMPTY_RETURN_STATE;
  ------------------
  |  Branch (36:10): [True: 3.52k, False: 539k]
  |  Branch (36:31): [True: 3.52k, False: 0]
  ------------------
   37|   543k|}
_ZNK6antlr43atn26SingletonPredictionContext4sizeEv:
   39|  1.08M|size_t SingletonPredictionContext::size() const {
   40|  1.08M|  return 1;
   41|  1.08M|}
_ZNK6antlr43atn26SingletonPredictionContext9getParentEm:
   43|   440k|const Ref<const PredictionContext>& SingletonPredictionContext::getParent(size_t index) const {
   44|   440k|  assert(index == 0);
   45|   440k|  static_cast<void>(index);
   46|   440k|  return parent;
   47|   440k|}
_ZNK6antlr43atn26SingletonPredictionContext14getReturnStateEm:
   49|   937k|size_t SingletonPredictionContext::getReturnState(size_t index) const {
   50|   937k|  assert(index == 0);
   51|   937k|  static_cast<void>(index);
   52|   937k|  return returnState;
   53|   937k|}
_ZNK6antlr43atn26SingletonPredictionContext12hashCodeImplEv:
   55|  5.52M|size_t SingletonPredictionContext::hashCodeImpl() const {
   56|  5.52M|  size_t hash = misc::MurmurHash::initialize();
   57|  5.52M|  hash = misc::MurmurHash::update(hash, static_cast<size_t>(getContextType()));
   58|  5.52M|  hash = misc::MurmurHash::update(hash, parent);
   59|  5.52M|  hash = misc::MurmurHash::update(hash, returnState);
   60|  5.52M|  return misc::MurmurHash::finish(hash, 3);
   61|  5.52M|}
_ZNK6antlr43atn26SingletonPredictionContext6equalsERKNS0_17PredictionContextE:
   63|   411k|bool SingletonPredictionContext::equals(const PredictionContext &other) const {
   64|   411k|  if (this == std::addressof(other)) {
  ------------------
  |  Branch (64:7): [True: 101k, False: 309k]
  ------------------
   65|   101k|    return true;
   66|   101k|  }
   67|   309k|  if (getContextType() != other.getContextType()) {
  ------------------
  |  Branch (67:7): [True: 0, False: 309k]
  ------------------
   68|      0|    return false;
   69|      0|  }
   70|   309k|  const auto &singleton = downCast<const SingletonPredictionContext&>(other);
   71|   309k|  return returnState == singleton.returnState &&
  ------------------
  |  Branch (71:10): [True: 277k, False: 32.2k]
  ------------------
   72|   309k|         cachedHashCodeEqual(cachedHashCode(), singleton.cachedHashCode()) &&
  ------------------
  |  Branch (72:10): [True: 275k, False: 1.51k]
  ------------------
   73|   309k|         (parent == singleton.parent || (parent != nullptr && singleton.parent != nullptr && *parent == *singleton.parent));
  ------------------
  |  Branch (73:11): [True: 119k, False: 156k]
  |  Branch (73:42): [True: 156k, False: 0]
  |  Branch (73:63): [True: 156k, False: 0]
  |  Branch (73:94): [True: 156k, False: 0]
  ------------------
   74|   309k|}
SingletonPredictionContext.cpp:_ZN12_GLOBAL__N_119cachedHashCodeEqualEmm:
   16|   277k|  bool cachedHashCodeEqual(size_t lhs, size_t rhs) {
   17|   277k|    return lhs == rhs || lhs == 0 || rhs == 0;
  ------------------
  |  Branch (17:12): [True: 275k, False: 1.51k]
  |  Branch (17:26): [True: 0, False: 1.51k]
  |  Branch (17:38): [True: 0, False: 1.51k]
  ------------------
   18|   277k|  }

_ZN6antlr43atn10TransitionC2ENS0_14TransitionTypeEPNS0_8ATNStateE:
   15|    771|Transition::Transition(TransitionType transitionType, ATNState *target) : _transitionType(transitionType) {
   16|    771|  if (target == nullptr) {
  ------------------
  |  Branch (16:7): [True: 0, False: 771]
  ------------------
   17|      0|    throw NullPointerException("target cannot be null.");
   18|      0|  }
   19|       |
   20|    771|  this->target = target;
   21|    771|}
_ZNK6antlr43atn10Transition9isEpsilonEv:
   23|   346k|bool Transition::isEpsilon() const {
   24|   346k|  return false;
   25|   346k|}

_ZN6antlr43atn18WildcardTransitionC2EPNS0_8ATNStateE:
   12|      2|WildcardTransition::WildcardTransition(ATNState *target) : Transition(TransitionType::WILDCARD, target) {
   13|      2|}
_ZNK6antlr43atn18WildcardTransition7matchesEmmm:
   15|  5.15k|bool WildcardTransition::matches(size_t symbol, size_t minVocabSymbol, size_t maxVocabSymbol) const {
   16|  5.15k|  return symbol >= minVocabSymbol && symbol <= maxVocabSymbol;
  ------------------
  |  Branch (16:10): [True: 5.15k, False: 0]
  |  Branch (16:38): [True: 5.09k, False: 64]
  ------------------
   17|  5.15k|}

_ZN6antlr43dfa3DFAC2EPNS_3atn13DecisionStateEm:
   23|     65|  : atnStartState(atnStartState), s0(nullptr), decision(decision) {
   24|       |
   25|     65|  _precedenceDfa = false;
   26|     65|  if (atn::StarLoopEntryState::is(atnStartState)) {
  ------------------
  |  Branch (26:7): [True: 18, False: 47]
  ------------------
   27|     18|    if (downCast<atn::StarLoopEntryState*>(atnStartState)->isPrecedenceDecision) {
  ------------------
  |  Branch (27:9): [True: 3, False: 15]
  ------------------
   28|      3|      _precedenceDfa = true;
   29|      3|      s0 = new DFAState(std::unique_ptr<atn::ATNConfigSet>(new atn::ATNConfigSet()));
   30|      3|      s0->isAcceptState = false;
   31|      3|      s0->requiresFullContext = false;
   32|      3|    }
   33|     18|  }
   34|     65|}
_ZNK6antlr43dfa3DFA15isPrecedenceDfaEv:
   60|  18.2M|bool DFA::isPrecedenceDfa() const {
   61|  18.2M|  return _precedenceDfa;
   62|  18.2M|}
_ZNK6antlr43dfa3DFA23getPrecedenceStartStateEi:
   64|  9.57M|DFAState* DFA::getPrecedenceStartState(int precedence) const {
   65|  9.57M|  assert(_precedenceDfa); // Only precedence DFAs may contain a precedence start state.
   66|       |
   67|  9.57M|  auto iterator = s0->edges.find(precedence);
   68|  9.57M|  if (iterator == s0->edges.end())
  ------------------
  |  Branch (68:7): [True: 6, False: 9.57M]
  ------------------
   69|      6|    return nullptr;
   70|       |
   71|  9.57M|  return iterator->second;
   72|  9.57M|}
_ZN6antlr43dfa3DFA23setPrecedenceStartStateEiPNS0_8DFAStateE:
   74|      6|void DFA::setPrecedenceStartState(int precedence, DFAState *startState) {
   75|      6|  if (!isPrecedenceDfa()) {
  ------------------
  |  Branch (75:7): [True: 0, False: 6]
  ------------------
   76|      0|    throw IllegalStateException("Only precedence DFAs may contain a precedence start state.");
   77|      0|  }
   78|       |
   79|      6|  if (precedence < 0) {
  ------------------
  |  Branch (79:7): [True: 0, False: 6]
  ------------------
   80|      0|    return;
   81|      0|  }
   82|       |
   83|      6|  s0->edges[precedence] = startState;
   84|      6|}

_ZNK6antlr43dfa8DFAState8hashCodeEv:
   30|  18.6k|size_t DFAState::hashCode() const {
   31|  18.6k|  return configs != nullptr ? configs->hashCode() : 0;
  ------------------
  |  Branch (31:10): [True: 18.6k, False: 0]
  ------------------
   32|  18.6k|}
_ZNK6antlr43dfa8DFAState6equalsERKS1_:
   34|  24.9k|bool DFAState::equals(const DFAState &other) const {
   35|  24.9k|  if (this == std::addressof(other)) {
  ------------------
  |  Branch (35:7): [True: 0, False: 24.9k]
  ------------------
   36|      0|    return true;
   37|      0|  }
   38|  24.9k|  return configs == other.configs ||
  ------------------
  |  Branch (38:10): [True: 0, False: 24.9k]
  ------------------
   39|  24.9k|         (configs != nullptr && other.configs != nullptr && *configs == *other.configs);
  ------------------
  |  Branch (39:11): [True: 24.9k, False: 0]
  |  Branch (39:33): [True: 24.9k, False: 0]
  |  Branch (39:61): [True: 18.2k, False: 6.73k]
  ------------------
   40|  24.9k|}

_ZNK6antlr44misc8Interval20startsBeforeDisjointERKS1_:
   19|  30.3M|bool Interval::startsBeforeDisjoint(const Interval &other) const {
   20|  30.3M|  return a < other.a && b < other.a;
  ------------------
  |  Branch (20:10): [True: 4.10M, False: 26.2M]
  |  Branch (20:25): [True: 4.09M, False: 6.21k]
  ------------------
   21|  30.3M|}
_ZNK6antlr44misc8Interval19startsAfterDisjointERKS1_:
   31|  15.0M|bool Interval::startsAfterDisjoint(const Interval &other) const {
   32|  15.0M|  return a > other.b;
   33|  15.0M|}
_ZNK6antlr44misc8Interval8disjointERKS1_:
   39|  18.9M|bool Interval::disjoint(const Interval &other) const {
   40|  18.9M|  return startsBeforeDisjoint(other) || startsAfterDisjoint(other);
  ------------------
  |  Branch (40:10): [True: 3.85M, False: 15.0M]
  |  Branch (40:41): [True: 11.1M, False: 3.92M]
  ------------------
   41|  18.9M|}
_ZNK6antlr44misc8Interval8adjacentERKS1_:
   43|  19.3M|bool Interval::adjacent(const Interval &other) const {
   44|  19.3M|  return a == other.b + 1 || b == other.a - 1;
  ------------------
  |  Branch (44:10): [True: 265k, False: 19.0M]
  |  Branch (44:30): [True: 155k, False: 18.9M]
  ------------------
   45|  19.3M|}
_ZNK6antlr44misc8Interval5UnionERKS1_:
   51|  4.35M|Interval Interval::Union(const Interval &other) const {
   52|  4.35M|  return Interval(std::min(a, other.a), std::max(b, other.b));
   53|  4.35M|}

_ZN6antlr44misc8IntervalC2Emm:
   30|  6.56M|    constexpr explicit Interval(size_t a_, size_t b_) : Interval(symbolToNumeric(a_), symbolToNumeric(b_)) {}
_ZN6antlr44misc15symbolToNumericEm:
   17|  58.1M|  constexpr ssize_t symbolToNumeric(size_t v) { return static_cast<ssize_t>(v); }
_ZN6antlr44misc8IntervalC2Ell:
   32|  44.0M|    constexpr Interval(ssize_t a_, ssize_t b_) : a(a_), b(b_) {}

_ZN6antlr44misc11IntervalSetC2Ev:
   21|  36.1M|IntervalSet::IntervalSet() : _intervals() {
   22|  36.1M|}
_ZN6antlr44misc11IntervalSetC2ERKS1_:
   24|  36.0M|IntervalSet::IntervalSet(const IntervalSet &set) : IntervalSet() {
   25|  36.0M|  _intervals = set._intervals;
   26|  36.0M|}
_ZN6antlr44misc11IntervalSetC2EOS1_:
   28|   113k|IntervalSet::IntervalSet(IntervalSet&& set) : IntervalSet(std::move(set._intervals)) {
   29|   113k|}
_ZN6antlr44misc11IntervalSetC2EONSt3__16vectorINS0_8IntervalENS2_9allocatorIS4_EEEE:
   31|   391k|IntervalSet::IntervalSet(std::vector<Interval>&& intervals) : _intervals(std::move(intervals)) {
   32|   391k|}
_ZN6antlr44misc11IntervalSetaSEOS1_:
   39|     72|IntervalSet& IntervalSet::operator=(IntervalSet&& other) {
   40|     72|  _intervals = move(other._intervals);
   41|     72|  return *this;
   42|     72|}
_ZN6antlr44misc11IntervalSet2ofEl:
   44|   277k|IntervalSet IntervalSet::of(ssize_t a) {
   45|   277k|  return IntervalSet({ Interval(a, a) });
   46|   277k|}
_ZN6antlr44misc11IntervalSet2ofEll:
   48|      2|IntervalSet IntervalSet::of(ssize_t a, ssize_t b) {
   49|      2|  return IntervalSet({ Interval(a, b) });
   50|      2|}
_ZN6antlr44misc11IntervalSet3addEl:
   56|   564k|void IntervalSet::add(ssize_t el) {
   57|   564k|  add(el, el);
   58|   564k|}
_ZN6antlr44misc11IntervalSet3addEll:
   60|   564k|void IntervalSet::add(ssize_t a, ssize_t b) {
   61|   564k|  add(Interval(a, b));
   62|   564k|}
_ZN6antlr44misc11IntervalSet3addERKNS0_8IntervalE:
   64|  8.91M|void IntervalSet::add(const Interval &addition) {
   65|  8.91M|  if (addition.b < addition.a) {
  ------------------
  |  Branch (65:7): [True: 0, False: 8.91M]
  ------------------
   66|      0|    return;
   67|      0|  }
   68|       |
   69|       |  // find position in list
   70|  20.0M|  for (auto iterator = _intervals.begin(); iterator != _intervals.end(); ++iterator) {
  ------------------
  |  Branch (70:44): [True: 19.7M, False: 279k]
  ------------------
   71|  19.7M|    Interval r = *iterator;
   72|  19.7M|    if (addition == r) {
  ------------------
  |  Branch (72:9): [True: 4.13M, False: 15.6M]
  ------------------
   73|  4.13M|      return;
   74|  4.13M|    }
   75|       |
   76|  15.6M|    if (addition.adjacent(r) || !addition.disjoint(r)) {
  ------------------
  |  Branch (76:9): [True: 326k, False: 15.3M]
  |  Branch (76:33): [True: 3.92M, False: 11.3M]
  ------------------
   77|       |      // next to each other, make a single larger interval
   78|  4.25M|      Interval bigger = addition.Union(r);
   79|  4.25M|      *iterator = bigger;
   80|       |
   81|       |      // make sure we didn't just create an interval that
   82|       |      // should be merged with next interval in list
   83|  4.35M|      while (iterator + 1 != _intervals.end()) {
  ------------------
  |  Branch (83:14): [True: 3.70M, False: 646k]
  ------------------
   84|  3.70M|        Interval next = *++iterator;
   85|  3.70M|        if (!bigger.adjacent(next) && bigger.disjoint(next)) {
  ------------------
  |  Branch (85:13): [True: 3.61M, False: 94.7k]
  |  Branch (85:39): [True: 3.60M, False: 4.07k]
  ------------------
   86|  3.60M|          break;
   87|  3.60M|        }
   88|       |
   89|       |        // if we bump up against or overlap next, merge
   90|  98.8k|        iterator = _intervals.erase(iterator);// remove this one
   91|  98.8k|        --iterator; // move backwards to what we just set
   92|  98.8k|        *iterator = bigger.Union(next); // set to 3 merged ones
   93|       |        // ml: no need to advance iterator, we do that in the next round anyway. ++iterator; // first call to next after previous duplicates the result
   94|  98.8k|      }
   95|  4.25M|      return;
   96|  4.25M|    }
   97|       |
   98|  11.3M|    if (addition.startsBeforeDisjoint(r)) {
  ------------------
  |  Branch (98:9): [True: 246k, False: 11.1M]
  ------------------
   99|       |      // insert before r
  100|       |      //--iterator;
  101|   246k|      _intervals.insert(iterator, addition);
  102|   246k|      return;
  103|   246k|    }
  104|       |
  105|       |    // if disjoint and after r, a future iteration will handle it
  106|  11.3M|  }
  107|       |
  108|       |  // ok, must be after last interval (and disjoint from last interval)
  109|       |  // just add it
  110|   279k|  _intervals.push_back(addition);
  111|   279k|}
_ZN6antlr44misc11IntervalSet6addAllERKS1_:
  121|  4.08M|IntervalSet& IntervalSet::addAll(const IntervalSet &set) {
  122|       |  // walk set and add each interval
  123|  8.34M|  for (auto const& interval : set._intervals) {
  ------------------
  |  Branch (123:29): [True: 8.34M, False: 4.08M]
  ------------------
  124|  8.34M|    add(interval);
  125|  8.34M|  }
  126|  4.08M|  return *this;
  127|  4.08M|}
_ZNK6antlr44misc11IntervalSet2OrERKS1_:
  210|  4.43k|IntervalSet IntervalSet::Or(const IntervalSet &a) const {
  211|  4.43k|  IntervalSet result;
  212|  4.43k|  result.addAll(*this);
  213|  4.43k|  result.addAll(a);
  214|  4.43k|  return result;
  215|  4.43k|}
_ZNK6antlr44misc11IntervalSet8containsEm:
  263|  44.9M|bool IntervalSet::contains(size_t el) const {
  264|  44.9M|  return contains(symbolToNumeric(el));
  265|  44.9M|}
_ZNK6antlr44misc11IntervalSet8containsEl:
  267|  44.9M|bool IntervalSet::contains(ssize_t el) const {
  268|  44.9M|  if (_intervals.empty() || el < _intervals.front().a || el > _intervals.back().b) {
  ------------------
  |  Branch (268:7): [True: 46.5k, False: 44.9M]
  |  Branch (268:29): [True: 12.5M, False: 32.3M]
  |  Branch (268:58): [True: 81.1k, False: 32.2M]
  ------------------
  269|  12.7M|    return false;
  270|  12.7M|  }
  271|       |
  272|  32.2M|  return std::binary_search(_intervals.begin(), _intervals.end(), Interval(el, el), [](const Interval &lhs, const Interval &rhs) {
  273|  32.2M|    return lhs.b < rhs.a;
  274|  32.2M|  });
  275|  44.9M|}
_ZNK6antlr44misc11IntervalSet7isEmptyEv:
  277|   346k|bool IntervalSet::isEmpty() const {
  278|   346k|  return _intervals.empty();
  279|   346k|}
_ZNK6antlr44misc11IntervalSet13getMinElementEv:
  299|  46.5k|ssize_t IntervalSet::getMinElement() const {
  300|  46.5k|  if (_intervals.empty()) {
  ------------------
  |  Branch (300:7): [True: 0, False: 46.5k]
  ------------------
  301|      0|    return Token::INVALID_TYPE;
  302|      0|  }
  303|       |
  304|  46.5k|  return _intervals.front().a;
  305|  46.5k|}
_ZNK6antlr44misc11IntervalSet8toStringERKNS_3dfa10VocabularyE:
  377|  43.2k|std::string IntervalSet::toString(const dfa::Vocabulary &vocabulary) const {
  378|  43.2k|  if (_intervals.empty()) {
  ------------------
  |  Branch (378:7): [True: 0, False: 43.2k]
  ------------------
  379|      0|    return "{}";
  380|      0|  }
  381|       |
  382|  43.2k|  std::stringstream ss;
  383|  43.2k|  size_t effectiveSize = size();
  384|  43.2k|  if (effectiveSize > 1) {
  ------------------
  |  Branch (384:7): [True: 29.1k, False: 14.1k]
  ------------------
  385|  29.1k|    ss << "{";
  386|  29.1k|  }
  387|       |
  388|  43.2k|  bool firstEntry = true;
  389|   195k|  for (const auto &interval : _intervals) {
  ------------------
  |  Branch (389:29): [True: 195k, False: 43.2k]
  ------------------
  390|   195k|    if (!firstEntry)
  ------------------
  |  Branch (390:9): [True: 152k, False: 43.2k]
  ------------------
  391|   152k|      ss << ", ";
  392|   195k|    firstEntry = false;
  393|       |
  394|   195k|    ssize_t a = interval.a;
  395|   195k|    ssize_t b = interval.b;
  396|   195k|    if (a == b) {
  ------------------
  |  Branch (396:9): [True: 119k, False: 75.6k]
  ------------------
  397|   119k|      ss << elementName(vocabulary, a);
  398|   119k|    } else {
  399|   354k|      for (ssize_t i = a; i <= b; i++) {
  ------------------
  |  Branch (399:27): [True: 278k, False: 75.6k]
  ------------------
  400|   278k|        if (i > a) {
  ------------------
  |  Branch (400:13): [True: 202k, False: 75.6k]
  ------------------
  401|   202k|          ss << ", ";
  402|   202k|        }
  403|   278k|        ss << elementName(vocabulary, i);
  404|   278k|      }
  405|  75.6k|    }
  406|   195k|  }
  407|  43.2k|  if (effectiveSize > 1) {
  ------------------
  |  Branch (407:7): [True: 29.1k, False: 14.1k]
  ------------------
  408|  29.1k|    ss << "}";
  409|  29.1k|  }
  410|       |
  411|  43.2k|  return ss.str();
  412|  43.2k|}
_ZNK6antlr44misc11IntervalSet11elementNameERKNS_3dfa10VocabularyEl:
  414|   398k|std::string IntervalSet::elementName(const dfa::Vocabulary &vocabulary, ssize_t a) const {
  415|   398k|  if (a == -1) {
  ------------------
  |  Branch (415:7): [True: 733, False: 397k]
  ------------------
  416|    733|    return "<EOF>";
  417|   397k|  } else if (a == -2) {
  ------------------
  |  Branch (417:14): [True: 0, False: 397k]
  ------------------
  418|      0|    return "<EPSILON>";
  419|   397k|  } else {
  420|   397k|    return vocabulary.getDisplayName(a);
  421|   397k|  }
  422|   398k|}
_ZNK6antlr44misc11IntervalSet4sizeEv:
  424|  80.0k|size_t IntervalSet::size() const {
  425|  80.0k|  size_t result = 0;
  426|   229k|  for (const auto &interval : _intervals) {
  ------------------
  |  Branch (426:29): [True: 229k, False: 80.0k]
  ------------------
  427|   229k|    result += size_t(interval.b - interval.a + 1);
  428|   229k|  }
  429|  80.0k|  return result;
  430|  80.0k|}
_ZN6antlr44misc11IntervalSet6removeEm:
  471|  37.0k|void IntervalSet::remove(size_t el) {
  472|  37.0k|  remove(symbolToNumeric(el));
  473|  37.0k|}
_ZN6antlr44misc11IntervalSet6removeEl:
  475|  37.0k|void IntervalSet::remove(ssize_t el) {
  476|  37.0k|  for (size_t i = 0; i < _intervals.size(); ++i) {
  ------------------
  |  Branch (476:22): [True: 36.5k, False: 471]
  ------------------
  477|  36.5k|    Interval &interval = _intervals[i];
  478|  36.5k|    ssize_t a = interval.a;
  479|  36.5k|    ssize_t b = interval.b;
  480|  36.5k|    if (el < a) {
  ------------------
  |  Branch (480:9): [True: 180, False: 36.3k]
  ------------------
  481|    180|      break; // list is sorted and el is before this interval; not here
  482|    180|    }
  483|       |
  484|       |    // if whole interval x..x, rm
  485|  36.3k|    if (el == a && el == b) {
  ------------------
  |  Branch (485:9): [True: 36.3k, False: 0]
  |  Branch (485:20): [True: 0, False: 36.3k]
  ------------------
  486|      0|      _intervals.erase(_intervals.begin() + (long)i);
  487|      0|      break;
  488|      0|    }
  489|       |    // if on left edge x..b, adjust left
  490|  36.3k|    if (el == a) {
  ------------------
  |  Branch (490:9): [True: 36.3k, False: 0]
  ------------------
  491|  36.3k|      interval.a++;
  492|  36.3k|      break;
  493|  36.3k|    }
  494|       |    // if on right edge a..x, adjust right
  495|      0|    if (el == b) {
  ------------------
  |  Branch (495:9): [True: 0, False: 0]
  ------------------
  496|      0|      interval.b--;
  497|      0|      break;
  498|      0|    }
  499|       |    // if in middle a..x..b, split interval
  500|      0|    if (el > a && el < b) { // found in this interval
  ------------------
  |  Branch (500:9): [True: 0, False: 0]
  |  Branch (500:19): [True: 0, False: 0]
  ------------------
  501|      0|      ssize_t oldb = interval.b;
  502|      0|      interval.b = el - 1; // [a..x-1]
  503|      0|      add(el + 1, oldb); // add [x+1..b]
  504|       |
  505|      0|      break; // ml: not in the Java code but I believe we also should stop searching here, as we found x.
  506|      0|    }
  507|      0|  }
  508|  37.0k|}
IntervalSet.cpp:_ZZNK6antlr44misc11IntervalSet8containsElENK3$_0clERKNS0_8IntervalES5_:
  272|   107M|  return std::binary_search(_intervals.begin(), _intervals.end(), Interval(el, el), [](const Interval &lhs, const Interval &rhs) {
  273|   107M|    return lhs.b < rhs.a;
  274|   107M|  });

_ZN6antlr44misc10MurmurHash6updateEmm:
   53|  43.6M|size_t MurmurHash::update(size_t hash, size_t value) {
   54|  43.6M|  size_t k1 = value;
   55|  43.6M|  k1 *= UINT64_C(0x87c37b91114253d5);
   56|  43.6M|  k1 = ROTL64(k1, 31);
  ------------------
  |  |   32|  43.6M|#define ROTL64(x, y) __builtin_rotateleft64(x, y)
  ------------------
   57|  43.6M|  k1 *= UINT64_C(0x4cf5ad432745937f);
   58|       |
   59|  43.6M|  hash ^= k1;
   60|  43.6M|  hash = ROTL64(hash, 27);
  ------------------
  |  |   32|  43.6M|#define ROTL64(x, y) __builtin_rotateleft64(x, y)
  ------------------
   61|  43.6M|  hash = hash * 5 + UINT64_C(0x52dce729);
   62|       |
   63|  43.6M|  return hash;
   64|  43.6M|}
_ZN6antlr44misc10MurmurHash6finishEmm:
   83|  12.4M|size_t MurmurHash::finish(size_t hash, size_t entryCount) {
   84|  12.4M|  hash ^= entryCount * 8;
   85|  12.4M|  hash ^= hash >> 33;
   86|  12.4M|  hash *= UINT64_C(0xff51afd7ed558ccd);
   87|  12.4M|  hash ^= hash >> 33;
   88|  12.4M|  hash *= UINT64_C(0xc4ceb9fe1a85ec53);
   89|  12.4M|  hash ^= hash >> 33;
   90|  12.4M|  return hash;
   91|  12.4M|}

_ZN8antlrcpp2isIPN6antlr413WritableTokenENS1_5TokenEEEbPT0_:
   44|  7.52M|  inline bool is(T2 *obj) { // For pointer types.
   45|  7.52M|    return dynamic_cast<typename std::add_const<T1>::type>(obj) != nullptr;
   46|  7.52M|  }

_ZN8antlrcpp8downCastIPN6antlr44tree9ErrorNodeENS2_9ParseTreeEEET_PT0_:
   15|  8.67k|  To downCast(From* from) {
   16|  8.67k|    static_assert(std::is_pointer_v<To>, "Target type not a pointer.");
   17|  8.67k|    static_assert(std::is_base_of_v<From, std::remove_pointer_t<To>>, "Target type not derived from source type.");
   18|  8.67k|  #if !defined(__GNUC__) || defined(__GXX_RTTI)
   19|  8.67k|    assert(from == nullptr || dynamic_cast<To>(from) != nullptr);
   20|  8.67k|  #endif
   21|  8.67k|    return static_cast<To>(from);
   22|  8.67k|  }

_ZN6antlr44tree9ErrorNode2isEPKNS0_9ParseTreeE:
   17|  8.67k|    static bool is(const tree::ParseTree *parseTree) { return parseTree != nullptr && is(*parseTree); }
  ------------------
  |  Branch (17:63): [True: 8.67k, False: 0]
  |  Branch (17:87): [True: 8.67k, False: 0]
  ------------------
_ZN6antlr44tree9ErrorNode2isERKNS0_9ParseTreeE:
   15|  8.67k|    static bool is(const tree::ParseTree &parseTree) { return parseTree.getTreeType() == tree::ParseTreeType::ERROR; }

_ZN6antlr44tree13ErrorNodeImpl9setParentEPNS_11RuleContextE:
   20|   166k|void ErrorNodeImpl::setParent(RuleContext *parent_) {
   21|   166k|  this->parent = parent_;
   22|   166k|}

_ZN6antlr44tree13ErrorNodeImplC2EPNS_5TokenE:
   28|   157k|    explicit ErrorNodeImpl(Token *symbol) : ErrorNode(ParseTreeType::ERROR), symbol(symbol) {}

_ZN6antlr44tree9ParseTreeD2Ev:
   25|  43.4M|    virtual ~ParseTree() = default;

_ZN6antlr44tree17ParseTreeListenerD2Ev:
    8|  9.21k|antlr4::tree::ParseTreeListener::~ParseTreeListener() {
    9|  9.21k|}

_ZN6antlr44tree16ParseTreeVisitorD2Ev:
    8|  9.21k|antlr4::tree::ParseTreeVisitor::~ParseTreeVisitor() {
    9|  9.21k|}

_ZN6antlr44tree16TerminalNodeImpl9setParentEPNS_11RuleContextE:
   20|  7.24M|void TerminalNodeImpl::setParent(RuleContext *parent_) {
   21|  7.24M|  this->parent = parent_;
   22|  7.24M|}

_ZN4absl8bit_castIdmLi0EEET_RKT0_:
  163|  16.0k|inline constexpr Dest bit_cast(const Source& source) {
  164|  16.0k|  return __builtin_bit_cast(Dest, source);
  165|  16.0k|}

_ZN4absl13base_internal15UnalignedLoad32EPKv:
   44|  2.21M|inline uint32_t UnalignedLoad32(const void *p) {
   45|  2.21M|  uint32_t t;
   46|  2.21M|  memcpy(&t, p, sizeof t);
   47|  2.21M|  return t;
   48|  2.21M|}
_ZN4absl13base_internal15UnalignedLoad64EPKv:
   50|   240k|inline uint64_t UnalignedLoad64(const void *p) {
   51|   240k|  uint64_t t;
   52|   240k|  memcpy(&t, p, sizeof t);
   53|   240k|  return t;
   54|   240k|}

_ZN4absl18container_internal10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS4_12MapAllocatorINS7_4pairIKmS6_EEEELi256ELb0EE3keyEPKNS0_13map_slot_typeImS6_EE:
  870|   146k|  static const Key &key(const slot_type *s) { return slot_policy::key(s); }
_ZN4absl18container_internal10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS4_12MapAllocatorINS7_4pairIKmS6_EEEELi256ELb0EE3keyISD_EEDtdtfp_5firstERKT_:
  867|  43.4k|  static auto key(const V &value) -> decltype(value.first) {
  868|  43.4k|    return value.first;
  869|  43.4k|  }

_ZN4absl18container_internal15set_slot_policyIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryEE7destroyINSt3__19allocatorIS6_EEEEvPT_PS6_:
  794|    292|  static void destroy(Alloc *alloc, slot_type *slot) {
  795|    292|    absl::allocator_traits<Alloc>::destroy(*alloc, slot);
  796|    292|  }
_ZN4absl18container_internal15set_slot_policyIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryEE7destroyINSt3__19allocatorIS6_EEEEvPT_PS6_:
  794|     26|  static void destroy(Alloc *alloc, slot_type *slot) {
  795|     26|    absl::allocator_traits<Alloc>::destroy(*alloc, slot);
  796|     26|  }
_ZN4absl18container_internal10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS5_11FileCompareENSt3__19allocatorIS6_EELi256ELb0EE3keyEPKS6_:
  812|     18|  static const Key &key(const slot_type *slot) { return *slot; }
_ZN4absl18container_internal15set_slot_policyIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryEE9constructINSt3__19allocatorIS6_EEJS6_EEEvPT_PS6_DpOT0_:
  778|     36|  static void construct(Alloc *alloc, slot_type *slot, Args &&...args) {
  779|     36|    absl::allocator_traits<Alloc>::construct(*alloc, slot,
  780|     36|                                             std::forward<Args>(args)...);
  781|     36|  }
_ZN4absl18container_internal15set_slot_policyIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryEE7elementEPS6_:
  774|     26|  static value_type &element(slot_type *slot) { return *slot; }
_ZN4absl18container_internal10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS5_11FileCompareENSt3__19allocatorIS6_EELi256ELb0EE3keyIS6_EERKT_SF_:
  809|     10|  static const V &key(const V &value) {
  810|     10|    return value;
  811|     10|  }
_ZN4absl18container_internal10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS5_13SymbolCompareENSt3__19allocatorIS6_EELi256ELb0EE3keyEPKS6_:
  812|    366|  static const Key &key(const slot_type *slot) { return *slot; }
_ZN4absl18container_internal15set_slot_policyIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryEE7elementEPKS6_:
  775|    120|  static const value_type &element(const slot_type *slot) { return *slot; }
_ZN4absl18container_internal15set_slot_policyIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryEE9constructINSt3__19allocatorIS6_EEJS6_EEEvPT_PS6_DpOT0_:
  778|    284|  static void construct(Alloc *alloc, slot_type *slot, Args &&...args) {
  779|    284|    absl::allocator_traits<Alloc>::construct(*alloc, slot,
  780|    284|                                             std::forward<Args>(args)...);
  781|    284|  }
_ZN4absl18container_internal15set_slot_policyIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryEE7elementEPS6_:
  774|    284|  static value_type &element(slot_type *slot) { return *slot; }
_ZN4absl18container_internal15set_slot_policyIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryEE9constructINSt3__19allocatorIS6_EEEEvPT_PS6_SE_:
  784|      8|  static void construct(Alloc *alloc, slot_type *slot, slot_type *other) {
  785|      8|    absl::allocator_traits<Alloc>::construct(*alloc, slot, std::move(*other));
  786|      8|  }
_ZN4absl18container_internal15set_slot_policyIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryEE9constructINSt3__19allocatorIS6_EEJRKS6_EEEvPT_PS6_DpOT0_:
  778|     64|  static void construct(Alloc *alloc, slot_type *slot, Args &&...args) {
  779|     64|    absl::allocator_traits<Alloc>::construct(*alloc, slot,
  780|     64|                                             std::forward<Args>(args)...);
  781|     64|  }
_ZN4absl18container_internal10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS5_13SymbolCompareENSt3__19allocatorIS6_EELi256ELb0EE3keyIS6_EERKT_SF_:
  809|     64|  static const V &key(const V &value) {
  810|     64|    return value;
  811|     64|  }

_ZN4absl13flat_hash_mapIPKN6google8protobuf10DescriptorEPKNS2_7MessageENS_18container_internal6HashEqIS5_vE4HashENSB_2EqENSt3__19allocatorINSE_4pairIKS5_S8_EEEEEC2Ev:
  159|      2|  flat_hash_map() {}

_ZN4absl18container_internal17FlatHashSetPolicyINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE5applyINS0_12raw_hash_setIS9_NS0_10StringHashENS0_8StringEqENS6_IS8_EEE19EmplaceDecomposableEJRKPKcEEEDTclsr4absl18container_internalE14DecomposeValueclsr3stdE7declvalIT_EEspclsr3stdE7declvalIT0_EEEEOSL_DpOSM_:
  482|     21|  apply(F&& f, Args&&... args) {
  483|     21|    return absl::container_internal::DecomposeValue(
  484|     21|        std::forward<F>(f), std::forward<Args>(args)...);
  485|     21|  }
_ZN4absl18container_internal17FlatHashSetPolicyINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE5applyINS0_12raw_hash_setIS9_NS0_10StringHashENS0_8StringEqENS6_IS8_EEE12EqualElementIPKcEEJRS8_EEEDTclsr4absl18container_internalE14DecomposeValueclsr3stdE7declvalIT_EEspclsr3stdE7declvalIT0_EEEEOSL_DpOSM_:
  482|      1|  apply(F&& f, Args&&... args) {
  483|      1|    return absl::container_internal::DecomposeValue(
  484|      1|        std::forward<F>(f), std::forward<Args>(args)...);
  485|      1|  }
_ZN4absl18container_internal17FlatHashSetPolicyINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE7elementEPS8_:
  477|  7.63k|  static T& element(slot_type* slot) { return *slot; }
_ZN4absl18container_internal17FlatHashSetPolicyINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE9constructINS6_IS8_EEJRKPKcEEEvPT_PS8_DpOT0_:
  467|     21|  static void construct(Allocator* alloc, slot_type* slot, Args&&... args) {
  468|     21|    absl::allocator_traits<Allocator>::construct(*alloc, slot,
  469|     21|                                                 std::forward<Args>(args)...);
  470|     21|  }
_ZN4absl18container_internal17FlatHashSetPolicyINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE5applyINS0_12raw_hash_setIS9_NS0_10StringHashENS0_8StringEqENS6_IS8_EEE12EqualElementINS2_17basic_string_viewIcS5_EEEEJRS8_EEEDTclsr4absl18container_internalE14DecomposeValueclsr3stdE7declvalIT_EEspclsr3stdE7declvalIT0_EEEEOSL_DpOSM_:
  482|  7.63k|  apply(F&& f, Args&&... args) {
  483|  7.63k|    return absl::container_internal::DecomposeValue(
  484|  7.63k|        std::forward<F>(f), std::forward<Args>(args)...);
  485|  7.63k|  }
message.cc:_ZN4absl13flat_hash_setIPKN6google8protobuf8internal15DescriptorTableENS2_12_GLOBAL__N_123GeneratedMessageFactory20DescriptorByNameHashENS8_18DescriptorByNameEqENSt3__19allocatorIS6_EEEC2Ev:
  151|      2|  flat_hash_set() {}
_ZN4absl18container_internal17FlatHashSetPolicyIPKN6google8protobuf8internal15DescriptorTableEE7elementEPS7_:
  477|     24|  static T& element(slot_type* slot) { return *slot; }
message.cc:_ZN4absl18container_internal17FlatHashSetPolicyIPKN6google8protobuf8internal15DescriptorTableEE5applyINS0_12raw_hash_setIS8_NS3_12_GLOBAL__N_123GeneratedMessageFactory20DescriptorByNameHashENSC_18DescriptorByNameEqENSt3__19allocatorIS7_EEE19EmplaceDecomposableEJRKS7_EEEDTclsr4absl18container_internalE14DecomposeValueclsr3stdE7declvalIT_EEspclsr3stdE7declvalIT0_EEEEOSM_DpOSN_:
  482|     10|  apply(F&& f, Args&&... args) {
  483|     10|    return absl::container_internal::DecomposeValue(
  484|     10|        std::forward<F>(f), std::forward<Args>(args)...);
  485|     10|  }
message.cc:_ZN4absl18container_internal17FlatHashSetPolicyIPKN6google8protobuf8internal15DescriptorTableEE5applyINS0_12raw_hash_setIS8_NS3_12_GLOBAL__N_123GeneratedMessageFactory20DescriptorByNameHashENSC_18DescriptorByNameEqENSt3__19allocatorIS7_EEE11HashElementEJRS7_EEEDTclsr4absl18container_internalE14DecomposeValueclsr3stdE7declvalIT_EEspclsr3stdE7declvalIT0_EEEEOSL_DpOSM_:
  482|      8|  apply(F&& f, Args&&... args) {
  483|      8|    return absl::container_internal::DecomposeValue(
  484|      8|        std::forward<F>(f), std::forward<Args>(args)...);
  485|      8|  }
_ZN4absl18container_internal17FlatHashSetPolicyIPKN6google8protobuf8internal15DescriptorTableEE9constructINSt3__19allocatorIS7_EEJRKS7_EEEvPT_PS7_DpOT0_:
  467|     10|  static void construct(Allocator* alloc, slot_type* slot, Args&&... args) {
  468|     10|    absl::allocator_traits<Allocator>::construct(*alloc, slot,
  469|     10|                                                 std::forward<Args>(args)...);
  470|     10|  }

_ZN4absl18container_internal39btree_iterator_generation_info_disabledC2Ej:
 1096|   101k|  explicit btree_iterator_generation_info_disabled(uint32_t) {}
_ZN4absl18container_internal39btree_iterator_generation_info_disabled17update_generationEPKv:
 1097|  87.0k|  static void update_generation(const void *) {}
_ZN4absl18container_internal39btree_iterator_generation_info_disabled10generationEv:
 1098|     64|  static uint32_t generation() { return 0; }
_ZN4absl18container_internal39btree_iterator_generation_info_disabled23assert_valid_generationEPKv:
 1099|   197k|  static void assert_valid_generation(const void *) {}
_ZNK4absl18container_internal14btree_iteratorINS0_10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS6_12MapAllocatorINS9_4pairIKmS8_EEEELi256ELb0EEEEERSF_PSF_EptEv:
 1193|  51.9k|  pointer operator->() const { return &operator*(); }
_ZNK4absl18container_internal14btree_iteratorINS0_10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS6_12MapAllocatorINS9_4pairIKmS8_EEEELi256ELb0EEEEERSF_PSF_EdeEv:
 1183|  51.9k|  reference operator*() const {
 1184|  51.9k|    ABSL_HARDENING_ASSERT(node_ != nullptr);
  ------------------
  |  |  128|  51.9k|#define ABSL_HARDENING_ASSERT(expr) ABSL_ASSERT(expr)
  |  |  ------------------
  |  |  |  |   95|  51.9k|  (false ? static_cast<void>(expr) : static_cast<void>(0))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (95:4): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1185|  51.9k|    assert_valid_generation(node_);
 1186|  51.9k|    ABSL_HARDENING_ASSERT(position_ >= node_->start());
  ------------------
  |  |  128|  51.9k|#define ABSL_HARDENING_ASSERT(expr) ABSL_ASSERT(expr)
  |  |  ------------------
  |  |  |  |   95|  51.9k|  (false ? static_cast<void>(expr) : static_cast<void>(0))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (95:4): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1187|  51.9k|    if (position_ >= node_->finish()) {
  ------------------
  |  Branch (1187:9): [True: 0, False: 51.9k]
  ------------------
 1188|      0|      ABSL_HARDENING_ASSERT(!IsEndIterator() && "Dereferencing end() iterator");
  ------------------
  |  |  128|      0|#define ABSL_HARDENING_ASSERT(expr) ABSL_ASSERT(expr)
  |  |  ------------------
  |  |  |  |   95|      0|  (false ? static_cast<void>(expr) : static_cast<void>(0))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (95:4): [Folded - Ignored]
  |  |  |  |  |  Branch (95:30): [True: 0, False: 0]
  |  |  |  |  |  Branch (95:30): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1189|      0|      ABSL_HARDENING_ASSERT(position_ < node_->finish());
  ------------------
  |  |  128|      0|#define ABSL_HARDENING_ASSERT(expr) ABSL_ASSERT(expr)
  |  |  ------------------
  |  |  |  |   95|      0|  (false ? static_cast<void>(expr) : static_cast<void>(0))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (95:4): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1190|      0|    }
 1191|  51.9k|    return node_->value(static_cast<field_type>(position_));
 1192|  51.9k|  }
_ZNK4absl18container_internal10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE5startEv:
  694|   371k|  field_type start() const {
  695|       |    // TODO(ezb): when floating storage is implemented, return GetField<2>()[1];
  696|   371k|    assert(GetField<2>()[1] == 0);
  697|   371k|    return 0;
  698|   371k|  }
_ZNK4absl18container_internal10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE6finishEv:
  701|   377k|  field_type finish() const { return GetField<2>()[2]; }
_ZN4absl18container_internal10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE6LayoutEmm:
  633|  1.44M|                                      const size_type child_count) {
  634|  1.44M|    return layout_type(
  635|  1.44M|        /*parent*/ 1,
  636|  1.44M|        /*generation*/ BtreeGenerationsEnabled() ? 1 : 0,
  ------------------
  |  Branch (636:24): [Folded - Ignored]
  ------------------
  637|  1.44M|        /*position, start, finish, max_count*/ 4,
  638|  1.44M|        /*slots*/ slot_count,
  639|  1.44M|        /*children*/ child_count);
  640|  1.44M|  }
_ZN4absl18container_internal10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE14InternalLayoutEv:
  646|  1.39M|  constexpr static layout_type InternalLayout() {
  647|  1.39M|    return Layout(kNodeSlots, kNodeSlots + 1);
  648|  1.39M|  }
_ZNK4absl18container_internal10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE8GetFieldILm2EEEPKNS8_13tuple_elementIXT_ENS8_5tupleIJPSH_jhNS0_13map_slot_typeImS7_EESL_EEEE4typeEv:
  665|   675k|  inline const typename layout_type::template ElementType<N> *GetField() const {
  666|   675k|    assert(N < 4 || is_internal());
  667|   675k|    return InternalLayout().template Pointer<N>(
  668|   675k|        reinterpret_cast<const char *>(this));
  669|   675k|  }
_ZNK4absl18container_internal10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE7is_rootEv:
  722|    483|  bool is_root() const { return parent()->is_leaf(); }
_ZNK4absl18container_internal10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE7is_leafEv:
  685|   216k|  bool is_leaf() const { return GetField<2>()[3] != kInternalNodeMaxCount; }
_ZNK4absl18container_internal10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE8positionEv:
  691|  13.5k|  field_type position() const { return GetField<2>()[0]; }
_ZNK4absl18container_internal10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE6parentEv:
  718|  62.3k|  btree_node *parent() const { return *GetField<0>(); }
_ZNK4absl18container_internal10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE8GetFieldILm0EEEPKNS8_13tuple_elementIXT_ENS8_5tupleIJPSH_jhNS0_13map_slot_typeImS7_EESL_EEEE4typeEv:
  665|  62.3k|  inline const typename layout_type::template ElementType<N> *GetField() const {
  666|  62.3k|    assert(N < 4 || is_internal());
  667|  62.3k|    return InternalLayout().template Pointer<N>(
  668|  62.3k|        reinterpret_cast<const char *>(this));
  669|  62.3k|  }
_ZN4absl18container_internal10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE5valueEm:
  753|  51.9k|  reference value(size_type i) { return params_type::element(slot(i)); }
_ZN4absl18container_internal10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE4slotEm:
  672|   309k|  slot_type *slot(size_type i) { return &GetField<3>()[i]; }
_ZN4absl18container_internal10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE8GetFieldILm3EEEPNS8_13tuple_elementIXT_ENS8_5tupleIJPSH_jhNS0_13map_slot_typeImS7_EESL_EEEE4typeEv:
  659|   309k|  inline typename layout_type::template ElementType<N> *GetField() {
  660|       |    // We assert that we don't read from values that aren't there.
  661|   309k|    assert(N < 4 || is_internal());
  662|   309k|    return InternalLayout().template Pointer<N>(reinterpret_cast<char *>(this));
  663|   309k|  }
_ZN4absl18container_internal5btreeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE5beginEv:
 1446|  48.2k|  iterator begin() { return iterator(leftmost()); }
_ZN4absl18container_internal5btreeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE8leftmostEv:
 1682|  48.2k|  node_type *leftmost() { return root()->parent(); }
_ZN4absl18container_internal5btreeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE4rootEv:
 1669|  53.1k|  node_type *root() { return root_; }
_ZNK4absl18container_internal10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE10generationEv:
  738|   120k|  uint32_t generation() const {
  739|   120k|    return BtreeGenerationsEnabled() ? *get_root_generation() : 0;
  ------------------
  |  Branch (739:12): [Folded - Ignored]
  ------------------
  740|   120k|  }
_ZN4absl18container_internal5btreeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE5clearEv:
 2583|  4.82k|void btree<P>::clear() {
 2584|  4.82k|  if (!empty()) {
  ------------------
  |  Branch (2584:7): [True: 4.82k, False: 0]
  ------------------
 2585|  4.82k|    node_type::clear_and_delete(root(), mutable_allocator());
 2586|  4.82k|  }
 2587|  4.82k|  mutable_root() = mutable_rightmost() = EmptyNode();
 2588|  4.82k|  size_ = 0;
 2589|  4.82k|}
_ZNK4absl18container_internal5btreeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE5emptyEv:
 1593|  48.2k|  bool empty() const { return size_ == 0; }
_ZN4absl18container_internal10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE10LeafLayoutEm:
  643|  48.2k|      const size_type slot_count = kNodeSlots) {
  644|  48.2k|    return Layout(slot_count, 0);
  645|  48.2k|  }
_ZN4absl18container_internal10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE8LeafSizeEm:
  649|  48.2k|  constexpr static size_type LeafSize(const size_type slot_count = kNodeSlots) {
  650|  48.2k|    return LeafLayout(slot_count).AllocSize();
  651|  48.2k|  }
_ZN4absl18container_internal10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE16clear_and_deleteEPSH_PSF_:
 2018|  24.1k|void btree_node<P>::clear_and_delete(btree_node *node, allocator_type *alloc) {
 2019|  24.1k|  if (node->is_leaf()) {
  ------------------
  |  Branch (2019:7): [True: 24.1k, False: 0]
  ------------------
 2020|  24.1k|    node->value_destroy_n(node->start(), node->count(), alloc);
 2021|  24.1k|    deallocate(LeafSize(node->max_count()), node, alloc);
 2022|  24.1k|    return;
 2023|  24.1k|  }
 2024|      0|  if (node->count() == 0) {
  ------------------
  |  Branch (2024:7): [True: 0, False: 0]
  ------------------
 2025|      0|    deallocate(InternalSize(), node, alloc);
 2026|      0|    return;
 2027|      0|  }
 2028|       |
 2029|       |  // The parent of the root of the subtree we are deleting.
 2030|      0|  btree_node *delete_root_parent = node->parent();
 2031|       |
 2032|       |  // Navigate to the leftmost leaf under node, and then delete upwards.
 2033|      0|  while (node->is_internal()) node = node->start_child();
  ------------------
  |  Branch (2033:10): [True: 0, False: 0]
  ------------------
 2034|       |#ifdef ABSL_BTREE_ENABLE_GENERATIONS
 2035|       |  // When generations are enabled, we delete the leftmost leaf last in case it's
 2036|       |  // the parent of the root and we need to check whether it's a leaf before we
 2037|       |  // can update the root's generation.
 2038|       |  // TODO(ezb): if we change btree_node::is_root to check a bool inside the node
 2039|       |  // instead of checking whether the parent is a leaf, we can remove this logic.
 2040|       |  btree_node *leftmost_leaf = node;
 2041|       |#endif
 2042|       |  // Use `size_type` because `pos` needs to be able to hold `kNodeSlots+1`,
 2043|       |  // which isn't guaranteed to be a valid `field_type`.
 2044|      0|  size_type pos = node->position();
 2045|      0|  btree_node *parent = node->parent();
 2046|      0|  for (;;) {
 2047|       |    // In each iteration of the next loop, we delete one leaf node and go right.
 2048|      0|    assert(pos <= parent->finish());
 2049|      0|    do {
 2050|      0|      node = parent->child(static_cast<field_type>(pos));
 2051|      0|      if (node->is_internal()) {
  ------------------
  |  Branch (2051:11): [True: 0, False: 0]
  ------------------
 2052|       |        // Navigate to the leftmost leaf under node.
 2053|      0|        while (node->is_internal()) node = node->start_child();
  ------------------
  |  Branch (2053:16): [True: 0, False: 0]
  ------------------
 2054|      0|        pos = node->position();
 2055|      0|        parent = node->parent();
 2056|      0|      }
 2057|      0|      node->value_destroy_n(node->start(), node->count(), alloc);
 2058|       |#ifdef ABSL_BTREE_ENABLE_GENERATIONS
 2059|       |      if (leftmost_leaf != node)
 2060|       |#endif
 2061|      0|        deallocate(LeafSize(node->max_count()), node, alloc);
 2062|      0|      ++pos;
 2063|      0|    } while (pos <= parent->finish());
  ------------------
  |  Branch (2063:14): [True: 0, False: 0]
  ------------------
 2064|       |
 2065|       |    // Once we've deleted all children of parent, delete parent and go up/right.
 2066|      0|    assert(pos > parent->finish());
 2067|      0|    do {
 2068|      0|      node = parent;
 2069|      0|      pos = node->position();
 2070|      0|      parent = node->parent();
 2071|      0|      node->value_destroy_n(node->start(), node->count(), alloc);
 2072|      0|      deallocate(InternalSize(), node, alloc);
 2073|      0|      if (parent == delete_root_parent) {
  ------------------
  |  Branch (2073:11): [True: 0, False: 0]
  ------------------
 2074|       |#ifdef ABSL_BTREE_ENABLE_GENERATIONS
 2075|       |        deallocate(LeafSize(leftmost_leaf->max_count()), leftmost_leaf, alloc);
 2076|       |#endif
 2077|      0|        return;
 2078|      0|      }
 2079|      0|      ++pos;
 2080|      0|    } while (pos > parent->finish());
  ------------------
  |  Branch (2080:14): [True: 0, False: 0]
  ------------------
 2081|      0|  }
 2082|      0|}
_ZN4absl18container_internal10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE15value_destroy_nEhhPSF_:
  995|  24.1k|                       allocator_type *alloc) {
  996|  24.1k|    next_generation();
  997|  67.6k|    for (slot_type *s = slot(i), *end = slot(i + n); s != end; ++s) {
  ------------------
  |  Branch (997:54): [True: 43.4k, False: 24.1k]
  ------------------
  998|  43.4k|      params_type::destroy(alloc, s);
  999|  43.4k|      absl::container_internal::SanitizerPoisonObject(s);
 1000|  43.4k|    }
 1001|  24.1k|  }
_ZN4absl18container_internal10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE15next_generationEv:
  747|   116k|  void next_generation() {
  748|   116k|    if (BtreeGenerationsEnabled()) ++*get_root_generation();
  ------------------
  |  Branch (748:9): [Folded - Ignored]
  ------------------
  749|   116k|  }
_ZNK4absl18container_internal10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE5countEv:
  704|  86.9k|  field_type count() const {
  705|  86.9k|    assert(finish() >= start());
  706|  86.9k|    return finish() - start();
  707|  86.9k|  }
_ZN4absl18container_internal10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE10deallocateEmPSH_PSF_:
  974|  24.1k|                         allocator_type *alloc) {
  975|  24.1k|    absl::container_internal::SanitizerUnpoisonMemoryRegion(node, size);
  976|  24.1k|    absl::container_internal::Deallocate<Alignment()>(alloc, node, size);
  977|  24.1k|  }
_ZNK4absl18container_internal10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE9max_countEv:
  708|  67.6k|  field_type max_count() const {
  709|       |    // Internal nodes have max_count==kInternalNodeMaxCount.
  710|       |    // Leaf nodes have max_count in [1, kNodeSlots].
  711|  67.6k|    const field_type max_count = GetField<2>()[3];
  712|  67.6k|    return max_count == field_type{kInternalNodeMaxCount}
  ------------------
  |  Branch (712:12): [True: 0, False: 67.6k]
  ------------------
  713|  67.6k|               ? field_type{kNodeSlots}
  714|  67.6k|               : max_count;
  715|  67.6k|  }
_ZNK4absl18container_internal10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE11is_internalEv:
  688|  86.9k|  bool is_internal() const { return !is_leaf(); }
_ZN4absl18container_internal5btreeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE17mutable_allocatorEv:
 1686|  72.4k|  allocator_type *mutable_allocator() noexcept {
 1687|  72.4k|    return &rightmost_.template get<1>();
 1688|  72.4k|  }
_ZN4absl18container_internal5btreeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE12mutable_rootEv:
 1671|  28.9k|  node_type *&mutable_root() noexcept { return root_; }
_ZN4absl18container_internal5btreeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE17mutable_rightmostEv:
 1674|  28.9k|  node_type *&mutable_rightmost() noexcept {
 1675|  28.9k|    return rightmost_.template get<2>();
 1676|  28.9k|  }
_ZN4absl18container_internal5btreeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE9EmptyNodeEv:
 1342|  14.4k|  static node_type *EmptyNode() {
 1343|       |#ifdef _MSC_VER
 1344|       |    static EmptyNodeType *empty_node = new EmptyNodeType;
 1345|       |    // This assert fails on some other construction methods.
 1346|       |    assert(empty_node->parent == empty_node);
 1347|       |    return empty_node;
 1348|       |#else
 1349|  14.4k|    static constexpr EmptyNodeType empty_node(
 1350|  14.4k|        const_cast<EmptyNodeType *>(&empty_node));
 1351|  14.4k|    return const_cast<EmptyNodeType *>(&empty_node);
 1352|  14.4k|#endif
 1353|  14.4k|  }
_ZN4absl18container_internal5btreeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE3endEv:
 1448|  9.65k|  iterator end() { return iterator(rightmost(), rightmost()->finish()); }
_ZN4absl18container_internal5btreeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE9rightmostEv:
 1672|  19.3k|  node_type *rightmost() { return rightmost_.template get<2>(); }
_ZN4absl18container_internal14btree_iteratorINS0_10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS6_12MapAllocatorINS9_4pairIKmS8_EEEELi256ELb0EEEEERSF_PSF_EC2EPSI_i:
 1144|   101k|        position_(p) {}
_ZNK4absl18container_internal5btreeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE15internal_locateImEENS0_12SearchResultINS0_14btree_iteratorINS0_10btree_nodeISG_EERSE_PSE_EELb0EEERKT_:
 2903|  43.4k|    -> SearchResult<iterator, is_key_compare_to::value> {
 2904|  43.4k|  iterator iter(const_cast<node_type *>(root()));
 2905|  43.4k|  for (;;) {
 2906|  43.4k|    SearchResult<size_type, is_key_compare_to::value> res =
 2907|  43.4k|        iter.node_->lower_bound(key, key_comp());
 2908|  43.4k|    iter.position_ = static_cast<int>(res.value);
 2909|  43.4k|    if (res.IsEq()) {
  ------------------
  |  Branch (2909:9): [Folded - Ignored]
  ------------------
 2910|      0|      return {iter, MatchKind::kEq};
 2911|      0|    }
 2912|       |    // Note: in the non-key-compare-to case, we don't need to walk all the way
 2913|       |    // down the tree if the keys are equal, but determining equality would
 2914|       |    // require doing an extra comparison on each node on the way down, and we
 2915|       |    // will need to go all the way to the leaf node in the expected case.
 2916|  43.4k|    if (iter.node_->is_leaf()) {
  ------------------
  |  Branch (2916:9): [True: 43.4k, False: 0]
  ------------------
 2917|  43.4k|      break;
 2918|  43.4k|    }
 2919|      0|    iter.node_ = iter.node_->child(static_cast<field_type>(iter.position_));
 2920|      0|  }
 2921|       |  // Note: in the non-key-compare-to case, the key may actually be equivalent
 2922|       |  // here (and the MatchKind::kNe is ignored).
 2923|  43.4k|  return {iter, MatchKind::kNe};
 2924|  43.4k|}
_ZNK4absl18container_internal5btreeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE4rootEv:
 1670|  43.4k|  const node_type *root() const { return root_; }
_ZN4absl18container_internal14btree_iteratorINS0_10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS6_12MapAllocatorINS9_4pairIKmS8_EEEELi256ELb0EEEEERSF_PSF_EC2EPSI_:
 1139|  91.7k|  explicit btree_iterator(Node *n) : btree_iterator(n, n->start()) {}
_ZNK4absl18container_internal10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE11lower_boundImEENS0_12SearchResultImLb0EEERKT_RKNS0_19key_compare_adapterISA_mE15checked_compareE:
  781|  43.4k|      const K &k, const key_compare &comp) const {
  782|  43.4k|    return use_linear_search::value ? linear_search(k, comp)
  ------------------
  |  Branch (782:12): [Folded - Ignored]
  ------------------
  783|  43.4k|                                    : binary_search(k, comp);
  784|  43.4k|  }
_ZNK4absl18container_internal10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE13linear_searchImNS0_19key_compare_adapterISA_mE15checked_compareEEENS0_12SearchResultImXsr23btree_is_key_compare_toIT0_mEE5valueEEERKT_RKSN_:
  795|  43.4k|  linear_search(const K &k, const Compare &comp) const {
  796|  43.4k|    return linear_search_impl(k, start(), finish(), comp,
  797|  43.4k|                              btree_is_key_compare_to<Compare, key_type>());
  798|  43.4k|  }
_ZNK4absl18container_internal10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE18linear_search_implImNS0_19key_compare_adapterISA_mE15checked_compareEEENS0_12SearchResultImLb0EEERKT_mmRKT0_NS8_17integral_constantIbLb0EEE:
  812|  43.4k|      std::false_type /* IsCompareTo */) const {
  813|   129k|    while (s < e) {
  ------------------
  |  Branch (813:12): [True: 116k, False: 13.5k]
  ------------------
  814|   116k|      if (!comp(key(s), k)) {
  ------------------
  |  Branch (814:11): [True: 29.8k, False: 86.3k]
  ------------------
  815|  29.8k|        break;
  816|  29.8k|      }
  817|  86.3k|      ++s;
  818|  86.3k|    }
  819|  43.4k|    return SearchResult<size_type, false>{s};
  820|  43.4k|  }
_ZNK4absl18container_internal19key_compare_adapterINSt3__14lessImEEmE15checked_compareclImmLi0EEEbRKT_RKT0_:
  235|   146k|    bool operator()(const T &lhs, const U &rhs) const {
  236|       |      // NOTE: if any of these assertions fail, then the comparator does not
  237|       |      // establish a strict-weak-ordering (see
  238|       |      // https://en.cppreference.com/w/cpp/named_req/Compare).
  239|   146k|      assert(is_self_equivalent(lhs));
  240|   146k|      assert(is_self_equivalent(rhs));
  241|   146k|      const bool lhs_comp_rhs = comp()(lhs, rhs);
  242|   146k|      assert(!lhs_comp_rhs || !comp()(rhs, lhs));
  243|   146k|      return lhs_comp_rhs;
  244|   146k|    }
_ZNK4absl18container_internal20checked_compare_baseINSt3__14lessImEELb1EE4compEv:
  174|   146k|  const Compare &comp() const { return *this; }
_ZNK4absl18container_internal10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE3keyEm:
  752|   146k|  const key_type &key(size_type i) const { return params_type::key(slot(i)); }
_ZNK4absl18container_internal10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE4slotEm:
  675|   146k|  const slot_type *slot(size_type i) const { return &GetField<3>()[i]; }
_ZNK4absl18container_internal10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE8GetFieldILm3EEEPKNS8_13tuple_elementIXT_ENS8_5tupleIJPSH_jhNS0_13map_slot_typeImS7_EESL_EEEE4typeEv:
  665|   146k|  inline const typename layout_type::template ElementType<N> *GetField() const {
  666|   146k|    assert(N < 4 || is_internal());
  667|   146k|    return InternalLayout().template Pointer<N>(
  668|   146k|        reinterpret_cast<const char *>(this));
  669|   146k|  }
_ZN4absl18container_internal12SearchResultImLb0EEC2Em:
  478|  43.5k|  explicit SearchResult(V v) : value(v) {}
_ZNK4absl18container_internal5btreeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE8key_compEv:
 1575|  73.3k|  const key_compare &key_comp() const noexcept {
 1576|  73.3k|    return rightmost_.template get<0>();
 1577|  73.3k|  }
_ZN4absl18container_internal12SearchResultINS0_14btree_iteratorINS0_10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS7_12MapAllocatorINSA_4pairIKmS9_EEEELi256ELb0EEEEERSG_PSG_EELb0EEC2ESM_NS0_9MatchKindE:
  479|  43.4k|  SearchResult(V v, MatchKind /*match*/) : value(v) {}
_ZN4absl18container_internal5btreeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE13internal_lastINS0_14btree_iteratorINS0_10btree_nodeISG_EERSE_PSE_EEEET_SP_:
 2808|  43.4k|inline IterType btree<P>::internal_last(IterType iter) {
 2809|  43.4k|  assert(iter.node_ != nullptr);
 2810|  43.4k|  while (iter.position_ == iter.node_->finish()) {
  ------------------
  |  Branch (2810:10): [True: 13.5k, False: 29.8k]
  ------------------
 2811|  13.5k|    iter.position_ = iter.node_->position();
 2812|  13.5k|    iter.node_ = iter.node_->parent();
 2813|  13.5k|    if (iter.node_->is_leaf()) {
  ------------------
  |  Branch (2813:9): [True: 13.5k, False: 0]
  ------------------
 2814|  13.5k|      iter.node_ = nullptr;
 2815|  13.5k|      break;
 2816|  13.5k|    }
 2817|  13.5k|  }
 2818|  43.4k|  iter.update_generation();
 2819|  43.4k|  return iter;
 2820|  43.4k|}
_ZN4absl18container_internal14btree_iteratorINS0_10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS6_12MapAllocatorINS9_4pairIKmS8_EEEELi256ELb0EEEEERSF_PSF_E17update_generationEv:
 1301|  86.9k|  void update_generation() {
 1302|  86.9k|    btree_iterator_generation_info::update_generation(node_);
 1303|  86.9k|  }
_ZNK4absl18container_internal5btreeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE12compare_keysImmEEbRKT_RKT0_:
 1579|  29.8k|  bool compare_keys(const K1 &a, const K2 &b) const {
 1580|  29.8k|    return compare_internal::compare_result_as_less_than(key_comp()(a, b));
 1581|  29.8k|  }
_ZNK4absl18container_internal14btree_iteratorINS0_10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS6_12MapAllocatorINS9_4pairIKmS8_EEEELi256ELb0EEEEERSF_PSF_E3keyEv:
 1294|  29.8k|  const key_type &key() const {
 1295|  29.8k|    return node_->key(static_cast<size_type>(position_));
 1296|  29.8k|  }
_ZNK4absl18container_internal14btree_iteratorINS0_10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS6_12MapAllocatorINS9_4pairIKmS8_EEEELi256ELb0EEEEERSF_PSF_EneERKSL_:
 1165|  48.2k|  bool operator!=(const iterator &other) const {
 1166|  48.2k|    return !Equals(other);
 1167|  48.2k|  }
_ZNK4absl18container_internal14btree_iteratorINS0_10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS6_12MapAllocatorINS9_4pairIKmS8_EEEELi256ELb0EEEEERSF_PSF_E6EqualsENS1_IKSI_RKSF_PSN_EE:
 1245|  48.2k|  bool Equals(const const_iterator other) const {
 1246|  48.2k|    ABSL_HARDENING_ASSERT(((node_ == nullptr && other.node_ == nullptr) ||
  ------------------
  |  |  128|  48.2k|#define ABSL_HARDENING_ASSERT(expr) ABSL_ASSERT(expr)
  |  |  ------------------
  |  |  |  |   95|  48.2k|  (false ? static_cast<void>(expr) : static_cast<void>(0))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (95:4): [Folded - Ignored]
  |  |  |  |  |  Branch (95:30): [True: 0, False: 0]
  |  |  |  |  |  Branch (95:30): [True: 0, False: 0]
  |  |  |  |  |  Branch (95:30): [True: 0, False: 0]
  |  |  |  |  |  Branch (95:30): [True: 0, False: 0]
  |  |  |  |  |  Branch (95:30): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1247|  48.2k|                           (node_ != nullptr && other.node_ != nullptr)) &&
 1248|  48.2k|                          "Comparing default-constructed iterator with "
 1249|  48.2k|                          "non-default-constructed iterator.");
 1250|       |    // Note: we use assert instead of ABSL_HARDENING_ASSERT here because this
 1251|       |    // changes the complexity of Equals from O(1) to O(log(N) + log(M)) where
 1252|       |    // N/M are sizes of the containers containing node_/other.node_.
 1253|  48.2k|    assert(AreNodesFromSameContainer(node_, other.node_) &&
 1254|  48.2k|           "Comparing iterators from different containers.");
 1255|  48.2k|    assert_valid_generation(node_);
 1256|  48.2k|    other.assert_valid_generation(other.node_);
 1257|  48.2k|    return node_ == other.node_ && position_ == other.position_;
  ------------------
  |  Branch (1257:12): [True: 48.2k, False: 0]
  |  Branch (1257:36): [True: 5.98k, False: 42.3k]
  ------------------
 1258|  48.2k|  }
_ZN4absl18container_internal14btree_iteratorIKNS0_10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS6_12MapAllocatorINS9_4pairIKmS8_EEEELi256ELb0EEEEERKSF_PSK_EC2ISI_RSF_PSF_Li0EEENS1_IT_T0_T1_EE:
 1157|  48.2k|        position_(other.position_) {}
_ZN4absl18container_internal5btreeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEED2Ev:
 1435|  4.82k|  ~btree() {
 1436|       |    // Put static_asserts in destructor to avoid triggering them before the type
 1437|       |    // is complete.
 1438|  4.82k|    static_assert(static_assert_validation(), "This call must be elided.");
 1439|  4.82k|    clear();
 1440|  4.82k|  }
_ZN4absl18container_internal19key_compare_adapterINSt3__14lessImEEmE15checked_compareC2ES4_:
  226|  4.82k|    checked_compare(Compare comp) : Base(std::move(comp)) {}  // NOLINT
_ZN4absl18container_internal20checked_compare_baseINSt3__14lessImEELb1EEC2ES4_:
  173|  4.82k|  explicit checked_compare_base(Compare c) : Compare(std::move(c)) {}
_ZN4absl18container_internal5btreeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEEC2ERKNS0_19key_compare_adapterISA_mE15checked_compareERKSF_:
 1412|  4.82k|      : root_(EmptyNode()), rightmost_(comp, alloc, EmptyNode()), size_(0) {}
_ZN4absl18container_internal5btreeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE13insert_uniqueImJSE_EEENSC_INS0_14btree_iteratorINS0_10btree_nodeISG_EERSE_PSE_EEbEERKT_DpOT0_:
 2288|  43.4k|    -> std::pair<iterator, bool> {
 2289|  43.4k|  if (empty()) {
  ------------------
  |  Branch (2289:7): [True: 4.82k, False: 38.6k]
  ------------------
 2290|  4.82k|    mutable_root() = mutable_rightmost() = new_leaf_root_node(1);
 2291|  4.82k|  }
 2292|       |
 2293|  43.4k|  SearchResult<iterator, is_key_compare_to::value> res = internal_locate(key);
 2294|  43.4k|  iterator iter = res.value;
 2295|       |
 2296|  43.4k|  if (res.HasMatch()) {
  ------------------
  |  Branch (2296:7): [Folded - Ignored]
  ------------------
 2297|      0|    if (res.IsEq()) {
  ------------------
  |  Branch (2297:9): [Folded - Ignored]
  ------------------
 2298|       |      // The key already exists in the tree, do nothing.
 2299|      0|      return {iter, false};
 2300|      0|    }
 2301|  43.4k|  } else {
 2302|  43.4k|    iterator last = internal_last(iter);
 2303|  43.4k|    if (last.node_ && !compare_keys(key, last.key())) {
  ------------------
  |  Branch (2303:9): [True: 29.8k, False: 13.5k]
  |  Branch (2303:23): [True: 0, False: 29.8k]
  ------------------
 2304|       |      // The key already exists in the tree, do nothing.
 2305|      0|      return {last, false};
 2306|      0|    }
 2307|  43.4k|  }
 2308|  43.4k|  return {internal_emplace(iter, std::forward<Args>(args)...), true};
 2309|  43.4k|}
_ZN4absl18container_internal5btreeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE18new_leaf_root_nodeEh:
 1712|  24.1k|  node_type *new_leaf_root_node(field_type max_count) {
 1713|  24.1k|    node_type *n = allocate(node_type::LeafSize(max_count));
 1714|  24.1k|    n->init_leaf(/*position=*/0, max_count, /*parent=*/n);
 1715|  24.1k|    return n;
 1716|  24.1k|  }
_ZN4absl18container_internal5btreeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE8allocateEm:
 1695|  24.1k|  node_type *allocate(size_type size) {
 1696|  24.1k|    return reinterpret_cast<node_type *>(
 1697|  24.1k|        absl::container_internal::Allocate<node_type::Alignment()>(
 1698|  24.1k|            mutable_allocator(), size));
 1699|  24.1k|  }
_ZN4absl18container_internal10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE9init_leafEhhPSH_:
  954|  24.1k|                 btree_node *parent) {
  955|  24.1k|    set_generation(0);
  956|  24.1k|    set_parent(parent);
  957|  24.1k|    set_position(position);
  958|  24.1k|    set_start(0);
  959|  24.1k|    set_finish(0);
  960|  24.1k|    set_max_count(max_count);
  961|  24.1k|    absl::container_internal::SanitizerPoisonMemoryRegion(
  962|  24.1k|        start_slot(), max_count * sizeof(slot_type));
  963|  24.1k|  }
_ZN4absl18container_internal10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE14set_generationEj:
  743|  43.4k|  void set_generation(uint32_t generation) {
  744|  43.4k|    if (BtreeGenerationsEnabled()) GetField<1>()[0] = generation;
  ------------------
  |  Branch (744:9): [Folded - Ignored]
  ------------------
  745|  43.4k|  }
_ZN4absl18container_internal10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE10set_parentEPSH_:
  670|  24.1k|  void set_parent(btree_node *p) { *GetField<0>() = p; }
_ZN4absl18container_internal10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE8GetFieldILm0EEEPNS8_13tuple_elementIXT_ENS8_5tupleIJPSH_jhNS0_13map_slot_typeImS7_EESL_EEEE4typeEv:
  659|  24.1k|  inline typename layout_type::template ElementType<N> *GetField() {
  660|       |    // We assert that we don't read from values that aren't there.
  661|  24.1k|    assert(N < 4 || is_internal());
  662|  24.1k|    return InternalLayout().template Pointer<N>(reinterpret_cast<char *>(this));
  663|  24.1k|  }
_ZN4absl18container_internal10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE12set_positionEh:
  676|  24.1k|  void set_position(field_type v) { GetField<2>()[0] = v; }
_ZN4absl18container_internal10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE8GetFieldILm2EEEPNS8_13tuple_elementIXT_ENS8_5tupleIJPSH_jhNS0_13map_slot_typeImS7_EESL_EEEE4typeEv:
  659|   178k|  inline typename layout_type::template ElementType<N> *GetField() {
  660|       |    // We assert that we don't read from values that aren't there.
  661|   178k|    assert(N < 4 || is_internal());
  662|   178k|    return InternalLayout().template Pointer<N>(reinterpret_cast<char *>(this));
  663|   178k|  }
_ZN4absl18container_internal10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE9set_startEh:
  677|  24.1k|  void set_start(field_type v) { GetField<2>()[1] = v; }
_ZN4absl18container_internal10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE10set_finishEh:
  678|   106k|  void set_finish(field_type v) { GetField<2>()[2] = v; }
_ZN4absl18container_internal10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE13set_max_countEh:
  680|  24.1k|  void set_max_count(field_type v) { GetField<2>()[3] = v; }
_ZN4absl18container_internal10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE10start_slotEv:
  673|  24.1k|  slot_type *start_slot() { return slot(start()); }
_ZN4absl18container_internal5btreeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE16internal_emplaceIJSE_EEENS0_14btree_iteratorINS0_10btree_nodeISG_EERSE_PSE_EESO_DpOT_:
 2825|  43.4k|    -> iterator {
 2826|  43.4k|  if (iter.node_->is_internal()) {
  ------------------
  |  Branch (2826:7): [True: 0, False: 43.4k]
  ------------------
 2827|       |    // We can't insert on an internal node. Instead, we'll insert after the
 2828|       |    // previous value which is guaranteed to be on a leaf node.
 2829|      0|    --iter;
 2830|      0|    ++iter.position_;
 2831|      0|  }
 2832|  43.4k|  const field_type max_count = iter.node_->max_count();
 2833|  43.4k|  allocator_type *alloc = mutable_allocator();
 2834|       |
 2835|  43.4k|  const auto transfer_and_delete = [&](node_type *old_node,
 2836|  43.4k|                                       node_type *new_node) {
 2837|  43.4k|    new_node->transfer_n(old_node->count(), new_node->start(),
 2838|  43.4k|                         old_node->start(), old_node, alloc);
 2839|  43.4k|    new_node->set_finish(old_node->finish());
 2840|  43.4k|    old_node->set_finish(old_node->start());
 2841|  43.4k|    new_node->set_generation(old_node->generation());
 2842|  43.4k|    node_type::clear_and_delete(old_node, alloc);
 2843|  43.4k|  };
 2844|  43.4k|  const auto replace_leaf_root_node = [&](field_type new_node_size) {
 2845|  43.4k|    assert(iter.node_ == root());
 2846|  43.4k|    node_type *old_root = iter.node_;
 2847|  43.4k|    node_type *new_root = iter.node_ = new_leaf_root_node(new_node_size);
 2848|  43.4k|    transfer_and_delete(old_root, new_root);
 2849|  43.4k|    mutable_root() = mutable_rightmost() = new_root;
 2850|  43.4k|  };
 2851|       |
 2852|  43.4k|  bool replaced_node = false;
 2853|  43.4k|  if (iter.node_->count() == max_count) {
  ------------------
  |  Branch (2853:7): [True: 19.3k, False: 24.1k]
  ------------------
 2854|       |    // Make room in the leaf for the new item.
 2855|  19.3k|    if (max_count < kNodeSlots) {
  ------------------
  |  Branch (2855:9): [True: 19.3k, False: 0]
  ------------------
 2856|       |      // Insertion into the root where the root is smaller than the full node
 2857|       |      // size. Simply grow the size of the root node.
 2858|  19.3k|      replace_leaf_root_node(static_cast<field_type>(
 2859|  19.3k|          (std::min)(static_cast<int>(kNodeSlots), 2 * max_count)));
 2860|  19.3k|      replaced_node = true;
 2861|  19.3k|    } else {
 2862|      0|      rebalance_or_split(&iter);
 2863|      0|    }
 2864|  19.3k|  }
 2865|  43.4k|  (void)replaced_node;
 2866|       |#ifdef ABSL_HAVE_ADDRESS_SANITIZER
 2867|       |  if (!replaced_node) {
 2868|       |    assert(iter.node_->is_leaf());
 2869|       |    if (iter.node_->is_root()) {
 2870|       |      replace_leaf_root_node(max_count);
 2871|       |    } else {
 2872|       |      node_type *old_node = iter.node_;
 2873|       |      const bool was_rightmost = rightmost() == old_node;
 2874|       |      const bool was_leftmost = leftmost() == old_node;
 2875|       |      node_type *parent = old_node->parent();
 2876|       |      const field_type position = old_node->position();
 2877|       |      node_type *new_node = iter.node_ = new_leaf_node(position, parent);
 2878|       |      parent->set_child_noupdate_position(position, new_node);
 2879|       |      transfer_and_delete(old_node, new_node);
 2880|       |      if (was_rightmost) mutable_rightmost() = new_node;
 2881|       |      // The leftmost node is stored as the parent of the root node.
 2882|       |      if (was_leftmost) root()->set_parent(new_node);
 2883|       |    }
 2884|       |  }
 2885|       |#endif
 2886|  43.4k|  iter.node_->emplace_value(static_cast<field_type>(iter.position_), alloc,
 2887|  43.4k|                            std::forward<Args>(args)...);
 2888|  43.4k|  assert(
 2889|  43.4k|      iter.node_->is_ordered_correctly(static_cast<field_type>(iter.position_),
 2890|  43.4k|                                       original_key_compare(key_comp())) &&
 2891|  43.4k|      "If this assert fails, then either (1) the comparator may violate "
 2892|  43.4k|      "transitivity, i.e. comp(a,b) && comp(b,c) -> comp(a,c) (see "
 2893|  43.4k|      "https://en.cppreference.com/w/cpp/named_req/Compare), or (2) a "
 2894|  43.4k|      "key may have been mutated after it was inserted into the tree.");
 2895|  43.4k|  ++size_;
 2896|  43.4k|  iter.update_generation();
 2897|  43.4k|  return iter;
 2898|  43.4k|}
_ZZN4absl18container_internal5btreeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE16internal_emplaceIJSE_EEENS0_14btree_iteratorINS0_10btree_nodeISG_EERSE_PSE_EESO_DpOT_ENKUlhE_clEh:
 2844|  19.3k|  const auto replace_leaf_root_node = [&](field_type new_node_size) {
 2845|  19.3k|    assert(iter.node_ == root());
 2846|  19.3k|    node_type *old_root = iter.node_;
 2847|  19.3k|    node_type *new_root = iter.node_ = new_leaf_root_node(new_node_size);
 2848|  19.3k|    transfer_and_delete(old_root, new_root);
 2849|  19.3k|    mutable_root() = mutable_rightmost() = new_root;
 2850|  19.3k|  };
_ZZN4absl18container_internal5btreeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE16internal_emplaceIJSE_EEENS0_14btree_iteratorINS0_10btree_nodeISG_EERSE_PSE_EESO_DpOT_ENKUlPSL_SS_E_clESS_SS_:
 2836|  19.3k|                                       node_type *new_node) {
 2837|  19.3k|    new_node->transfer_n(old_node->count(), new_node->start(),
 2838|  19.3k|                         old_node->start(), old_node, alloc);
 2839|  19.3k|    new_node->set_finish(old_node->finish());
 2840|  19.3k|    old_node->set_finish(old_node->start());
 2841|  19.3k|    new_node->set_generation(old_node->generation());
 2842|  19.3k|    node_type::clear_and_delete(old_node, alloc);
 2843|  19.3k|  };
_ZN4absl18container_internal10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE10transfer_nEmmmPSH_PSF_:
 1020|  19.3k|                  allocator_type *alloc) {
 1021|  19.3k|    next_generation();
 1022|  19.3k|    for (slot_type *src = src_node->slot(src_i), *end = src + n,
 1023|  19.3k|                   *dest = slot(dest_i);
 1024|  91.7k|         src != end; ++src, ++dest) {
  ------------------
  |  Branch (1024:10): [True: 72.4k, False: 19.3k]
  ------------------
 1025|  72.4k|      transfer(dest, src, alloc);
 1026|  72.4k|    }
 1027|  19.3k|  }
_ZN4absl18container_internal10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE8transferEPNS0_13map_slot_typeImS7_EESK_PSF_:
 1003|   159k|  static void transfer(slot_type *dest, slot_type *src, allocator_type *alloc) {
 1004|   159k|    absl::container_internal::SanitizerUnpoisonObject(dest);
 1005|   159k|    params_type::transfer(alloc, dest, src);
 1006|   159k|    absl::container_internal::SanitizerPoisonObject(src);
 1007|   159k|  }
_ZN4absl18container_internal10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE19transfer_n_backwardEmmmPSH_PSF_:
 1033|  29.8k|                           allocator_type *alloc) {
 1034|  29.8k|    next_generation();
 1035|  29.8k|    for (slot_type *src = src_node->slot(src_i + n), *end = src - n,
 1036|  29.8k|                   *dest = slot(dest_i + n);
 1037|   117k|         src != end; --src, --dest) {
  ------------------
  |  Branch (1037:10): [True: 87.5k, False: 29.8k]
  ------------------
 1038|       |      // If we modified the loop index calculations above to avoid the -1s here,
 1039|       |      // it would result in UB in the computation of `end` (and possibly `src`
 1040|       |      // as well, if n == 0), since slot() is effectively an array index and it
 1041|       |      // is UB to compute the address of any out-of-bounds array element except
 1042|       |      // for one-past-the-end.
 1043|  87.5k|      transfer(dest - 1, src - 1, alloc);
 1044|  87.5k|    }
 1045|  29.8k|  }
_ZN4absl18container_internal10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE13emplace_valueIJSE_EEEvhPSF_DpOT_:
 1817|  43.4k|                                         Args &&...args) {
 1818|  43.4k|  assert(i >= start());
 1819|  43.4k|  assert(i <= finish());
 1820|       |  // Shift old values to create space for new value and then construct it in
 1821|       |  // place.
 1822|  43.4k|  if (i < finish()) {
  ------------------
  |  Branch (1822:7): [True: 29.8k, False: 13.5k]
  ------------------
 1823|  29.8k|    transfer_n_backward(finish() - i, /*dest_i=*/i + 1, /*src_i=*/i, this,
 1824|  29.8k|                        alloc);
 1825|  29.8k|  }
 1826|  43.4k|  value_init(static_cast<field_type>(i), alloc, std::forward<Args>(args)...);
 1827|  43.4k|  set_finish(finish() + 1);
 1828|       |
 1829|  43.4k|  if (is_internal() && finish() > i + 1) {
  ------------------
  |  Branch (1829:7): [True: 0, False: 43.4k]
  |  Branch (1829:24): [True: 0, False: 0]
  ------------------
 1830|      0|    for (field_type j = finish(); j > i + 1; --j) {
  ------------------
  |  Branch (1830:35): [True: 0, False: 0]
  ------------------
 1831|      0|      set_child(j, child(j - 1));
 1832|      0|    }
 1833|      0|    clear_child(i + 1);
 1834|      0|  }
 1835|  43.4k|}
_ZN4absl18container_internal10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS5_12MapAllocatorINS8_4pairIKmS7_EEEELi256ELb0EEEE10value_initIJSE_EEEvhPSF_DpOT_:
  984|  43.4k|  void value_init(const field_type i, allocator_type *alloc, Args &&...args) {
  985|  43.4k|    next_generation();
  986|  43.4k|    absl::container_internal::SanitizerUnpoisonObject(slot(i));
  987|  43.4k|    params_type::construct(alloc, slot(i), std::forward<Args>(args)...);
  988|  43.4k|  }
_ZN4absl18container_internal14btree_iteratorINS0_10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS6_12MapAllocatorINS9_4pairIKmS8_EEEELi256ELb0EEEEERSF_PSF_EmmEv:
 1199|  42.7k|  btree_iterator &operator--() {
 1200|  42.7k|    decrement();
 1201|  42.7k|    return *this;
 1202|  42.7k|  }
_ZN4absl18container_internal14btree_iteratorINS0_10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS6_12MapAllocatorINS9_4pairIKmS8_EEEELi256ELb0EEEEERSF_PSF_E9decrementEv:
 1285|  42.7k|  void decrement() {
 1286|  42.7k|    assert_valid_generation(node_);
 1287|  42.7k|    if (node_->is_leaf() && --position_ >= node_->start()) {
  ------------------
  |  Branch (1287:9): [True: 42.7k, False: 0]
  |  Branch (1287:29): [True: 42.7k, False: 0]
  ------------------
 1288|  42.7k|      return;
 1289|  42.7k|    }
 1290|      0|    decrement_slow();
 1291|      0|  }
_ZN4absl18container_internal14btree_iteratorINS0_10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS6_12MapAllocatorINS9_4pairIKmS8_EEEELi256ELb0EEEEERSF_PSF_EppEv:
 1195|  4.82k|  btree_iterator &operator++() {
 1196|  4.82k|    increment();
 1197|  4.82k|    return *this;
 1198|  4.82k|  }
_ZN4absl18container_internal14btree_iteratorINS0_10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS6_12MapAllocatorINS9_4pairIKmS8_EEEELi256ELb0EEEEERSF_PSF_E9incrementEv:
 1276|  4.82k|  void increment() {
 1277|  4.82k|    assert_valid_generation(node_);
 1278|  4.82k|    if (node_->is_leaf() && ++position_ < node_->finish()) {
  ------------------
  |  Branch (1278:9): [True: 4.82k, False: 0]
  |  Branch (1278:29): [True: 4.34k, False: 483]
  ------------------
 1279|  4.34k|      return;
 1280|  4.34k|    }
 1281|    483|    increment_slow();
 1282|    483|  }
_ZN4absl18container_internal14btree_iteratorINS0_10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS6_12MapAllocatorINS9_4pairIKmS8_EEEELi256ELb0EEEEERSF_PSF_E14increment_slowEv:
 2145|    483|void btree_iterator<N, R, P>::increment_slow() {
 2146|    483|  if (node_->is_leaf()) {
  ------------------
  |  Branch (2146:7): [True: 483, False: 0]
  ------------------
 2147|    483|    assert(position_ >= node_->finish());
 2148|    483|    btree_iterator save(*this);
 2149|    483|    while (position_ == node_->finish() && !node_->is_root()) {
  ------------------
  |  Branch (2149:12): [True: 483, False: 0]
  |  Branch (2149:44): [True: 0, False: 483]
  ------------------
 2150|      0|      assert(node_->parent()->child(node_->position()) == node_);
 2151|      0|      position_ = node_->position();
 2152|      0|      node_ = node_->parent();
 2153|      0|    }
 2154|       |    // TODO(ezb): assert we aren't incrementing end() instead of handling.
 2155|    483|    if (position_ == node_->finish()) {
  ------------------
  |  Branch (2155:9): [True: 483, False: 0]
  ------------------
 2156|    483|      *this = save;
 2157|    483|    }
 2158|    483|  } else {
 2159|      0|    assert(position_ < node_->finish());
 2160|      0|    node_ = node_->child(static_cast<field_type>(position_ + 1));
 2161|      0|    while (node_->is_internal()) {
  ------------------
  |  Branch (2161:12): [True: 0, False: 0]
  ------------------
 2162|      0|      node_ = node_->start_child();
 2163|      0|    }
 2164|      0|    position_ = node_->start();
 2165|      0|  }
 2166|    483|}
_ZN4absl18container_internal19key_compare_adapterIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11FileCompareENS5_9FileEntryEE15checked_compareC2ES6_:
  226|      2|    checked_compare(Compare comp) : Base(std::move(comp)) {}  // NOLINT
_ZN4absl18container_internal20checked_compare_baseIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11FileCompareELb1EEC2ES6_:
  173|      2|  explicit checked_compare_base(Compare c) : Compare(std::move(c)) {}
_ZN4absl18container_internal5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEEC2ERKNS0_19key_compare_adapterIS8_S7_E15checked_compareERKSB_:
 1412|      2|      : root_(EmptyNode()), rightmost_(comp, alloc, EmptyNode()), size_(0) {}
_ZN4absl18container_internal5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE9EmptyNodeEv:
 1342|      4|  static node_type *EmptyNode() {
 1343|       |#ifdef _MSC_VER
 1344|       |    static EmptyNodeType *empty_node = new EmptyNodeType;
 1345|       |    // This assert fails on some other construction methods.
 1346|       |    assert(empty_node->parent == empty_node);
 1347|       |    return empty_node;
 1348|       |#else
 1349|      4|    static constexpr EmptyNodeType empty_node(
 1350|      4|        const_cast<EmptyNodeType *>(&empty_node));
 1351|      4|    return const_cast<EmptyNodeType *>(&empty_node);
 1352|      4|#endif
 1353|      4|  }
_ZN4absl18container_internal19key_compare_adapterIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex13SymbolCompareENS5_11SymbolEntryEE15checked_compareC2ES6_:
  226|      2|    checked_compare(Compare comp) : Base(std::move(comp)) {}  // NOLINT
_ZN4absl18container_internal20checked_compare_baseIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex13SymbolCompareELb1EEC2ES6_:
  173|      2|  explicit checked_compare_base(Compare c) : Compare(std::move(c)) {}
_ZN4absl18container_internal5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEEC2ERKNS0_19key_compare_adapterIS8_S7_E15checked_compareERKSB_:
 1412|      2|      : root_(EmptyNode()), rightmost_(comp, alloc, EmptyNode()), size_(0) {}
_ZN4absl18container_internal5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE9EmptyNodeEv:
 1342|      4|  static node_type *EmptyNode() {
 1343|       |#ifdef _MSC_VER
 1344|       |    static EmptyNodeType *empty_node = new EmptyNodeType;
 1345|       |    // This assert fails on some other construction methods.
 1346|       |    assert(empty_node->parent == empty_node);
 1347|       |    return empty_node;
 1348|       |#else
 1349|      4|    static constexpr EmptyNodeType empty_node(
 1350|      4|        const_cast<EmptyNodeType *>(&empty_node));
 1351|      4|    return const_cast<EmptyNodeType *>(&empty_node);
 1352|      4|#endif
 1353|      4|  }
_ZN4absl18container_internal19key_compare_adapterIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex16ExtensionCompareENS5_14ExtensionEntryEE15checked_compareC2ES6_:
  226|      2|    checked_compare(Compare comp) : Base(std::move(comp)) {}  // NOLINT
_ZN4absl18container_internal20checked_compare_baseIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex16ExtensionCompareELb1EEC2ES6_:
  173|      2|  explicit checked_compare_base(Compare c) : Compare(std::move(c)) {}
_ZN4absl18container_internal5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex14ExtensionEntryENS6_16ExtensionCompareENSt3__19allocatorIS7_EELi256ELb0EEEEC2ERKNS0_19key_compare_adapterIS8_S7_E15checked_compareERKSB_:
 1412|      2|      : root_(EmptyNode()), rightmost_(comp, alloc, EmptyNode()), size_(0) {}
_ZN4absl18container_internal5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex14ExtensionEntryENS6_16ExtensionCompareENSt3__19allocatorIS7_EELi256ELb0EEEE9EmptyNodeEv:
 1342|      4|  static node_type *EmptyNode() {
 1343|       |#ifdef _MSC_VER
 1344|       |    static EmptyNodeType *empty_node = new EmptyNodeType;
 1345|       |    // This assert fails on some other construction methods.
 1346|       |    assert(empty_node->parent == empty_node);
 1347|       |    return empty_node;
 1348|       |#else
 1349|      4|    static constexpr EmptyNodeType empty_node(
 1350|      4|        const_cast<EmptyNodeType *>(&empty_node));
 1351|      4|    return const_cast<EmptyNodeType *>(&empty_node);
 1352|      4|#endif
 1353|      4|  }
_ZNK4absl18container_internal5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE5emptyEv:
 1593|     72|  bool empty() const { return size_ == 0; }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE16clear_and_deleteEPSD_PSB_:
 2018|      6|void btree_node<P>::clear_and_delete(btree_node *node, allocator_type *alloc) {
 2019|      6|  if (node->is_leaf()) {
  ------------------
  |  Branch (2019:7): [True: 6, False: 0]
  ------------------
 2020|      6|    node->value_destroy_n(node->start(), node->count(), alloc);
 2021|      6|    deallocate(LeafSize(node->max_count()), node, alloc);
 2022|      6|    return;
 2023|      6|  }
 2024|      0|  if (node->count() == 0) {
  ------------------
  |  Branch (2024:7): [True: 0, False: 0]
  ------------------
 2025|      0|    deallocate(InternalSize(), node, alloc);
 2026|      0|    return;
 2027|      0|  }
 2028|       |
 2029|       |  // The parent of the root of the subtree we are deleting.
 2030|      0|  btree_node *delete_root_parent = node->parent();
 2031|       |
 2032|       |  // Navigate to the leftmost leaf under node, and then delete upwards.
 2033|      0|  while (node->is_internal()) node = node->start_child();
  ------------------
  |  Branch (2033:10): [True: 0, False: 0]
  ------------------
 2034|       |#ifdef ABSL_BTREE_ENABLE_GENERATIONS
 2035|       |  // When generations are enabled, we delete the leftmost leaf last in case it's
 2036|       |  // the parent of the root and we need to check whether it's a leaf before we
 2037|       |  // can update the root's generation.
 2038|       |  // TODO(ezb): if we change btree_node::is_root to check a bool inside the node
 2039|       |  // instead of checking whether the parent is a leaf, we can remove this logic.
 2040|       |  btree_node *leftmost_leaf = node;
 2041|       |#endif
 2042|       |  // Use `size_type` because `pos` needs to be able to hold `kNodeSlots+1`,
 2043|       |  // which isn't guaranteed to be a valid `field_type`.
 2044|      0|  size_type pos = node->position();
 2045|      0|  btree_node *parent = node->parent();
 2046|      0|  for (;;) {
 2047|       |    // In each iteration of the next loop, we delete one leaf node and go right.
 2048|      0|    assert(pos <= parent->finish());
 2049|      0|    do {
 2050|      0|      node = parent->child(static_cast<field_type>(pos));
 2051|      0|      if (node->is_internal()) {
  ------------------
  |  Branch (2051:11): [True: 0, False: 0]
  ------------------
 2052|       |        // Navigate to the leftmost leaf under node.
 2053|      0|        while (node->is_internal()) node = node->start_child();
  ------------------
  |  Branch (2053:16): [True: 0, False: 0]
  ------------------
 2054|      0|        pos = node->position();
 2055|      0|        parent = node->parent();
 2056|      0|      }
 2057|      0|      node->value_destroy_n(node->start(), node->count(), alloc);
 2058|       |#ifdef ABSL_BTREE_ENABLE_GENERATIONS
 2059|       |      if (leftmost_leaf != node)
 2060|       |#endif
 2061|      0|        deallocate(LeafSize(node->max_count()), node, alloc);
 2062|      0|      ++pos;
 2063|      0|    } while (pos <= parent->finish());
  ------------------
  |  Branch (2063:14): [True: 0, False: 0]
  ------------------
 2064|       |
 2065|       |    // Once we've deleted all children of parent, delete parent and go up/right.
 2066|      0|    assert(pos > parent->finish());
 2067|      0|    do {
 2068|      0|      node = parent;
 2069|      0|      pos = node->position();
 2070|      0|      parent = node->parent();
 2071|      0|      node->value_destroy_n(node->start(), node->count(), alloc);
 2072|      0|      deallocate(InternalSize(), node, alloc);
 2073|      0|      if (parent == delete_root_parent) {
  ------------------
  |  Branch (2073:11): [True: 0, False: 0]
  ------------------
 2074|       |#ifdef ABSL_BTREE_ENABLE_GENERATIONS
 2075|       |        deallocate(LeafSize(leftmost_leaf->max_count()), leftmost_leaf, alloc);
 2076|       |#endif
 2077|      0|        return;
 2078|      0|      }
 2079|      0|      ++pos;
 2080|      0|    } while (pos > parent->finish());
  ------------------
  |  Branch (2080:14): [True: 0, False: 0]
  ------------------
 2081|      0|  }
 2082|      0|}
_ZNK4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE7is_leafEv:
  685|    672|  bool is_leaf() const { return GetField<2>()[3] != kInternalNodeMaxCount; }
_ZNK4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE8GetFieldILm2EEEPKNS9_13tuple_elementIXT_ENS9_5tupleIJPSD_jhS7_SH_EEEE4typeEv:
  665|  1.91k|  inline const typename layout_type::template ElementType<N> *GetField() const {
  666|  1.91k|    assert(N < 4 || is_internal());
  667|  1.91k|    return InternalLayout().template Pointer<N>(
  668|  1.91k|        reinterpret_cast<const char *>(this));
  669|  1.91k|  }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE14InternalLayoutEv:
  646|  3.46k|  constexpr static layout_type InternalLayout() {
  647|  3.46k|    return Layout(kNodeSlots, kNodeSlots + 1);
  648|  3.46k|  }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE6LayoutEmm:
  633|  3.48k|                                      const size_type child_count) {
  634|  3.48k|    return layout_type(
  635|  3.48k|        /*parent*/ 1,
  636|  3.48k|        /*generation*/ BtreeGenerationsEnabled() ? 1 : 0,
  ------------------
  |  Branch (636:24): [Folded - Ignored]
  ------------------
  637|  3.48k|        /*position, start, finish, max_count*/ 4,
  638|  3.48k|        /*slots*/ slot_count,
  639|  3.48k|        /*children*/ child_count);
  640|  3.48k|  }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE15value_destroy_nEhhPSB_:
  995|      6|                       allocator_type *alloc) {
  996|      6|    next_generation();
  997|      6|    for (slot_type *s = slot(i), *end = slot(i + n); s != end; ++s) {
  ------------------
  |  Branch (997:54): [True: 0, False: 6]
  ------------------
  998|      0|      params_type::destroy(alloc, s);
  999|      0|      absl::container_internal::SanitizerPoisonObject(s);
 1000|      0|    }
 1001|      6|  }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE15next_generationEv:
  747|    190|  void next_generation() {
  748|    190|    if (BtreeGenerationsEnabled()) ++*get_root_generation();
  ------------------
  |  Branch (748:9): [Folded - Ignored]
  ------------------
  749|    190|  }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE4slotEm:
  672|    406|  slot_type *slot(size_type i) { return &GetField<3>()[i]; }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE8GetFieldILm3EEEPNS9_13tuple_elementIXT_ENS9_5tupleIJPSD_jhS7_SH_EEEE4typeEv:
  659|    406|  inline typename layout_type::template ElementType<N> *GetField() {
  660|       |    // We assert that we don't read from values that aren't there.
  661|    406|    assert(N < 4 || is_internal());
  662|    406|    return InternalLayout().template Pointer<N>(reinterpret_cast<char *>(this));
  663|    406|  }
_ZNK4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE5startEv:
  694|    846|  field_type start() const {
  695|       |    // TODO(ezb): when floating storage is implemented, return GetField<2>()[1];
  696|    846|    assert(GetField<2>()[1] == 0);
  697|    846|    return 0;
  698|    846|  }
_ZNK4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE5countEv:
  704|    154|  field_type count() const {
  705|    154|    assert(finish() >= start());
  706|    154|    return finish() - start();
  707|    154|  }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE10deallocateEmPSD_PSB_:
  974|      6|                         allocator_type *alloc) {
  975|      6|    absl::container_internal::SanitizerUnpoisonMemoryRegion(node, size);
  976|      6|    absl::container_internal::Deallocate<Alignment()>(alloc, node, size);
  977|      6|  }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE8LeafSizeEm:
  649|     22|  constexpr static size_type LeafSize(const size_type slot_count = kNodeSlots) {
  650|     22|    return LeafLayout(slot_count).AllocSize();
  651|     22|  }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE10LeafLayoutEm:
  643|     22|      const size_type slot_count = kNodeSlots) {
  644|     22|    return Layout(slot_count, 0);
  645|     22|  }
_ZNK4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE9max_countEv:
  708|     70|  field_type max_count() const {
  709|       |    // Internal nodes have max_count==kInternalNodeMaxCount.
  710|       |    // Leaf nodes have max_count in [1, kNodeSlots].
  711|     70|    const field_type max_count = GetField<2>()[3];
  712|     70|    return max_count == field_type{kInternalNodeMaxCount}
  ------------------
  |  Branch (712:12): [True: 0, False: 70]
  ------------------
  713|     70|               ? field_type{kNodeSlots}
  714|     70|               : max_count;
  715|     70|  }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE12InternalSizeEv:
  652|      2|  constexpr static size_type InternalSize() {
  653|      2|    return InternalLayout().AllocSize();
  654|      2|  }
_ZNK4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE6parentEv:
  718|    290|  btree_node *parent() const { return *GetField<0>(); }
_ZNK4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE8GetFieldILm0EEEPKNS9_13tuple_elementIXT_ENS9_5tupleIJPSD_jhS7_SH_EEEE4typeEv:
  665|    290|  inline const typename layout_type::template ElementType<N> *GetField() const {
  666|    290|    assert(N < 4 || is_internal());
  667|    290|    return InternalLayout().template Pointer<N>(
  668|    290|        reinterpret_cast<const char *>(this));
  669|    290|  }
_ZNK4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE11is_internalEv:
  688|    198|  bool is_internal() const { return !is_leaf(); }
_ZNK4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE8positionEv:
  691|    152|  field_type position() const { return GetField<2>()[0]; }
_ZNK4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE5childEh:
  759|    112|  btree_node *child(field_type i) const { return GetField<4>()[i]; }
_ZNK4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE8GetFieldILm4EEEPKNS9_13tuple_elementIXT_ENS9_5tupleIJPSD_jhS7_SH_EEEE4typeEv:
  665|    112|  inline const typename layout_type::template ElementType<N> *GetField() const {
  666|    112|    assert(N < 4 || is_internal());
  667|    112|    return InternalLayout().template Pointer<N>(
  668|    112|        reinterpret_cast<const char *>(this));
  669|    112|  }
_ZNK4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE6finishEv:
  701|  1.02k|  field_type finish() const { return GetField<2>()[2]; }
_ZN4absl18container_internal5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE4rootEv:
 1669|     84|  node_type *root() { return root_; }
_ZN4absl18container_internal5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE17mutable_allocatorEv:
 1686|    102|  allocator_type *mutable_allocator() noexcept {
 1687|    102|    return &rightmost_.template get<1>();
 1688|    102|  }
_ZN4absl18container_internal5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE17mutable_rightmostEv:
 1674|     16|  node_type *&mutable_rightmost() noexcept {
 1675|     16|    return rightmost_.template get<2>();
 1676|     16|  }
_ZN4absl18container_internal5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE12mutable_rootEv:
 1671|     10|  node_type *&mutable_root() noexcept { return root_; }
_ZNK4absl18container_internal5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE5emptyEv:
 1593|     10|  bool empty() const { return size_ == 0; }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE16clear_and_deleteEPSD_PSB_:
 2018|      6|void btree_node<P>::clear_and_delete(btree_node *node, allocator_type *alloc) {
 2019|      6|  if (node->is_leaf()) {
  ------------------
  |  Branch (2019:7): [True: 6, False: 0]
  ------------------
 2020|      6|    node->value_destroy_n(node->start(), node->count(), alloc);
 2021|      6|    deallocate(LeafSize(node->max_count()), node, alloc);
 2022|      6|    return;
 2023|      6|  }
 2024|      0|  if (node->count() == 0) {
  ------------------
  |  Branch (2024:7): [True: 0, False: 0]
  ------------------
 2025|      0|    deallocate(InternalSize(), node, alloc);
 2026|      0|    return;
 2027|      0|  }
 2028|       |
 2029|       |  // The parent of the root of the subtree we are deleting.
 2030|      0|  btree_node *delete_root_parent = node->parent();
 2031|       |
 2032|       |  // Navigate to the leftmost leaf under node, and then delete upwards.
 2033|      0|  while (node->is_internal()) node = node->start_child();
  ------------------
  |  Branch (2033:10): [True: 0, False: 0]
  ------------------
 2034|       |#ifdef ABSL_BTREE_ENABLE_GENERATIONS
 2035|       |  // When generations are enabled, we delete the leftmost leaf last in case it's
 2036|       |  // the parent of the root and we need to check whether it's a leaf before we
 2037|       |  // can update the root's generation.
 2038|       |  // TODO(ezb): if we change btree_node::is_root to check a bool inside the node
 2039|       |  // instead of checking whether the parent is a leaf, we can remove this logic.
 2040|       |  btree_node *leftmost_leaf = node;
 2041|       |#endif
 2042|       |  // Use `size_type` because `pos` needs to be able to hold `kNodeSlots+1`,
 2043|       |  // which isn't guaranteed to be a valid `field_type`.
 2044|      0|  size_type pos = node->position();
 2045|      0|  btree_node *parent = node->parent();
 2046|      0|  for (;;) {
 2047|       |    // In each iteration of the next loop, we delete one leaf node and go right.
 2048|      0|    assert(pos <= parent->finish());
 2049|      0|    do {
 2050|      0|      node = parent->child(static_cast<field_type>(pos));
 2051|      0|      if (node->is_internal()) {
  ------------------
  |  Branch (2051:11): [True: 0, False: 0]
  ------------------
 2052|       |        // Navigate to the leftmost leaf under node.
 2053|      0|        while (node->is_internal()) node = node->start_child();
  ------------------
  |  Branch (2053:16): [True: 0, False: 0]
  ------------------
 2054|      0|        pos = node->position();
 2055|      0|        parent = node->parent();
 2056|      0|      }
 2057|      0|      node->value_destroy_n(node->start(), node->count(), alloc);
 2058|       |#ifdef ABSL_BTREE_ENABLE_GENERATIONS
 2059|       |      if (leftmost_leaf != node)
 2060|       |#endif
 2061|      0|        deallocate(LeafSize(node->max_count()), node, alloc);
 2062|      0|      ++pos;
 2063|      0|    } while (pos <= parent->finish());
  ------------------
  |  Branch (2063:14): [True: 0, False: 0]
  ------------------
 2064|       |
 2065|       |    // Once we've deleted all children of parent, delete parent and go up/right.
 2066|      0|    assert(pos > parent->finish());
 2067|      0|    do {
 2068|      0|      node = parent;
 2069|      0|      pos = node->position();
 2070|      0|      parent = node->parent();
 2071|      0|      node->value_destroy_n(node->start(), node->count(), alloc);
 2072|      0|      deallocate(InternalSize(), node, alloc);
 2073|      0|      if (parent == delete_root_parent) {
  ------------------
  |  Branch (2073:11): [True: 0, False: 0]
  ------------------
 2074|       |#ifdef ABSL_BTREE_ENABLE_GENERATIONS
 2075|       |        deallocate(LeafSize(leftmost_leaf->max_count()), leftmost_leaf, alloc);
 2076|       |#endif
 2077|      0|        return;
 2078|      0|      }
 2079|      0|      ++pos;
 2080|      0|    } while (pos > parent->finish());
  ------------------
  |  Branch (2080:14): [True: 0, False: 0]
  ------------------
 2081|      0|  }
 2082|      0|}
_ZNK4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE7is_leafEv:
  685|     42|  bool is_leaf() const { return GetField<2>()[3] != kInternalNodeMaxCount; }
_ZNK4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE8GetFieldILm2EEEPKNS9_13tuple_elementIXT_ENS9_5tupleIJPSD_jhS7_SH_EEEE4typeEv:
  665|    136|  inline const typename layout_type::template ElementType<N> *GetField() const {
  666|    136|    assert(N < 4 || is_internal());
  667|    136|    return InternalLayout().template Pointer<N>(
  668|    136|        reinterpret_cast<const char *>(this));
  669|    136|  }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE14InternalLayoutEv:
  646|    282|  constexpr static layout_type InternalLayout() {
  647|    282|    return Layout(kNodeSlots, kNodeSlots + 1);
  648|    282|  }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE6LayoutEmm:
  633|    296|                                      const size_type child_count) {
  634|    296|    return layout_type(
  635|    296|        /*parent*/ 1,
  636|    296|        /*generation*/ BtreeGenerationsEnabled() ? 1 : 0,
  ------------------
  |  Branch (636:24): [Folded - Ignored]
  ------------------
  637|    296|        /*position, start, finish, max_count*/ 4,
  638|    296|        /*slots*/ slot_count,
  639|    296|        /*children*/ child_count);
  640|    296|  }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE15value_destroy_nEhhPSB_:
  995|      6|                       allocator_type *alloc) {
  996|      6|    next_generation();
  997|      6|    for (slot_type *s = slot(i), *end = slot(i + n); s != end; ++s) {
  ------------------
  |  Branch (997:54): [True: 0, False: 6]
  ------------------
  998|      0|      params_type::destroy(alloc, s);
  999|      0|      absl::container_internal::SanitizerPoisonObject(s);
 1000|      0|    }
 1001|      6|  }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE15next_generationEv:
  747|     26|  void next_generation() {
  748|     26|    if (BtreeGenerationsEnabled()) ++*get_root_generation();
  ------------------
  |  Branch (748:9): [Folded - Ignored]
  ------------------
  749|     26|  }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE4slotEm:
  672|     60|  slot_type *slot(size_type i) { return &GetField<3>()[i]; }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE8GetFieldILm3EEEPNS9_13tuple_elementIXT_ENS9_5tupleIJPSD_jhS7_SH_EEEE4typeEv:
  659|     60|  inline typename layout_type::template ElementType<N> *GetField() {
  660|       |    // We assert that we don't read from values that aren't there.
  661|     60|    assert(N < 4 || is_internal());
  662|     60|    return InternalLayout().template Pointer<N>(reinterpret_cast<char *>(this));
  663|     60|  }
_ZNK4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE5startEv:
  694|     74|  field_type start() const {
  695|       |    // TODO(ezb): when floating storage is implemented, return GetField<2>()[1];
  696|     74|    assert(GetField<2>()[1] == 0);
  697|     74|    return 0;
  698|     74|  }
_ZNK4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE5countEv:
  704|     22|  field_type count() const {
  705|     22|    assert(finish() >= start());
  706|     22|    return finish() - start();
  707|     22|  }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE10deallocateEmPSD_PSB_:
  974|      6|                         allocator_type *alloc) {
  975|      6|    absl::container_internal::SanitizerUnpoisonMemoryRegion(node, size);
  976|      6|    absl::container_internal::Deallocate<Alignment()>(alloc, node, size);
  977|      6|  }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE8LeafSizeEm:
  649|     14|  constexpr static size_type LeafSize(const size_type slot_count = kNodeSlots) {
  650|     14|    return LeafLayout(slot_count).AllocSize();
  651|     14|  }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE10LeafLayoutEm:
  643|     14|      const size_type slot_count = kNodeSlots) {
  644|     14|    return Layout(slot_count, 0);
  645|     14|  }
_ZNK4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE9max_countEv:
  708|     16|  field_type max_count() const {
  709|       |    // Internal nodes have max_count==kInternalNodeMaxCount.
  710|       |    // Leaf nodes have max_count in [1, kNodeSlots].
  711|     16|    const field_type max_count = GetField<2>()[3];
  712|     16|    return max_count == field_type{kInternalNodeMaxCount}
  ------------------
  |  Branch (712:12): [True: 0, False: 16]
  ------------------
  713|     16|               ? field_type{kNodeSlots}
  714|     16|               : max_count;
  715|     16|  }
_ZNK4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE6parentEv:
  718|      6|  btree_node *parent() const { return *GetField<0>(); }
_ZNK4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE8GetFieldILm0EEEPKNS9_13tuple_elementIXT_ENS9_5tupleIJPSD_jhS7_SH_EEEE4typeEv:
  665|      6|  inline const typename layout_type::template ElementType<N> *GetField() const {
  666|      6|    assert(N < 4 || is_internal());
  667|      6|    return InternalLayout().template Pointer<N>(
  668|      6|        reinterpret_cast<const char *>(this));
  669|      6|  }
_ZNK4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE11is_internalEv:
  688|     20|  bool is_internal() const { return !is_leaf(); }
_ZNK4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE8positionEv:
  691|      6|  field_type position() const { return GetField<2>()[0]; }
_ZNK4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE6finishEv:
  701|     72|  field_type finish() const { return GetField<2>()[2]; }
_ZN4absl18container_internal5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE17mutable_allocatorEv:
 1686|     18|  allocator_type *mutable_allocator() noexcept {
 1687|     18|    return &rightmost_.template get<1>();
 1688|     18|  }
_ZN4absl18container_internal5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE17mutable_rightmostEv:
 1674|      8|  node_type *&mutable_rightmost() noexcept {
 1675|      8|    return rightmost_.template get<2>();
 1676|      8|  }
_ZN4absl18container_internal5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE12mutable_rootEv:
 1671|      8|  node_type *&mutable_root() noexcept { return root_; }
_ZN4absl18container_internal5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE13insert_uniqueIS7_JS7_EEENS9_4pairINS0_14btree_iteratorINS0_10btree_nodeISC_EERS7_PS7_EEbEERKT_DpOT0_:
 2288|     10|    -> std::pair<iterator, bool> {
 2289|     10|  if (empty()) {
  ------------------
  |  Branch (2289:7): [True: 2, False: 8]
  ------------------
 2290|      2|    mutable_root() = mutable_rightmost() = new_leaf_root_node(1);
 2291|      2|  }
 2292|       |
 2293|     10|  SearchResult<iterator, is_key_compare_to::value> res = internal_locate(key);
 2294|     10|  iterator iter = res.value;
 2295|       |
 2296|     10|  if (res.HasMatch()) {
  ------------------
  |  Branch (2296:7): [Folded - Ignored]
  ------------------
 2297|      0|    if (res.IsEq()) {
  ------------------
  |  Branch (2297:9): [Folded - Ignored]
  ------------------
 2298|       |      // The key already exists in the tree, do nothing.
 2299|      0|      return {iter, false};
 2300|      0|    }
 2301|     10|  } else {
 2302|     10|    iterator last = internal_last(iter);
 2303|     10|    if (last.node_ && !compare_keys(key, last.key())) {
  ------------------
  |  Branch (2303:9): [True: 4, False: 6]
  |  Branch (2303:23): [True: 0, False: 4]
  ------------------
 2304|       |      // The key already exists in the tree, do nothing.
 2305|      0|      return {last, false};
 2306|      0|    }
 2307|     10|  }
 2308|     10|  return {internal_emplace(iter, std::forward<Args>(args)...), true};
 2309|     10|}
_ZN4absl18container_internal5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE18new_leaf_root_nodeEh:
 1712|      8|  node_type *new_leaf_root_node(field_type max_count) {
 1713|      8|    node_type *n = allocate(node_type::LeafSize(max_count));
 1714|      8|    n->init_leaf(/*position=*/0, max_count, /*parent=*/n);
 1715|      8|    return n;
 1716|      8|  }
_ZN4absl18container_internal5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE8allocateEm:
 1695|      8|  node_type *allocate(size_type size) {
 1696|      8|    return reinterpret_cast<node_type *>(
 1697|      8|        absl::container_internal::Allocate<node_type::Alignment()>(
 1698|      8|            mutable_allocator(), size));
 1699|      8|  }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE9init_leafEhhPSD_:
  954|      8|                 btree_node *parent) {
  955|      8|    set_generation(0);
  956|      8|    set_parent(parent);
  957|      8|    set_position(position);
  958|      8|    set_start(0);
  959|      8|    set_finish(0);
  960|      8|    set_max_count(max_count);
  961|      8|    absl::container_internal::SanitizerPoisonMemoryRegion(
  962|      8|        start_slot(), max_count * sizeof(slot_type));
  963|      8|  }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE14set_generationEj:
  743|     14|  void set_generation(uint32_t generation) {
  744|     14|    if (BtreeGenerationsEnabled()) GetField<1>()[0] = generation;
  ------------------
  |  Branch (744:9): [Folded - Ignored]
  ------------------
  745|     14|  }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE10set_parentEPSD_:
  670|      8|  void set_parent(btree_node *p) { *GetField<0>() = p; }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE8GetFieldILm0EEEPNS9_13tuple_elementIXT_ENS9_5tupleIJPSD_jhS7_SH_EEEE4typeEv:
  659|      8|  inline typename layout_type::template ElementType<N> *GetField() {
  660|       |    // We assert that we don't read from values that aren't there.
  661|      8|    assert(N < 4 || is_internal());
  662|      8|    return InternalLayout().template Pointer<N>(reinterpret_cast<char *>(this));
  663|      8|  }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE12set_positionEh:
  676|      8|  void set_position(field_type v) { GetField<2>()[0] = v; }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE8GetFieldILm2EEEPNS9_13tuple_elementIXT_ENS9_5tupleIJPSD_jhS7_SH_EEEE4typeEv:
  659|     54|  inline typename layout_type::template ElementType<N> *GetField() {
  660|       |    // We assert that we don't read from values that aren't there.
  661|     54|    assert(N < 4 || is_internal());
  662|     54|    return InternalLayout().template Pointer<N>(reinterpret_cast<char *>(this));
  663|     54|  }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE9set_startEh:
  677|      8|  void set_start(field_type v) { GetField<2>()[1] = v; }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE10set_finishEh:
  678|     30|  void set_finish(field_type v) { GetField<2>()[2] = v; }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE13set_max_countEh:
  680|      8|  void set_max_count(field_type v) { GetField<2>()[3] = v; }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE10start_slotEv:
  673|      8|  slot_type *start_slot() { return slot(start()); }
_ZNK4absl18container_internal5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE15internal_locateIS7_EENS0_12SearchResultINS0_14btree_iteratorINS0_10btree_nodeISC_EERS7_PS7_EELb0EEERKT_:
 2903|     10|    -> SearchResult<iterator, is_key_compare_to::value> {
 2904|     10|  iterator iter(const_cast<node_type *>(root()));
 2905|     10|  for (;;) {
 2906|     10|    SearchResult<size_type, is_key_compare_to::value> res =
 2907|     10|        iter.node_->lower_bound(key, key_comp());
 2908|     10|    iter.position_ = static_cast<int>(res.value);
 2909|     10|    if (res.IsEq()) {
  ------------------
  |  Branch (2909:9): [Folded - Ignored]
  ------------------
 2910|      0|      return {iter, MatchKind::kEq};
 2911|      0|    }
 2912|       |    // Note: in the non-key-compare-to case, we don't need to walk all the way
 2913|       |    // down the tree if the keys are equal, but determining equality would
 2914|       |    // require doing an extra comparison on each node on the way down, and we
 2915|       |    // will need to go all the way to the leaf node in the expected case.
 2916|     10|    if (iter.node_->is_leaf()) {
  ------------------
  |  Branch (2916:9): [True: 10, False: 0]
  ------------------
 2917|     10|      break;
 2918|     10|    }
 2919|      0|    iter.node_ = iter.node_->child(static_cast<field_type>(iter.position_));
 2920|      0|  }
 2921|       |  // Note: in the non-key-compare-to case, the key may actually be equivalent
 2922|       |  // here (and the MatchKind::kNe is ignored).
 2923|     10|  return {iter, MatchKind::kNe};
 2924|     10|}
_ZNK4absl18container_internal5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE4rootEv:
 1670|     10|  const node_type *root() const { return root_; }
_ZN4absl18container_internal14btree_iteratorINS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS7_11FileCompareENSt3__19allocatorIS8_EELi256ELb0EEEEERS8_PS8_EC2EPSE_:
 1139|     10|  explicit btree_iterator(Node *n) : btree_iterator(n, n->start()) {}
_ZN4absl18container_internal14btree_iteratorINS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS7_11FileCompareENSt3__19allocatorIS8_EELi256ELb0EEEEERS8_PS8_EC2EPSE_i:
 1144|     10|        position_(p) {}
_ZNK4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE10generationEv:
  738|     16|  uint32_t generation() const {
  739|     16|    return BtreeGenerationsEnabled() ? *get_root_generation() : 0;
  ------------------
  |  Branch (739:12): [Folded - Ignored]
  ------------------
  740|     16|  }
_ZNK4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE11lower_boundIS7_EENS0_12SearchResultImLb0EEERKT_RKNS0_19key_compare_adapterIS8_S7_E15checked_compareE:
  781|     10|      const K &k, const key_compare &comp) const {
  782|     10|    return use_linear_search::value ? linear_search(k, comp)
  ------------------
  |  Branch (782:12): [Folded - Ignored]
  ------------------
  783|     10|                                    : binary_search(k, comp);
  784|     10|  }
_ZNK4absl18container_internal19key_compare_adapterIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11FileCompareENS5_9FileEntryEE15checked_compareclIS7_S7_Li0EEEbRKT_RKT0_:
  235|     18|    bool operator()(const T &lhs, const U &rhs) const {
  236|       |      // NOTE: if any of these assertions fail, then the comparator does not
  237|       |      // establish a strict-weak-ordering (see
  238|       |      // https://en.cppreference.com/w/cpp/named_req/Compare).
  239|     18|      assert(is_self_equivalent(lhs));
  240|     18|      assert(is_self_equivalent(rhs));
  241|     18|      const bool lhs_comp_rhs = comp()(lhs, rhs);
  242|     18|      assert(!lhs_comp_rhs || !comp()(rhs, lhs));
  243|     18|      return lhs_comp_rhs;
  244|     18|    }
_ZNK4absl18container_internal20checked_compare_baseIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11FileCompareELb1EE4compEv:
  174|     18|  const Compare &comp() const { return *this; }
_ZNK4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE3keyEm:
  752|     18|  const key_type &key(size_type i) const { return params_type::key(slot(i)); }
_ZNK4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE4slotEm:
  675|     18|  const slot_type *slot(size_type i) const { return &GetField<3>()[i]; }
_ZNK4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE8GetFieldILm3EEEPKNS9_13tuple_elementIXT_ENS9_5tupleIJPSD_jhS7_SH_EEEE4typeEv:
  665|     18|  inline const typename layout_type::template ElementType<N> *GetField() const {
  666|     18|    assert(N < 4 || is_internal());
  667|     18|    return InternalLayout().template Pointer<N>(
  668|     18|        reinterpret_cast<const char *>(this));
  669|     18|  }
_ZNK4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE13binary_searchIS7_NS0_19key_compare_adapterIS8_S7_E15checked_compareEEENS0_12SearchResultImXsr23btree_is_key_compare_toIT0_S7_EE5valueEEERKT_RKSJ_:
  802|     10|  binary_search(const K &k, const Compare &comp) const {
  803|     10|    return binary_search_impl(k, start(), finish(), comp,
  804|     10|                              btree_is_key_compare_to<Compare, key_type>());
  805|     10|  }
_ZNK4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE18binary_search_implIS7_NS0_19key_compare_adapterIS8_S7_E15checked_compareEEENS0_12SearchResultImLb0EEERKT_mmRKT0_NS9_17integral_constantIbLb0EEE:
  845|     10|      std::false_type /* IsCompareTo */) const {
  846|     24|    while (s != e) {
  ------------------
  |  Branch (846:12): [True: 14, False: 10]
  ------------------
  847|     14|      const size_type mid = (s + e) >> 1;
  848|     14|      if (comp(key(mid), k)) {
  ------------------
  |  Branch (848:11): [True: 6, False: 8]
  ------------------
  849|      6|        s = mid + 1;
  850|      8|      } else {
  851|      8|        e = mid;
  852|      8|      }
  853|     14|    }
  854|     10|    return SearchResult<size_type, false>{s};
  855|     10|  }
_ZNK4absl18container_internal5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE8key_compEv:
 1575|     24|  const key_compare &key_comp() const noexcept {
 1576|     24|    return rightmost_.template get<0>();
 1577|     24|  }
_ZN4absl18container_internal12SearchResultINS0_14btree_iteratorINS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS8_11FileCompareENSt3__19allocatorIS9_EELi256ELb0EEEEERS9_PS9_EELb0EEC2ESI_NS0_9MatchKindE:
  479|     10|  SearchResult(V v, MatchKind /*match*/) : value(v) {}
_ZN4absl18container_internal5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE13internal_lastINS0_14btree_iteratorINS0_10btree_nodeISC_EERS7_PS7_EEEET_SL_:
 2808|     10|inline IterType btree<P>::internal_last(IterType iter) {
 2809|     10|  assert(iter.node_ != nullptr);
 2810|     10|  while (iter.position_ == iter.node_->finish()) {
  ------------------
  |  Branch (2810:10): [True: 6, False: 4]
  ------------------
 2811|      6|    iter.position_ = iter.node_->position();
 2812|      6|    iter.node_ = iter.node_->parent();
 2813|      6|    if (iter.node_->is_leaf()) {
  ------------------
  |  Branch (2813:9): [True: 6, False: 0]
  ------------------
 2814|      6|      iter.node_ = nullptr;
 2815|      6|      break;
 2816|      6|    }
 2817|      6|  }
 2818|     10|  iter.update_generation();
 2819|     10|  return iter;
 2820|     10|}
_ZN4absl18container_internal14btree_iteratorINS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS7_11FileCompareENSt3__19allocatorIS8_EELi256ELb0EEEEERS8_PS8_E17update_generationEv:
 1301|     20|  void update_generation() {
 1302|     20|    btree_iterator_generation_info::update_generation(node_);
 1303|     20|  }
_ZNK4absl18container_internal5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE12compare_keysIS7_S7_EEbRKT_RKT0_:
 1579|      4|  bool compare_keys(const K1 &a, const K2 &b) const {
 1580|      4|    return compare_internal::compare_result_as_less_than(key_comp()(a, b));
 1581|      4|  }
_ZNK4absl18container_internal14btree_iteratorINS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS7_11FileCompareENSt3__19allocatorIS8_EELi256ELb0EEEEERS8_PS8_E3keyEv:
 1294|      4|  const key_type &key() const {
 1295|      4|    return node_->key(static_cast<size_type>(position_));
 1296|      4|  }
_ZN4absl18container_internal5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE16internal_emplaceIJS7_EEENS0_14btree_iteratorINS0_10btree_nodeISC_EERS7_PS7_EESK_DpOT_:
 2825|     10|    -> iterator {
 2826|     10|  if (iter.node_->is_internal()) {
  ------------------
  |  Branch (2826:7): [True: 0, False: 10]
  ------------------
 2827|       |    // We can't insert on an internal node. Instead, we'll insert after the
 2828|       |    // previous value which is guaranteed to be on a leaf node.
 2829|      0|    --iter;
 2830|      0|    ++iter.position_;
 2831|      0|  }
 2832|     10|  const field_type max_count = iter.node_->max_count();
 2833|     10|  allocator_type *alloc = mutable_allocator();
 2834|       |
 2835|     10|  const auto transfer_and_delete = [&](node_type *old_node,
 2836|     10|                                       node_type *new_node) {
 2837|     10|    new_node->transfer_n(old_node->count(), new_node->start(),
 2838|     10|                         old_node->start(), old_node, alloc);
 2839|     10|    new_node->set_finish(old_node->finish());
 2840|     10|    old_node->set_finish(old_node->start());
 2841|     10|    new_node->set_generation(old_node->generation());
 2842|     10|    node_type::clear_and_delete(old_node, alloc);
 2843|     10|  };
 2844|     10|  const auto replace_leaf_root_node = [&](field_type new_node_size) {
 2845|     10|    assert(iter.node_ == root());
 2846|     10|    node_type *old_root = iter.node_;
 2847|     10|    node_type *new_root = iter.node_ = new_leaf_root_node(new_node_size);
 2848|     10|    transfer_and_delete(old_root, new_root);
 2849|     10|    mutable_root() = mutable_rightmost() = new_root;
 2850|     10|  };
 2851|       |
 2852|     10|  bool replaced_node = false;
 2853|     10|  if (iter.node_->count() == max_count) {
  ------------------
  |  Branch (2853:7): [True: 6, False: 4]
  ------------------
 2854|       |    // Make room in the leaf for the new item.
 2855|      6|    if (max_count < kNodeSlots) {
  ------------------
  |  Branch (2855:9): [True: 6, False: 0]
  ------------------
 2856|       |      // Insertion into the root where the root is smaller than the full node
 2857|       |      // size. Simply grow the size of the root node.
 2858|      6|      replace_leaf_root_node(static_cast<field_type>(
 2859|      6|          (std::min)(static_cast<int>(kNodeSlots), 2 * max_count)));
 2860|      6|      replaced_node = true;
 2861|      6|    } else {
 2862|      0|      rebalance_or_split(&iter);
 2863|      0|    }
 2864|      6|  }
 2865|     10|  (void)replaced_node;
 2866|       |#ifdef ABSL_HAVE_ADDRESS_SANITIZER
 2867|       |  if (!replaced_node) {
 2868|       |    assert(iter.node_->is_leaf());
 2869|       |    if (iter.node_->is_root()) {
 2870|       |      replace_leaf_root_node(max_count);
 2871|       |    } else {
 2872|       |      node_type *old_node = iter.node_;
 2873|       |      const bool was_rightmost = rightmost() == old_node;
 2874|       |      const bool was_leftmost = leftmost() == old_node;
 2875|       |      node_type *parent = old_node->parent();
 2876|       |      const field_type position = old_node->position();
 2877|       |      node_type *new_node = iter.node_ = new_leaf_node(position, parent);
 2878|       |      parent->set_child_noupdate_position(position, new_node);
 2879|       |      transfer_and_delete(old_node, new_node);
 2880|       |      if (was_rightmost) mutable_rightmost() = new_node;
 2881|       |      // The leftmost node is stored as the parent of the root node.
 2882|       |      if (was_leftmost) root()->set_parent(new_node);
 2883|       |    }
 2884|       |  }
 2885|       |#endif
 2886|     10|  iter.node_->emplace_value(static_cast<field_type>(iter.position_), alloc,
 2887|     10|                            std::forward<Args>(args)...);
 2888|     10|  assert(
 2889|     10|      iter.node_->is_ordered_correctly(static_cast<field_type>(iter.position_),
 2890|     10|                                       original_key_compare(key_comp())) &&
 2891|     10|      "If this assert fails, then either (1) the comparator may violate "
 2892|     10|      "transitivity, i.e. comp(a,b) && comp(b,c) -> comp(a,c) (see "
 2893|     10|      "https://en.cppreference.com/w/cpp/named_req/Compare), or (2) a "
 2894|     10|      "key may have been mutated after it was inserted into the tree.");
 2895|     10|  ++size_;
 2896|     10|  iter.update_generation();
 2897|     10|  return iter;
 2898|     10|}
_ZZN4absl18container_internal5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE16internal_emplaceIJS7_EEENS0_14btree_iteratorINS0_10btree_nodeISC_EERS7_PS7_EESK_DpOT_ENKUlhE_clEh:
 2844|      6|  const auto replace_leaf_root_node = [&](field_type new_node_size) {
 2845|      6|    assert(iter.node_ == root());
 2846|      6|    node_type *old_root = iter.node_;
 2847|      6|    node_type *new_root = iter.node_ = new_leaf_root_node(new_node_size);
 2848|      6|    transfer_and_delete(old_root, new_root);
 2849|      6|    mutable_root() = mutable_rightmost() = new_root;
 2850|      6|  };
_ZZN4absl18container_internal5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE16internal_emplaceIJS7_EEENS0_14btree_iteratorINS0_10btree_nodeISC_EERS7_PS7_EESK_DpOT_ENKUlPSH_SO_E_clESO_SO_:
 2836|      6|                                       node_type *new_node) {
 2837|      6|    new_node->transfer_n(old_node->count(), new_node->start(),
 2838|      6|                         old_node->start(), old_node, alloc);
 2839|      6|    new_node->set_finish(old_node->finish());
 2840|      6|    old_node->set_finish(old_node->start());
 2841|      6|    new_node->set_generation(old_node->generation());
 2842|      6|    node_type::clear_and_delete(old_node, alloc);
 2843|      6|  };
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE10transfer_nEmmmPSD_PSB_:
 1020|      6|                  allocator_type *alloc) {
 1021|      6|    next_generation();
 1022|      6|    for (slot_type *src = src_node->slot(src_i), *end = src + n,
 1023|      6|                   *dest = slot(dest_i);
 1024|     20|         src != end; ++src, ++dest) {
  ------------------
  |  Branch (1024:10): [True: 14, False: 6]
  ------------------
 1025|     14|      transfer(dest, src, alloc);
 1026|     14|    }
 1027|      6|  }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE8transferEPS7_SE_PSB_:
 1003|     26|  static void transfer(slot_type *dest, slot_type *src, allocator_type *alloc) {
 1004|     26|    absl::container_internal::SanitizerUnpoisonObject(dest);
 1005|     26|    params_type::transfer(alloc, dest, src);
 1006|     26|    absl::container_internal::SanitizerPoisonObject(src);
 1007|     26|  }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE19transfer_n_backwardEmmmPSD_PSB_:
 1033|      4|                           allocator_type *alloc) {
 1034|      4|    next_generation();
 1035|      4|    for (slot_type *src = src_node->slot(src_i + n), *end = src - n,
 1036|      4|                   *dest = slot(dest_i + n);
 1037|     16|         src != end; --src, --dest) {
  ------------------
  |  Branch (1037:10): [True: 12, False: 4]
  ------------------
 1038|       |      // If we modified the loop index calculations above to avoid the -1s here,
 1039|       |      // it would result in UB in the computation of `end` (and possibly `src`
 1040|       |      // as well, if n == 0), since slot() is effectively an array index and it
 1041|       |      // is UB to compute the address of any out-of-bounds array element except
 1042|       |      // for one-past-the-end.
 1043|     12|      transfer(dest - 1, src - 1, alloc);
 1044|     12|    }
 1045|      4|  }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE13emplace_valueIJS7_EEEvhPSB_DpOT_:
 1817|     10|                                         Args &&...args) {
 1818|     10|  assert(i >= start());
 1819|     10|  assert(i <= finish());
 1820|       |  // Shift old values to create space for new value and then construct it in
 1821|       |  // place.
 1822|     10|  if (i < finish()) {
  ------------------
  |  Branch (1822:7): [True: 4, False: 6]
  ------------------
 1823|      4|    transfer_n_backward(finish() - i, /*dest_i=*/i + 1, /*src_i=*/i, this,
 1824|      4|                        alloc);
 1825|      4|  }
 1826|     10|  value_init(static_cast<field_type>(i), alloc, std::forward<Args>(args)...);
 1827|     10|  set_finish(finish() + 1);
 1828|       |
 1829|     10|  if (is_internal() && finish() > i + 1) {
  ------------------
  |  Branch (1829:7): [True: 0, False: 10]
  |  Branch (1829:24): [True: 0, False: 0]
  ------------------
 1830|      0|    for (field_type j = finish(); j > i + 1; --j) {
  ------------------
  |  Branch (1830:35): [True: 0, False: 0]
  ------------------
 1831|      0|      set_child(j, child(j - 1));
 1832|      0|    }
 1833|      0|    clear_child(i + 1);
 1834|      0|  }
 1835|     10|}
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS6_11FileCompareENSt3__19allocatorIS7_EELi256ELb0EEEE10value_initIJS7_EEEvhPSB_DpOT_:
  984|     10|  void value_init(const field_type i, allocator_type *alloc, Args &&...args) {
  985|     10|    next_generation();
  986|     10|    absl::container_internal::SanitizerUnpoisonObject(slot(i));
  987|     10|    params_type::construct(alloc, slot(i), std::forward<Args>(args)...);
  988|     10|  }
_ZNK4absl18container_internal5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE11upper_boundIS7_EENS0_14btree_iteratorIKNS0_10btree_nodeISC_EERKS7_PSJ_EERKT_:
 1482|     64|  const_iterator upper_bound(const K &key) const {
 1483|     64|    return internal_end(internal_upper_bound(key));
 1484|     64|  }
_ZNK4absl18container_internal5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE12internal_endENS0_14btree_iteratorIKNS0_10btree_nodeISC_EERKS7_PSI_EE:
 1740|     64|  const_iterator internal_end(const_iterator iter) const {
 1741|     64|    return iter.node_ != nullptr ? iter : end();
  ------------------
  |  Branch (1741:12): [True: 58, False: 6]
  ------------------
 1742|     64|  }
_ZNK4absl18container_internal5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE3endEv:
 1449|      6|  const_iterator end() const {
 1450|      6|    return const_iterator(rightmost(), rightmost()->finish());
 1451|      6|  }
_ZNK4absl18container_internal5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE9rightmostEv:
 1673|     12|  const node_type *rightmost() const { return rightmost_.template get<2>(); }
_ZN4absl18container_internal14btree_iteratorIKNS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS7_13SymbolCompareENSt3__19allocatorIS8_EELi256ELb0EEEEERKS8_PSG_EC2EPSF_i:
 1144|     70|        position_(p) {}
_ZNK4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE10generationEv:
  738|    338|  uint32_t generation() const {
  739|    338|    return BtreeGenerationsEnabled() ? *get_root_generation() : 0;
  ------------------
  |  Branch (739:12): [Folded - Ignored]
  ------------------
  740|    338|  }
_ZNK4absl18container_internal5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE20internal_upper_boundIS7_EENS0_14btree_iteratorINS0_10btree_nodeISC_EERS7_PS7_EERKT_:
 2953|     64|auto btree<P>::internal_upper_bound(const K &key) const -> iterator {
 2954|     64|  iterator iter(const_cast<node_type *>(root()));
 2955|    112|  for (;;) {
 2956|    112|    iter.position_ = static_cast<int>(iter.node_->upper_bound(key, key_comp()));
 2957|    112|    if (iter.node_->is_leaf()) {
  ------------------
  |  Branch (2957:9): [True: 64, False: 48]
  ------------------
 2958|     64|      break;
 2959|     64|    }
 2960|     48|    iter.node_ = iter.node_->child(static_cast<field_type>(iter.position_));
 2961|     48|  }
 2962|     64|  return internal_last(iter);
 2963|     64|}
_ZNK4absl18container_internal5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE4rootEv:
 1670|    136|  const node_type *root() const { return root_; }
_ZN4absl18container_internal14btree_iteratorINS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS7_13SymbolCompareENSt3__19allocatorIS8_EELi256ELb0EEEEERS8_PS8_EC2EPSE_:
 1139|    134|  explicit btree_iterator(Node *n) : btree_iterator(n, n->start()) {}
_ZN4absl18container_internal14btree_iteratorINS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS7_13SymbolCompareENSt3__19allocatorIS8_EELi256ELb0EEEEERS8_PS8_EC2EPSE_i:
 1144|    260|        position_(p) {}
_ZNK4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE11upper_boundIS7_EEmRKT_RKNS0_19key_compare_adapterIS8_S7_E15checked_compareE:
  787|    112|  size_type upper_bound(const K &k, const key_compare &comp) const {
  788|    112|    auto upper_compare = upper_bound_adapter<key_compare>(comp);
  789|    112|    return use_linear_search::value ? linear_search(k, upper_compare).value
  ------------------
  |  Branch (789:12): [Folded - Ignored]
  ------------------
  790|    112|                                    : binary_search(k, upper_compare).value;
  791|    112|  }
_ZN4absl18container_internal19upper_bound_adapterINS0_19key_compare_adapterIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex13SymbolCompareENS6_11SymbolEntryEE15checked_compareEEC2ERKSA_:
  450|    112|  explicit upper_bound_adapter(const Compare &c) : comp(c) {}
_ZNK4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE13binary_searchIS7_NS0_19upper_bound_adapterINS0_19key_compare_adapterIS8_S7_E15checked_compareEEEEENS0_12SearchResultImXsr23btree_is_key_compare_toIT0_S7_EE5valueEEERKT_RKSL_:
  802|    112|  binary_search(const K &k, const Compare &comp) const {
  803|    112|    return binary_search_impl(k, start(), finish(), comp,
  804|    112|                              btree_is_key_compare_to<Compare, key_type>());
  805|    112|  }
_ZNK4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE18binary_search_implIS7_NS0_19upper_bound_adapterINS0_19key_compare_adapterIS8_S7_E15checked_compareEEEEENS0_12SearchResultImLb0EEERKT_mmRKT0_NS9_17integral_constantIbLb0EEE:
  845|    112|      std::false_type /* IsCompareTo */) const {
  846|    336|    while (s != e) {
  ------------------
  |  Branch (846:12): [True: 224, False: 112]
  ------------------
  847|    224|      const size_type mid = (s + e) >> 1;
  848|    224|      if (comp(key(mid), k)) {
  ------------------
  |  Branch (848:11): [True: 102, False: 122]
  ------------------
  849|    102|        s = mid + 1;
  850|    122|      } else {
  851|    122|        e = mid;
  852|    122|      }
  853|    224|    }
  854|    112|    return SearchResult<size_type, false>{s};
  855|    112|  }
_ZNK4absl18container_internal19upper_bound_adapterINS0_19key_compare_adapterIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex13SymbolCompareENS6_11SymbolEntryEE15checked_compareEEclIS8_S8_EEbRKT_RKT0_:
  452|    224|  bool operator()(const K1 &a, const K2 &b) const {
  453|       |    // Returns true when a is not greater than b.
  454|    224|    return !compare_internal::compare_result_as_less_than(comp(b, a));
  455|    224|  }
_ZNK4absl18container_internal19key_compare_adapterIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex13SymbolCompareENS5_11SymbolEntryEE15checked_compareclIS7_S7_Li0EEEbRKT_RKT0_:
  235|    366|    bool operator()(const T &lhs, const U &rhs) const {
  236|       |      // NOTE: if any of these assertions fail, then the comparator does not
  237|       |      // establish a strict-weak-ordering (see
  238|       |      // https://en.cppreference.com/w/cpp/named_req/Compare).
  239|    366|      assert(is_self_equivalent(lhs));
  240|    366|      assert(is_self_equivalent(rhs));
  241|    366|      const bool lhs_comp_rhs = comp()(lhs, rhs);
  242|    366|      assert(!lhs_comp_rhs || !comp()(rhs, lhs));
  243|    366|      return lhs_comp_rhs;
  244|    366|    }
_ZNK4absl18container_internal20checked_compare_baseIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex13SymbolCompareELb1EE4compEv:
  174|    366|  const Compare &comp() const { return *this; }
_ZNK4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE3keyEm:
  752|    366|  const key_type &key(size_type i) const { return params_type::key(slot(i)); }
_ZNK4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE4slotEm:
  675|    486|  const slot_type *slot(size_type i) const { return &GetField<3>()[i]; }
_ZNK4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE8GetFieldILm3EEEPKNS9_13tuple_elementIXT_ENS9_5tupleIJPSD_jhS7_SH_EEEE4typeEv:
  665|    486|  inline const typename layout_type::template ElementType<N> *GetField() const {
  666|    486|    assert(N < 4 || is_internal());
  667|    486|    return InternalLayout().template Pointer<N>(
  668|    486|        reinterpret_cast<const char *>(this));
  669|    486|  }
_ZNK4absl18container_internal5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE8key_compEv:
 1575|    312|  const key_compare &key_comp() const noexcept {
 1576|    312|    return rightmost_.template get<0>();
 1577|    312|  }
_ZN4absl18container_internal5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE13internal_lastINS0_14btree_iteratorINS0_10btree_nodeISC_EERS7_PS7_EEEET_SL_:
 2808|     72|inline IterType btree<P>::internal_last(IterType iter) {
 2809|     72|  assert(iter.node_ != nullptr);
 2810|     80|  while (iter.position_ == iter.node_->finish()) {
  ------------------
  |  Branch (2810:10): [True: 16, False: 64]
  ------------------
 2811|     16|    iter.position_ = iter.node_->position();
 2812|     16|    iter.node_ = iter.node_->parent();
 2813|     16|    if (iter.node_->is_leaf()) {
  ------------------
  |  Branch (2813:9): [True: 8, False: 8]
  ------------------
 2814|      8|      iter.node_ = nullptr;
 2815|      8|      break;
 2816|      8|    }
 2817|     16|  }
 2818|     72|  iter.update_generation();
 2819|     72|  return iter;
 2820|     72|}
_ZN4absl18container_internal14btree_iteratorINS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS7_13SymbolCompareENSt3__19allocatorIS8_EELi256ELb0EEEEERS8_PS8_E17update_generationEv:
 1301|    136|  void update_generation() {
 1302|    136|    btree_iterator_generation_info::update_generation(node_);
 1303|    136|  }
_ZN4absl18container_internal14btree_iteratorIKNS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS7_13SymbolCompareENSt3__19allocatorIS8_EELi256ELb0EEEEERKS8_PSG_EC2ISE_RS8_PS8_Li0EEENS1_IT_T0_T1_EE:
 1157|    314|        position_(other.position_) {}
_ZNK4absl18container_internal14btree_iteratorIKNS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS7_13SymbolCompareENSt3__19allocatorIS8_EELi256ELb0EEEEERKS8_PSG_EneERKSJ_:
 1168|     64|  bool operator!=(const const_iterator &other) const {
 1169|     64|    return !Equals(other);
 1170|     64|  }
_ZNK4absl18container_internal14btree_iteratorIKNS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS7_13SymbolCompareENSt3__19allocatorIS8_EELi256ELb0EEEEERKS8_PSG_E6EqualsESJ_:
 1245|    190|  bool Equals(const const_iterator other) const {
 1246|    190|    ABSL_HARDENING_ASSERT(((node_ == nullptr && other.node_ == nullptr) ||
  ------------------
  |  |  128|    190|#define ABSL_HARDENING_ASSERT(expr) ABSL_ASSERT(expr)
  |  |  ------------------
  |  |  |  |   95|    190|  (false ? static_cast<void>(expr) : static_cast<void>(0))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (95:4): [Folded - Ignored]
  |  |  |  |  |  Branch (95:30): [True: 0, False: 0]
  |  |  |  |  |  Branch (95:30): [True: 0, False: 0]
  |  |  |  |  |  Branch (95:30): [True: 0, False: 0]
  |  |  |  |  |  Branch (95:30): [True: 0, False: 0]
  |  |  |  |  |  Branch (95:30): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1247|    190|                           (node_ != nullptr && other.node_ != nullptr)) &&
 1248|    190|                          "Comparing default-constructed iterator with "
 1249|    190|                          "non-default-constructed iterator.");
 1250|       |    // Note: we use assert instead of ABSL_HARDENING_ASSERT here because this
 1251|       |    // changes the complexity of Equals from O(1) to O(log(N) + log(M)) where
 1252|       |    // N/M are sizes of the containers containing node_/other.node_.
 1253|    190|    assert(AreNodesFromSameContainer(node_, other.node_) &&
 1254|    190|           "Comparing iterators from different containers.");
 1255|    190|    assert_valid_generation(node_);
 1256|    190|    other.assert_valid_generation(other.node_);
 1257|    190|    return node_ == other.node_ && position_ == other.position_;
  ------------------
  |  Branch (1257:12): [True: 90, False: 100]
  |  Branch (1257:36): [True: 14, False: 76]
  ------------------
 1258|    190|  }
_ZNK4absl18container_internal5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE5beginEv:
 1447|     64|  const_iterator begin() const { return const_iterator(leftmost()); }
_ZNK4absl18container_internal5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE8leftmostEv:
 1683|     64|  const node_type *leftmost() const { return root()->parent(); }
_ZN4absl18container_internal14btree_iteratorIKNS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS7_13SymbolCompareENSt3__19allocatorIS8_EELi256ELb0EEEEERKS8_PSG_EC2EPSF_:
 1139|     64|  explicit btree_iterator(Node *n) : btree_iterator(n, n->start()) {}
_ZN4absl18container_internal14btree_iteratorIKNS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS7_13SymbolCompareENSt3__19allocatorIS8_EELi256ELb0EEEEERKS8_PSG_EmmEv:
 1199|     56|  btree_iterator &operator--() {
 1200|     56|    decrement();
 1201|     56|    return *this;
 1202|     56|  }
_ZN4absl18container_internal14btree_iteratorIKNS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS7_13SymbolCompareENSt3__19allocatorIS8_EELi256ELb0EEEEERKS8_PSG_E9decrementEv:
 1285|     56|  void decrement() {
 1286|     56|    assert_valid_generation(node_);
 1287|     56|    if (node_->is_leaf() && --position_ >= node_->start()) {
  ------------------
  |  Branch (1287:9): [True: 48, False: 8]
  |  Branch (1287:29): [True: 32, False: 16]
  ------------------
 1288|     32|      return;
 1289|     32|    }
 1290|     24|    decrement_slow();
 1291|     24|  }
_ZN4absl18container_internal14btree_iteratorIKNS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS7_13SymbolCompareENSt3__19allocatorIS8_EELi256ELb0EEEEERKS8_PSG_E14decrement_slowEv:
 2169|     24|void btree_iterator<N, R, P>::decrement_slow() {
 2170|     24|  if (node_->is_leaf()) {
  ------------------
  |  Branch (2170:7): [True: 16, False: 8]
  ------------------
 2171|     16|    assert(position_ <= -1);
 2172|     16|    btree_iterator save(*this);
 2173|     32|    while (position_ < node_->start() && !node_->is_root()) {
  ------------------
  |  Branch (2173:12): [True: 16, False: 16]
  |  Branch (2173:42): [True: 16, False: 0]
  ------------------
 2174|     16|      assert(node_->parent()->child(node_->position()) == node_);
 2175|     16|      position_ = node_->position() - 1;
 2176|     16|      node_ = node_->parent();
 2177|     16|    }
 2178|       |    // TODO(ezb): assert we aren't decrementing begin() instead of handling.
 2179|     16|    if (position_ < node_->start()) {
  ------------------
  |  Branch (2179:9): [True: 0, False: 16]
  ------------------
 2180|      0|      *this = save;
 2181|      0|    }
 2182|     16|  } else {
 2183|      8|    assert(position_ >= node_->start());
 2184|      8|    node_ = node_->child(static_cast<field_type>(position_));
 2185|      8|    while (node_->is_internal()) {
  ------------------
  |  Branch (2185:12): [True: 0, False: 8]
  ------------------
 2186|      0|      node_ = node_->child(node_->finish());
 2187|      0|    }
 2188|      8|    position_ = node_->finish() - 1;
 2189|      8|  }
 2190|     24|}
_ZNK4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE7is_rootEv:
  722|     46|  bool is_root() const { return parent()->is_leaf(); }
_ZN4absl18container_internal5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE3endEv:
 1448|    126|  iterator end() { return iterator(rightmost(), rightmost()->finish()); }
_ZN4absl18container_internal5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE9rightmostEv:
 1672|    260|  node_type *rightmost() { return rightmost_.template get<2>(); }
_ZNK4absl18container_internal14btree_iteratorIKNS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS7_13SymbolCompareENSt3__19allocatorIS8_EELi256ELb0EEEEERKS8_PSG_EneERKNS1_ISE_RS8_PS8_EE:
 1165|    126|  bool operator!=(const iterator &other) const {
 1166|    126|    return !Equals(other);
 1167|    126|  }
_ZNK4absl18container_internal14btree_iteratorIKNS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS7_13SymbolCompareENSt3__19allocatorIS8_EELi256ELb0EEEEERKS8_PSG_EptEv:
 1193|    120|  pointer operator->() const { return &operator*(); }
_ZNK4absl18container_internal14btree_iteratorIKNS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS7_13SymbolCompareENSt3__19allocatorIS8_EELi256ELb0EEEEERKS8_PSG_EdeEv:
 1183|    120|  reference operator*() const {
 1184|    120|    ABSL_HARDENING_ASSERT(node_ != nullptr);
  ------------------
  |  |  128|    120|#define ABSL_HARDENING_ASSERT(expr) ABSL_ASSERT(expr)
  |  |  ------------------
  |  |  |  |   95|    120|  (false ? static_cast<void>(expr) : static_cast<void>(0))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (95:4): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1185|    120|    assert_valid_generation(node_);
 1186|    120|    ABSL_HARDENING_ASSERT(position_ >= node_->start());
  ------------------
  |  |  128|    120|#define ABSL_HARDENING_ASSERT(expr) ABSL_ASSERT(expr)
  |  |  ------------------
  |  |  |  |   95|    120|  (false ? static_cast<void>(expr) : static_cast<void>(0))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (95:4): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1187|    120|    if (position_ >= node_->finish()) {
  ------------------
  |  Branch (1187:9): [True: 0, False: 120]
  ------------------
 1188|      0|      ABSL_HARDENING_ASSERT(!IsEndIterator() && "Dereferencing end() iterator");
  ------------------
  |  |  128|      0|#define ABSL_HARDENING_ASSERT(expr) ABSL_ASSERT(expr)
  |  |  ------------------
  |  |  |  |   95|      0|  (false ? static_cast<void>(expr) : static_cast<void>(0))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (95:4): [Folded - Ignored]
  |  |  |  |  |  Branch (95:30): [True: 0, False: 0]
  |  |  |  |  |  Branch (95:30): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1189|      0|      ABSL_HARDENING_ASSERT(position_ < node_->finish());
  ------------------
  |  |  128|      0|#define ABSL_HARDENING_ASSERT(expr) ABSL_ASSERT(expr)
  |  |  ------------------
  |  |  |  |   95|      0|  (false ? static_cast<void>(expr) : static_cast<void>(0))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (95:4): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1190|      0|    }
 1191|    120|    return node_->value(static_cast<field_type>(position_));
 1192|    120|  }
_ZNK4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE5valueEm:
  754|    120|  const_reference value(size_type i) const {
  755|    120|    return params_type::element(slot(i));
  756|    120|  }
_ZN4absl18container_internal14btree_iteratorIKNS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS7_13SymbolCompareENSt3__19allocatorIS8_EELi256ELb0EEEEERKS8_PSG_EppEv:
 1195|     62|  btree_iterator &operator++() {
 1196|     62|    increment();
 1197|     62|    return *this;
 1198|     62|  }
_ZN4absl18container_internal14btree_iteratorIKNS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS7_13SymbolCompareENSt3__19allocatorIS8_EELi256ELb0EEEEERKS8_PSG_E9incrementEv:
 1276|     62|  void increment() {
 1277|     62|    assert_valid_generation(node_);
 1278|     62|    if (node_->is_leaf() && ++position_ < node_->finish()) {
  ------------------
  |  Branch (1278:9): [True: 46, False: 16]
  |  Branch (1278:29): [True: 32, False: 14]
  ------------------
 1279|     32|      return;
 1280|     32|    }
 1281|     30|    increment_slow();
 1282|     30|  }
_ZN4absl18container_internal14btree_iteratorIKNS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS7_13SymbolCompareENSt3__19allocatorIS8_EELi256ELb0EEEEERKS8_PSG_E14increment_slowEv:
 2145|     30|void btree_iterator<N, R, P>::increment_slow() {
 2146|     30|  if (node_->is_leaf()) {
  ------------------
  |  Branch (2146:7): [True: 14, False: 16]
  ------------------
 2147|     14|    assert(position_ >= node_->finish());
 2148|     14|    btree_iterator save(*this);
 2149|     24|    while (position_ == node_->finish() && !node_->is_root()) {
  ------------------
  |  Branch (2149:12): [True: 14, False: 10]
  |  Branch (2149:44): [True: 10, False: 4]
  ------------------
 2150|     10|      assert(node_->parent()->child(node_->position()) == node_);
 2151|     10|      position_ = node_->position();
 2152|     10|      node_ = node_->parent();
 2153|     10|    }
 2154|       |    // TODO(ezb): assert we aren't incrementing end() instead of handling.
 2155|     14|    if (position_ == node_->finish()) {
  ------------------
  |  Branch (2155:9): [True: 4, False: 10]
  ------------------
 2156|      4|      *this = save;
 2157|      4|    }
 2158|     16|  } else {
 2159|     16|    assert(position_ < node_->finish());
 2160|     16|    node_ = node_->child(static_cast<field_type>(position_ + 1));
 2161|     16|    while (node_->is_internal()) {
  ------------------
  |  Branch (2161:12): [True: 0, False: 16]
  ------------------
 2162|      0|      node_ = node_->start_child();
 2163|      0|    }
 2164|     16|    position_ = node_->start();
 2165|     16|  }
 2166|     30|}
_ZN4absl18container_internal5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE18insert_hint_uniqueIS7_JRKS7_EEENS9_4pairINS0_14btree_iteratorINS0_10btree_nodeISC_EERS7_PS7_EEbEESN_RKT_DpOT0_:
 2315|     64|    -> std::pair<iterator, bool> {
 2316|     64|  if (!empty()) {
  ------------------
  |  Branch (2316:7): [True: 62, False: 2]
  ------------------
 2317|     62|    if (position == end() || compare_keys(key, position.key())) {
  ------------------
  |  Branch (2317:9): [True: 4, False: 58]
  |  Branch (2317:9): [True: 62, False: 0]
  |  Branch (2317:30): [True: 58, False: 0]
  ------------------
 2318|     62|      if (position == begin() || compare_keys(std::prev(position).key(), key)) {
  ------------------
  |  Branch (2318:11): [True: 0, False: 62]
  |  Branch (2318:11): [True: 56, False: 6]
  |  Branch (2318:34): [True: 56, False: 6]
  ------------------
 2319|       |        // prev.key() < key < position.key()
 2320|     56|        return {internal_emplace(position, std::forward<Args>(args)...), true};
 2321|     56|      }
 2322|     62|    } else if (compare_keys(position.key(), key)) {
  ------------------
  |  Branch (2322:16): [True: 0, False: 0]
  ------------------
 2323|      0|      ++position;
 2324|      0|      if (position == end() || compare_keys(key, position.key())) {
  ------------------
  |  Branch (2324:11): [True: 0, False: 0]
  |  Branch (2324:11): [True: 0, False: 0]
  |  Branch (2324:32): [True: 0, False: 0]
  ------------------
 2325|       |        // {original `position`}.key() < key < {current `position`}.key()
 2326|      0|        return {internal_emplace(position, std::forward<Args>(args)...), true};
 2327|      0|      }
 2328|      0|    } else {
 2329|       |      // position.key() == key
 2330|      0|      return {position, false};
 2331|      0|    }
 2332|     62|  }
 2333|      8|  return insert_unique(key, std::forward<Args>(args)...);
 2334|     64|}
_ZNK4absl18container_internal14btree_iteratorINS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS7_13SymbolCompareENSt3__19allocatorIS8_EELi256ELb0EEEEERS8_PS8_EeqERKSH_:
 1159|    124|  bool operator==(const iterator &other) const {
 1160|    124|    return Equals(other);
 1161|    124|  }
_ZNK4absl18container_internal14btree_iteratorINS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS7_13SymbolCompareENSt3__19allocatorIS8_EELi256ELb0EEEEERS8_PS8_E6EqualsENS1_IKSE_RKS8_PSJ_EE:
 1245|    124|  bool Equals(const const_iterator other) const {
 1246|    124|    ABSL_HARDENING_ASSERT(((node_ == nullptr && other.node_ == nullptr) ||
  ------------------
  |  |  128|    124|#define ABSL_HARDENING_ASSERT(expr) ABSL_ASSERT(expr)
  |  |  ------------------
  |  |  |  |   95|    124|  (false ? static_cast<void>(expr) : static_cast<void>(0))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (95:4): [Folded - Ignored]
  |  |  |  |  |  Branch (95:30): [True: 0, False: 0]
  |  |  |  |  |  Branch (95:30): [True: 0, False: 0]
  |  |  |  |  |  Branch (95:30): [True: 0, False: 0]
  |  |  |  |  |  Branch (95:30): [True: 0, False: 0]
  |  |  |  |  |  Branch (95:30): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1247|    124|                           (node_ != nullptr && other.node_ != nullptr)) &&
 1248|    124|                          "Comparing default-constructed iterator with "
 1249|    124|                          "non-default-constructed iterator.");
 1250|       |    // Note: we use assert instead of ABSL_HARDENING_ASSERT here because this
 1251|       |    // changes the complexity of Equals from O(1) to O(log(N) + log(M)) where
 1252|       |    // N/M are sizes of the containers containing node_/other.node_.
 1253|    124|    assert(AreNodesFromSameContainer(node_, other.node_) &&
 1254|    124|           "Comparing iterators from different containers.");
 1255|    124|    assert_valid_generation(node_);
 1256|    124|    other.assert_valid_generation(other.node_);
 1257|    124|    return node_ == other.node_ && position_ == other.position_;
  ------------------
  |  Branch (1257:12): [True: 54, False: 70]
  |  Branch (1257:36): [True: 4, False: 50]
  ------------------
 1258|    124|  }
_ZNK4absl18container_internal5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE12compare_keysIS7_S7_EEbRKT_RKT0_:
 1579|    126|  bool compare_keys(const K1 &a, const K2 &b) const {
 1580|    126|    return compare_internal::compare_result_as_less_than(key_comp()(a, b));
 1581|    126|  }
_ZNK4absl18container_internal14btree_iteratorINS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS7_13SymbolCompareENSt3__19allocatorIS8_EELi256ELb0EEEEERS8_PS8_E3keyEv:
 1294|    126|  const key_type &key() const {
 1295|    126|    return node_->key(static_cast<size_type>(position_));
 1296|    126|  }
_ZN4absl18container_internal5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE5beginEv:
 1446|     62|  iterator begin() { return iterator(leftmost()); }
_ZN4absl18container_internal5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE8leftmostEv:
 1682|     62|  node_type *leftmost() { return root()->parent(); }
_ZN4absl18container_internal14btree_iteratorINS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS7_13SymbolCompareENSt3__19allocatorIS8_EELi256ELb0EEEEERS8_PS8_EmmEv:
 1199|     70|  btree_iterator &operator--() {
 1200|     70|    decrement();
 1201|     70|    return *this;
 1202|     70|  }
_ZN4absl18container_internal14btree_iteratorINS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS7_13SymbolCompareENSt3__19allocatorIS8_EELi256ELb0EEEEERS8_PS8_E9decrementEv:
 1285|     70|  void decrement() {
 1286|     70|    assert_valid_generation(node_);
 1287|     70|    if (node_->is_leaf() && --position_ >= node_->start()) {
  ------------------
  |  Branch (1287:9): [True: 52, False: 18]
  |  Branch (1287:29): [True: 36, False: 16]
  ------------------
 1288|     36|      return;
 1289|     36|    }
 1290|     34|    decrement_slow();
 1291|     34|  }
_ZN4absl18container_internal14btree_iteratorINS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS7_13SymbolCompareENSt3__19allocatorIS8_EELi256ELb0EEEEERS8_PS8_E14decrement_slowEv:
 2169|     34|void btree_iterator<N, R, P>::decrement_slow() {
 2170|     34|  if (node_->is_leaf()) {
  ------------------
  |  Branch (2170:7): [True: 16, False: 18]
  ------------------
 2171|     16|    assert(position_ <= -1);
 2172|     16|    btree_iterator save(*this);
 2173|     32|    while (position_ < node_->start() && !node_->is_root()) {
  ------------------
  |  Branch (2173:12): [True: 16, False: 16]
  |  Branch (2173:42): [True: 16, False: 0]
  ------------------
 2174|     16|      assert(node_->parent()->child(node_->position()) == node_);
 2175|     16|      position_ = node_->position() - 1;
 2176|     16|      node_ = node_->parent();
 2177|     16|    }
 2178|       |    // TODO(ezb): assert we aren't decrementing begin() instead of handling.
 2179|     16|    if (position_ < node_->start()) {
  ------------------
  |  Branch (2179:9): [True: 0, False: 16]
  ------------------
 2180|      0|      *this = save;
 2181|      0|    }
 2182|     18|  } else {
 2183|     18|    assert(position_ >= node_->start());
 2184|     18|    node_ = node_->child(static_cast<field_type>(position_));
 2185|     18|    while (node_->is_internal()) {
  ------------------
  |  Branch (2185:12): [True: 0, False: 18]
  ------------------
 2186|      0|      node_ = node_->child(node_->finish());
 2187|      0|    }
 2188|     18|    position_ = node_->finish() - 1;
 2189|     18|  }
 2190|     34|}
_ZN4absl18container_internal5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE16internal_emplaceIJRKS7_EEENS0_14btree_iteratorINS0_10btree_nodeISC_EERS7_PS7_EESM_DpOT_:
 2825|     64|    -> iterator {
 2826|     64|  if (iter.node_->is_internal()) {
  ------------------
  |  Branch (2826:7): [True: 8, False: 56]
  ------------------
 2827|       |    // We can't insert on an internal node. Instead, we'll insert after the
 2828|       |    // previous value which is guaranteed to be on a leaf node.
 2829|      8|    --iter;
 2830|      8|    ++iter.position_;
 2831|      8|  }
 2832|     64|  const field_type max_count = iter.node_->max_count();
 2833|     64|  allocator_type *alloc = mutable_allocator();
 2834|       |
 2835|     64|  const auto transfer_and_delete = [&](node_type *old_node,
 2836|     64|                                       node_type *new_node) {
 2837|     64|    new_node->transfer_n(old_node->count(), new_node->start(),
 2838|     64|                         old_node->start(), old_node, alloc);
 2839|     64|    new_node->set_finish(old_node->finish());
 2840|     64|    old_node->set_finish(old_node->start());
 2841|     64|    new_node->set_generation(old_node->generation());
 2842|     64|    node_type::clear_and_delete(old_node, alloc);
 2843|     64|  };
 2844|     64|  const auto replace_leaf_root_node = [&](field_type new_node_size) {
 2845|     64|    assert(iter.node_ == root());
 2846|     64|    node_type *old_root = iter.node_;
 2847|     64|    node_type *new_root = iter.node_ = new_leaf_root_node(new_node_size);
 2848|     64|    transfer_and_delete(old_root, new_root);
 2849|     64|    mutable_root() = mutable_rightmost() = new_root;
 2850|     64|  };
 2851|       |
 2852|     64|  bool replaced_node = false;
 2853|     64|  if (iter.node_->count() == max_count) {
  ------------------
  |  Branch (2853:7): [True: 26, False: 38]
  ------------------
 2854|       |    // Make room in the leaf for the new item.
 2855|     26|    if (max_count < kNodeSlots) {
  ------------------
  |  Branch (2855:9): [True: 6, False: 20]
  ------------------
 2856|       |      // Insertion into the root where the root is smaller than the full node
 2857|       |      // size. Simply grow the size of the root node.
 2858|      6|      replace_leaf_root_node(static_cast<field_type>(
 2859|      6|          (std::min)(static_cast<int>(kNodeSlots), 2 * max_count)));
 2860|      6|      replaced_node = true;
 2861|     20|    } else {
 2862|     20|      rebalance_or_split(&iter);
 2863|     20|    }
 2864|     26|  }
 2865|     64|  (void)replaced_node;
 2866|       |#ifdef ABSL_HAVE_ADDRESS_SANITIZER
 2867|       |  if (!replaced_node) {
 2868|       |    assert(iter.node_->is_leaf());
 2869|       |    if (iter.node_->is_root()) {
 2870|       |      replace_leaf_root_node(max_count);
 2871|       |    } else {
 2872|       |      node_type *old_node = iter.node_;
 2873|       |      const bool was_rightmost = rightmost() == old_node;
 2874|       |      const bool was_leftmost = leftmost() == old_node;
 2875|       |      node_type *parent = old_node->parent();
 2876|       |      const field_type position = old_node->position();
 2877|       |      node_type *new_node = iter.node_ = new_leaf_node(position, parent);
 2878|       |      parent->set_child_noupdate_position(position, new_node);
 2879|       |      transfer_and_delete(old_node, new_node);
 2880|       |      if (was_rightmost) mutable_rightmost() = new_node;
 2881|       |      // The leftmost node is stored as the parent of the root node.
 2882|       |      if (was_leftmost) root()->set_parent(new_node);
 2883|       |    }
 2884|       |  }
 2885|       |#endif
 2886|     64|  iter.node_->emplace_value(static_cast<field_type>(iter.position_), alloc,
 2887|     64|                            std::forward<Args>(args)...);
 2888|     64|  assert(
 2889|     64|      iter.node_->is_ordered_correctly(static_cast<field_type>(iter.position_),
 2890|     64|                                       original_key_compare(key_comp())) &&
 2891|     64|      "If this assert fails, then either (1) the comparator may violate "
 2892|     64|      "transitivity, i.e. comp(a,b) && comp(b,c) -> comp(a,c) (see "
 2893|     64|      "https://en.cppreference.com/w/cpp/named_req/Compare), or (2) a "
 2894|     64|      "key may have been mutated after it was inserted into the tree.");
 2895|     64|  ++size_;
 2896|     64|  iter.update_generation();
 2897|     64|  return iter;
 2898|     64|}
_ZZN4absl18container_internal5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE16internal_emplaceIJRKS7_EEENS0_14btree_iteratorINS0_10btree_nodeISC_EERS7_PS7_EESM_DpOT_ENKUlhE_clEh:
 2844|      6|  const auto replace_leaf_root_node = [&](field_type new_node_size) {
 2845|      6|    assert(iter.node_ == root());
 2846|      6|    node_type *old_root = iter.node_;
 2847|      6|    node_type *new_root = iter.node_ = new_leaf_root_node(new_node_size);
 2848|      6|    transfer_and_delete(old_root, new_root);
 2849|      6|    mutable_root() = mutable_rightmost() = new_root;
 2850|      6|  };
_ZN4absl18container_internal5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE18new_leaf_root_nodeEh:
 1712|      8|  node_type *new_leaf_root_node(field_type max_count) {
 1713|      8|    node_type *n = allocate(node_type::LeafSize(max_count));
 1714|      8|    n->init_leaf(/*position=*/0, max_count, /*parent=*/n);
 1715|      8|    return n;
 1716|      8|  }
_ZN4absl18container_internal5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE8allocateEm:
 1695|     18|  node_type *allocate(size_type size) {
 1696|     18|    return reinterpret_cast<node_type *>(
 1697|     18|        absl::container_internal::Allocate<node_type::Alignment()>(
 1698|     18|            mutable_allocator(), size));
 1699|     18|  }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE9init_leafEhhPSD_:
  954|     18|                 btree_node *parent) {
  955|     18|    set_generation(0);
  956|     18|    set_parent(parent);
  957|     18|    set_position(position);
  958|     18|    set_start(0);
  959|     18|    set_finish(0);
  960|     18|    set_max_count(max_count);
  961|     18|    absl::container_internal::SanitizerPoisonMemoryRegion(
  962|     18|        start_slot(), max_count * sizeof(slot_type));
  963|     18|  }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE14set_generationEj:
  743|     26|  void set_generation(uint32_t generation) {
  744|     26|    if (BtreeGenerationsEnabled()) GetField<1>()[0] = generation;
  ------------------
  |  Branch (744:9): [Folded - Ignored]
  ------------------
  745|     26|  }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE10set_parentEPSD_:
  670|     20|  void set_parent(btree_node *p) { *GetField<0>() = p; }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE8GetFieldILm0EEEPNS9_13tuple_elementIXT_ENS9_5tupleIJPSD_jhS7_SH_EEEE4typeEv:
  659|     20|  inline typename layout_type::template ElementType<N> *GetField() {
  660|       |    // We assert that we don't read from values that aren't there.
  661|     20|    assert(N < 4 || is_internal());
  662|     20|    return InternalLayout().template Pointer<N>(reinterpret_cast<char *>(this));
  663|     20|  }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE12set_positionEh:
  676|     20|  void set_position(field_type v) { GetField<2>()[0] = v; }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE8GetFieldILm2EEEPNS9_13tuple_elementIXT_ENS9_5tupleIJPSD_jhS7_SH_EEEE4typeEv:
  659|    208|  inline typename layout_type::template ElementType<N> *GetField() {
  660|       |    // We assert that we don't read from values that aren't there.
  661|    208|    assert(N < 4 || is_internal());
  662|    208|    return InternalLayout().template Pointer<N>(reinterpret_cast<char *>(this));
  663|    208|  }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE9set_startEh:
  677|     18|  void set_start(field_type v) { GetField<2>()[1] = v; }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE10set_finishEh:
  678|    142|  void set_finish(field_type v) { GetField<2>()[2] = v; }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE13set_max_countEh:
  680|     20|  void set_max_count(field_type v) { GetField<2>()[3] = v; }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE10start_slotEv:
  673|     18|  slot_type *start_slot() { return slot(start()); }
_ZZN4absl18container_internal5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE16internal_emplaceIJRKS7_EEENS0_14btree_iteratorINS0_10btree_nodeISC_EERS7_PS7_EESM_DpOT_ENKUlPSJ_SQ_E_clESQ_SQ_:
 2836|      6|                                       node_type *new_node) {
 2837|      6|    new_node->transfer_n(old_node->count(), new_node->start(),
 2838|      6|                         old_node->start(), old_node, alloc);
 2839|      6|    new_node->set_finish(old_node->finish());
 2840|      6|    old_node->set_finish(old_node->start());
 2841|      6|    new_node->set_generation(old_node->generation());
 2842|      6|    node_type::clear_and_delete(old_node, alloc);
 2843|      6|  };
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE10transfer_nEmmmPSD_PSB_:
 1020|     36|                  allocator_type *alloc) {
 1021|     36|    next_generation();
 1022|     36|    for (slot_type *src = src_node->slot(src_i), *end = src + n,
 1023|     36|                   *dest = slot(dest_i);
 1024|    162|         src != end; ++src, ++dest) {
  ------------------
  |  Branch (1024:10): [True: 126, False: 36]
  ------------------
 1025|    126|      transfer(dest, src, alloc);
 1026|    126|    }
 1027|     36|  }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE8transferEPS7_SE_PSB_:
 1003|    284|  static void transfer(slot_type *dest, slot_type *src, allocator_type *alloc) {
 1004|    284|    absl::container_internal::SanitizerUnpoisonObject(dest);
 1005|    284|    params_type::transfer(alloc, dest, src);
 1006|    284|    absl::container_internal::SanitizerPoisonObject(src);
 1007|    284|  }
_ZN4absl18container_internal5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE18rebalance_or_splitEPNS0_14btree_iteratorINS0_10btree_nodeISC_EERS7_PS7_EE:
 2621|     20|void btree<P>::rebalance_or_split(iterator *iter) {
 2622|     20|  node_type *&node = iter->node_;
 2623|     20|  int &insert_position = iter->position_;
 2624|     20|  assert(node->count() == node->max_count());
 2625|     20|  assert(kNodeSlots == node->max_count());
 2626|       |
 2627|       |  // First try to make room on the node by rebalancing.
 2628|     20|  node_type *parent = node->parent();
 2629|     20|  if (node != root()) {
  ------------------
  |  Branch (2629:7): [True: 18, False: 2]
  ------------------
 2630|     18|    if (node->position() > parent->start()) {
  ------------------
  |  Branch (2630:9): [True: 18, False: 0]
  ------------------
 2631|       |      // Try rebalancing with our left sibling.
 2632|     18|      node_type *left = parent->child(node->position() - 1);
 2633|     18|      assert(left->max_count() == kNodeSlots);
 2634|     18|      if (left->count() < kNodeSlots) {
  ------------------
  |  Branch (2634:11): [True: 12, False: 6]
  ------------------
 2635|       |        // We bias rebalancing based on the position being inserted. If we're
 2636|       |        // inserting at the end of the right node then we bias rebalancing to
 2637|       |        // fill up the left node.
 2638|     12|        field_type to_move =
 2639|     12|            (kNodeSlots - left->count()) /
 2640|     12|            (1 + (static_cast<field_type>(insert_position) < kNodeSlots));
 2641|     12|        to_move = (std::max)(field_type{1}, to_move);
 2642|       |
 2643|     12|        if (static_cast<field_type>(insert_position) - to_move >=
  ------------------
  |  Branch (2643:13): [True: 8, False: 4]
  ------------------
 2644|     12|                node->start() ||
 2645|     12|            left->count() + to_move < kNodeSlots) {
  ------------------
  |  Branch (2645:13): [True: 2, False: 2]
  ------------------
 2646|     10|          left->rebalance_right_to_left(to_move, node, mutable_allocator());
 2647|       |
 2648|     10|          assert(node->max_count() - node->count() == to_move);
 2649|     10|          insert_position = static_cast<int>(
 2650|     10|              static_cast<field_type>(insert_position) - to_move);
 2651|     10|          if (insert_position < node->start()) {
  ------------------
  |  Branch (2651:15): [True: 2, False: 8]
  ------------------
 2652|      2|            insert_position = insert_position + left->count() + 1;
 2653|      2|            node = left;
 2654|      2|          }
 2655|       |
 2656|     10|          assert(node->count() < node->max_count());
 2657|     10|          return;
 2658|     10|        }
 2659|     12|      }
 2660|     18|    }
 2661|       |
 2662|      8|    if (node->position() < parent->finish()) {
  ------------------
  |  Branch (2662:9): [True: 2, False: 6]
  ------------------
 2663|       |      // Try rebalancing with our right sibling.
 2664|      2|      node_type *right = parent->child(node->position() + 1);
 2665|      2|      assert(right->max_count() == kNodeSlots);
 2666|      2|      if (right->count() < kNodeSlots) {
  ------------------
  |  Branch (2666:11): [True: 2, False: 0]
  ------------------
 2667|       |        // We bias rebalancing based on the position being inserted. If we're
 2668|       |        // inserting at the beginning of the left node then we bias rebalancing
 2669|       |        // to fill up the right node.
 2670|      2|        field_type to_move = (kNodeSlots - right->count()) /
 2671|      2|                             (1 + (insert_position > node->start()));
 2672|      2|        to_move = (std::max)(field_type{1}, to_move);
 2673|       |
 2674|      2|        if (static_cast<field_type>(insert_position) <=
  ------------------
  |  Branch (2674:13): [True: 2, False: 0]
  ------------------
 2675|      2|                node->finish() - to_move ||
 2676|      2|            right->count() + to_move < kNodeSlots) {
  ------------------
  |  Branch (2676:13): [True: 0, False: 0]
  ------------------
 2677|      2|          node->rebalance_left_to_right(to_move, right, mutable_allocator());
 2678|       |
 2679|      2|          if (insert_position > node->finish()) {
  ------------------
  |  Branch (2679:15): [True: 0, False: 2]
  ------------------
 2680|      0|            insert_position = insert_position - node->count() - 1;
 2681|      0|            node = right;
 2682|      0|          }
 2683|       |
 2684|      2|          assert(node->count() < node->max_count());
 2685|      2|          return;
 2686|      2|        }
 2687|      2|      }
 2688|      2|    }
 2689|       |
 2690|       |    // Rebalancing failed, make sure there is room on the parent node for a new
 2691|       |    // value.
 2692|      6|    assert(parent->max_count() == kNodeSlots);
 2693|      6|    if (parent->count() == kNodeSlots) {
  ------------------
  |  Branch (2693:9): [True: 0, False: 6]
  ------------------
 2694|      0|      iterator parent_iter(parent, node->position());
 2695|      0|      rebalance_or_split(&parent_iter);
 2696|      0|      parent = node->parent();
 2697|      0|    }
 2698|      6|  } else {
 2699|       |    // Rebalancing not possible because this is the root node.
 2700|       |    // Create a new root node and set the current root node as the child of the
 2701|       |    // new root.
 2702|      2|    parent = new_internal_node(/*position=*/0, parent);
 2703|      2|    parent->set_generation(root()->generation());
 2704|      2|    parent->init_child(parent->start(), node);
 2705|      2|    mutable_root() = parent;
 2706|       |    // If the former root was a leaf node, then it's now the rightmost node.
 2707|      2|    assert(parent->start_child()->is_internal() ||
 2708|      2|           parent->start_child() == rightmost());
 2709|      2|  }
 2710|       |
 2711|       |  // Split the node.
 2712|      8|  node_type *split_node;
 2713|      8|  if (node->is_leaf()) {
  ------------------
  |  Branch (2713:7): [True: 8, False: 0]
  ------------------
 2714|      8|    split_node = new_leaf_node(node->position() + 1, parent);
 2715|      8|    node->split(insert_position, split_node, mutable_allocator());
 2716|      8|    if (rightmost() == node) mutable_rightmost() = split_node;
  ------------------
  |  Branch (2716:9): [True: 8, False: 0]
  ------------------
 2717|      8|  } else {
 2718|      0|    split_node = new_internal_node(node->position() + 1, parent);
 2719|      0|    node->split(insert_position, split_node, mutable_allocator());
 2720|      0|  }
 2721|       |
 2722|      8|  if (insert_position > node->finish()) {
  ------------------
  |  Branch (2722:7): [True: 2, False: 6]
  ------------------
 2723|      2|    insert_position = insert_position - node->count() - 1;
 2724|      2|    node = split_node;
 2725|      2|  }
 2726|      8|}
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE23rebalance_right_to_leftEhPSD_PSB_:
 1864|     10|                                            allocator_type *alloc) {
 1865|     10|  assert(parent() == right->parent());
 1866|     10|  assert(position() + 1 == right->position());
 1867|     10|  assert(right->count() >= count());
 1868|     10|  assert(to_move >= 1);
 1869|     10|  assert(to_move <= right->count());
 1870|       |
 1871|       |  // 1) Move the delimiting value in the parent to the left node.
 1872|     10|  transfer(finish(), position(), parent(), alloc);
 1873|       |
 1874|       |  // 2) Move the (to_move - 1) values from the right node to the left node.
 1875|     10|  transfer_n(to_move - 1, finish() + 1, right->start(), right, alloc);
 1876|       |
 1877|       |  // 3) Move the new delimiting value to the parent from the right node.
 1878|     10|  parent()->transfer(position(), right->start() + to_move - 1, right, alloc);
 1879|       |
 1880|       |  // 4) Shift the values in the right node to their correct positions.
 1881|     10|  right->transfer_n(right->count() - to_move, right->start(),
 1882|     10|                    right->start() + to_move, right, alloc);
 1883|       |
 1884|     10|  if (is_internal()) {
  ------------------
  |  Branch (1884:7): [True: 0, False: 10]
  ------------------
 1885|       |    // Move the child pointers from the right to the left node.
 1886|      0|    for (field_type i = 0; i < to_move; ++i) {
  ------------------
  |  Branch (1886:28): [True: 0, False: 0]
  ------------------
 1887|      0|      init_child(finish() + i + 1, right->child(i));
 1888|      0|    }
 1889|      0|    for (field_type i = right->start(); i <= right->finish() - to_move; ++i) {
  ------------------
  |  Branch (1889:41): [True: 0, False: 0]
  ------------------
 1890|      0|      assert(i + to_move <= right->max_count());
 1891|      0|      right->init_child(i, right->child(i + to_move));
 1892|      0|      right->clear_child(i + to_move);
 1893|      0|    }
 1894|      0|  }
 1895|       |
 1896|       |  // Fixup `finish` on the left and right nodes.
 1897|     10|  set_finish(finish() + to_move);
 1898|     10|  right->set_finish(right->finish() - to_move);
 1899|     10|}
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE8transferEmmPSD_PSB_:
 1011|     24|                btree_node *src_node, allocator_type *alloc) {
 1012|     24|    next_generation();
 1013|     24|    transfer(slot(dest_i), src_node->slot(src_i), alloc);
 1014|     24|  }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE13mutable_childEh:
  761|     22|  btree_node *&mutable_child(field_type i) { return GetField<4>()[i]; }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE8GetFieldILm4EEEPNS9_13tuple_elementIXT_ENS9_5tupleIJPSD_jhS7_SH_EEEE4typeEv:
  659|     22|  inline typename layout_type::template ElementType<N> *GetField() {
  660|       |    // We assert that we don't read from values that aren't there.
  661|     22|    assert(N < 4 || is_internal());
  662|     22|    return InternalLayout().template Pointer<N>(reinterpret_cast<char *>(this));
  663|     22|  }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE23rebalance_left_to_rightEhPSD_PSB_:
 1904|      2|                                            allocator_type *alloc) {
 1905|      2|  assert(parent() == right->parent());
 1906|      2|  assert(position() + 1 == right->position());
 1907|      2|  assert(count() >= right->count());
 1908|      2|  assert(to_move >= 1);
 1909|      2|  assert(to_move <= count());
 1910|       |
 1911|       |  // Values in the right node are shifted to the right to make room for the
 1912|       |  // new to_move values. Then, the delimiting value in the parent and the
 1913|       |  // other (to_move - 1) values in the left node are moved into the right node.
 1914|       |  // Lastly, a new delimiting value is moved from the left node into the
 1915|       |  // parent, and the remaining empty left node entries are destroyed.
 1916|       |
 1917|       |  // 1) Shift existing values in the right node to their correct positions.
 1918|      2|  right->transfer_n_backward(right->count(), right->start() + to_move,
 1919|      2|                             right->start(), right, alloc);
 1920|       |
 1921|       |  // 2) Move the delimiting value in the parent to the right node.
 1922|      2|  right->transfer(right->start() + to_move - 1, position(), parent(), alloc);
 1923|       |
 1924|       |  // 3) Move the (to_move - 1) values from the left node to the right node.
 1925|      2|  right->transfer_n(to_move - 1, right->start(), finish() - (to_move - 1), this,
 1926|      2|                    alloc);
 1927|       |
 1928|       |  // 4) Move the new delimiting value to the parent from the left node.
 1929|      2|  parent()->transfer(position(), finish() - to_move, this, alloc);
 1930|       |
 1931|      2|  if (is_internal()) {
  ------------------
  |  Branch (1931:7): [True: 0, False: 2]
  ------------------
 1932|       |    // Move the child pointers from the left to the right node.
 1933|      0|    for (field_type i = right->finish() + 1; i > right->start(); --i) {
  ------------------
  |  Branch (1933:46): [True: 0, False: 0]
  ------------------
 1934|      0|      right->init_child(i - 1 + to_move, right->child(i - 1));
 1935|      0|      right->clear_child(i - 1);
 1936|      0|    }
 1937|      0|    for (field_type i = 1; i <= to_move; ++i) {
  ------------------
  |  Branch (1937:28): [True: 0, False: 0]
  ------------------
 1938|      0|      right->init_child(i - 1, child(finish() - to_move + i));
 1939|      0|      clear_child(finish() - to_move + i);
 1940|      0|    }
 1941|      0|  }
 1942|       |
 1943|       |  // Fixup the counts on the left and right nodes.
 1944|      2|  set_finish(finish() - to_move);
 1945|      2|  right->set_finish(right->finish() + to_move);
 1946|      2|}
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE19transfer_n_backwardEmmmPSD_PSB_:
 1033|     44|                           allocator_type *alloc) {
 1034|     44|    next_generation();
 1035|     44|    for (slot_type *src = src_node->slot(src_i + n), *end = src - n,
 1036|     44|                   *dest = slot(dest_i + n);
 1037|    178|         src != end; --src, --dest) {
  ------------------
  |  Branch (1037:10): [True: 134, False: 44]
  ------------------
 1038|       |      // If we modified the loop index calculations above to avoid the -1s here,
 1039|       |      // it would result in UB in the computation of `end` (and possibly `src`
 1040|       |      // as well, if n == 0), since slot() is effectively an array index and it
 1041|       |      // is UB to compute the address of any out-of-bounds array element except
 1042|       |      // for one-past-the-end.
 1043|    134|      transfer(dest - 1, src - 1, alloc);
 1044|    134|    }
 1045|     44|  }
_ZN4absl18container_internal5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE17new_internal_nodeEhPNS0_10btree_nodeISC_EE:
 1702|      2|  node_type *new_internal_node(field_type position, node_type *parent) {
 1703|      2|    node_type *n = allocate(node_type::InternalSize());
 1704|      2|    n->init_internal(position, parent);
 1705|      2|    return n;
 1706|      2|  }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE13init_internalEhPSD_:
  964|      2|  void init_internal(field_type position, btree_node *parent) {
  965|      2|    init_leaf(position, kNodeSlots, parent);
  966|       |    // Set `max_count` to a sentinel value to indicate that this node is
  967|       |    // internal.
  968|      2|    set_max_count(kInternalNodeMaxCount);
  969|      2|    absl::container_internal::SanitizerPoisonMemoryRegion(
  970|      2|        &mutable_child(start()), (kNodeSlots + 1) * sizeof(btree_node *));
  971|      2|  }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE10init_childEhPSD_:
  773|      2|  void init_child(field_type i, btree_node *c) {
  774|      2|    set_child(i, c);
  775|      2|    c->set_parent(this);
  776|      2|  }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE9set_childEhPSD_:
  769|      2|  void set_child(field_type i, btree_node *c) {
  770|      2|    set_child_noupdate_position(i, c);
  771|      2|    c->set_position(i);
  772|      2|  }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE27set_child_noupdate_positionEhPSD_:
  765|     10|  void set_child_noupdate_position(field_type i, btree_node *c) {
  766|     10|    absl::container_internal::SanitizerUnpoisonObject(&mutable_child(i));
  767|     10|    mutable_child(i) = c;
  768|     10|  }
_ZN4absl18container_internal5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE13new_leaf_nodeEhPNS0_10btree_nodeISC_EE:
 1707|      8|  node_type *new_leaf_node(field_type position, node_type *parent) {
 1708|      8|    node_type *n = allocate(node_type::LeafSize());
 1709|      8|    n->init_leaf(position, kNodeSlots, parent);
 1710|      8|    return n;
 1711|      8|  }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE5splitEiPSD_PSB_:
 1950|      8|                          allocator_type *alloc) {
 1951|      8|  assert(dest->count() == 0);
 1952|      8|  assert(max_count() == kNodeSlots);
 1953|      8|  assert(position() + 1 == dest->position());
 1954|      8|  assert(parent() == dest->parent());
 1955|       |
 1956|       |  // We bias the split based on the position being inserted. If we're
 1957|       |  // inserting at the beginning of the left node then bias the split to put
 1958|       |  // more values on the right node. If we're inserting at the end of the
 1959|       |  // right node then bias the split to put more values on the left node.
 1960|      8|  if (insert_position == start()) {
  ------------------
  |  Branch (1960:7): [True: 6, False: 2]
  ------------------
 1961|      6|    dest->set_finish(dest->start() + finish() - 1);
 1962|      6|  } else if (insert_position == kNodeSlots) {
  ------------------
  |  Branch (1962:14): [True: 0, False: 2]
  ------------------
 1963|      0|    dest->set_finish(dest->start());
 1964|      2|  } else {
 1965|      2|    dest->set_finish(dest->start() + count() / 2);
 1966|      2|  }
 1967|      8|  set_finish(finish() - dest->count());
 1968|      8|  assert(count() >= 1);
 1969|       |
 1970|       |  // Move values from the left sibling to the right sibling.
 1971|      8|  dest->transfer_n(dest->count(), dest->start(), finish(), this, alloc);
 1972|       |
 1973|       |  // The split key is the largest value in the left sibling.
 1974|      8|  --mutable_finish();
 1975|      8|  parent()->emplace_value(position(), alloc, finish_slot());
 1976|      8|  value_destroy(finish(), alloc);
 1977|      8|  parent()->set_child_noupdate_position(position() + 1, dest);
 1978|       |
 1979|      8|  if (is_internal()) {
  ------------------
  |  Branch (1979:7): [True: 0, False: 8]
  ------------------
 1980|      0|    for (field_type i = dest->start(), j = finish() + 1; i <= dest->finish();
  ------------------
  |  Branch (1980:58): [True: 0, False: 0]
  ------------------
 1981|      0|         ++i, ++j) {
 1982|      0|      assert(child(j) != nullptr);
 1983|      0|      dest->init_child(i, child(j));
 1984|      0|      clear_child(j);
 1985|      0|    }
 1986|      0|  }
 1987|      8|}
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE14mutable_finishEv:
  671|      8|  field_type &mutable_finish() { return GetField<2>()[2]; }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE13emplace_valueIJPS7_EEEvhPSB_DpOT_:
 1817|      8|                                         Args &&...args) {
 1818|      8|  assert(i >= start());
 1819|      8|  assert(i <= finish());
 1820|       |  // Shift old values to create space for new value and then construct it in
 1821|       |  // place.
 1822|      8|  if (i < finish()) {
  ------------------
  |  Branch (1822:7): [True: 0, False: 8]
  ------------------
 1823|      0|    transfer_n_backward(finish() - i, /*dest_i=*/i + 1, /*src_i=*/i, this,
 1824|      0|                        alloc);
 1825|      0|  }
 1826|      8|  value_init(static_cast<field_type>(i), alloc, std::forward<Args>(args)...);
 1827|      8|  set_finish(finish() + 1);
 1828|       |
 1829|      8|  if (is_internal() && finish() > i + 1) {
  ------------------
  |  Branch (1829:7): [True: 8, False: 0]
  |  Branch (1829:24): [True: 0, False: 8]
  ------------------
 1830|      0|    for (field_type j = finish(); j > i + 1; --j) {
  ------------------
  |  Branch (1830:35): [True: 0, False: 0]
  ------------------
 1831|      0|      set_child(j, child(j - 1));
 1832|      0|    }
 1833|      0|    clear_child(i + 1);
 1834|      0|  }
 1835|      8|}
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE10value_initIJPS7_EEEvhPSB_DpOT_:
  984|      8|  void value_init(const field_type i, allocator_type *alloc, Args &&...args) {
  985|      8|    next_generation();
  986|      8|    absl::container_internal::SanitizerUnpoisonObject(slot(i));
  987|      8|    params_type::construct(alloc, slot(i), std::forward<Args>(args)...);
  988|      8|  }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE11finish_slotEv:
  674|      8|  slot_type *finish_slot() { return slot(finish()); }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE13value_destroyEhPSB_:
  989|      8|  void value_destroy(const field_type i, allocator_type *alloc) {
  990|      8|    next_generation();
  991|      8|    params_type::destroy(alloc, slot(i));
  992|      8|    absl::container_internal::SanitizerPoisonObject(slot(i));
  993|      8|  }
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE13emplace_valueIJRKS7_EEEvhPSB_DpOT_:
 1817|     64|                                         Args &&...args) {
 1818|     64|  assert(i >= start());
 1819|     64|  assert(i <= finish());
 1820|       |  // Shift old values to create space for new value and then construct it in
 1821|       |  // place.
 1822|     64|  if (i < finish()) {
  ------------------
  |  Branch (1822:7): [True: 42, False: 22]
  ------------------
 1823|     42|    transfer_n_backward(finish() - i, /*dest_i=*/i + 1, /*src_i=*/i, this,
 1824|     42|                        alloc);
 1825|     42|  }
 1826|     64|  value_init(static_cast<field_type>(i), alloc, std::forward<Args>(args)...);
 1827|     64|  set_finish(finish() + 1);
 1828|       |
 1829|     64|  if (is_internal() && finish() > i + 1) {
  ------------------
  |  Branch (1829:7): [True: 0, False: 64]
  |  Branch (1829:24): [True: 0, False: 0]
  ------------------
 1830|      0|    for (field_type j = finish(); j > i + 1; --j) {
  ------------------
  |  Branch (1830:35): [True: 0, False: 0]
  ------------------
 1831|      0|      set_child(j, child(j - 1));
 1832|      0|    }
 1833|      0|    clear_child(i + 1);
 1834|      0|  }
 1835|     64|}
_ZN4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE10value_initIJRKS7_EEEvhPSB_DpOT_:
  984|     64|  void value_init(const field_type i, allocator_type *alloc, Args &&...args) {
  985|     64|    next_generation();
  986|     64|    absl::container_internal::SanitizerUnpoisonObject(slot(i));
  987|     64|    params_type::construct(alloc, slot(i), std::forward<Args>(args)...);
  988|     64|  }
_ZN4absl18container_internal5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE13insert_uniqueIS7_JRKS7_EEENS9_4pairINS0_14btree_iteratorINS0_10btree_nodeISC_EERS7_PS7_EEbEERKT_DpOT0_:
 2288|      8|    -> std::pair<iterator, bool> {
 2289|      8|  if (empty()) {
  ------------------
  |  Branch (2289:7): [True: 2, False: 6]
  ------------------
 2290|      2|    mutable_root() = mutable_rightmost() = new_leaf_root_node(1);
 2291|      2|  }
 2292|       |
 2293|      8|  SearchResult<iterator, is_key_compare_to::value> res = internal_locate(key);
 2294|      8|  iterator iter = res.value;
 2295|       |
 2296|      8|  if (res.HasMatch()) {
  ------------------
  |  Branch (2296:7): [Folded - Ignored]
  ------------------
 2297|      0|    if (res.IsEq()) {
  ------------------
  |  Branch (2297:9): [Folded - Ignored]
  ------------------
 2298|       |      // The key already exists in the tree, do nothing.
 2299|      0|      return {iter, false};
 2300|      0|    }
 2301|      8|  } else {
 2302|      8|    iterator last = internal_last(iter);
 2303|      8|    if (last.node_ && !compare_keys(key, last.key())) {
  ------------------
  |  Branch (2303:9): [True: 6, False: 2]
  |  Branch (2303:23): [True: 0, False: 6]
  ------------------
 2304|       |      // The key already exists in the tree, do nothing.
 2305|      0|      return {last, false};
 2306|      0|    }
 2307|      8|  }
 2308|      8|  return {internal_emplace(iter, std::forward<Args>(args)...), true};
 2309|      8|}
_ZNK4absl18container_internal5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE15internal_locateIS7_EENS0_12SearchResultINS0_14btree_iteratorINS0_10btree_nodeISC_EERS7_PS7_EELb0EEERKT_:
 2903|      8|    -> SearchResult<iterator, is_key_compare_to::value> {
 2904|      8|  iterator iter(const_cast<node_type *>(root()));
 2905|     10|  for (;;) {
 2906|     10|    SearchResult<size_type, is_key_compare_to::value> res =
 2907|     10|        iter.node_->lower_bound(key, key_comp());
 2908|     10|    iter.position_ = static_cast<int>(res.value);
 2909|     10|    if (res.IsEq()) {
  ------------------
  |  Branch (2909:9): [Folded - Ignored]
  ------------------
 2910|      0|      return {iter, MatchKind::kEq};
 2911|      0|    }
 2912|       |    // Note: in the non-key-compare-to case, we don't need to walk all the way
 2913|       |    // down the tree if the keys are equal, but determining equality would
 2914|       |    // require doing an extra comparison on each node on the way down, and we
 2915|       |    // will need to go all the way to the leaf node in the expected case.
 2916|     10|    if (iter.node_->is_leaf()) {
  ------------------
  |  Branch (2916:9): [True: 8, False: 2]
  ------------------
 2917|      8|      break;
 2918|      8|    }
 2919|      2|    iter.node_ = iter.node_->child(static_cast<field_type>(iter.position_));
 2920|      2|  }
 2921|       |  // Note: in the non-key-compare-to case, the key may actually be equivalent
 2922|       |  // here (and the MatchKind::kNe is ignored).
 2923|      8|  return {iter, MatchKind::kNe};
 2924|      8|}
_ZNK4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE11lower_boundIS7_EENS0_12SearchResultImLb0EEERKT_RKNS0_19key_compare_adapterIS8_S7_E15checked_compareE:
  781|     10|      const K &k, const key_compare &comp) const {
  782|     10|    return use_linear_search::value ? linear_search(k, comp)
  ------------------
  |  Branch (782:12): [Folded - Ignored]
  ------------------
  783|     10|                                    : binary_search(k, comp);
  784|     10|  }
_ZNK4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE13binary_searchIS7_NS0_19key_compare_adapterIS8_S7_E15checked_compareEEENS0_12SearchResultImXsr23btree_is_key_compare_toIT0_S7_EE5valueEEERKT_RKSJ_:
  802|     10|  binary_search(const K &k, const Compare &comp) const {
  803|     10|    return binary_search_impl(k, start(), finish(), comp,
  804|     10|                              btree_is_key_compare_to<Compare, key_type>());
  805|     10|  }
_ZNK4absl18container_internal10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EELi256ELb0EEEE18binary_search_implIS7_NS0_19key_compare_adapterIS8_S7_E15checked_compareEEENS0_12SearchResultImLb0EEERKT_mmRKT0_NS9_17integral_constantIbLb0EEE:
  845|     10|      std::false_type /* IsCompareTo */) const {
  846|     26|    while (s != e) {
  ------------------
  |  Branch (846:12): [True: 16, False: 10]
  ------------------
  847|     16|      const size_type mid = (s + e) >> 1;
  848|     16|      if (comp(key(mid), k)) {
  ------------------
  |  Branch (848:11): [True: 0, False: 16]
  ------------------
  849|      0|        s = mid + 1;
  850|     16|      } else {
  851|     16|        e = mid;
  852|     16|      }
  853|     16|    }
  854|     10|    return SearchResult<size_type, false>{s};
  855|     10|  }
_ZN4absl18container_internal12SearchResultINS0_14btree_iteratorINS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS8_13SymbolCompareENSt3__19allocatorIS9_EELi256ELb0EEEEERS9_PS9_EELb0EEC2ESI_NS0_9MatchKindE:
  479|      8|  SearchResult(V v, MatchKind /*match*/) : value(v) {}
_ZN4absl18container_internal14btree_iteratorINS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS7_13SymbolCompareENSt3__19allocatorIS8_EELi256ELb0EEEEERS8_PS8_EC2IKSE_RKS8_PSK_Li0EEENS1_IT_T0_T1_EE:
 1243|     64|        position_(other.position_) {}

_ZN4absl18container_internal15btree_containerINS0_5btreeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS6_12MapAllocatorINS9_4pairIKmS8_EEEELi256ELb0EEEEEE5beginEv:
   98|  48.2k|  iterator begin() ABSL_ATTRIBUTE_LIFETIME_BOUND { return tree_.begin(); }
_ZN4absl18container_internal15btree_containerINS0_5btreeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS6_12MapAllocatorINS9_4pairIKmS8_EEEELi256ELb0EEEEEE3endEv:
  105|  9.65k|  iterator end() ABSL_ATTRIBUTE_LIFETIME_BOUND { return tree_.end(); }
_ZN4absl18container_internal15btree_containerINS0_5btreeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS6_12MapAllocatorINS9_4pairIKmS8_EEEELi256ELb0EEEEEEC2ERKSB_RKSG_:
   77|  4.82k|      : tree_(comp, alloc) {}
_ZN4absl18container_internal19btree_set_containerINS0_5btreeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS6_12MapAllocatorINS9_4pairIKmS8_EEEELi256ELb0EEEEEE6insertEOSF_:
  333|  43.4k|      ABSL_ATTRIBUTE_LIFETIME_BOUND {
  334|  43.4k|    return this->tree_.insert_unique(params_type::key(v), std::move(v));
  335|  43.4k|  }
_ZN4absl18container_internal15btree_containerINS0_5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS7_11FileCompareENSt3__19allocatorIS8_EELi256ELb0EEEEEEC2ERKS9_RKSC_:
   77|      2|      : tree_(comp, alloc) {}
_ZN4absl18container_internal15btree_containerINS0_5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS7_13SymbolCompareENSt3__19allocatorIS8_EELi256ELb0EEEEEEC2ERKS9_RKSC_:
   77|      2|      : tree_(comp, alloc) {}
_ZN4absl18container_internal15btree_containerINS0_5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex14ExtensionEntryENS7_16ExtensionCompareENSt3__19allocatorIS8_EELi256ELb0EEEEEEC2ERKS9_RKSC_:
   77|      2|      : tree_(comp, alloc) {}
_ZN4absl18container_internal19btree_set_containerINS0_5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS7_11FileCompareENSt3__19allocatorIS8_EELi256ELb0EEEEEE6insertEOS8_:
  333|     10|      ABSL_ATTRIBUTE_LIFETIME_BOUND {
  334|     10|    return this->tree_.insert_unique(params_type::key(v), std::move(v));
  335|     10|  }
_ZNK4absl18container_internal15btree_containerINS0_5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS7_13SymbolCompareENSt3__19allocatorIS8_EELi256ELb0EEEEEE11upper_boundIS8_EENS0_14btree_iteratorIKNS0_10btree_nodeISD_EERKS8_PSL_EERSL_:
  163|     64|      ABSL_ATTRIBUTE_LIFETIME_BOUND {
  164|     64|    return tree_.upper_bound(key);
  165|     64|  }
_ZNK4absl18container_internal15btree_containerINS0_5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS7_13SymbolCompareENSt3__19allocatorIS8_EELi256ELb0EEEEEE5beginEv:
   99|     64|  const_iterator begin() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  100|     64|    return tree_.begin();
  101|     64|  }
_ZN4absl18container_internal15btree_containerINS0_5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS7_13SymbolCompareENSt3__19allocatorIS8_EELi256ELb0EEEEEE3endEv:
  105|     64|  iterator end() ABSL_ATTRIBUTE_LIFETIME_BOUND { return tree_.end(); }
_ZNK4absl18container_internal15btree_containerINS0_5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS7_13SymbolCompareENSt3__19allocatorIS8_EELi256ELb0EEEEEE8key_compEv:
  260|     64|  key_compare key_comp() const { return key_compare(tree_.key_comp()); }
_ZN4absl18container_internal19btree_set_containerINS0_5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS7_13SymbolCompareENSt3__19allocatorIS8_EELi256ELb0EEEEEE6insertENS0_14btree_iteratorIKNS0_10btree_nodeISD_EERKS8_PSK_EESL_:
  346|     64|                  const value_type &v) ABSL_ATTRIBUTE_LIFETIME_BOUND {
  347|     64|    return this->tree_
  348|     64|        .insert_hint_unique(iterator(hint), params_type::key(v), v)
  349|     64|        .first;
  350|     64|  }
_ZNK4absl18container_internal15btree_containerINS0_5btreeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS7_11FileCompareENSt3__19allocatorIS8_EELi256ELb0EEEEEE8key_compEv:
  260|     10|  key_compare key_comp() const { return key_compare(tree_.key_comp()); }

_ZN4absl18container_internal20common_policy_traitsINS0_15map_slot_policyImPN6google8protobuf8internal8NodeBaseEEEvE7elementIS8_EEDTclsrT_7elementfp_EEPNS0_13map_slot_typeImS7_EE:
   75|  51.9k|      -> decltype(P::element(slot)) {
   76|  51.9k|    return P::element(slot);
   77|  51.9k|  }
_ZN4absl18container_internal20common_policy_traitsINS0_15map_slot_policyImPN6google8protobuf8internal8NodeBaseEEEvE7destroyINS5_12MapAllocatorINSt3__14pairIKmS7_EEEEEEvPT_PNS0_13map_slot_typeImS7_EE:
   49|  43.4k|  static void destroy(Alloc* alloc, slot_type* slot) {
   50|  43.4k|    Policy::destroy(alloc, slot);
   51|  43.4k|  }
_ZN4absl18container_internal20common_policy_traitsINS0_17FlatHashSetPolicyINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEvE7elementISA_EEDTclsrT_7elementfp_EEPS9_:
   75|  7.63k|      -> decltype(P::element(slot)) {
   76|  7.63k|    return P::element(slot);
   77|  7.63k|  }
_ZN4absl18container_internal20common_policy_traitsINS0_17FlatHashSetPolicyINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEvE9constructINS7_IS9_EEJRKPKcEEEvPT_PS9_DpOT0_:
   42|     21|  static void construct(Alloc* alloc, slot_type* slot, Args&&... args) {
   43|     21|    Policy::construct(alloc, slot, std::forward<Args>(args)...);
   44|     21|  }
_ZN4absl18container_internal20common_policy_traitsINS0_15map_slot_policyImPN6google8protobuf8internal8NodeBaseEEEvE8transferINS5_12MapAllocatorINSt3__14pairIKmS7_EEEEEEvPT_PNS0_13map_slot_typeImS7_EESL_:
   65|   159k|  static void transfer(Alloc* alloc, slot_type* new_slot, slot_type* old_slot) {
   66|   159k|    transfer_impl(alloc, new_slot, old_slot, Rank0{});
   67|   159k|  }
_ZN4absl18container_internal20common_policy_traitsINS0_15map_slot_policyImPN6google8protobuf8internal8NodeBaseEEEvE13transfer_implINS5_12MapAllocatorINSt3__14pairIKmS7_EEEES8_EEDTcvvclsrT0_8transferfp_fp0_fp1_EEPT_PNS0_13map_slot_typeImS7_EESN_NS9_5Rank0E:
   99|   159k|      -> decltype((void)P::transfer(alloc, new_slot, old_slot)) {
  100|   159k|    P::transfer(alloc, new_slot, old_slot);
  101|   159k|  }
_ZN4absl18container_internal20common_policy_traitsINS0_15map_slot_policyImPN6google8protobuf8internal8NodeBaseEEEvE9constructINS5_12MapAllocatorINSt3__14pairIKmS7_EEEEJSF_EEEvPT_PNS0_13map_slot_typeImS7_EEDpOT0_:
   42|  43.4k|  static void construct(Alloc* alloc, slot_type* slot, Args&&... args) {
   43|  43.4k|    Policy::construct(alloc, slot, std::forward<Args>(args)...);
   44|  43.4k|  }
_ZN4absl18container_internal20common_policy_traitsINS0_17FlatHashSetPolicyIPKN6google8protobuf8internal15DescriptorTableEEEvE7elementIS9_EEDTclsrT_7elementfp_EEPS8_:
   75|     24|      -> decltype(P::element(slot)) {
   76|     24|    return P::element(slot);
   77|     24|  }
_ZN4absl18container_internal20common_policy_traitsINS0_17FlatHashSetPolicyIPKN6google8protobuf8internal15DescriptorTableEEEvE8transferINSt3__19allocatorIS8_EEEEvPT_PS8_SH_:
   65|      8|  static void transfer(Alloc* alloc, slot_type* new_slot, slot_type* old_slot) {
   66|      8|    transfer_impl(alloc, new_slot, old_slot, Rank0{});
   67|      8|  }
_ZN4absl18container_internal20common_policy_traitsINS0_17FlatHashSetPolicyIPKN6google8protobuf8internal15DescriptorTableEEEvE13transfer_implINSt3__19allocatorIS8_EEvEENSC_17integral_constantIbLb1EEEPT_PS8_SJ_NSA_5Rank1E:
  109|      8|                                      slot_type* old_slot, Rank1) {
  110|       |    // TODO(b/247130232): remove casts after fixing warnings.
  111|       |    // TODO(b/251814870): remove casts after fixing warnings.
  112|      8|    std::memcpy(
  113|      8|        static_cast<void*>(std::launder(
  114|      8|            const_cast<std::remove_const_t<value_type>*>(&element(new_slot)))),
  115|      8|        static_cast<const void*>(&element(old_slot)), sizeof(value_type));
  116|      8|    return {};
  117|      8|  }
_ZN4absl18container_internal20common_policy_traitsINS0_17FlatHashSetPolicyIPKN6google8protobuf8internal15DescriptorTableEEEvE9constructINSt3__19allocatorIS8_EEJRKS8_EEEvPT_PS8_DpOT0_:
   42|     10|  static void construct(Alloc* alloc, slot_type* slot, Args&&... args) {
   43|     10|    Policy::construct(alloc, slot, std::forward<Args>(args)...);
   44|     10|  }
_ZN4absl18container_internal20common_policy_traitsINS0_15set_slot_policyIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryEEEvE7destroyINSt3__19allocatorIS7_EEEEvPT_PS7_:
   49|    292|  static void destroy(Alloc* alloc, slot_type* slot) {
   50|    292|    Policy::destroy(alloc, slot);
   51|    292|  }
_ZN4absl18container_internal20common_policy_traitsINS0_15set_slot_policyIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryEEEvE7destroyINSt3__19allocatorIS7_EEEEvPT_PS7_:
   49|     26|  static void destroy(Alloc* alloc, slot_type* slot) {
   50|     26|    Policy::destroy(alloc, slot);
   51|     26|  }
_ZN4absl18container_internal20common_policy_traitsINS0_15set_slot_policyIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryEEEvE8transferINSt3__19allocatorIS7_EEEEvPT_PS7_SG_:
   65|     26|  static void transfer(Alloc* alloc, slot_type* new_slot, slot_type* old_slot) {
   66|     26|    transfer_impl(alloc, new_slot, old_slot, Rank0{});
   67|     26|  }
_ZN4absl18container_internal20common_policy_traitsINS0_15set_slot_policyIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryEEEvE13transfer_implINSt3__19allocatorIS7_EEEEvPT_PS7_SG_NS9_5Rank2E:
  122|     26|                            slot_type* old_slot, Rank2) {
  123|     26|    construct(alloc, new_slot, std::move(element(old_slot)));
  124|     26|    destroy(alloc, old_slot);
  125|     26|  }
_ZN4absl18container_internal20common_policy_traitsINS0_15set_slot_policyIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryEEEvE9constructINSt3__19allocatorIS7_EEJS7_EEEvPT_PS7_DpOT0_:
   42|     36|  static void construct(Alloc* alloc, slot_type* slot, Args&&... args) {
   43|     36|    Policy::construct(alloc, slot, std::forward<Args>(args)...);
   44|     36|  }
_ZN4absl18container_internal20common_policy_traitsINS0_15set_slot_policyIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryEEEvE7elementIS8_EEDTclsrT_7elementfp_EEPS7_:
   75|     26|      -> decltype(P::element(slot)) {
   76|     26|    return P::element(slot);
   77|     26|  }
_ZN4absl18container_internal20common_policy_traitsINS0_15set_slot_policyIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryEEEvE7elementIS8_EEDTclsrT_7elementfp_EEPKS7_:
   79|    120|  static auto element(const slot_type* slot) -> decltype(P::element(slot)) {
   80|    120|    return P::element(slot);
   81|    120|  }
_ZN4absl18container_internal20common_policy_traitsINS0_15set_slot_policyIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryEEEvE8transferINSt3__19allocatorIS7_EEEEvPT_PS7_SG_:
   65|    284|  static void transfer(Alloc* alloc, slot_type* new_slot, slot_type* old_slot) {
   66|    284|    transfer_impl(alloc, new_slot, old_slot, Rank0{});
   67|    284|  }
_ZN4absl18container_internal20common_policy_traitsINS0_15set_slot_policyIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryEEEvE13transfer_implINSt3__19allocatorIS7_EEEEvPT_PS7_SG_NS9_5Rank2E:
  122|    284|                            slot_type* old_slot, Rank2) {
  123|    284|    construct(alloc, new_slot, std::move(element(old_slot)));
  124|    284|    destroy(alloc, old_slot);
  125|    284|  }
_ZN4absl18container_internal20common_policy_traitsINS0_15set_slot_policyIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryEEEvE9constructINSt3__19allocatorIS7_EEJS7_EEEvPT_PS7_DpOT0_:
   42|    284|  static void construct(Alloc* alloc, slot_type* slot, Args&&... args) {
   43|    284|    Policy::construct(alloc, slot, std::forward<Args>(args)...);
   44|    284|  }
_ZN4absl18container_internal20common_policy_traitsINS0_15set_slot_policyIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryEEEvE7elementIS8_EEDTclsrT_7elementfp_EEPS7_:
   75|    284|      -> decltype(P::element(slot)) {
   76|    284|    return P::element(slot);
   77|    284|  }
_ZN4absl18container_internal20common_policy_traitsINS0_15set_slot_policyIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryEEEvE9constructINSt3__19allocatorIS7_EEJPS7_EEEvPT_SE_DpOT0_:
   42|      8|  static void construct(Alloc* alloc, slot_type* slot, Args&&... args) {
   43|      8|    Policy::construct(alloc, slot, std::forward<Args>(args)...);
   44|      8|  }
_ZN4absl18container_internal20common_policy_traitsINS0_15set_slot_policyIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryEEEvE9constructINSt3__19allocatorIS7_EEJRKS7_EEEvPT_PS7_DpOT0_:
   42|     64|  static void construct(Alloc* alloc, slot_type* slot, Args&&... args) {
   43|     64|    Policy::construct(alloc, slot, std::forward<Args>(args)...);
   44|     64|  }

_ZNR4absl18container_internal15CompressedTupleIJmNS0_20HashtablezInfoHandleEEE3getILi0EEERNS0_25internal_compressed_tuple4ElemIS3_XT_EE4typeEv:
  259|     79|  ElemT<I>& get() & {
  260|     79|    return StorageT<I>::get();
  261|     79|  }
_ZNR4absl18container_internal25internal_compressed_tuple7StorageImLm0ELb0EE3getEv:
  110|     79|  T& get() & { return value; }
_ZNR4absl18container_internal15CompressedTupleIJmNS0_20HashtablezInfoHandleEEE3getILi1EEERNS0_25internal_compressed_tuple4ElemIS3_XT_EE4typeEv:
  259|     52|  ElemT<I>& get() & {
  260|     52|    return StorageT<I>::get();
  261|     52|  }
_ZNR4absl18container_internal25internal_compressed_tuple7StorageINS0_20HashtablezInfoHandleELm1ELb1EE3getEv:
  124|     52|  T& get() & { return *this; }
_ZNR4absl18container_internal15CompressedTupleIJNS0_19key_compare_adapterINSt3__14lessImEEmE15checked_compareEN6google8protobuf8internal12MapAllocatorINS3_4pairIKmPNSA_8NodeBaseEEEEEPNS0_10btree_nodeINS0_10map_paramsImSF_S5_SH_Li256ELb0EEEEEEE3getILi1EEERNS0_25internal_compressed_tuple4ElemISN_XT_EE4typeEv:
  259|  72.4k|  ElemT<I>& get() & {
  260|  72.4k|    return StorageT<I>::get();
  261|  72.4k|  }
_ZNR4absl18container_internal25internal_compressed_tuple7StorageIN6google8protobuf8internal12MapAllocatorINSt3__14pairIKmPNS5_8NodeBaseEEEEELm1ELb0EE3getEv:
  110|  72.4k|  T& get() & { return value; }
_ZNR4absl18container_internal15CompressedTupleIJNS0_19key_compare_adapterINSt3__14lessImEEmE15checked_compareEN6google8protobuf8internal12MapAllocatorINS3_4pairIKmPNSA_8NodeBaseEEEEEPNS0_10btree_nodeINS0_10map_paramsImSF_S5_SH_Li256ELb0EEEEEEE3getILi2EEERNS0_25internal_compressed_tuple4ElemISN_XT_EE4typeEv:
  259|  48.2k|  ElemT<I>& get() & {
  260|  48.2k|    return StorageT<I>::get();
  261|  48.2k|  }
_ZNR4absl18container_internal25internal_compressed_tuple7StorageIPNS0_10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS7_12MapAllocatorINSA_4pairIKmS9_EEEELi256ELb0EEEEELm2ELb0EE3getEv:
  110|  48.2k|  T& get() & { return value; }
_ZN4absl18container_internal15CompressedTupleIJmNS0_20HashtablezInfoHandleEEEC2IjJS2_ELb1EEEOT_DpOT0_:
  256|      5|                                             absl::forward<Vs>(base)...) {}
_ZN4absl18container_internal25internal_compressed_tuple19CompressedTupleImplINS0_15CompressedTupleIJmNS0_20HashtablezInfoHandleEEEENS_16integer_sequenceImJLm0ELm1EEEELb1EEC2IJjS4_EEENSt3__110in_place_tEDpOT_:
  144|      5|      : Storage<Ts, I>(absl::in_place, absl::forward<Vs>(args))... {}
_ZN4absl18container_internal25internal_compressed_tuple7StorageImLm0ELb0EEC2IjEENSt3__110in_place_tEOT_:
  108|      5|      : value(absl::forward<V>(v)) {}
_ZN4absl18container_internal25internal_compressed_tuple7StorageINS0_20HashtablezInfoHandleELm1ELb1EEC2IS3_EENSt3__110in_place_tEOT_:
  121|     10|      : T(absl::forward<V>(v)) {}
_ZN4absl18container_internal15CompressedTupleIJNS0_12CommonFieldsENS0_10StringHashENS0_8StringEqENSt3__19allocatorINS5_12basic_stringIcNS5_11char_traitsIcEENS6_IcEEEEEEEEC2IS2_JRKS3_RKS4_RKSC_ELb1EEEOT_DpOT0_:
  256|      1|                                             absl::forward<Vs>(base)...) {}
_ZN4absl18container_internal25internal_compressed_tuple19CompressedTupleImplINS0_15CompressedTupleIJNS0_12CommonFieldsENS0_10StringHashENS0_8StringEqENSt3__19allocatorINS7_12basic_stringIcNS7_11char_traitsIcEENS8_IcEEEEEEEEENS_16integer_sequenceImJLm0ELm1ELm2ELm3EEEELb1EEC2IJS4_RKS5_RKS6_RKSE_EEENS7_10in_place_tEDpOT_:
  144|      1|      : Storage<Ts, I>(absl::in_place, absl::forward<Vs>(args))... {}
_ZN4absl18container_internal25internal_compressed_tuple7StorageINS0_12CommonFieldsELm0ELb0EEC2IS3_EENSt3__110in_place_tEOT_:
  108|      5|      : value(absl::forward<V>(v)) {}
_ZN4absl18container_internal15CompressedTupleIJmNS0_20HashtablezInfoHandleEEEC2IRmJS2_ELb1EEEOT_DpOT0_:
  256|      5|                                             absl::forward<Vs>(base)...) {}
_ZN4absl18container_internal25internal_compressed_tuple19CompressedTupleImplINS0_15CompressedTupleIJmNS0_20HashtablezInfoHandleEEEENS_16integer_sequenceImJLm0ELm1EEEELb1EEC2IJRmS4_EEENSt3__110in_place_tEDpOT_:
  144|      5|      : Storage<Ts, I>(absl::in_place, absl::forward<Vs>(args))... {}
_ZN4absl18container_internal25internal_compressed_tuple7StorageImLm0ELb0EEC2IRmEENSt3__110in_place_tEOT_:
  108|      5|      : value(absl::forward<V>(v)) {}
_ZN4absl18container_internal25internal_compressed_tuple7StorageINS0_10StringHashELm1ELb1EEC2IRKS3_EENSt3__110in_place_tEOT_:
  121|      1|      : T(absl::forward<V>(v)) {}
_ZN4absl18container_internal25internal_compressed_tuple7StorageINS0_8StringEqELm2ELb1EEC2IRKS3_EENSt3__110in_place_tEOT_:
  121|      1|      : T(absl::forward<V>(v)) {}
_ZN4absl18container_internal25internal_compressed_tuple7StorageINSt3__19allocatorINS3_12basic_stringIcNS3_11char_traitsIcEENS4_IcEEEEEELm3ELb1EEC2IRKSA_EENS3_10in_place_tEOT_:
  121|      1|      : T(absl::forward<V>(v)) {}
_ZNR4absl18container_internal15CompressedTupleIJNS0_12CommonFieldsENS0_10StringHashENS0_8StringEqENSt3__19allocatorINS5_12basic_stringIcNS5_11char_traitsIcEENS6_IcEEEEEEEE3getILi0EEERNS0_25internal_compressed_tuple4ElemISD_XT_EE4typeEv:
  259|  2.20M|  ElemT<I>& get() & {
  260|  2.20M|    return StorageT<I>::get();
  261|  2.20M|  }
_ZNR4absl18container_internal25internal_compressed_tuple7StorageINS0_12CommonFieldsELm0ELb0EE3getEv:
  110|  2.20M|  T& get() & { return value; }
_ZNR4absl18container_internal15CompressedTupleIJNS0_12CommonFieldsENS0_10StringHashENS0_8StringEqENSt3__19allocatorINS5_12basic_stringIcNS5_11char_traitsIcEENS6_IcEEEEEEEE3getILi3EEERNS0_25internal_compressed_tuple4ElemISD_XT_EE4typeEv:
  259|     22|  ElemT<I>& get() & {
  260|     22|    return StorageT<I>::get();
  261|     22|  }
_ZNR4absl18container_internal25internal_compressed_tuple7StorageINSt3__19allocatorINS3_12basic_stringIcNS3_11char_traitsIcEENS4_IcEEEEEELm3ELb1EE3getEv:
  124|     22|  T& get() & { return *this; }
_ZNR4absl18container_internal15CompressedTupleIJNS0_12CommonFieldsENS0_10StringHashENS0_8StringEqENSt3__19allocatorINS5_12basic_stringIcNS5_11char_traitsIcEENS6_IcEEEEEEEE3getILi1EEERNS0_25internal_compressed_tuple4ElemISD_XT_EE4typeEv:
  259|     21|  ElemT<I>& get() & {
  260|     21|    return StorageT<I>::get();
  261|     21|  }
_ZNR4absl18container_internal25internal_compressed_tuple7StorageINS0_10StringHashELm1ELb1EE3getEv:
  124|     21|  T& get() & { return *this; }
_ZNKR4absl18container_internal15CompressedTupleIJNS0_12CommonFieldsENS0_10StringHashENS0_8StringEqENSt3__19allocatorINS5_12basic_stringIcNS5_11char_traitsIcEENS6_IcEEEEEEEE3getILi0EEERKNS0_25internal_compressed_tuple4ElemISD_XT_EE4typeEv:
  264|  4.40M|  constexpr const ElemT<I>& get() const& {
  265|  4.40M|    return StorageT<I>::get();
  266|  4.40M|  }
_ZNKR4absl18container_internal25internal_compressed_tuple7StorageINS0_12CommonFieldsELm0ELb0EE3getEv:
  109|  4.40M|  constexpr const T& get() const& { return value; }
_ZNR4absl18container_internal15CompressedTupleIJNS0_12CommonFieldsENS0_10StringHashENS0_8StringEqENSt3__19allocatorINS5_12basic_stringIcNS5_11char_traitsIcEENS6_IcEEEEEEEE3getILi2EEERNS0_25internal_compressed_tuple4ElemISD_XT_EE4typeEv:
  259|  7.63k|  ElemT<I>& get() & {
  260|  7.63k|    return StorageT<I>::get();
  261|  7.63k|  }
_ZNR4absl18container_internal25internal_compressed_tuple7StorageINS0_8StringEqELm2ELb1EE3getEv:
  124|  7.63k|  T& get() & { return *this; }
_ZNKR4absl18container_internal15CompressedTupleIJNS0_12CommonFieldsENS0_10StringHashENS0_8StringEqENSt3__19allocatorINS5_12basic_stringIcNS5_11char_traitsIcEENS6_IcEEEEEEEE3getILi1EEERKNS0_25internal_compressed_tuple4ElemISD_XT_EE4typeEv:
  264|  1.10M|  constexpr const ElemT<I>& get() const& {
  265|  1.10M|    return StorageT<I>::get();
  266|  1.10M|  }
_ZNKR4absl18container_internal25internal_compressed_tuple7StorageINS0_10StringHashELm1ELb1EE3getEv:
  123|  1.10M|  constexpr const T& get() const& { return *this; }
_ZNKR4absl18container_internal15CompressedTupleIJNS0_19key_compare_adapterINSt3__14lessImEEmE15checked_compareEN6google8protobuf8internal12MapAllocatorINS3_4pairIKmPNSA_8NodeBaseEEEEEPNS0_10btree_nodeINS0_10map_paramsImSF_S5_SH_Li256ELb0EEEEEEE3getILi0EEERKNS0_25internal_compressed_tuple4ElemISN_XT_EE4typeEv:
  264|  73.3k|  constexpr const ElemT<I>& get() const& {
  265|  73.3k|    return StorageT<I>::get();
  266|  73.3k|  }
_ZNKR4absl18container_internal25internal_compressed_tuple7StorageINS0_19key_compare_adapterINSt3__14lessImEEmE15checked_compareELm0ELb1EE3getEv:
  123|  73.3k|  constexpr const T& get() const& { return *this; }
_ZN4absl18container_internal15CompressedTupleIJNS0_19key_compare_adapterINSt3__14lessImEEmE15checked_compareEN6google8protobuf8internal12MapAllocatorINS3_4pairIKmPNSA_8NodeBaseEEEEEPNS0_10btree_nodeINS0_10map_paramsImSF_S5_SH_Li256ELb0EEEEEEEC2IRKS7_JRKSH_SM_ELb1EEEOT_DpOT0_:
  256|  4.82k|                                             absl::forward<Vs>(base)...) {}
_ZN4absl18container_internal25internal_compressed_tuple19CompressedTupleImplINS0_15CompressedTupleIJNS0_19key_compare_adapterINSt3__14lessImEEmE15checked_compareEN6google8protobuf8internal12MapAllocatorINS5_4pairIKmPNSC_8NodeBaseEEEEEPNS0_10btree_nodeINS0_10map_paramsImSH_S7_SJ_Li256ELb0EEEEEEEENS_16integer_sequenceImJLm0ELm1ELm2EEEELb1EEC2IJRKS9_RKSJ_SO_EEENS5_10in_place_tEDpOT_:
  144|  4.82k|      : Storage<Ts, I>(absl::in_place, absl::forward<Vs>(args))... {}
_ZN4absl18container_internal25internal_compressed_tuple7StorageINS0_19key_compare_adapterINSt3__14lessImEEmE15checked_compareELm0ELb1EEC2IRKS8_EENS4_10in_place_tEOT_:
  121|  4.82k|      : T(absl::forward<V>(v)) {}
_ZN4absl18container_internal25internal_compressed_tuple7StorageIN6google8protobuf8internal12MapAllocatorINSt3__14pairIKmPNS5_8NodeBaseEEEEELm1ELb0EEC2IRKSD_EENS7_10in_place_tEOT_:
  108|  4.82k|      : value(absl::forward<V>(v)) {}
_ZN4absl18container_internal25internal_compressed_tuple7StorageIPNS0_10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS7_12MapAllocatorINSA_4pairIKmS9_EEEELi256ELb0EEEEELm2ELb0EEC2ISK_EENSA_10in_place_tEOT_:
  108|  4.82k|      : value(absl::forward<V>(v)) {}
_ZN4absl18container_internal25internal_compressed_tuple7StorageINS0_6HashEqIPKN6google8protobuf10DescriptorEvE4HashELm1ELb1EEC2ISA_EENSt3__110in_place_tEOT_:
  121|      2|      : T(absl::forward<V>(v)) {}
_ZN4absl18container_internal25internal_compressed_tuple7StorageINS0_6HashEqIPKN6google8protobuf10DescriptorEvE2EqELm2ELb1EEC2ISA_EENSt3__110in_place_tEOT_:
  121|      2|      : T(absl::forward<V>(v)) {}
message.cc:_ZNKR4absl18container_internal15CompressedTupleIJNS0_12CommonFieldsEN6google8protobuf12_GLOBAL__N_123GeneratedMessageFactory20DescriptorByNameHashENS6_18DescriptorByNameEqENSt3__19allocatorIPKNS4_8internal15DescriptorTableEEEEE3getILi0EEERKNS0_25internal_compressed_tuple4ElemISG_XT_EE4typeEv:
  264|     90|  constexpr const ElemT<I>& get() const& {
  265|     90|    return StorageT<I>::get();
  266|     90|  }
message.cc:_ZNR4absl18container_internal15CompressedTupleIJNS0_12CommonFieldsEN6google8protobuf12_GLOBAL__N_123GeneratedMessageFactory20DescriptorByNameHashENS6_18DescriptorByNameEqENSt3__19allocatorIPKNS4_8internal15DescriptorTableEEEEE3getILi3EEERNS0_25internal_compressed_tuple4ElemISG_XT_EE4typeEv:
  259|     28|  ElemT<I>& get() & {
  260|     28|    return StorageT<I>::get();
  261|     28|  }
_ZNR4absl18container_internal25internal_compressed_tuple7StorageINSt3__19allocatorIPKN6google8protobuf8internal15DescriptorTableEEELm3ELb1EE3getEv:
  124|     28|  T& get() & { return *this; }
message.cc:_ZNR4absl18container_internal15CompressedTupleIJNS0_12CommonFieldsEN6google8protobuf12_GLOBAL__N_123GeneratedMessageFactory20DescriptorByNameHashENS6_18DescriptorByNameEqENSt3__19allocatorIPKNS4_8internal15DescriptorTableEEEEE3getILi0EEERNS0_25internal_compressed_tuple4ElemISG_XT_EE4typeEv:
  259|    146|  ElemT<I>& get() & {
  260|    146|    return StorageT<I>::get();
  261|    146|  }
message.cc:_ZN4absl18container_internal15CompressedTupleIJNS0_12CommonFieldsEN6google8protobuf12_GLOBAL__N_123GeneratedMessageFactory20DescriptorByNameHashENS6_18DescriptorByNameEqENSt3__19allocatorIPKNS4_8internal15DescriptorTableEEEEEC2IS2_JS7_S8_SF_ELb1EEEOT_DpOT0_:
  256|      2|                                             absl::forward<Vs>(base)...) {}
message.cc:_ZN4absl18container_internal25internal_compressed_tuple19CompressedTupleImplINS0_15CompressedTupleIJNS0_12CommonFieldsEN6google8protobuf12_GLOBAL__N_123GeneratedMessageFactory20DescriptorByNameHashENS8_18DescriptorByNameEqENSt3__19allocatorIPKNS6_8internal15DescriptorTableEEEEEENS_16integer_sequenceImJLm0ELm1ELm2ELm3EEEELb1EEC2IJS4_S9_SA_SH_EEENSB_10in_place_tEDpOT_:
  144|      2|      : Storage<Ts, I>(absl::in_place, absl::forward<Vs>(args))... {}
message.cc:_ZN4absl18container_internal25internal_compressed_tuple7StorageIN6google8protobuf12_GLOBAL__N_123GeneratedMessageFactory20DescriptorByNameHashELm1ELb1EEC2IS7_EENSt3__110in_place_tEOT_:
  121|      2|      : T(absl::forward<V>(v)) {}
message.cc:_ZN4absl18container_internal25internal_compressed_tuple7StorageIN6google8protobuf12_GLOBAL__N_123GeneratedMessageFactory18DescriptorByNameEqELm2ELb1EEC2IS7_EENSt3__110in_place_tEOT_:
  121|      2|      : T(absl::forward<V>(v)) {}
_ZN4absl18container_internal25internal_compressed_tuple7StorageINSt3__19allocatorIPKN6google8protobuf8internal15DescriptorTableEEELm3ELb1EEC2ISB_EENS3_10in_place_tEOT_:
  121|      2|      : T(absl::forward<V>(v)) {}
_ZN4absl18container_internal15CompressedTupleIJNS0_12CommonFieldsENS0_6HashEqIPKN6google8protobuf10DescriptorEvE4HashENS9_2EqENSt3__19allocatorINSC_4pairIKS8_PKNS5_7MessageEEEEEEEC2IS2_JSA_SB_SK_ELb1EEEOT_DpOT0_:
  256|      2|                                             absl::forward<Vs>(base)...) {}
_ZN4absl18container_internal25internal_compressed_tuple19CompressedTupleImplINS0_15CompressedTupleIJNS0_12CommonFieldsENS0_6HashEqIPKN6google8protobuf10DescriptorEvE4HashENSB_2EqENSt3__19allocatorINSE_4pairIKSA_PKNS7_7MessageEEEEEEEENS_16integer_sequenceImJLm0ELm1ELm2ELm3EEEELb1EEC2IJS4_SC_SD_SM_EEENSE_10in_place_tEDpOT_:
  144|      2|      : Storage<Ts, I>(absl::in_place, absl::forward<Vs>(args))... {}
_ZN4absl18container_internal25internal_compressed_tuple7StorageINSt3__19allocatorINS3_4pairIKPKN6google8protobuf10DescriptorEPKNS7_7MessageEEEEELm3ELb1EEC2ISG_EENS3_10in_place_tEOT_:
  121|      2|      : T(absl::forward<V>(v)) {}
message.cc:_ZNR4absl18container_internal15CompressedTupleIJNS0_12CommonFieldsEN6google8protobuf12_GLOBAL__N_123GeneratedMessageFactory20DescriptorByNameHashENS6_18DescriptorByNameEqENSt3__19allocatorIPKNS4_8internal15DescriptorTableEEEEE3getILi1EEERNS0_25internal_compressed_tuple4ElemISG_XT_EE4typeEv:
  259|     18|  ElemT<I>& get() & {
  260|     18|    return StorageT<I>::get();
  261|     18|  }
message.cc:_ZNR4absl18container_internal25internal_compressed_tuple7StorageIN6google8protobuf12_GLOBAL__N_123GeneratedMessageFactory20DescriptorByNameHashELm1ELb1EE3getEv:
  124|     18|  T& get() & { return *this; }
_ZN4absl18container_internal15CompressedTupleIJNS0_19key_compare_adapterIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11FileCompareENS6_9FileEntryEE15checked_compareENSt3__19allocatorIS8_EEPNS0_10btree_nodeINS0_10set_paramsIS8_S7_SD_Li256ELb0EEEEEEEC2IRKSA_JRKSD_SI_ELb1EEEOT_DpOT0_:
  256|      2|                                             absl::forward<Vs>(base)...) {}
_ZN4absl18container_internal25internal_compressed_tuple19CompressedTupleImplINS0_15CompressedTupleIJNS0_19key_compare_adapterIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11FileCompareENS8_9FileEntryEE15checked_compareENSt3__19allocatorISA_EEPNS0_10btree_nodeINS0_10set_paramsISA_S9_SF_Li256ELb0EEEEEEEENS_16integer_sequenceImJLm0ELm1ELm2EEEELb1EEC2IJRKSC_RKSF_SK_EEENSD_10in_place_tEDpOT_:
  144|      2|      : Storage<Ts, I>(absl::in_place, absl::forward<Vs>(args))... {}
_ZN4absl18container_internal25internal_compressed_tuple7StorageINS0_19key_compare_adapterIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11FileCompareENS7_9FileEntryEE15checked_compareELm0ELb0EEC2IRKSB_EENSt3__110in_place_tEOT_:
  108|      2|      : value(absl::forward<V>(v)) {}
_ZN4absl18container_internal25internal_compressed_tuple7StorageINSt3__19allocatorIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryEEELm1ELb1EEC2IRKSA_EENS3_10in_place_tEOT_:
  121|      2|      : T(absl::forward<V>(v)) {}
_ZN4absl18container_internal25internal_compressed_tuple7StorageIPNS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS8_11FileCompareENSt3__19allocatorIS9_EELi256ELb0EEEEELm2ELb0EEC2ISG_EENSB_10in_place_tEOT_:
  108|      2|      : value(absl::forward<V>(v)) {}
_ZN4absl18container_internal15CompressedTupleIJNS0_19key_compare_adapterIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex13SymbolCompareENS6_11SymbolEntryEE15checked_compareENSt3__19allocatorIS8_EEPNS0_10btree_nodeINS0_10set_paramsIS8_S7_SD_Li256ELb0EEEEEEEC2IRKSA_JRKSD_SI_ELb1EEEOT_DpOT0_:
  256|      2|                                             absl::forward<Vs>(base)...) {}
_ZN4absl18container_internal25internal_compressed_tuple19CompressedTupleImplINS0_15CompressedTupleIJNS0_19key_compare_adapterIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex13SymbolCompareENS8_11SymbolEntryEE15checked_compareENSt3__19allocatorISA_EEPNS0_10btree_nodeINS0_10set_paramsISA_S9_SF_Li256ELb0EEEEEEEENS_16integer_sequenceImJLm0ELm1ELm2EEEELb1EEC2IJRKSC_RKSF_SK_EEENSD_10in_place_tEDpOT_:
  144|      2|      : Storage<Ts, I>(absl::in_place, absl::forward<Vs>(args))... {}
_ZN4absl18container_internal25internal_compressed_tuple7StorageINS0_19key_compare_adapterIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex13SymbolCompareENS7_11SymbolEntryEE15checked_compareELm0ELb0EEC2IRKSB_EENSt3__110in_place_tEOT_:
  108|      2|      : value(absl::forward<V>(v)) {}
_ZN4absl18container_internal25internal_compressed_tuple7StorageINSt3__19allocatorIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryEEELm1ELb1EEC2IRKSA_EENS3_10in_place_tEOT_:
  121|      2|      : T(absl::forward<V>(v)) {}
_ZN4absl18container_internal25internal_compressed_tuple7StorageIPNS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS8_13SymbolCompareENSt3__19allocatorIS9_EELi256ELb0EEEEELm2ELb0EEC2ISG_EENSB_10in_place_tEOT_:
  108|      2|      : value(absl::forward<V>(v)) {}
_ZN4absl18container_internal15CompressedTupleIJNS0_19key_compare_adapterIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex16ExtensionCompareENS6_14ExtensionEntryEE15checked_compareENSt3__19allocatorIS8_EEPNS0_10btree_nodeINS0_10set_paramsIS8_S7_SD_Li256ELb0EEEEEEEC2IRKSA_JRKSD_SI_ELb1EEEOT_DpOT0_:
  256|      2|                                             absl::forward<Vs>(base)...) {}
_ZN4absl18container_internal25internal_compressed_tuple19CompressedTupleImplINS0_15CompressedTupleIJNS0_19key_compare_adapterIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex16ExtensionCompareENS8_14ExtensionEntryEE15checked_compareENSt3__19allocatorISA_EEPNS0_10btree_nodeINS0_10set_paramsISA_S9_SF_Li256ELb0EEEEEEEENS_16integer_sequenceImJLm0ELm1ELm2EEEELb1EEC2IJRKSC_RKSF_SK_EEENSD_10in_place_tEDpOT_:
  144|      2|      : Storage<Ts, I>(absl::in_place, absl::forward<Vs>(args))... {}
_ZN4absl18container_internal25internal_compressed_tuple7StorageINS0_19key_compare_adapterIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex16ExtensionCompareENS7_14ExtensionEntryEE15checked_compareELm0ELb0EEC2IRKSB_EENSt3__110in_place_tEOT_:
  108|      2|      : value(absl::forward<V>(v)) {}
_ZN4absl18container_internal25internal_compressed_tuple7StorageINSt3__19allocatorIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex14ExtensionEntryEEELm1ELb1EEC2IRKSA_EENS3_10in_place_tEOT_:
  121|      2|      : T(absl::forward<V>(v)) {}
_ZN4absl18container_internal25internal_compressed_tuple7StorageIPNS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex14ExtensionEntryENS8_16ExtensionCompareENSt3__19allocatorIS9_EELi256ELb0EEEEELm2ELb0EEC2ISG_EENSB_10in_place_tEOT_:
  108|      2|      : value(absl::forward<V>(v)) {}
_ZNR4absl18container_internal15CompressedTupleIJNS0_19key_compare_adapterIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex13SymbolCompareENS6_11SymbolEntryEE15checked_compareENSt3__19allocatorIS8_EEPNS0_10btree_nodeINS0_10set_paramsIS8_S7_SD_Li256ELb0EEEEEEE3getILi1EEERNS0_25internal_compressed_tuple4ElemISJ_XT_EE4typeEv:
  259|    102|  ElemT<I>& get() & {
  260|    102|    return StorageT<I>::get();
  261|    102|  }
_ZNR4absl18container_internal25internal_compressed_tuple7StorageINSt3__19allocatorIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryEEELm1ELb1EE3getEv:
  124|    102|  T& get() & { return *this; }
_ZNR4absl18container_internal15CompressedTupleIJNS0_19key_compare_adapterIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex13SymbolCompareENS6_11SymbolEntryEE15checked_compareENSt3__19allocatorIS8_EEPNS0_10btree_nodeINS0_10set_paramsIS8_S7_SD_Li256ELb0EEEEEEE3getILi2EEERNS0_25internal_compressed_tuple4ElemISJ_XT_EE4typeEv:
  259|    276|  ElemT<I>& get() & {
  260|    276|    return StorageT<I>::get();
  261|    276|  }
_ZNR4absl18container_internal25internal_compressed_tuple7StorageIPNS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS8_13SymbolCompareENSt3__19allocatorIS9_EELi256ELb0EEEEELm2ELb0EE3getEv:
  110|    276|  T& get() & { return value; }
_ZNR4absl18container_internal15CompressedTupleIJNS0_19key_compare_adapterIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11FileCompareENS6_9FileEntryEE15checked_compareENSt3__19allocatorIS8_EEPNS0_10btree_nodeINS0_10set_paramsIS8_S7_SD_Li256ELb0EEEEEEE3getILi1EEERNS0_25internal_compressed_tuple4ElemISJ_XT_EE4typeEv:
  259|     18|  ElemT<I>& get() & {
  260|     18|    return StorageT<I>::get();
  261|     18|  }
_ZNR4absl18container_internal25internal_compressed_tuple7StorageINSt3__19allocatorIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryEEELm1ELb1EE3getEv:
  124|     18|  T& get() & { return *this; }
_ZNR4absl18container_internal15CompressedTupleIJNS0_19key_compare_adapterIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11FileCompareENS6_9FileEntryEE15checked_compareENSt3__19allocatorIS8_EEPNS0_10btree_nodeINS0_10set_paramsIS8_S7_SD_Li256ELb0EEEEEEE3getILi2EEERNS0_25internal_compressed_tuple4ElemISJ_XT_EE4typeEv:
  259|      8|  ElemT<I>& get() & {
  260|      8|    return StorageT<I>::get();
  261|      8|  }
_ZNR4absl18container_internal25internal_compressed_tuple7StorageIPNS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS8_11FileCompareENSt3__19allocatorIS9_EELi256ELb0EEEEELm2ELb0EE3getEv:
  110|      8|  T& get() & { return value; }
_ZNKR4absl18container_internal15CompressedTupleIJNS0_19key_compare_adapterIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11FileCompareENS6_9FileEntryEE15checked_compareENSt3__19allocatorIS8_EEPNS0_10btree_nodeINS0_10set_paramsIS8_S7_SD_Li256ELb0EEEEEEE3getILi0EEERKNS0_25internal_compressed_tuple4ElemISJ_XT_EE4typeEv:
  264|     24|  constexpr const ElemT<I>& get() const& {
  265|     24|    return StorageT<I>::get();
  266|     24|  }
_ZNKR4absl18container_internal25internal_compressed_tuple7StorageINS0_19key_compare_adapterIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11FileCompareENS7_9FileEntryEE15checked_compareELm0ELb0EE3getEv:
  109|     24|  constexpr const T& get() const& { return value; }
_ZNKR4absl18container_internal15CompressedTupleIJNS0_19key_compare_adapterIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex13SymbolCompareENS6_11SymbolEntryEE15checked_compareENSt3__19allocatorIS8_EEPNS0_10btree_nodeINS0_10set_paramsIS8_S7_SD_Li256ELb0EEEEEEE3getILi2EEERKNS0_25internal_compressed_tuple4ElemISJ_XT_EE4typeEv:
  264|     12|  constexpr const ElemT<I>& get() const& {
  265|     12|    return StorageT<I>::get();
  266|     12|  }
_ZNKR4absl18container_internal25internal_compressed_tuple7StorageIPNS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS8_13SymbolCompareENSt3__19allocatorIS9_EELi256ELb0EEEEELm2ELb0EE3getEv:
  109|     12|  constexpr const T& get() const& { return value; }
_ZNKR4absl18container_internal15CompressedTupleIJNS0_19key_compare_adapterIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex13SymbolCompareENS6_11SymbolEntryEE15checked_compareENSt3__19allocatorIS8_EEPNS0_10btree_nodeINS0_10set_paramsIS8_S7_SD_Li256ELb0EEEEEEE3getILi0EEERKNS0_25internal_compressed_tuple4ElemISJ_XT_EE4typeEv:
  264|    312|  constexpr const ElemT<I>& get() const& {
  265|    312|    return StorageT<I>::get();
  266|    312|  }
_ZNKR4absl18container_internal25internal_compressed_tuple7StorageINS0_19key_compare_adapterIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex13SymbolCompareENS7_11SymbolEntryEE15checked_compareELm0ELb0EE3getEv:
  109|    312|  constexpr const T& get() const& { return value; }

_ZN4absl18container_internal27SanitizerPoisonMemoryRegionEPKvm:
  220|   227k|inline void SanitizerPoisonMemoryRegion(const void* m, size_t s) {
  221|       |#ifdef ABSL_HAVE_ADDRESS_SANITIZER
  222|       |  ASAN_POISON_MEMORY_REGION(m, s);
  223|       |#endif
  224|       |#ifdef ABSL_HAVE_MEMORY_SANITIZER
  225|       |  __msan_poison(m, s);
  226|       |#endif
  227|   227k|  (void)m;
  228|   227k|  (void)s;
  229|   227k|}
_ZN4absl18container_internal29SanitizerUnpoisonMemoryRegionEPKvm:
  231|   228k|inline void SanitizerUnpoisonMemoryRegion(const void* m, size_t s) {
  232|       |#ifdef ABSL_HAVE_ADDRESS_SANITIZER
  233|       |  ASAN_UNPOISON_MEMORY_REGION(m, s);
  234|       |#endif
  235|       |#ifdef ABSL_HAVE_MEMORY_SANITIZER
  236|       |  __msan_unpoison(m, s);
  237|       |#endif
  238|   228k|  (void)m;
  239|   228k|  (void)s;
  240|   228k|}
_ZN4absl18container_internal15map_slot_policyImPN6google8protobuf8internal8NodeBaseEE7elementEPNS0_13map_slot_typeImS6_EE:
  359|  51.9k|  static value_type& element(slot_type* slot) { return slot->value; }
_ZN4absl18container_internal15map_slot_policyImPN6google8protobuf8internal8NodeBaseEE7destroyINS4_12MapAllocatorINSt3__14pairIKmS6_EEEEEEvPT_PNS0_13map_slot_typeImS6_EE:
  417|  43.4k|  static void destroy(Allocator* alloc, slot_type* slot) {
  418|  43.4k|    if (kMutableKeys::value) {
  ------------------
  |  Branch (418:9): [Folded - Ignored]
  ------------------
  419|  43.4k|      absl::allocator_traits<Allocator>::destroy(*alloc, &slot->mutable_value);
  420|  43.4k|    } else {
  421|      0|      absl::allocator_traits<Allocator>::destroy(*alloc, &slot->value);
  422|      0|    }
  423|  43.4k|  }
_ZN4absl18container_internal21SanitizerPoisonObjectINS0_13map_slot_typeImPN6google8protobuf8internal8NodeBaseEEEEEvPKT_:
  243|   203k|inline void SanitizerPoisonObject(const T* object) {
  244|   203k|  SanitizerPoisonMemoryRegion(object, sizeof(T));
  245|   203k|}
_ZN4absl18container_internal10DeallocateILm8EN6google8protobuf8internal12MapAllocatorINSt3__14pairIKmPNS4_8NodeBaseEEEEEEEvPT0_Pvm:
   74|  24.1k|void Deallocate(Alloc* alloc, void* p, size_t n) {
   75|  24.1k|  static_assert(Alignment > 0, "");
   76|  24.1k|  assert(n && "n must be positive");
   77|  24.1k|  using M = AlignedType<Alignment>;
   78|  24.1k|  using A = typename absl::allocator_traits<Alloc>::template rebind_alloc<M>;
   79|  24.1k|  using AT = typename absl::allocator_traits<Alloc>::template rebind_traits<M>;
   80|       |  // On macOS, "mem_alloc" is a #define with one argument defined in
   81|       |  // rpc/types.h, so we can't name the variable "mem_alloc" and initialize it
   82|       |  // with the "foo(bar)" syntax.
   83|  24.1k|  A my_mem_alloc(*alloc);
   84|  24.1k|  AT::deallocate(my_mem_alloc, static_cast<M*>(p),
   85|  24.1k|                 (n + sizeof(M) - 1) / sizeof(M));
   86|  24.1k|}
_ZN4absl18container_internal8AllocateILm8ENSt3__19allocatorIcEEEEPvPT0_m:
   55|      7|void* Allocate(Alloc* alloc, size_t n) {
   56|      7|  static_assert(Alignment > 0, "");
   57|      7|  assert(n && "n must be positive");
   58|      7|  using M = AlignedType<Alignment>;
   59|      7|  using A = typename absl::allocator_traits<Alloc>::template rebind_alloc<M>;
   60|      7|  using AT = typename absl::allocator_traits<Alloc>::template rebind_traits<M>;
   61|       |  // On macOS, "mem_alloc" is a #define with one argument defined in
   62|       |  // rpc/types.h, so we can't name the variable "mem_alloc" and initialize it
   63|       |  // with the "foo(bar)" syntax.
   64|      7|  A my_mem_alloc(*alloc);
   65|      7|  void* p = AT::allocate(my_mem_alloc, (n + sizeof(M) - 1) / sizeof(M));
   66|      7|  assert(reinterpret_cast<uintptr_t>(p) % Alignment == 0 &&
   67|      7|         "allocator does not respect alignment");
   68|      7|  return p;
   69|      7|}
_ZN4absl18container_internal14DecomposeValueINS0_12raw_hash_setINS0_17FlatHashSetPolicyINSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEEENS0_10StringHashENS0_8StringEqENS8_ISA_EEE19EmplaceDecomposableERKPKcEEDTclclsr3stdE7declvalIT_EEclsr3stdE7declvalIRKT0_EEclsr3stdE7declvalISM_EEEEOSL_OSM_:
  214|     21|DecomposeValue(F&& f, Arg&& arg) {
  215|     21|  const auto& key = arg;
  216|     21|  return std::forward<F>(f)(key, std::forward<Arg>(arg));
  217|     21|}
_ZN4absl18container_internal14DecomposeValueINS0_12raw_hash_setINS0_17FlatHashSetPolicyINSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEEENS0_10StringHashENS0_8StringEqENS8_ISA_EEE12EqualElementIPKcEERSA_EEDTclclsr3stdE7declvalIT_EEclsr3stdE7declvalIRKT0_EEclsr3stdE7declvalISM_EEEEOSL_OSM_:
  214|      1|DecomposeValue(F&& f, Arg&& arg) {
  215|      1|  const auto& key = arg;
  216|      1|  return std::forward<F>(f)(key, std::forward<Arg>(arg));
  217|      1|}
_ZN4absl18container_internal14DecomposeValueINS0_12raw_hash_setINS0_17FlatHashSetPolicyINSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEEENS0_10StringHashENS0_8StringEqENS8_ISA_EEE12EqualElementINS4_17basic_string_viewIcS7_EEEERSA_EEDTclclsr3stdE7declvalIT_EEclsr3stdE7declvalIRKT0_EEclsr3stdE7declvalISM_EEEEOSL_OSM_:
  214|  7.63k|DecomposeValue(F&& f, Arg&& arg) {
  215|  7.63k|  const auto& key = arg;
  216|  7.63k|  return std::forward<F>(f)(key, std::forward<Arg>(arg));
  217|  7.63k|}
_ZN4absl18container_internal15map_slot_policyImPN6google8protobuf8internal8NodeBaseEE3keyEPKNS0_13map_slot_typeImS6_EE:
  378|   146k|  static const K& key(const slot_type* slot) {
  379|   146k|    return kMutableKeys::value ? slot->key : slot->value.first;
  ------------------
  |  Branch (379:12): [Folded - Ignored]
  ------------------
  380|   146k|  }
_ZN4absl18container_internal8AllocateILm8EN6google8protobuf8internal12MapAllocatorINSt3__14pairIKmPNS4_8NodeBaseEEEEEEEPvPT0_m:
   55|  24.1k|void* Allocate(Alloc* alloc, size_t n) {
   56|  24.1k|  static_assert(Alignment > 0, "");
   57|  24.1k|  assert(n && "n must be positive");
   58|  24.1k|  using M = AlignedType<Alignment>;
   59|  24.1k|  using A = typename absl::allocator_traits<Alloc>::template rebind_alloc<M>;
   60|  24.1k|  using AT = typename absl::allocator_traits<Alloc>::template rebind_traits<M>;
   61|       |  // On macOS, "mem_alloc" is a #define with one argument defined in
   62|       |  // rpc/types.h, so we can't name the variable "mem_alloc" and initialize it
   63|       |  // with the "foo(bar)" syntax.
   64|  24.1k|  A my_mem_alloc(*alloc);
   65|  24.1k|  void* p = AT::allocate(my_mem_alloc, (n + sizeof(M) - 1) / sizeof(M));
   66|  24.1k|  assert(reinterpret_cast<uintptr_t>(p) % Alignment == 0 &&
   67|  24.1k|         "allocator does not respect alignment");
   68|  24.1k|  return p;
   69|  24.1k|}
_ZN4absl18container_internal23SanitizerUnpoisonObjectINS0_13map_slot_typeImPN6google8protobuf8internal8NodeBaseEEEEEvPKT_:
  248|   203k|inline void SanitizerUnpoisonObject(const T* object) {
  249|   203k|  SanitizerUnpoisonMemoryRegion(object, sizeof(T));
  250|   203k|}
_ZN4absl18container_internal15map_slot_policyImPN6google8protobuf8internal8NodeBaseEE8transferINS4_12MapAllocatorINSt3__14pairIKmS6_EEEEEEvPT_PNS0_13map_slot_typeImS6_EESJ_:
  427|   159k|                       slot_type* old_slot) {
  428|   159k|    emplace(new_slot);
  429|   159k|#if defined(__cpp_lib_launder) && __cpp_lib_launder >= 201606
  430|   159k|    if (absl::is_trivially_relocatable<value_type>()) {
  ------------------
  |  Branch (430:9): [Folded - Ignored]
  ------------------
  431|       |      // TODO(b/247130232,b/251814870): remove casts after fixing warnings.
  432|   159k|      std::memcpy(static_cast<void*>(std::launder(&new_slot->value)),
  433|   159k|                  static_cast<const void*>(&old_slot->value),
  434|   159k|                  sizeof(value_type));
  435|   159k|      return;
  436|   159k|    }
  437|      0|#endif
  438|       |
  439|      0|    if (kMutableKeys::value) {
  ------------------
  |  Branch (439:9): [Folded - Ignored]
  ------------------
  440|      0|      absl::allocator_traits<Allocator>::construct(
  441|      0|          *alloc, &new_slot->mutable_value, std::move(old_slot->mutable_value));
  442|      0|    } else {
  443|      0|      absl::allocator_traits<Allocator>::construct(*alloc, &new_slot->value,
  444|      0|                                                   std::move(old_slot->value));
  445|      0|    }
  446|      0|    destroy(alloc, old_slot);
  447|      0|  }
_ZN4absl18container_internal15map_slot_policyImPN6google8protobuf8internal8NodeBaseEE7emplaceEPNS0_13map_slot_typeImS6_EE:
  348|   203k|  static void emplace(slot_type* slot) {
  349|       |    // The construction of union doesn't do anything at runtime but it allows us
  350|       |    // to access its members without violating aliasing rules.
  351|   203k|    new (slot) slot_type;
  352|   203k|  }
_ZN4absl18container_internal13map_slot_typeImPN6google8protobuf8internal8NodeBaseEEC2Ev:
  329|   203k|  map_slot_type() {}
_ZN4absl18container_internal15map_slot_policyImPN6google8protobuf8internal8NodeBaseEE9constructINS4_12MapAllocatorINSt3__14pairIKmS6_EEEEJSD_EEEvPT_PNS0_13map_slot_typeImS6_EEDpOT0_:
  383|  43.4k|  static void construct(Allocator* alloc, slot_type* slot, Args&&... args) {
  384|  43.4k|    emplace(slot);
  385|  43.4k|    if (kMutableKeys::value) {
  ------------------
  |  Branch (385:9): [Folded - Ignored]
  ------------------
  386|  43.4k|      absl::allocator_traits<Allocator>::construct(*alloc, &slot->mutable_value,
  387|  43.4k|                                                   std::forward<Args>(args)...);
  388|  43.4k|    } else {
  389|      0|      absl::allocator_traits<Allocator>::construct(*alloc, &slot->value,
  390|      0|                                                   std::forward<Args>(args)...);
  391|      0|    }
  392|  43.4k|  }
_ZN4absl18container_internal10DeallocateILm8ENSt3__19allocatorIPKN6google8protobuf8internal15DescriptorTableEEEEEvPT0_Pvm:
   74|      4|void Deallocate(Alloc* alloc, void* p, size_t n) {
   75|      4|  static_assert(Alignment > 0, "");
   76|      4|  assert(n && "n must be positive");
   77|      4|  using M = AlignedType<Alignment>;
   78|      4|  using A = typename absl::allocator_traits<Alloc>::template rebind_alloc<M>;
   79|      4|  using AT = typename absl::allocator_traits<Alloc>::template rebind_traits<M>;
   80|       |  // On macOS, "mem_alloc" is a #define with one argument defined in
   81|       |  // rpc/types.h, so we can't name the variable "mem_alloc" and initialize it
   82|       |  // with the "foo(bar)" syntax.
   83|      4|  A my_mem_alloc(*alloc);
   84|      4|  AT::deallocate(my_mem_alloc, static_cast<M*>(p),
   85|      4|                 (n + sizeof(M) - 1) / sizeof(M));
   86|      4|}
message.cc:_ZN4absl18container_internal14DecomposeValueINS0_12raw_hash_setINS0_17FlatHashSetPolicyIPKN6google8protobuf8internal15DescriptorTableEEENS5_12_GLOBAL__N_123GeneratedMessageFactory20DescriptorByNameHashENSC_18DescriptorByNameEqENSt3__19allocatorIS9_EEE19EmplaceDecomposableERKS9_EEDTclclsr3stdE7declvalIT_EEclsr3stdE7declvalIRKT0_EEclsr3stdE7declvalISN_EEEEOSM_OSN_:
  214|     10|DecomposeValue(F&& f, Arg&& arg) {
  215|     10|  const auto& key = arg;
  216|     10|  return std::forward<F>(f)(key, std::forward<Arg>(arg));
  217|     10|}
message.cc:_ZN4absl18container_internal14DecomposeValueINS0_12raw_hash_setINS0_17FlatHashSetPolicyIPKN6google8protobuf8internal15DescriptorTableEEENS5_12_GLOBAL__N_123GeneratedMessageFactory20DescriptorByNameHashENSC_18DescriptorByNameEqENSt3__19allocatorIS9_EEE11HashElementERS9_EEDTclclsr3stdE7declvalIT_EEclsr3stdE7declvalIRKT0_EEclsr3stdE7declvalISM_EEEEOSL_OSM_:
  214|      8|DecomposeValue(F&& f, Arg&& arg) {
  215|      8|  const auto& key = arg;
  216|      8|  return std::forward<F>(f)(key, std::forward<Arg>(arg));
  217|      8|}
_ZN4absl18container_internal21SanitizerPoisonObjectIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryEEEvPKT_:
  243|    292|inline void SanitizerPoisonObject(const T* object) {
  244|    292|  SanitizerPoisonMemoryRegion(object, sizeof(T));
  245|    292|}
_ZN4absl18container_internal10DeallocateILm8ENSt3__19allocatorIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryEEEEEvPT0_Pvm:
   74|      6|void Deallocate(Alloc* alloc, void* p, size_t n) {
   75|      6|  static_assert(Alignment > 0, "");
   76|      6|  assert(n && "n must be positive");
   77|      6|  using M = AlignedType<Alignment>;
   78|      6|  using A = typename absl::allocator_traits<Alloc>::template rebind_alloc<M>;
   79|      6|  using AT = typename absl::allocator_traits<Alloc>::template rebind_traits<M>;
   80|       |  // On macOS, "mem_alloc" is a #define with one argument defined in
   81|       |  // rpc/types.h, so we can't name the variable "mem_alloc" and initialize it
   82|       |  // with the "foo(bar)" syntax.
   83|      6|  A my_mem_alloc(*alloc);
   84|      6|  AT::deallocate(my_mem_alloc, static_cast<M*>(p),
   85|      6|                 (n + sizeof(M) - 1) / sizeof(M));
   86|      6|}
_ZN4absl18container_internal21SanitizerPoisonObjectIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryEEEvPKT_:
  243|     26|inline void SanitizerPoisonObject(const T* object) {
  244|     26|  SanitizerPoisonMemoryRegion(object, sizeof(T));
  245|     26|}
_ZN4absl18container_internal10DeallocateILm8ENSt3__19allocatorIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryEEEEEvPT0_Pvm:
   74|      6|void Deallocate(Alloc* alloc, void* p, size_t n) {
   75|      6|  static_assert(Alignment > 0, "");
   76|      6|  assert(n && "n must be positive");
   77|      6|  using M = AlignedType<Alignment>;
   78|      6|  using A = typename absl::allocator_traits<Alloc>::template rebind_alloc<M>;
   79|      6|  using AT = typename absl::allocator_traits<Alloc>::template rebind_traits<M>;
   80|       |  // On macOS, "mem_alloc" is a #define with one argument defined in
   81|       |  // rpc/types.h, so we can't name the variable "mem_alloc" and initialize it
   82|       |  // with the "foo(bar)" syntax.
   83|      6|  A my_mem_alloc(*alloc);
   84|      6|  AT::deallocate(my_mem_alloc, static_cast<M*>(p),
   85|      6|                 (n + sizeof(M) - 1) / sizeof(M));
   86|      6|}
_ZN4absl18container_internal8AllocateILm8ENSt3__19allocatorIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryEEEEEPvPT0_m:
   55|      8|void* Allocate(Alloc* alloc, size_t n) {
   56|      8|  static_assert(Alignment > 0, "");
   57|      8|  assert(n && "n must be positive");
   58|      8|  using M = AlignedType<Alignment>;
   59|      8|  using A = typename absl::allocator_traits<Alloc>::template rebind_alloc<M>;
   60|      8|  using AT = typename absl::allocator_traits<Alloc>::template rebind_traits<M>;
   61|       |  // On macOS, "mem_alloc" is a #define with one argument defined in
   62|       |  // rpc/types.h, so we can't name the variable "mem_alloc" and initialize it
   63|       |  // with the "foo(bar)" syntax.
   64|      8|  A my_mem_alloc(*alloc);
   65|      8|  void* p = AT::allocate(my_mem_alloc, (n + sizeof(M) - 1) / sizeof(M));
   66|      8|  assert(reinterpret_cast<uintptr_t>(p) % Alignment == 0 &&
   67|      8|         "allocator does not respect alignment");
   68|      8|  return p;
   69|      8|}
_ZN4absl18container_internal23SanitizerUnpoisonObjectIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryEEEvPKT_:
  248|     36|inline void SanitizerUnpoisonObject(const T* object) {
  249|     36|  SanitizerUnpoisonMemoryRegion(object, sizeof(T));
  250|     36|}
_ZN4absl18container_internal8AllocateILm8ENSt3__19allocatorIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryEEEEEPvPT0_m:
   55|     18|void* Allocate(Alloc* alloc, size_t n) {
   56|     18|  static_assert(Alignment > 0, "");
   57|     18|  assert(n && "n must be positive");
   58|     18|  using M = AlignedType<Alignment>;
   59|     18|  using A = typename absl::allocator_traits<Alloc>::template rebind_alloc<M>;
   60|     18|  using AT = typename absl::allocator_traits<Alloc>::template rebind_traits<M>;
   61|       |  // On macOS, "mem_alloc" is a #define with one argument defined in
   62|       |  // rpc/types.h, so we can't name the variable "mem_alloc" and initialize it
   63|       |  // with the "foo(bar)" syntax.
   64|     18|  A my_mem_alloc(*alloc);
   65|     18|  void* p = AT::allocate(my_mem_alloc, (n + sizeof(M) - 1) / sizeof(M));
   66|     18|  assert(reinterpret_cast<uintptr_t>(p) % Alignment == 0 &&
   67|     18|         "allocator does not respect alignment");
   68|     18|  return p;
   69|     18|}
_ZN4absl18container_internal23SanitizerUnpoisonObjectIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryEEEvPKT_:
  248|    356|inline void SanitizerUnpoisonObject(const T* object) {
  249|    356|  SanitizerUnpoisonMemoryRegion(object, sizeof(T));
  250|    356|}
_ZN4absl18container_internal23SanitizerUnpoisonObjectIPNS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS7_13SymbolCompareENSt3__19allocatorIS8_EELi256ELb0EEEEEEEvPKT_:
  248|     10|inline void SanitizerUnpoisonObject(const T* object) {
  249|     10|  SanitizerUnpoisonMemoryRegion(object, sizeof(T));
  250|     10|}

_ZNK4absl18container_internal10StringHashclENSt3__117basic_string_viewIcNS2_11char_traitsIcEEEE:
   77|  1.10M|  size_t operator()(absl::string_view v) const {
   78|  1.10M|    return absl::Hash<absl::string_view>{}(v);
   79|  1.10M|  }
_ZNK4absl18container_internal8StringEqclENSt3__117basic_string_viewIcNS2_11char_traitsIcEEEES6_:
   87|  7.63k|  bool operator()(absl::string_view lhs, absl::string_view rhs) const {
   88|  7.63k|    return lhs == rhs;
   89|  7.63k|  }

_ZN4absl18container_internal18hash_policy_traitsINS0_17FlatHashSetPolicyINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEvE5applyINS0_12raw_hash_setISA_NS0_10StringHashENS0_8StringEqENS7_IS9_EEE19EmplaceDecomposableEJRKPKcESA_EEDTclsrT1_5applyclsr3stdE7forwardIT_Efp_Espclsr3stdE7forwardIT0_Efp0_EEEOSO_DpOSP_:
  133|     21|      -> decltype(P::apply(std::forward<F>(f), std::forward<Ts>(ts)...)) {
  134|     21|    return P::apply(std::forward<F>(f), std::forward<Ts>(ts)...);
  135|     21|  }
_ZN4absl18container_internal18hash_policy_traitsINS0_17FlatHashSetPolicyINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEvE5applyINS0_12raw_hash_setISA_NS0_10StringHashENS0_8StringEqENS7_IS9_EEE12EqualElementIPKcEEJRS9_ESA_EEDTclsrT1_5applyclsr3stdE7forwardIT_Efp_Espclsr3stdE7forwardIT0_Efp0_EEEOSO_DpOSP_:
  133|      1|      -> decltype(P::apply(std::forward<F>(f), std::forward<Ts>(ts)...)) {
  134|      1|    return P::apply(std::forward<F>(f), std::forward<Ts>(ts)...);
  135|      1|  }
_ZN4absl18container_internal18hash_policy_traitsINS0_17FlatHashSetPolicyINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEvE5applyINS0_12raw_hash_setISA_NS0_10StringHashENS0_8StringEqENS7_IS9_EEE12EqualElementINS3_17basic_string_viewIcS6_EEEEJRS9_ESA_EEDTclsrT1_5applyclsr3stdE7forwardIT_Efp_Espclsr3stdE7forwardIT0_Efp0_EEEOSO_DpOSP_:
  133|  7.63k|      -> decltype(P::apply(std::forward<F>(f), std::forward<Ts>(ts)...)) {
  134|  7.63k|    return P::apply(std::forward<F>(f), std::forward<Ts>(ts)...);
  135|  7.63k|  }
message.cc:_ZN4absl18container_internal18hash_policy_traitsINS0_17FlatHashSetPolicyIPKN6google8protobuf8internal15DescriptorTableEEEvE5applyINS0_12raw_hash_setIS9_NS4_12_GLOBAL__N_123GeneratedMessageFactory20DescriptorByNameHashENSE_18DescriptorByNameEqENSt3__19allocatorIS8_EEE19EmplaceDecomposableEJRKS8_ES9_EEDTclsrT1_5applyclsr3stdE7forwardIT_Efp_Espclsr3stdE7forwardIT0_Efp0_EEEOSP_DpOSQ_:
  133|     10|      -> decltype(P::apply(std::forward<F>(f), std::forward<Ts>(ts)...)) {
  134|     10|    return P::apply(std::forward<F>(f), std::forward<Ts>(ts)...);
  135|     10|  }
message.cc:_ZN4absl18container_internal18hash_policy_traitsINS0_17FlatHashSetPolicyIPKN6google8protobuf8internal15DescriptorTableEEEvE5applyINS0_12raw_hash_setIS9_NS4_12_GLOBAL__N_123GeneratedMessageFactory20DescriptorByNameHashENSE_18DescriptorByNameEqENSt3__19allocatorIS8_EEE11HashElementEJRS8_ES9_EEDTclsrT1_5applyclsr3stdE7forwardIT_Efp_Espclsr3stdE7forwardIT0_Efp0_EEEOSO_DpOSP_:
  133|      8|      -> decltype(P::apply(std::forward<F>(f), std::forward<Ts>(ts)...)) {
  134|      8|    return P::apply(std::forward<F>(f), std::forward<Ts>(ts)...);
  135|      8|  }

_ZN4absl18container_internal20HashtablezInfoHandleC2EDn:
  198|      3|  explicit HashtablezInfoHandle(std::nullptr_t) {}
_ZN4absl18container_internal20HashtablezInfoHandle20RecordStorageChangedEmm:
  201|      7|  inline void RecordStorageChanged(size_t /*size*/, size_t /*capacity*/) {}
_ZN4absl18container_internal20HashtablezInfoHandle12RecordRehashEm:
  202|      6|  inline void RecordRehash(size_t /*total_probe_length*/) {}
_ZN4absl18container_internal20HashtablezInfoHandle12RecordInsertEmm:
  205|     31|  inline void RecordInsert(size_t /*hash*/, size_t /*distance_from_desired*/) {}
_ZN4absl18container_internal6SampleEm:
  220|      3|    size_t inline_element_size ABSL_ATTRIBUTE_UNUSED) {
  221|       |#if defined(ABSL_INTERNAL_HASHTABLEZ_SAMPLE)
  222|       |  if (ABSL_PREDICT_TRUE(--global_next_sample.next_sample > 0)) {
  223|       |    return HashtablezInfoHandle(nullptr);
  224|       |  }
  225|       |  return HashtablezInfoHandle(
  226|       |      SampleSlow(global_next_sample, inline_element_size));
  227|       |#else
  228|      3|  return HashtablezInfoHandle(nullptr);
  229|      3|#endif  // !ABSL_PER_THREAD_TLS
  230|      3|}

_ZN4absl18container_internal15internal_layout11adl_barrier5AlignEmm:
  283|  3.27M|constexpr size_t Align(size_t n, size_t m) { return (n + m - 1) & ~(m - 1); }
_ZNK4absl18container_internal15internal_layout10LayoutImplINSt3__15tupleIJPNS0_10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENS3_4lessImEENS9_12MapAllocatorINS3_4pairIKmSB_EEEELi256ELb0EEEEEjhNS0_13map_slot_typeImSB_EESL_EEENS_16integer_sequenceImJLm0ELm1ELm2ELm3ELm4EEEESQ_E6OffsetILm0ELi0EEEmv:
  399|  1.44M|  constexpr size_t Offset() const {
  400|  1.44M|    return 0;
  401|  1.44M|  }
_ZNK4absl18container_internal15internal_layout10LayoutImplINSt3__15tupleIJPNS0_10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENS3_4lessImEENS9_12MapAllocatorINS3_4pairIKmSB_EEEELi256ELb0EEEEEjhNS0_13map_slot_typeImSB_EESL_EEENS_16integer_sequenceImJLm0ELm1ELm2ELm3ELm4EEEESQ_E6OffsetILm1ELi0EEEmv:
  404|  1.35M|  constexpr size_t Offset() const {
  405|  1.35M|    static_assert(N < NumOffsets, "Index out of bounds");
  406|  1.35M|    return adl_barrier::Align(
  407|  1.35M|        Offset<N - 1>() + SizeOf<ElementType<N - 1>>::value * size_[N - 1],
  408|  1.35M|        ElementAlignment<N>::value);
  409|  1.35M|  }
_ZNK4absl18container_internal15internal_layout10LayoutImplINSt3__15tupleIJPNS0_10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENS3_4lessImEENS9_12MapAllocatorINS3_4pairIKmSB_EEEELi256ELb0EEEEEjhNS0_13map_slot_typeImSB_EESL_EEENS_16integer_sequenceImJLm0ELm1ELm2ELm3ELm4EEEESQ_E6OffsetILm2ELi0EEEmv:
  404|  1.35M|  constexpr size_t Offset() const {
  405|  1.35M|    static_assert(N < NumOffsets, "Index out of bounds");
  406|  1.35M|    return adl_barrier::Align(
  407|  1.35M|        Offset<N - 1>() + SizeOf<ElementType<N - 1>>::value * size_[N - 1],
  408|  1.35M|        ElementAlignment<N>::value);
  409|  1.35M|  }
_ZNK4absl18container_internal15internal_layout10LayoutImplINSt3__15tupleIJPNS0_10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENS3_4lessImEENS9_12MapAllocatorINS3_4pairIKmSB_EEEELi256ELb0EEEEEjhNS0_13map_slot_typeImSB_EESL_EEENS_16integer_sequenceImJLm0ELm1ELm2ELm3ELm4EEEESQ_E6OffsetILm3ELi0EEEmv:
  404|   504k|  constexpr size_t Offset() const {
  405|   504k|    static_assert(N < NumOffsets, "Index out of bounds");
  406|   504k|    return adl_barrier::Align(
  407|   504k|        Offset<N - 1>() + SizeOf<ElementType<N - 1>>::value * size_[N - 1],
  408|   504k|        ElementAlignment<N>::value);
  409|   504k|  }
_ZNK4absl18container_internal15internal_layout10LayoutImplINSt3__15tupleIJPNS0_10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENS3_4lessImEENS9_12MapAllocatorINS3_4pairIKmSB_EEEELi256ELb0EEEEEjhNS0_13map_slot_typeImSB_EESL_EEENS_16integer_sequenceImJLm0ELm1ELm2ELm3ELm4EEEESQ_E6OffsetILm4ELi0EEEmv:
  404|  48.2k|  constexpr size_t Offset() const {
  405|  48.2k|    static_assert(N < NumOffsets, "Index out of bounds");
  406|  48.2k|    return adl_barrier::Align(
  407|  48.2k|        Offset<N - 1>() + SizeOf<ElementType<N - 1>>::value * size_[N - 1],
  408|  48.2k|        ElementAlignment<N>::value);
  409|  48.2k|  }
_ZNK4absl18container_internal15internal_layout10LayoutImplINSt3__15tupleIJPNS0_10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENS3_4lessImEENS9_12MapAllocatorINS3_4pairIKmSB_EEEELi256ELb0EEEEEjhNS0_13map_slot_typeImSB_EESL_EEENS_16integer_sequenceImJLm0ELm1ELm2ELm3ELm4EEEESQ_E9AllocSizeEv:
  597|  48.2k|  constexpr size_t AllocSize() const {
  598|  48.2k|    static_assert(NumTypes == NumSizes, "You must specify sizes of all fields");
  599|  48.2k|    return Offset<NumTypes - 1>() +
  600|  48.2k|        SizeOf<ElementType<NumTypes - 1>>::value * size_[NumTypes - 1];
  601|  48.2k|  }
_ZNK4absl18container_internal15internal_layout10LayoutImplINSt3__15tupleIJPNS0_10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENS3_4lessImEENS9_12MapAllocatorINS3_4pairIKmSB_EEEELi256ELb0EEEEEjhNS0_13map_slot_typeImSB_EESL_EEENS_16integer_sequenceImJLm0ELm1ELm2ELm3ELm4EEEESQ_E7PointerILm2EKcEEPNS3_11conditionalIXsr3std8is_constIT0_EE5valueEKNS3_13tuple_elementIXT_ESO_E4typeESY_E4typeEPSV_:
  475|   675k|  CopyConst<Char, ElementType<N>>* Pointer(Char* p) const {
  476|   675k|    using C = typename std::remove_const<Char>::type;
  477|   675k|    static_assert(
  478|   675k|        std::is_same<C, char>() || std::is_same<C, unsigned char>() ||
  479|   675k|            std::is_same<C, signed char>(),
  480|   675k|        "The argument must be a pointer to [const] [signed|unsigned] char");
  481|   675k|    constexpr size_t alignment = Alignment();
  482|   675k|    (void)alignment;
  483|   675k|    assert(reinterpret_cast<uintptr_t>(p) % alignment == 0);
  484|   675k|    return reinterpret_cast<CopyConst<Char, ElementType<N>>*>(p + Offset<N>());
  485|   675k|  }
_ZNK4absl18container_internal15internal_layout10LayoutImplINSt3__15tupleIJPNS0_10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENS3_4lessImEENS9_12MapAllocatorINS3_4pairIKmSB_EEEELi256ELb0EEEEEjhNS0_13map_slot_typeImSB_EESL_EEENS_16integer_sequenceImJLm0ELm1ELm2ELm3ELm4EEEESQ_E7PointerILm0EKcEEPNS3_11conditionalIXsr3std8is_constIT0_EE5valueEKNS3_13tuple_elementIXT_ESO_E4typeESY_E4typeEPSV_:
  475|  62.3k|  CopyConst<Char, ElementType<N>>* Pointer(Char* p) const {
  476|  62.3k|    using C = typename std::remove_const<Char>::type;
  477|  62.3k|    static_assert(
  478|  62.3k|        std::is_same<C, char>() || std::is_same<C, unsigned char>() ||
  479|  62.3k|            std::is_same<C, signed char>(),
  480|  62.3k|        "The argument must be a pointer to [const] [signed|unsigned] char");
  481|  62.3k|    constexpr size_t alignment = Alignment();
  482|  62.3k|    (void)alignment;
  483|  62.3k|    assert(reinterpret_cast<uintptr_t>(p) % alignment == 0);
  484|  62.3k|    return reinterpret_cast<CopyConst<Char, ElementType<N>>*>(p + Offset<N>());
  485|  62.3k|  }
_ZNK4absl18container_internal15internal_layout10LayoutImplINSt3__15tupleIJPNS0_10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENS3_4lessImEENS9_12MapAllocatorINS3_4pairIKmSB_EEEELi256ELb0EEEEEjhNS0_13map_slot_typeImSB_EESL_EEENS_16integer_sequenceImJLm0ELm1ELm2ELm3ELm4EEEESQ_E7PointerILm3EcEEPNS3_11conditionalIXsr3std8is_constIT0_EE5valueEKNS3_13tuple_elementIXT_ESO_E4typeESX_E4typeEPSU_:
  475|   309k|  CopyConst<Char, ElementType<N>>* Pointer(Char* p) const {
  476|   309k|    using C = typename std::remove_const<Char>::type;
  477|   309k|    static_assert(
  478|   309k|        std::is_same<C, char>() || std::is_same<C, unsigned char>() ||
  479|   309k|            std::is_same<C, signed char>(),
  480|   309k|        "The argument must be a pointer to [const] [signed|unsigned] char");
  481|   309k|    constexpr size_t alignment = Alignment();
  482|   309k|    (void)alignment;
  483|   309k|    assert(reinterpret_cast<uintptr_t>(p) % alignment == 0);
  484|   309k|    return reinterpret_cast<CopyConst<Char, ElementType<N>>*>(p + Offset<N>());
  485|   309k|  }
_ZN4absl18container_internal6LayoutIJPNS0_10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS6_12MapAllocatorINS9_4pairIKmS8_EEEELi256ELb0EEEEEjhNS0_13map_slot_typeImS8_EESJ_EEC2Emmmmm:
  736|  1.44M|      : internal_layout::LayoutType<sizeof...(Ts), Ts...>(sizes...) {}
_ZN4absl18container_internal15internal_layout10LayoutImplINSt3__15tupleIJPNS0_10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENS3_4lessImEENS9_12MapAllocatorINS3_4pairIKmSB_EEEELi256ELb0EEEEEjhNS0_13map_slot_typeImSB_EESL_EEENS_16integer_sequenceImJLm0ELm1ELm2ELm3ELm4EEEESQ_EC2Emmmmm:
  382|  1.44M|      : size_{sizes...} {}
_ZNK4absl18container_internal15internal_layout10LayoutImplINSt3__15tupleIJPNS0_10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENS3_4lessImEENS9_12MapAllocatorINS3_4pairIKmSB_EEEELi256ELb0EEEEEjhNS0_13map_slot_typeImSB_EESL_EEENS_16integer_sequenceImJLm0ELm1ELm2ELm3ELm4EEEESQ_E7PointerILm3EKcEEPNS3_11conditionalIXsr3std8is_constIT0_EE5valueEKNS3_13tuple_elementIXT_ESO_E4typeESY_E4typeEPSV_:
  475|   146k|  CopyConst<Char, ElementType<N>>* Pointer(Char* p) const {
  476|   146k|    using C = typename std::remove_const<Char>::type;
  477|   146k|    static_assert(
  478|   146k|        std::is_same<C, char>() || std::is_same<C, unsigned char>() ||
  479|   146k|            std::is_same<C, signed char>(),
  480|   146k|        "The argument must be a pointer to [const] [signed|unsigned] char");
  481|   146k|    constexpr size_t alignment = Alignment();
  482|   146k|    (void)alignment;
  483|   146k|    assert(reinterpret_cast<uintptr_t>(p) % alignment == 0);
  484|   146k|    return reinterpret_cast<CopyConst<Char, ElementType<N>>*>(p + Offset<N>());
  485|   146k|  }
_ZNK4absl18container_internal15internal_layout10LayoutImplINSt3__15tupleIJPNS0_10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENS3_4lessImEENS9_12MapAllocatorINS3_4pairIKmSB_EEEELi256ELb0EEEEEjhNS0_13map_slot_typeImSB_EESL_EEENS_16integer_sequenceImJLm0ELm1ELm2ELm3ELm4EEEESQ_E7PointerILm0EcEEPNS3_11conditionalIXsr3std8is_constIT0_EE5valueEKNS3_13tuple_elementIXT_ESO_E4typeESX_E4typeEPSU_:
  475|  24.1k|  CopyConst<Char, ElementType<N>>* Pointer(Char* p) const {
  476|  24.1k|    using C = typename std::remove_const<Char>::type;
  477|  24.1k|    static_assert(
  478|  24.1k|        std::is_same<C, char>() || std::is_same<C, unsigned char>() ||
  479|  24.1k|            std::is_same<C, signed char>(),
  480|  24.1k|        "The argument must be a pointer to [const] [signed|unsigned] char");
  481|  24.1k|    constexpr size_t alignment = Alignment();
  482|  24.1k|    (void)alignment;
  483|  24.1k|    assert(reinterpret_cast<uintptr_t>(p) % alignment == 0);
  484|  24.1k|    return reinterpret_cast<CopyConst<Char, ElementType<N>>*>(p + Offset<N>());
  485|  24.1k|  }
_ZNK4absl18container_internal15internal_layout10LayoutImplINSt3__15tupleIJPNS0_10btree_nodeINS0_10map_paramsImPN6google8protobuf8internal8NodeBaseENS3_4lessImEENS9_12MapAllocatorINS3_4pairIKmSB_EEEELi256ELb0EEEEEjhNS0_13map_slot_typeImSB_EESL_EEENS_16integer_sequenceImJLm0ELm1ELm2ELm3ELm4EEEESQ_E7PointerILm2EcEEPNS3_11conditionalIXsr3std8is_constIT0_EE5valueEKNS3_13tuple_elementIXT_ESO_E4typeESX_E4typeEPSU_:
  475|   178k|  CopyConst<Char, ElementType<N>>* Pointer(Char* p) const {
  476|   178k|    using C = typename std::remove_const<Char>::type;
  477|   178k|    static_assert(
  478|   178k|        std::is_same<C, char>() || std::is_same<C, unsigned char>() ||
  479|   178k|            std::is_same<C, signed char>(),
  480|   178k|        "The argument must be a pointer to [const] [signed|unsigned] char");
  481|   178k|    constexpr size_t alignment = Alignment();
  482|   178k|    (void)alignment;
  483|   178k|    assert(reinterpret_cast<uintptr_t>(p) % alignment == 0);
  484|   178k|    return reinterpret_cast<CopyConst<Char, ElementType<N>>*>(p + Offset<N>());
  485|   178k|  }
_ZN4absl18container_internal6LayoutIJPNS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS7_13SymbolCompareENSt3__19allocatorIS8_EELi256ELb0EEEEEjhS8_SF_EEC2Emmmmm:
  736|  3.48k|      : internal_layout::LayoutType<sizeof...(Ts), Ts...>(sizes...) {}
_ZN4absl18container_internal15internal_layout10LayoutImplINSt3__15tupleIJPNS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENSA_13SymbolCompareENS3_9allocatorISB_EELi256ELb0EEEEEjhSB_SH_EEENS_16integer_sequenceImJLm0ELm1ELm2ELm3ELm4EEEESK_EC2Emmmmm:
  382|  3.48k|      : size_{sizes...} {}
_ZNK4absl18container_internal15internal_layout10LayoutImplINSt3__15tupleIJPNS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENSA_13SymbolCompareENS3_9allocatorISB_EELi256ELb0EEEEEjhSB_SH_EEENS_16integer_sequenceImJLm0ELm1ELm2ELm3ELm4EEEESK_E7PointerILm2EKcEEPNS3_11conditionalIXsr3std8is_constIT0_EE5valueEKNS3_13tuple_elementIXT_ESI_E4typeESS_E4typeEPSP_:
  475|  1.91k|  CopyConst<Char, ElementType<N>>* Pointer(Char* p) const {
  476|  1.91k|    using C = typename std::remove_const<Char>::type;
  477|  1.91k|    static_assert(
  478|  1.91k|        std::is_same<C, char>() || std::is_same<C, unsigned char>() ||
  479|  1.91k|            std::is_same<C, signed char>(),
  480|  1.91k|        "The argument must be a pointer to [const] [signed|unsigned] char");
  481|  1.91k|    constexpr size_t alignment = Alignment();
  482|  1.91k|    (void)alignment;
  483|  1.91k|    assert(reinterpret_cast<uintptr_t>(p) % alignment == 0);
  484|  1.91k|    return reinterpret_cast<CopyConst<Char, ElementType<N>>*>(p + Offset<N>());
  485|  1.91k|  }
_ZNK4absl18container_internal15internal_layout10LayoutImplINSt3__15tupleIJPNS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENSA_13SymbolCompareENS3_9allocatorISB_EELi256ELb0EEEEEjhSB_SH_EEENS_16integer_sequenceImJLm0ELm1ELm2ELm3ELm4EEEESK_E6OffsetILm2ELi0EEEmv:
  404|  3.17k|  constexpr size_t Offset() const {
  405|  3.17k|    static_assert(N < NumOffsets, "Index out of bounds");
  406|  3.17k|    return adl_barrier::Align(
  407|  3.17k|        Offset<N - 1>() + SizeOf<ElementType<N - 1>>::value * size_[N - 1],
  408|  3.17k|        ElementAlignment<N>::value);
  409|  3.17k|  }
_ZNK4absl18container_internal15internal_layout10LayoutImplINSt3__15tupleIJPNS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENSA_13SymbolCompareENS3_9allocatorISB_EELi256ELb0EEEEEjhSB_SH_EEENS_16integer_sequenceImJLm0ELm1ELm2ELm3ELm4EEEESK_E6OffsetILm1ELi0EEEmv:
  404|  3.17k|  constexpr size_t Offset() const {
  405|  3.17k|    static_assert(N < NumOffsets, "Index out of bounds");
  406|  3.17k|    return adl_barrier::Align(
  407|  3.17k|        Offset<N - 1>() + SizeOf<ElementType<N - 1>>::value * size_[N - 1],
  408|  3.17k|        ElementAlignment<N>::value);
  409|  3.17k|  }
_ZNK4absl18container_internal15internal_layout10LayoutImplINSt3__15tupleIJPNS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENSA_13SymbolCompareENS3_9allocatorISB_EELi256ELb0EEEEEjhSB_SH_EEENS_16integer_sequenceImJLm0ELm1ELm2ELm3ELm4EEEESK_E6OffsetILm0ELi0EEEmv:
  399|  3.48k|  constexpr size_t Offset() const {
  400|  3.48k|    return 0;
  401|  3.48k|  }
_ZNK4absl18container_internal15internal_layout10LayoutImplINSt3__15tupleIJPNS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENSA_13SymbolCompareENS3_9allocatorISB_EELi256ELb0EEEEEjhSB_SH_EEENS_16integer_sequenceImJLm0ELm1ELm2ELm3ELm4EEEESK_E7PointerILm3EcEEPNS3_11conditionalIXsr3std8is_constIT0_EE5valueEKNS3_13tuple_elementIXT_ESI_E4typeESR_E4typeEPSO_:
  475|    406|  CopyConst<Char, ElementType<N>>* Pointer(Char* p) const {
  476|    406|    using C = typename std::remove_const<Char>::type;
  477|    406|    static_assert(
  478|    406|        std::is_same<C, char>() || std::is_same<C, unsigned char>() ||
  479|    406|            std::is_same<C, signed char>(),
  480|    406|        "The argument must be a pointer to [const] [signed|unsigned] char");
  481|    406|    constexpr size_t alignment = Alignment();
  482|    406|    (void)alignment;
  483|    406|    assert(reinterpret_cast<uintptr_t>(p) % alignment == 0);
  484|    406|    return reinterpret_cast<CopyConst<Char, ElementType<N>>*>(p + Offset<N>());
  485|    406|  }
_ZNK4absl18container_internal15internal_layout10LayoutImplINSt3__15tupleIJPNS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENSA_13SymbolCompareENS3_9allocatorISB_EELi256ELb0EEEEEjhSB_SH_EEENS_16integer_sequenceImJLm0ELm1ELm2ELm3ELm4EEEESK_E6OffsetILm3ELi0EEEmv:
  404|  1.05k|  constexpr size_t Offset() const {
  405|  1.05k|    static_assert(N < NumOffsets, "Index out of bounds");
  406|  1.05k|    return adl_barrier::Align(
  407|  1.05k|        Offset<N - 1>() + SizeOf<ElementType<N - 1>>::value * size_[N - 1],
  408|  1.05k|        ElementAlignment<N>::value);
  409|  1.05k|  }
_ZNK4absl18container_internal15internal_layout10LayoutImplINSt3__15tupleIJPNS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENSA_13SymbolCompareENS3_9allocatorISB_EELi256ELb0EEEEEjhSB_SH_EEENS_16integer_sequenceImJLm0ELm1ELm2ELm3ELm4EEEESK_E9AllocSizeEv:
  597|     24|  constexpr size_t AllocSize() const {
  598|     24|    static_assert(NumTypes == NumSizes, "You must specify sizes of all fields");
  599|     24|    return Offset<NumTypes - 1>() +
  600|     24|        SizeOf<ElementType<NumTypes - 1>>::value * size_[NumTypes - 1];
  601|     24|  }
_ZNK4absl18container_internal15internal_layout10LayoutImplINSt3__15tupleIJPNS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENSA_13SymbolCompareENS3_9allocatorISB_EELi256ELb0EEEEEjhSB_SH_EEENS_16integer_sequenceImJLm0ELm1ELm2ELm3ELm4EEEESK_E6OffsetILm4ELi0EEEmv:
  404|    158|  constexpr size_t Offset() const {
  405|    158|    static_assert(N < NumOffsets, "Index out of bounds");
  406|    158|    return adl_barrier::Align(
  407|    158|        Offset<N - 1>() + SizeOf<ElementType<N - 1>>::value * size_[N - 1],
  408|    158|        ElementAlignment<N>::value);
  409|    158|  }
_ZNK4absl18container_internal15internal_layout10LayoutImplINSt3__15tupleIJPNS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENSA_13SymbolCompareENS3_9allocatorISB_EELi256ELb0EEEEEjhSB_SH_EEENS_16integer_sequenceImJLm0ELm1ELm2ELm3ELm4EEEESK_E7PointerILm0EKcEEPNS3_11conditionalIXsr3std8is_constIT0_EE5valueEKNS3_13tuple_elementIXT_ESI_E4typeESS_E4typeEPSP_:
  475|    290|  CopyConst<Char, ElementType<N>>* Pointer(Char* p) const {
  476|    290|    using C = typename std::remove_const<Char>::type;
  477|    290|    static_assert(
  478|    290|        std::is_same<C, char>() || std::is_same<C, unsigned char>() ||
  479|    290|            std::is_same<C, signed char>(),
  480|    290|        "The argument must be a pointer to [const] [signed|unsigned] char");
  481|    290|    constexpr size_t alignment = Alignment();
  482|    290|    (void)alignment;
  483|    290|    assert(reinterpret_cast<uintptr_t>(p) % alignment == 0);
  484|    290|    return reinterpret_cast<CopyConst<Char, ElementType<N>>*>(p + Offset<N>());
  485|    290|  }
_ZNK4absl18container_internal15internal_layout10LayoutImplINSt3__15tupleIJPNS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENSA_13SymbolCompareENS3_9allocatorISB_EELi256ELb0EEEEEjhSB_SH_EEENS_16integer_sequenceImJLm0ELm1ELm2ELm3ELm4EEEESK_E7PointerILm4EKcEEPNS3_11conditionalIXsr3std8is_constIT0_EE5valueEKNS3_13tuple_elementIXT_ESI_E4typeESS_E4typeEPSP_:
  475|    112|  CopyConst<Char, ElementType<N>>* Pointer(Char* p) const {
  476|    112|    using C = typename std::remove_const<Char>::type;
  477|    112|    static_assert(
  478|    112|        std::is_same<C, char>() || std::is_same<C, unsigned char>() ||
  479|    112|            std::is_same<C, signed char>(),
  480|    112|        "The argument must be a pointer to [const] [signed|unsigned] char");
  481|    112|    constexpr size_t alignment = Alignment();
  482|    112|    (void)alignment;
  483|    112|    assert(reinterpret_cast<uintptr_t>(p) % alignment == 0);
  484|    112|    return reinterpret_cast<CopyConst<Char, ElementType<N>>*>(p + Offset<N>());
  485|    112|  }
_ZN4absl18container_internal6LayoutIJPNS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS7_11FileCompareENSt3__19allocatorIS8_EELi256ELb0EEEEEjhS8_SF_EEC2Emmmmm:
  736|    296|      : internal_layout::LayoutType<sizeof...(Ts), Ts...>(sizes...) {}
_ZN4absl18container_internal15internal_layout10LayoutImplINSt3__15tupleIJPNS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENSA_11FileCompareENS3_9allocatorISB_EELi256ELb0EEEEEjhSB_SH_EEENS_16integer_sequenceImJLm0ELm1ELm2ELm3ELm4EEEESK_EC2Emmmmm:
  382|    296|      : size_{sizes...} {}
_ZNK4absl18container_internal15internal_layout10LayoutImplINSt3__15tupleIJPNS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENSA_11FileCompareENS3_9allocatorISB_EELi256ELb0EEEEEjhSB_SH_EEENS_16integer_sequenceImJLm0ELm1ELm2ELm3ELm4EEEESK_E7PointerILm2EKcEEPNS3_11conditionalIXsr3std8is_constIT0_EE5valueEKNS3_13tuple_elementIXT_ESI_E4typeESS_E4typeEPSP_:
  475|    136|  CopyConst<Char, ElementType<N>>* Pointer(Char* p) const {
  476|    136|    using C = typename std::remove_const<Char>::type;
  477|    136|    static_assert(
  478|    136|        std::is_same<C, char>() || std::is_same<C, unsigned char>() ||
  479|    136|            std::is_same<C, signed char>(),
  480|    136|        "The argument must be a pointer to [const] [signed|unsigned] char");
  481|    136|    constexpr size_t alignment = Alignment();
  482|    136|    (void)alignment;
  483|    136|    assert(reinterpret_cast<uintptr_t>(p) % alignment == 0);
  484|    136|    return reinterpret_cast<CopyConst<Char, ElementType<N>>*>(p + Offset<N>());
  485|    136|  }
_ZNK4absl18container_internal15internal_layout10LayoutImplINSt3__15tupleIJPNS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENSA_11FileCompareENS3_9allocatorISB_EELi256ELb0EEEEEjhSB_SH_EEENS_16integer_sequenceImJLm0ELm1ELm2ELm3ELm4EEEESK_E6OffsetILm2ELi0EEEmv:
  404|    282|  constexpr size_t Offset() const {
  405|    282|    static_assert(N < NumOffsets, "Index out of bounds");
  406|    282|    return adl_barrier::Align(
  407|    282|        Offset<N - 1>() + SizeOf<ElementType<N - 1>>::value * size_[N - 1],
  408|    282|        ElementAlignment<N>::value);
  409|    282|  }
_ZNK4absl18container_internal15internal_layout10LayoutImplINSt3__15tupleIJPNS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENSA_11FileCompareENS3_9allocatorISB_EELi256ELb0EEEEEjhSB_SH_EEENS_16integer_sequenceImJLm0ELm1ELm2ELm3ELm4EEEESK_E6OffsetILm1ELi0EEEmv:
  404|    282|  constexpr size_t Offset() const {
  405|    282|    static_assert(N < NumOffsets, "Index out of bounds");
  406|    282|    return adl_barrier::Align(
  407|    282|        Offset<N - 1>() + SizeOf<ElementType<N - 1>>::value * size_[N - 1],
  408|    282|        ElementAlignment<N>::value);
  409|    282|  }
_ZNK4absl18container_internal15internal_layout10LayoutImplINSt3__15tupleIJPNS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENSA_11FileCompareENS3_9allocatorISB_EELi256ELb0EEEEEjhSB_SH_EEENS_16integer_sequenceImJLm0ELm1ELm2ELm3ELm4EEEESK_E6OffsetILm0ELi0EEEmv:
  399|    296|  constexpr size_t Offset() const {
  400|    296|    return 0;
  401|    296|  }
_ZNK4absl18container_internal15internal_layout10LayoutImplINSt3__15tupleIJPNS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENSA_11FileCompareENS3_9allocatorISB_EELi256ELb0EEEEEjhSB_SH_EEENS_16integer_sequenceImJLm0ELm1ELm2ELm3ELm4EEEESK_E7PointerILm3EcEEPNS3_11conditionalIXsr3std8is_constIT0_EE5valueEKNS3_13tuple_elementIXT_ESI_E4typeESR_E4typeEPSO_:
  475|     60|  CopyConst<Char, ElementType<N>>* Pointer(Char* p) const {
  476|     60|    using C = typename std::remove_const<Char>::type;
  477|     60|    static_assert(
  478|     60|        std::is_same<C, char>() || std::is_same<C, unsigned char>() ||
  479|     60|            std::is_same<C, signed char>(),
  480|     60|        "The argument must be a pointer to [const] [signed|unsigned] char");
  481|     60|    constexpr size_t alignment = Alignment();
  482|     60|    (void)alignment;
  483|     60|    assert(reinterpret_cast<uintptr_t>(p) % alignment == 0);
  484|     60|    return reinterpret_cast<CopyConst<Char, ElementType<N>>*>(p + Offset<N>());
  485|     60|  }
_ZNK4absl18container_internal15internal_layout10LayoutImplINSt3__15tupleIJPNS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENSA_11FileCompareENS3_9allocatorISB_EELi256ELb0EEEEEjhSB_SH_EEENS_16integer_sequenceImJLm0ELm1ELm2ELm3ELm4EEEESK_E6OffsetILm3ELi0EEEmv:
  404|     92|  constexpr size_t Offset() const {
  405|     92|    static_assert(N < NumOffsets, "Index out of bounds");
  406|     92|    return adl_barrier::Align(
  407|     92|        Offset<N - 1>() + SizeOf<ElementType<N - 1>>::value * size_[N - 1],
  408|     92|        ElementAlignment<N>::value);
  409|     92|  }
_ZNK4absl18container_internal15internal_layout10LayoutImplINSt3__15tupleIJPNS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENSA_11FileCompareENS3_9allocatorISB_EELi256ELb0EEEEEjhSB_SH_EEENS_16integer_sequenceImJLm0ELm1ELm2ELm3ELm4EEEESK_E9AllocSizeEv:
  597|     14|  constexpr size_t AllocSize() const {
  598|     14|    static_assert(NumTypes == NumSizes, "You must specify sizes of all fields");
  599|     14|    return Offset<NumTypes - 1>() +
  600|     14|        SizeOf<ElementType<NumTypes - 1>>::value * size_[NumTypes - 1];
  601|     14|  }
_ZNK4absl18container_internal15internal_layout10LayoutImplINSt3__15tupleIJPNS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENSA_11FileCompareENS3_9allocatorISB_EELi256ELb0EEEEEjhSB_SH_EEENS_16integer_sequenceImJLm0ELm1ELm2ELm3ELm4EEEESK_E6OffsetILm4ELi0EEEmv:
  404|     14|  constexpr size_t Offset() const {
  405|     14|    static_assert(N < NumOffsets, "Index out of bounds");
  406|     14|    return adl_barrier::Align(
  407|     14|        Offset<N - 1>() + SizeOf<ElementType<N - 1>>::value * size_[N - 1],
  408|     14|        ElementAlignment<N>::value);
  409|     14|  }
_ZNK4absl18container_internal15internal_layout10LayoutImplINSt3__15tupleIJPNS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENSA_11FileCompareENS3_9allocatorISB_EELi256ELb0EEEEEjhSB_SH_EEENS_16integer_sequenceImJLm0ELm1ELm2ELm3ELm4EEEESK_E7PointerILm0EKcEEPNS3_11conditionalIXsr3std8is_constIT0_EE5valueEKNS3_13tuple_elementIXT_ESI_E4typeESS_E4typeEPSP_:
  475|      6|  CopyConst<Char, ElementType<N>>* Pointer(Char* p) const {
  476|      6|    using C = typename std::remove_const<Char>::type;
  477|      6|    static_assert(
  478|      6|        std::is_same<C, char>() || std::is_same<C, unsigned char>() ||
  479|      6|            std::is_same<C, signed char>(),
  480|      6|        "The argument must be a pointer to [const] [signed|unsigned] char");
  481|      6|    constexpr size_t alignment = Alignment();
  482|      6|    (void)alignment;
  483|      6|    assert(reinterpret_cast<uintptr_t>(p) % alignment == 0);
  484|      6|    return reinterpret_cast<CopyConst<Char, ElementType<N>>*>(p + Offset<N>());
  485|      6|  }
_ZNK4absl18container_internal15internal_layout10LayoutImplINSt3__15tupleIJPNS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENSA_11FileCompareENS3_9allocatorISB_EELi256ELb0EEEEEjhSB_SH_EEENS_16integer_sequenceImJLm0ELm1ELm2ELm3ELm4EEEESK_E7PointerILm0EcEEPNS3_11conditionalIXsr3std8is_constIT0_EE5valueEKNS3_13tuple_elementIXT_ESI_E4typeESR_E4typeEPSO_:
  475|      8|  CopyConst<Char, ElementType<N>>* Pointer(Char* p) const {
  476|      8|    using C = typename std::remove_const<Char>::type;
  477|      8|    static_assert(
  478|      8|        std::is_same<C, char>() || std::is_same<C, unsigned char>() ||
  479|      8|            std::is_same<C, signed char>(),
  480|      8|        "The argument must be a pointer to [const] [signed|unsigned] char");
  481|      8|    constexpr size_t alignment = Alignment();
  482|      8|    (void)alignment;
  483|      8|    assert(reinterpret_cast<uintptr_t>(p) % alignment == 0);
  484|      8|    return reinterpret_cast<CopyConst<Char, ElementType<N>>*>(p + Offset<N>());
  485|      8|  }
_ZNK4absl18container_internal15internal_layout10LayoutImplINSt3__15tupleIJPNS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENSA_11FileCompareENS3_9allocatorISB_EELi256ELb0EEEEEjhSB_SH_EEENS_16integer_sequenceImJLm0ELm1ELm2ELm3ELm4EEEESK_E7PointerILm2EcEEPNS3_11conditionalIXsr3std8is_constIT0_EE5valueEKNS3_13tuple_elementIXT_ESI_E4typeESR_E4typeEPSO_:
  475|     54|  CopyConst<Char, ElementType<N>>* Pointer(Char* p) const {
  476|     54|    using C = typename std::remove_const<Char>::type;
  477|     54|    static_assert(
  478|     54|        std::is_same<C, char>() || std::is_same<C, unsigned char>() ||
  479|     54|            std::is_same<C, signed char>(),
  480|     54|        "The argument must be a pointer to [const] [signed|unsigned] char");
  481|     54|    constexpr size_t alignment = Alignment();
  482|     54|    (void)alignment;
  483|     54|    assert(reinterpret_cast<uintptr_t>(p) % alignment == 0);
  484|     54|    return reinterpret_cast<CopyConst<Char, ElementType<N>>*>(p + Offset<N>());
  485|     54|  }
_ZNK4absl18container_internal15internal_layout10LayoutImplINSt3__15tupleIJPNS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENSA_11FileCompareENS3_9allocatorISB_EELi256ELb0EEEEEjhSB_SH_EEENS_16integer_sequenceImJLm0ELm1ELm2ELm3ELm4EEEESK_E7PointerILm3EKcEEPNS3_11conditionalIXsr3std8is_constIT0_EE5valueEKNS3_13tuple_elementIXT_ESI_E4typeESS_E4typeEPSP_:
  475|     18|  CopyConst<Char, ElementType<N>>* Pointer(Char* p) const {
  476|     18|    using C = typename std::remove_const<Char>::type;
  477|     18|    static_assert(
  478|     18|        std::is_same<C, char>() || std::is_same<C, unsigned char>() ||
  479|     18|            std::is_same<C, signed char>(),
  480|     18|        "The argument must be a pointer to [const] [signed|unsigned] char");
  481|     18|    constexpr size_t alignment = Alignment();
  482|     18|    (void)alignment;
  483|     18|    assert(reinterpret_cast<uintptr_t>(p) % alignment == 0);
  484|     18|    return reinterpret_cast<CopyConst<Char, ElementType<N>>*>(p + Offset<N>());
  485|     18|  }
_ZNK4absl18container_internal15internal_layout10LayoutImplINSt3__15tupleIJPNS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENSA_13SymbolCompareENS3_9allocatorISB_EELi256ELb0EEEEEjhSB_SH_EEENS_16integer_sequenceImJLm0ELm1ELm2ELm3ELm4EEEESK_E7PointerILm3EKcEEPNS3_11conditionalIXsr3std8is_constIT0_EE5valueEKNS3_13tuple_elementIXT_ESI_E4typeESS_E4typeEPSP_:
  475|    486|  CopyConst<Char, ElementType<N>>* Pointer(Char* p) const {
  476|    486|    using C = typename std::remove_const<Char>::type;
  477|    486|    static_assert(
  478|    486|        std::is_same<C, char>() || std::is_same<C, unsigned char>() ||
  479|    486|            std::is_same<C, signed char>(),
  480|    486|        "The argument must be a pointer to [const] [signed|unsigned] char");
  481|    486|    constexpr size_t alignment = Alignment();
  482|    486|    (void)alignment;
  483|    486|    assert(reinterpret_cast<uintptr_t>(p) % alignment == 0);
  484|    486|    return reinterpret_cast<CopyConst<Char, ElementType<N>>*>(p + Offset<N>());
  485|    486|  }
_ZNK4absl18container_internal15internal_layout10LayoutImplINSt3__15tupleIJPNS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENSA_13SymbolCompareENS3_9allocatorISB_EELi256ELb0EEEEEjhSB_SH_EEENS_16integer_sequenceImJLm0ELm1ELm2ELm3ELm4EEEESK_E7PointerILm0EcEEPNS3_11conditionalIXsr3std8is_constIT0_EE5valueEKNS3_13tuple_elementIXT_ESI_E4typeESR_E4typeEPSO_:
  475|     20|  CopyConst<Char, ElementType<N>>* Pointer(Char* p) const {
  476|     20|    using C = typename std::remove_const<Char>::type;
  477|     20|    static_assert(
  478|     20|        std::is_same<C, char>() || std::is_same<C, unsigned char>() ||
  479|     20|            std::is_same<C, signed char>(),
  480|     20|        "The argument must be a pointer to [const] [signed|unsigned] char");
  481|     20|    constexpr size_t alignment = Alignment();
  482|     20|    (void)alignment;
  483|     20|    assert(reinterpret_cast<uintptr_t>(p) % alignment == 0);
  484|     20|    return reinterpret_cast<CopyConst<Char, ElementType<N>>*>(p + Offset<N>());
  485|     20|  }
_ZNK4absl18container_internal15internal_layout10LayoutImplINSt3__15tupleIJPNS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENSA_13SymbolCompareENS3_9allocatorISB_EELi256ELb0EEEEEjhSB_SH_EEENS_16integer_sequenceImJLm0ELm1ELm2ELm3ELm4EEEESK_E7PointerILm2EcEEPNS3_11conditionalIXsr3std8is_constIT0_EE5valueEKNS3_13tuple_elementIXT_ESI_E4typeESR_E4typeEPSO_:
  475|    208|  CopyConst<Char, ElementType<N>>* Pointer(Char* p) const {
  476|    208|    using C = typename std::remove_const<Char>::type;
  477|    208|    static_assert(
  478|    208|        std::is_same<C, char>() || std::is_same<C, unsigned char>() ||
  479|    208|            std::is_same<C, signed char>(),
  480|    208|        "The argument must be a pointer to [const] [signed|unsigned] char");
  481|    208|    constexpr size_t alignment = Alignment();
  482|    208|    (void)alignment;
  483|    208|    assert(reinterpret_cast<uintptr_t>(p) % alignment == 0);
  484|    208|    return reinterpret_cast<CopyConst<Char, ElementType<N>>*>(p + Offset<N>());
  485|    208|  }
_ZNK4absl18container_internal15internal_layout10LayoutImplINSt3__15tupleIJPNS0_10btree_nodeINS0_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENSA_13SymbolCompareENS3_9allocatorISB_EELi256ELb0EEEEEjhSB_SH_EEENS_16integer_sequenceImJLm0ELm1ELm2ELm3ELm4EEEESK_E7PointerILm4EcEEPNS3_11conditionalIXsr3std8is_constIT0_EE5valueEKNS3_13tuple_elementIXT_ESI_E4typeESR_E4typeEPSO_:
  475|     22|  CopyConst<Char, ElementType<N>>* Pointer(Char* p) const {
  476|     22|    using C = typename std::remove_const<Char>::type;
  477|     22|    static_assert(
  478|     22|        std::is_same<C, char>() || std::is_same<C, unsigned char>() ||
  479|     22|            std::is_same<C, signed char>(),
  480|     22|        "The argument must be a pointer to [const] [signed|unsigned] char");
  481|     22|    constexpr size_t alignment = Alignment();
  482|     22|    (void)alignment;
  483|     22|    assert(reinterpret_cast<uintptr_t>(p) % alignment == 0);
  484|     22|    return reinterpret_cast<CopyConst<Char, ElementType<N>>*>(p + Offset<N>());
  485|     22|  }

_ZN4absl18container_internal12raw_hash_mapINS0_17FlatHashMapPolicyIPKN6google8protobuf10DescriptorEPKNS4_7MessageEEENS0_6HashEqIS7_vE4HashENSD_2EqENSt3__19allocatorINSG_4pairIKS7_SA_EEEEEC2Ev:
   62|      2|  raw_hash_map() {}

_ZN4absl18container_internal13GroupSse2ImplC2EPKNS0_6ctrl_tE:
  584|  1.10M|  explicit GroupSse2Impl(const ctrl_t* pos) {
  585|  1.10M|    ctrl = _mm_loadu_si128(reinterpret_cast<const __m128i*>(pos));
  586|  1.10M|  }
_ZNK4absl18container_internal13GroupSse2Impl5MatchEh:
  589|  1.10M|  BitMask<uint32_t, kWidth> Match(h2_t hash) const {
  590|  1.10M|    auto match = _mm_set1_epi8(static_cast<char>(hash));
  591|  1.10M|    return BitMask<uint32_t, kWidth>(
  592|  1.10M|        static_cast<uint32_t>(_mm_movemask_epi8(_mm_cmpeq_epi8(match, ctrl))));
  593|  1.10M|  }
_ZNK4absl18container_internal13GroupSse2Impl9MaskEmptyEv:
  596|  1.10M|  NonIterableBitMask<uint32_t, kWidth> MaskEmpty() const {
  597|       |#ifdef ABSL_INTERNAL_HAVE_SSSE3
  598|       |    // This only works because ctrl_t::kEmpty is -128.
  599|       |    return NonIterableBitMask<uint32_t, kWidth>(
  600|       |        static_cast<uint32_t>(_mm_movemask_epi8(_mm_sign_epi8(ctrl, ctrl))));
  601|       |#else
  602|  1.10M|    auto match = _mm_set1_epi8(static_cast<char>(ctrl_t::kEmpty));
  603|  1.10M|    return NonIterableBitMask<uint32_t, kWidth>(
  604|  1.10M|        static_cast<uint32_t>(_mm_movemask_epi8(_mm_cmpeq_epi8(match, ctrl))));
  605|  1.10M|#endif
  606|  1.10M|  }
_ZNK4absl18container_internal13GroupSse2Impl18MaskEmptyOrDeletedEv:
  609|     45|  NonIterableBitMask<uint32_t, kWidth> MaskEmptyOrDeleted() const {
  610|     45|    auto special = _mm_set1_epi8(static_cast<char>(ctrl_t::kSentinel));
  611|     45|    return NonIterableBitMask<uint32_t, kWidth>(static_cast<uint32_t>(
  612|     45|        _mm_movemask_epi8(_mm_cmpgt_epi8_fixed(special, ctrl))));
  613|     45|  }
_ZNK4absl18container_internal34CommonFieldsGenerationInfoDisabled41should_rehash_for_bug_detection_on_insertEPKNS0_6ctrl_tEm:
  843|     31|  bool should_rehash_for_bug_detection_on_insert(const ctrl_t*, size_t) const {
  844|     31|    return false;
  845|     31|  }
_ZN4absl18container_internal34CommonFieldsGenerationInfoDisabled36maybe_increment_generation_on_insertEv:
  846|     31|  void maybe_increment_generation_on_insert() {}
_ZNK4absl18container_internal34CommonFieldsGenerationInfoDisabled10generationEv:
  850|      7|  GenerationType generation() const { return 0; }
_ZN4absl18container_internal34CommonFieldsGenerationInfoDisabled14set_generationEh:
  851|      7|  void set_generation(GenerationType) {}
_ZNK4absl18container_internal34CommonFieldsGenerationInfoDisabled14generation_ptrEv:
  852|  2.20M|  GenerationType* generation_ptr() const { return nullptr; }
_ZN4absl18container_internal34CommonFieldsGenerationInfoDisabled18set_generation_ptrEPh:
  853|      7|  void set_generation_ptr(GenerationType*) {}
_ZN4absl18container_internal37HashSetIteratorGenerationInfoDisabledC2EPKh:
  876|  2.20M|  explicit HashSetIteratorGenerationInfoDisabled(const GenerationType*) {}
_ZNK4absl18container_internal37HashSetIteratorGenerationInfoDisabled10generationEv:
  878|  2.20M|  GenerationType generation() const { return 0; }
_ZNK4absl18container_internal37HashSetIteratorGenerationInfoDisabled14generation_ptrEv:
  880|  4.40M|  const GenerationType* generation_ptr() const { return nullptr; }
_ZN4absl18container_internal12CommonFieldsC2EOS1_:
  913|      5|        compressed_tuple_(that.growth_left(), std::move(that.infoz())) {
  914|      5|    that.control_ = EmptyGroup();
  915|      5|    that.slots_ = nullptr;
  916|      5|    that.size_ = 0;
  917|      5|    that.capacity_ = 0;
  918|      5|    that.growth_left() = 0;
  919|      5|  }
_ZN4absl18container_internal12CommonFields11growth_leftEv:
  923|     79|  size_t& growth_left() { return compressed_tuple_.template get<0>(); }
_ZN4absl18container_internal12CommonFields5infozEv:
  925|     52|  HashtablezInfoHandle& infoz() { return compressed_tuple_.template get<1>(); }
_ZNK4absl18container_internal12CommonFields41should_rehash_for_bug_detection_on_insertEv:
  930|     31|  bool should_rehash_for_bug_detection_on_insert() const {
  931|     31|    return CommonFieldsGenerationInfo::
  932|     31|        should_rehash_for_bug_detection_on_insert(control_, capacity_);
  933|     31|  }
_ZN4absl18container_internal23SentinelEmptyGenerationEv:
  241|      7|constexpr GenerationType SentinelEmptyGeneration() { return 0; }
_ZN4absl18container_internal14NextGenerationEh:
  243|      7|constexpr GenerationType NextGeneration(GenerationType generation) {
  244|      7|  return ++generation == SentinelEmptyGeneration() ? ++generation : generation;
  ------------------
  |  Branch (244:10): [True: 0, False: 7]
  ------------------
  245|      7|}
_ZN4absl18container_internal18NumGenerationBytesEv:
  252|     18|constexpr size_t NumGenerationBytes() { return 0; }
_ZN4absl18container_internal10EmptyGroupEv:
  490|     10|inline ctrl_t* EmptyGroup() {
  491|       |  // Const must be cast away here; no uses of this function will actually write
  492|       |  // to it, because it is only used for empty tables.
  493|     10|  return const_cast<ctrl_t*>(kEmptyGroup);
  494|     10|}
_ZN4absl18container_internal12PerTableSaltEPKNS0_6ctrl_tE:
  514|  1.10M|inline size_t PerTableSalt(const ctrl_t* ctrl) {
  515|       |  // The low bits of the pointer have little or no entropy because of
  516|       |  // alignment. We shift the pointer to try to use higher entropy bits. A
  517|       |  // good number seems to be 12 bits, because that aligns with page size.
  518|  1.10M|  return reinterpret_cast<uintptr_t>(ctrl) >> 12;
  519|  1.10M|}
_ZN4absl18container_internal2H1EmPKNS0_6ctrl_tE:
  521|  1.10M|inline size_t H1(size_t hash, const ctrl_t* ctrl) {
  522|  1.10M|  return (hash >> 7) ^ PerTableSalt(ctrl);
  523|  1.10M|}
_ZN4absl18container_internal2H2Em:
  528|  1.10M|inline h2_t H2(size_t hash) { return hash & 0x7F; }
_ZN4absl18container_internal7IsEmptyENS0_6ctrl_tE:
  531|     31|inline bool IsEmpty(ctrl_t c) { return c == ctrl_t::kEmpty; }
_ZN4absl18container_internal6IsFullENS0_6ctrl_tE:
  532|     47|inline bool IsFull(ctrl_t c) { return c >= static_cast<ctrl_t>(0); }
_ZN4absl18container_internal9IsDeletedENS0_6ctrl_tE:
  533|      6|inline bool IsDeleted(ctrl_t c) { return c == ctrl_t::kDeleted; }
_ZN4absl18container_internal20_mm_cmpgt_epi8_fixedEDv2_xS1_:
  570|     45|inline __m128i _mm_cmpgt_epi8_fixed(__m128i a, __m128i b) {
  571|       |#if defined(__GNUC__) && !defined(__clang__)
  572|       |  if (std::is_unsigned<char>::value) {
  573|       |    const __m128i mask = _mm_set1_epi8(0x80);
  574|       |    const __m128i diff = _mm_subs_epi8(b, a);
  575|       |    return _mm_cmpeq_epi8(_mm_and_si128(diff, mask), mask);
  576|       |  }
  577|       |#endif
  578|     45|  return _mm_cmpgt_epi8(a, b);
  579|     45|}
_ZN4absl18container_internal14NumClonedBytesEv:
  969|    110|constexpr size_t NumClonedBytes() { return Group::kWidth - 1; }
_ZN4absl18container_internal12NextCapacityEm:
  980|      6|inline size_t NextCapacity(size_t n) {
  981|      6|  assert(IsValidCapacity(n) || n == 0);
  982|      6|  return n * 2 + 1;
  983|      6|}
_ZN4absl18container_internal17NormalizeCapacityEm:
  996|      1|inline size_t NormalizeCapacity(size_t n) {
  997|      1|  return n ? ~size_t{} >> countl_zero(n) : 1;
  ------------------
  |  Branch (997:10): [True: 1, False: 0]
  ------------------
  998|      1|}
_ZN4absl18container_internal16CapacityToGrowthEm:
 1010|      7|inline size_t CapacityToGrowth(size_t capacity) {
 1011|      7|  assert(IsValidCapacity(capacity));
 1012|       |  // `capacity*7/8`
 1013|      7|  if (Group::kWidth == 8 && capacity == 7) {
  ------------------
  |  Branch (1013:7): [Folded - Ignored]
  |  Branch (1013:29): [True: 0, False: 0]
  ------------------
 1014|       |    // x-x/8 does not work when x==7.
 1015|      0|    return 6;
 1016|      0|  }
 1017|      7|  return capacity - capacity / 8;
 1018|      7|}
_ZN4absl18container_internal26GrowthToLowerboundCapacityEm:
 1025|      1|inline size_t GrowthToLowerboundCapacity(size_t growth) {
 1026|       |  // `growth*8/7`
 1027|      1|  if (Group::kWidth == 8 && growth == 7) {
  ------------------
  |  Branch (1027:7): [Folded - Ignored]
  |  Branch (1027:29): [True: 0, False: 0]
  ------------------
 1028|       |    // x+(x-1)/7 does not work when x==7.
 1029|      0|    return 8;
 1030|      0|  }
 1031|      1|  return growth + static_cast<size_t>((static_cast<int64_t>(growth) - 1) / 7);
 1032|      1|}
_ZN4absl18container_internal26AssertIsValidForComparisonEPKNS0_6ctrl_tEhPKh:
 1099|  2.20M|                                       const GenerationType* generation_ptr) {
 1100|  2.20M|  if (!SwisstableDebugEnabled()) return;
  ------------------
  |  Branch (1100:7): [Folded - Ignored]
  ------------------
 1101|      0|  const bool ctrl_is_valid_for_comparison =
 1102|      0|      ctrl == nullptr || ctrl == EmptyGroup() || IsFull(*ctrl);
  ------------------
  |  Branch (1102:7): [True: 0, False: 0]
  |  Branch (1102:26): [True: 0, False: 0]
  |  Branch (1102:50): [True: 0, False: 0]
  ------------------
 1103|      0|  if (SwisstableGenerationsEnabled()) {
  ------------------
  |  Branch (1103:7): [Folded - Ignored]
  ------------------
 1104|      0|    if (generation != *generation_ptr) {
  ------------------
  |  Branch (1104:9): [True: 0, False: 0]
  ------------------
 1105|      0|      ABSL_INTERNAL_LOG(FATAL,
  ------------------
  |  |   76|      0|  do {                                                                    \
  |  |   77|      0|    constexpr const char* absl_raw_log_internal_filename = __FILE__;      \
  |  |   78|      0|    ::absl::raw_log_internal::internal_log_function(                      \
  |  |   79|      0|        ABSL_RAW_LOG_INTERNAL_##severity, absl_raw_log_internal_filename, \
  |  |   80|      0|        __LINE__, message);                                               \
  |  |   81|      0|    ABSL_RAW_LOG_INTERNAL_MAYBE_UNREACHABLE_##severity;                   \
  |  |   82|      0|  } while (0)
  |  |  ------------------
  |  |  |  Branch (82:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
 1106|      0|                        "Invalid iterator comparison. The table could have "
 1107|      0|                        "rehashed since this iterator was initialized.");
 1108|      0|    }
 1109|      0|    if (!ctrl_is_valid_for_comparison) {
  ------------------
  |  Branch (1109:9): [True: 0, False: 0]
  ------------------
 1110|      0|      ABSL_INTERNAL_LOG(
  ------------------
  |  |   76|      0|  do {                                                                    \
  |  |   77|      0|    constexpr const char* absl_raw_log_internal_filename = __FILE__;      \
  |  |   78|      0|    ::absl::raw_log_internal::internal_log_function(                      \
  |  |   79|      0|        ABSL_RAW_LOG_INTERNAL_##severity, absl_raw_log_internal_filename, \
  |  |   80|      0|        __LINE__, message);                                               \
  |  |   81|      0|    ABSL_RAW_LOG_INTERNAL_MAYBE_UNREACHABLE_##severity;                   \
  |  |   82|      0|  } while (0)
  |  |  ------------------
  |  |  |  Branch (82:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
 1111|      0|          FATAL, "Invalid iterator comparison. The element was likely erased.");
 1112|      0|    }
 1113|      0|  } else {
 1114|      0|    ABSL_HARDENING_ASSERT(
  ------------------
  |  |  128|      0|#define ABSL_HARDENING_ASSERT(expr) ABSL_ASSERT(expr)
  |  |  ------------------
  |  |  |  |   95|      0|  (false ? static_cast<void>(expr) : static_cast<void>(0))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (95:4): [Folded - Ignored]
  |  |  |  |  |  Branch (95:30): [True: 0, False: 0]
  |  |  |  |  |  Branch (95:30): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1115|      0|        ctrl_is_valid_for_comparison &&
 1116|      0|        "Invalid iterator comparison. The element might have been erased or "
 1117|      0|        "the table might have rehashed. Consider running with --config=asan to "
 1118|      0|        "diagnose rehashing issues.");
 1119|      0|  }
 1120|      0|}
_ZN4absl18container_internal19AssertSameContainerEPKNS0_6ctrl_tES3_RKPKvS7_PKhS9_:
 1148|  1.10M|                                const GenerationType* generation_ptr_b) {
 1149|  1.10M|  if (!SwisstableDebugEnabled()) return;
  ------------------
  |  Branch (1149:7): [Folded - Ignored]
  ------------------
 1150|      0|  const bool a_is_default = ctrl_a == EmptyGroup();
 1151|      0|  const bool b_is_default = ctrl_b == EmptyGroup();
 1152|      0|  if (a_is_default != b_is_default) {
  ------------------
  |  Branch (1152:7): [True: 0, False: 0]
  ------------------
 1153|      0|    ABSL_INTERNAL_LOG(
  ------------------
  |  |   76|      0|  do {                                                                    \
  |  |   77|      0|    constexpr const char* absl_raw_log_internal_filename = __FILE__;      \
  |  |   78|      0|    ::absl::raw_log_internal::internal_log_function(                      \
  |  |   79|      0|        ABSL_RAW_LOG_INTERNAL_##severity, absl_raw_log_internal_filename, \
  |  |   80|      0|        __LINE__, message);                                               \
  |  |   81|      0|    ABSL_RAW_LOG_INTERNAL_MAYBE_UNREACHABLE_##severity;                   \
  |  |   82|      0|  } while (0)
  |  |  ------------------
  |  |  |  Branch (82:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
 1154|      0|        FATAL,
 1155|      0|        "Invalid iterator comparison. Comparing default-constructed iterator "
 1156|      0|        "with non-default-constructed iterator.");
 1157|      0|  }
 1158|      0|  if (a_is_default && b_is_default) return;
  ------------------
  |  Branch (1158:7): [True: 0, False: 0]
  |  Branch (1158:23): [True: 0, False: 0]
  ------------------
 1159|       |
 1160|      0|  if (SwisstableGenerationsEnabled()) {
  ------------------
  |  Branch (1160:7): [Folded - Ignored]
  ------------------
 1161|      0|    if (generation_ptr_a == generation_ptr_b) return;
  ------------------
  |  Branch (1161:9): [True: 0, False: 0]
  ------------------
 1162|      0|    const bool a_is_empty = IsEmptyGeneration(generation_ptr_a);
 1163|      0|    const bool b_is_empty = IsEmptyGeneration(generation_ptr_b);
 1164|      0|    if (a_is_empty != b_is_empty) {
  ------------------
  |  Branch (1164:9): [True: 0, False: 0]
  ------------------
 1165|      0|      ABSL_INTERNAL_LOG(FATAL,
  ------------------
  |  |   76|      0|  do {                                                                    \
  |  |   77|      0|    constexpr const char* absl_raw_log_internal_filename = __FILE__;      \
  |  |   78|      0|    ::absl::raw_log_internal::internal_log_function(                      \
  |  |   79|      0|        ABSL_RAW_LOG_INTERNAL_##severity, absl_raw_log_internal_filename, \
  |  |   80|      0|        __LINE__, message);                                               \
  |  |   81|      0|    ABSL_RAW_LOG_INTERNAL_MAYBE_UNREACHABLE_##severity;                   \
  |  |   82|      0|  } while (0)
  |  |  ------------------
  |  |  |  Branch (82:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
 1166|      0|                        "Invalid iterator comparison. Comparing iterator from "
 1167|      0|                        "a non-empty hashtable with an iterator from an empty "
 1168|      0|                        "hashtable.");
 1169|      0|    }
 1170|      0|    if (a_is_empty && b_is_empty) {
  ------------------
  |  Branch (1170:9): [True: 0, False: 0]
  |  Branch (1170:23): [True: 0, False: 0]
  ------------------
 1171|      0|      ABSL_INTERNAL_LOG(FATAL,
  ------------------
  |  |   76|      0|  do {                                                                    \
  |  |   77|      0|    constexpr const char* absl_raw_log_internal_filename = __FILE__;      \
  |  |   78|      0|    ::absl::raw_log_internal::internal_log_function(                      \
  |  |   79|      0|        ABSL_RAW_LOG_INTERNAL_##severity, absl_raw_log_internal_filename, \
  |  |   80|      0|        __LINE__, message);                                               \
  |  |   81|      0|    ABSL_RAW_LOG_INTERNAL_MAYBE_UNREACHABLE_##severity;                   \
  |  |   82|      0|  } while (0)
  |  |  ------------------
  |  |  |  Branch (82:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
 1172|      0|                        "Invalid iterator comparison. Comparing iterators from "
 1173|      0|                        "different empty hashtables.");
 1174|      0|    }
 1175|      0|    const bool a_is_end = ctrl_a == nullptr;
 1176|      0|    const bool b_is_end = ctrl_b == nullptr;
 1177|      0|    if (a_is_end || b_is_end) {
  ------------------
  |  Branch (1177:9): [True: 0, False: 0]
  |  Branch (1177:21): [True: 0, False: 0]
  ------------------
 1178|      0|      ABSL_INTERNAL_LOG(FATAL,
  ------------------
  |  |   76|      0|  do {                                                                    \
  |  |   77|      0|    constexpr const char* absl_raw_log_internal_filename = __FILE__;      \
  |  |   78|      0|    ::absl::raw_log_internal::internal_log_function(                      \
  |  |   79|      0|        ABSL_RAW_LOG_INTERNAL_##severity, absl_raw_log_internal_filename, \
  |  |   80|      0|        __LINE__, message);                                               \
  |  |   81|      0|    ABSL_RAW_LOG_INTERNAL_MAYBE_UNREACHABLE_##severity;                   \
  |  |   82|      0|  } while (0)
  |  |  ------------------
  |  |  |  Branch (82:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
 1179|      0|                        "Invalid iterator comparison. Comparing iterator with "
 1180|      0|                        "an end() iterator from a different hashtable.");
 1181|      0|    }
 1182|      0|    ABSL_INTERNAL_LOG(FATAL,
  ------------------
  |  |   76|      0|  do {                                                                    \
  |  |   77|      0|    constexpr const char* absl_raw_log_internal_filename = __FILE__;      \
  |  |   78|      0|    ::absl::raw_log_internal::internal_log_function(                      \
  |  |   79|      0|        ABSL_RAW_LOG_INTERNAL_##severity, absl_raw_log_internal_filename, \
  |  |   80|      0|        __LINE__, message);                                               \
  |  |   81|      0|    ABSL_RAW_LOG_INTERNAL_MAYBE_UNREACHABLE_##severity;                   \
  |  |   82|      0|  } while (0)
  |  |  ------------------
  |  |  |  Branch (82:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
 1183|      0|                      "Invalid iterator comparison. Comparing non-end() "
 1184|      0|                      "iterators from different hashtables.");
 1185|      0|  } else {
 1186|      0|    ABSL_HARDENING_ASSERT(
  ------------------
  |  |  128|      0|#define ABSL_HARDENING_ASSERT(expr) ABSL_ASSERT(expr)
  |  |  ------------------
  |  |  |  |   95|      0|  (false ? static_cast<void>(expr) : static_cast<void>(0))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (95:4): [Folded - Ignored]
  |  |  |  |  |  Branch (95:30): [True: 0, False: 0]
  |  |  |  |  |  Branch (95:30): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1187|      0|        AreItersFromSameContainer(ctrl_a, ctrl_b, slot_a, slot_b) &&
 1188|      0|        "Invalid iterator comparison. The iterators may be from different "
 1189|      0|        "containers or the container might have rehashed. Consider running "
 1190|      0|        "with --config=asan to diagnose rehashing issues.");
 1191|      0|  }
 1192|      0|}
_ZN4absl18container_internal5probeEPKNS0_6ctrl_tEmm:
 1215|  1.10M|                                      size_t hash) {
 1216|  1.10M|  return probe_seq<Group::kWidth>(H1(hash, ctrl), capacity);
 1217|  1.10M|}
_ZN4absl18container_internal5probeERKNS0_12CommonFieldsEm:
 1218|  1.10M|inline probe_seq<Group::kWidth> probe(const CommonFields& common, size_t hash) {
 1219|  1.10M|  return probe(common.control_, common.capacity_, hash);
 1220|  1.10M|}
_ZN4absl18container_internal15ResetGrowthLeftERNS0_12CommonFieldsE:
 1262|      7|inline void ResetGrowthLeft(CommonFields& common) {
 1263|      7|  common.growth_left() = CapacityToGrowth(common.capacity_) - common.size_;
 1264|      7|}
_ZN4absl18container_internal9ResetCtrlERNS0_12CommonFieldsEm:
 1268|      7|inline void ResetCtrl(CommonFields& common, size_t slot_size) {
 1269|      7|  const size_t capacity = common.capacity_;
 1270|      7|  ctrl_t* ctrl = common.control_;
 1271|      7|  std::memset(ctrl, static_cast<int8_t>(ctrl_t::kEmpty),
 1272|      7|              capacity + 1 + NumClonedBytes());
 1273|      7|  ctrl[capacity] = ctrl_t::kSentinel;
 1274|      7|  SanitizerPoisonMemoryRegion(common.slots_, slot_size * capacity);
 1275|      7|  ResetGrowthLeft(common);
 1276|      7|}
_ZN4absl18container_internal7SetCtrlERKNS0_12CommonFieldsEmNS0_6ctrl_tEm:
 1283|     39|                    size_t slot_size) {
 1284|     39|  const size_t capacity = common.capacity_;
 1285|     39|  assert(i < capacity);
 1286|       |
 1287|     39|  auto* slot_i = static_cast<const char*>(common.slots_) + i * slot_size;
 1288|     39|  if (IsFull(h)) {
  ------------------
  |  Branch (1288:7): [True: 39, False: 0]
  ------------------
 1289|     39|    SanitizerUnpoisonMemoryRegion(slot_i, slot_size);
 1290|     39|  } else {
 1291|      0|    SanitizerPoisonMemoryRegion(slot_i, slot_size);
 1292|      0|  }
 1293|       |
 1294|     39|  ctrl_t* ctrl = common.control_;
 1295|     39|  ctrl[i] = h;
 1296|     39|  ctrl[((i - NumClonedBytes()) & capacity) + (NumClonedBytes() & capacity)] = h;
 1297|     39|}
_ZN4absl18container_internal7SetCtrlERKNS0_12CommonFieldsEmhm:
 1301|     39|                    size_t slot_size) {
 1302|     39|  SetCtrl(common, i, static_cast<ctrl_t>(h), slot_size);
 1303|     39|}
_ZN4absl18container_internal16GenerationOffsetEm:
 1307|      7|inline size_t GenerationOffset(size_t capacity) {
 1308|      7|  assert(IsValidCapacity(capacity));
 1309|      7|  const size_t num_control_bytes = capacity + 1 + NumClonedBytes();
 1310|      7|  return num_control_bytes;
 1311|      7|}
_ZN4absl18container_internal10SlotOffsetEmm:
 1315|     18|inline size_t SlotOffset(size_t capacity, size_t slot_align) {
 1316|     18|  assert(IsValidCapacity(capacity));
 1317|     18|  const size_t num_control_bytes = capacity + 1 + NumClonedBytes();
 1318|     18|  return (num_control_bytes + NumGenerationBytes() + slot_align - 1) &
 1319|     18|         (~slot_align + 1);
 1320|     18|}
_ZN4absl18container_internal9AllocSizeEmmm:
 1324|     11|inline size_t AllocSize(size_t capacity, size_t slot_size, size_t slot_align) {
 1325|     11|  return SlotOffset(capacity, slot_align) + capacity * slot_size;
 1326|     11|}
_ZN4absl18container_internal13TrailingZerosIjEEjT_:
  348|  7.67k|uint32_t TrailingZeros(T x) {
  349|  7.67k|  ABSL_ASSUME(x != 0);
  ------------------
  |  |  258|  7.67k|#define ABSL_ASSUME(cond) __builtin_assume(cond)
  ------------------
  350|  7.67k|  return static_cast<uint32_t>(countr_zero(x));
  351|  7.67k|}
_ZN4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEENS0_10StringHashENS0_8StringEqENS7_IS9_EEEC2IPKcLi0ELi0EEESt16initializer_listIT_EmRKSB_RKSC_RKSD_:
 1720|      1|      : raw_hash_set(init.begin(), init.end(), bucket_count, hash, eq, alloc) {}
_ZN4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEENS0_10StringHashENS0_8StringEqENS7_IS9_EEEC2IPKPKcEET_SK_mRKSB_RKSC_RKSD_:
 1677|      1|                     hash, eq, alloc) {
 1678|      1|    insert(first, last);
 1679|      1|  }
_ZN4absl18container_internal29SelectBucketCountForIterRangeIPKPKcEEmT_S6_m:
 1036|      1|                                     size_t bucket_count) {
 1037|      1|  if (bucket_count != 0) {
  ------------------
  |  Branch (1037:7): [True: 0, False: 1]
  ------------------
 1038|      0|    return bucket_count;
 1039|      0|  }
 1040|      1|  using InputIterCategory =
 1041|      1|      typename std::iterator_traits<InputIter>::iterator_category;
 1042|      1|  if (std::is_base_of<std::random_access_iterator_tag,
  ------------------
  |  Branch (1042:7): [Folded - Ignored]
  ------------------
 1043|      1|                      InputIterCategory>::value) {
 1044|      1|    return GrowthToLowerboundCapacity(
 1045|      1|        static_cast<size_t>(std::distance(first, last)));
 1046|      1|  }
 1047|      0|  return 0;
 1048|      1|}
_ZN4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEENS0_10StringHashENS0_8StringEqENS7_IS9_EEEC2EmRKSB_RKSC_RKSD_:
 1655|      1|      : settings_(CommonFields{}, hash, eq, alloc) {
 1656|      1|    if (bucket_count) {
  ------------------
  |  Branch (1656:9): [True: 1, False: 0]
  ------------------
 1657|      1|      common().capacity_ = NormalizeCapacity(bucket_count);
 1658|      1|      initialize_slots();
 1659|      1|    }
 1660|      1|  }
_ZN4absl18container_internal12CommonFieldsC2Ev:
  897|      5|  CommonFields() = default;
_ZN4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEENS0_10StringHashENS0_8StringEqENS7_IS9_EEE6commonEv:
 2660|  2.20M|  CommonFields& common() { return settings_.template get<0>(); }
_ZN4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEENS0_10StringHashENS0_8StringEqENS7_IS9_EEE16initialize_slotsEv:
 2421|      1|  inline void initialize_slots() {
 2422|       |    // People are often sloppy with the exact type of their allocator (sometimes
 2423|       |    // it has an extra const or is missing the pair, but rebinds made it work
 2424|       |    // anyway).
 2425|      1|    using CharAlloc =
 2426|      1|        typename absl::allocator_traits<Alloc>::template rebind_alloc<char>;
 2427|      1|    InitializeSlots<CharAlloc, sizeof(slot_type), alignof(slot_type)>(
 2428|      1|        common(), CharAlloc(alloc_ref()));
 2429|      1|  }
_ZN4absl18container_internal15InitializeSlotsINSt3__19allocatorIcEELm24ELm8EEEvRNS0_12CommonFieldsET_:
 1329|      1|ABSL_ATTRIBUTE_NOINLINE void InitializeSlots(CommonFields& c, Alloc alloc) {
 1330|      1|  assert(c.capacity_);
 1331|       |  // Folks with custom allocators often make unwarranted assumptions about the
 1332|       |  // behavior of their classes vis-a-vis trivial destructability and what
 1333|       |  // calls they will or won't make.  Avoid sampling for people with custom
 1334|       |  // allocators to get us out of this mess.  This is not a hard guarantee but
 1335|       |  // a workaround while we plan the exact guarantee we want to provide.
 1336|      1|  const size_t sample_size =
 1337|      1|      (std::is_same<Alloc, std::allocator<char>>::value && c.slots_ == nullptr)
  ------------------
  |  Branch (1337:8): [Folded - Ignored]
  |  Branch (1337:60): [True: 1, False: 0]
  ------------------
 1338|      1|          ? SizeOfSlot
 1339|      1|          : 0;
 1340|       |
 1341|      1|  const size_t cap = c.capacity_;
 1342|      1|  char* mem = static_cast<char*>(
 1343|      1|      Allocate<AlignOfSlot>(&alloc, AllocSize(cap, SizeOfSlot, AlignOfSlot)));
 1344|      1|  const GenerationType old_generation = c.generation();
 1345|      1|  c.set_generation_ptr(
 1346|      1|      reinterpret_cast<GenerationType*>(mem + GenerationOffset(cap)));
 1347|      1|  c.set_generation(NextGeneration(old_generation));
 1348|      1|  c.control_ = reinterpret_cast<ctrl_t*>(mem);
 1349|      1|  c.slots_ = mem + SlotOffset(cap, AlignOfSlot);
 1350|      1|  ResetCtrl(c, SizeOfSlot);
 1351|      1|  if (sample_size) {
  ------------------
  |  Branch (1351:7): [True: 1, False: 0]
  ------------------
 1352|      1|    c.infoz() = Sample(sample_size);
 1353|      1|  }
 1354|      1|  c.infoz().RecordStorageChanged(c.size_, cap);
 1355|      1|}
_ZN4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEENS0_10StringHashENS0_8StringEqENS7_IS9_EEE9alloc_refEv:
 2673|     22|  allocator_type& alloc_ref() { return settings_.template get<3>(); }
_ZN4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEENS0_10StringHashENS0_8StringEqENS7_IS9_EEE6insertIPKPKcEEvT_SK_:
 1952|      1|  void insert(InputIt first, InputIt last) {
 1953|     22|    for (; first != last; ++first) emplace(*first);
  ------------------
  |  Branch (1953:12): [True: 21, False: 1]
  ------------------
 1954|      1|  }
_ZN4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEENS0_10StringHashENS0_8StringEqENS7_IS9_EEE7emplaceIJRKPKcELi0EEENS3_4pairINSE_8iteratorEbEEDpOT_:
 1998|     21|      ABSL_ATTRIBUTE_LIFETIME_BOUND {
 1999|     21|    return PolicyTraits::apply(EmplaceDecomposable{*this},
 2000|     21|                               std::forward<Args>(args)...);
 2001|     21|  }
_ZNK4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEENS0_10StringHashENS0_8StringEqENS7_IS9_EEE19EmplaceDecomposableclIPKcJRKSI_EEENS3_4pairINSE_8iteratorEbEERKT_DpOT0_:
 2380|     21|    std::pair<iterator, bool> operator()(const K& key, Args&&... args) const {
 2381|     21|      auto res = s.find_or_prepare_insert(key);
 2382|     21|      if (res.second) {
  ------------------
  |  Branch (2382:11): [True: 21, False: 0]
  ------------------
 2383|     21|        s.emplace_at(res.first, std::forward<Args>(args)...);
 2384|     21|      }
 2385|     21|      return {s.iterator_at(res.first), res.second};
 2386|     21|    }
_ZN4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEENS0_10StringHashENS0_8StringEqENS7_IS9_EEE22find_or_prepare_insertIPKcEENS3_4pairImbEERKT_:
 2564|     21|  std::pair<size_t, bool> find_or_prepare_insert(const K& key) {
 2565|     21|    prefetch_heap_block();
 2566|     21|    auto hash = hash_ref()(key);
 2567|     21|    auto seq = probe(common(), hash);
 2568|     21|    const ctrl_t* ctrl = control();
 2569|     21|    while (true) {
  ------------------
  |  Branch (2569:12): [Folded - Ignored]
  ------------------
 2570|     21|      Group g{ctrl + seq.offset()};
 2571|     21|      for (uint32_t i : g.Match(H2(hash))) {
  ------------------
  |  Branch (2571:23): [True: 1, False: 21]
  ------------------
 2572|      1|        if (ABSL_PREDICT_TRUE(PolicyTraits::apply(
  ------------------
  |  |  178|      1|#define ABSL_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (178:30): [True: 0, False: 1]
  |  |  |  Branch (178:48): [Folded - Ignored]
  |  |  |  Branch (178:57): [True: 0, False: 1]
  |  |  ------------------
  ------------------
 2573|      1|                EqualElement<K>{key, eq_ref()},
 2574|      1|                PolicyTraits::element(slot_array() + seq.offset(i)))))
 2575|      0|          return {seq.offset(i), false};
 2576|      1|      }
 2577|     21|      if (ABSL_PREDICT_TRUE(g.MaskEmpty())) break;
  ------------------
  |  |  178|     21|#define ABSL_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (178:30): [True: 21, False: 0]
  |  |  |  Branch (178:48): [Folded - Ignored]
  |  |  |  Branch (178:57): [True: 21, False: 0]
  |  |  ------------------
  ------------------
 2578|      0|      seq.next();
 2579|      0|      assert(seq.index() <= capacity() && "full table!");
 2580|      0|    }
 2581|     21|    return {prepare_insert(hash), true};
 2582|     21|  }
_ZNK4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEENS0_10StringHashENS0_8StringEqENS7_IS9_EEE19prefetch_heap_blockEv:
 2654|  1.10M|  void prefetch_heap_block() const {
 2655|  1.10M|#if ABSL_HAVE_BUILTIN(__builtin_prefetch) || defined(__GNUC__)
 2656|  1.10M|    __builtin_prefetch(control(), 0, 1);
 2657|  1.10M|#endif
 2658|  1.10M|  }
_ZN4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEENS0_10StringHashENS0_8StringEqENS7_IS9_EEE8hash_refEv:
 2669|     21|  hasher& hash_ref() { return settings_.template get<1>(); }
_ZN4absl18container_internal9probe_seqILm16EEC2Emm:
  292|  1.10M|  probe_seq(size_t hash, size_t mask) {
  293|  1.10M|    assert(((mask + 1) & mask) == 0 && "not a mask");
  294|  1.10M|    mask_ = mask;
  295|  1.10M|    offset_ = hash & mask_;
  296|  1.10M|  }
_ZNK4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEENS0_10StringHashENS0_8StringEqENS7_IS9_EEE7controlEv:
 2663|  2.20M|  ctrl_t* control() const { return common().control_; }
_ZNK4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEENS0_10StringHashENS0_8StringEqENS7_IS9_EEE6commonEv:
 2661|  4.40M|  const CommonFields& common() const { return settings_.template get<0>(); }
_ZNK4absl18container_internal9probe_seqILm16EE6offsetEv:
  299|  1.10M|  size_t offset() const { return offset_; }
_ZN4absl18container_internal7BitMaskIjLi16ELi0EEC2Ej:
  411|  2.20M|  explicit BitMask(T mask) : Base(mask) {}
_ZN4absl18container_internal18NonIterableBitMaskIjLi16ELi0EEC2Ej:
  365|  3.30M|  explicit NonIterableBitMask(T mask) : mask_(mask) {}
_ZNK4absl18container_internal7BitMaskIjLi16ELi0EE5beginEv:
  424|  1.10M|  BitMask begin() const { return *this; }
_ZNK4absl18container_internal7BitMaskIjLi16ELi0EE3endEv:
  425|  1.10M|  BitMask end() const { return BitMask(0); }
_ZN4absl18container_internalneERKNS0_7BitMaskIjLi16ELi0EEES4_:
  431|  1.10M|  friend bool operator!=(const BitMask& a, const BitMask& b) {
  432|  1.10M|    return a.mask_ != b.mask_;
  433|  1.10M|  }
_ZNK4absl18container_internal7BitMaskIjLi16ELi0EEdeEv:
  422|  7.63k|  uint32_t operator*() const { return Base::LowestBitSet(); }
_ZNK4absl18container_internal18NonIterableBitMaskIjLi16ELi0EE12LowestBitSetEv:
  370|  7.67k|  uint32_t LowestBitSet() const {
  371|  7.67k|    return container_internal::TrailingZeros(mask_) >> Shift;
  372|  7.67k|  }
_ZNK4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEENS0_10StringHashENS0_8StringEqENS7_IS9_EEE12EqualElementIPKcEclIS9_JRS9_EEEbRKT_DpOT0_:
 2371|      1|    bool operator()(const K2& lhs, Args&&...) const {
 2372|      1|      return eq(lhs, rhs);
 2373|      1|    }
_ZN4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEENS0_10StringHashENS0_8StringEqENS7_IS9_EEE6eq_refEv:
 2671|  7.63k|  key_equal& eq_ref() { return settings_.template get<2>(); }
_ZNK4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEENS0_10StringHashENS0_8StringEqENS7_IS9_EEE10slot_arrayEv:
 2664|  1.10M|  slot_type* slot_array() const {
 2665|  1.10M|    return static_cast<slot_type*>(common().slots_);
 2666|  1.10M|  }
_ZNK4absl18container_internal9probe_seqILm16EE6offsetEm:
  300|  8.21k|  size_t offset(size_t i) const { return (offset_ + i) & mask_; }
_ZN4absl18container_internal7BitMaskIjLi16ELi0EEppEv:
  417|  7.09k|  BitMask& operator++() {
  418|  7.09k|    this->mask_ &= (this->mask_ - 1);
  419|  7.09k|    return *this;
  420|  7.09k|  }
_ZNK4absl18container_internal18NonIterableBitMaskIjLi16ELi0EEcvbEv:
  367|  1.10M|  explicit operator bool() const { return this->mask_ != 0; }
_ZN4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEENS0_10StringHashENS0_8StringEqENS7_IS9_EEE14prepare_insertEm:
 2588|     21|  size_t prepare_insert(size_t hash) ABSL_ATTRIBUTE_NOINLINE {
 2589|     21|    const bool rehash_for_bug_detection =
 2590|     21|        common().should_rehash_for_bug_detection_on_insert();
 2591|     21|    if (rehash_for_bug_detection) {
  ------------------
  |  Branch (2591:9): [True: 0, False: 21]
  ------------------
 2592|       |      // Move to a different heap allocation in order to detect bugs.
 2593|      0|      const size_t cap = capacity();
 2594|      0|      resize(growth_left() > 0 ? cap : NextCapacity(cap));
  ------------------
  |  Branch (2594:14): [True: 0, False: 0]
  ------------------
 2595|      0|    }
 2596|     21|    auto target = find_first_non_full(common(), hash);
 2597|     21|    if (!rehash_for_bug_detection &&
  ------------------
  |  Branch (2597:9): [True: 21, False: 0]
  ------------------
 2598|     21|        ABSL_PREDICT_FALSE(growth_left() == 0 &&
  ------------------
  |  |  177|     21|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (177:31): [True: 0, False: 21]
  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  Branch (177:59): [True: 0, False: 21]
  |  |  |  Branch (177:59): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2599|     21|                           !IsDeleted(control()[target.offset]))) {
 2600|      0|      rehash_and_grow_if_necessary();
 2601|      0|      target = find_first_non_full(common(), hash);
 2602|      0|    }
 2603|     21|    ++common().size_;
 2604|     21|    growth_left() -= IsEmpty(control()[target.offset]);
 2605|     21|    SetCtrl(common(), target.offset, H2(hash), sizeof(slot_type));
 2606|     21|    common().maybe_increment_generation_on_insert();
 2607|     21|    infoz().RecordInsert(hash, target.probe_length);
 2608|     21|    return target.offset;
 2609|     21|  }
_ZN4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEENS0_10StringHashENS0_8StringEqENS7_IS9_EEE11growth_leftEv:
 2649|     42|  size_t& growth_left() { return common().growth_left(); }
_ZN4absl18container_internal19find_first_non_fullIvEENS0_8FindInfoERKNS0_12CommonFieldsEm:
 1230|     45|inline FindInfo find_first_non_full(const CommonFields& common, size_t hash) {
 1231|     45|  auto seq = probe(common, hash);
 1232|     45|  const ctrl_t* ctrl = common.control_;
 1233|     45|  while (true) {
  ------------------
  |  Branch (1233:10): [Folded - Ignored]
  ------------------
 1234|     45|    Group g{ctrl + seq.offset()};
 1235|     45|    auto mask = g.MaskEmptyOrDeleted();
 1236|     45|    if (mask) {
  ------------------
  |  Branch (1236:9): [True: 45, False: 0]
  ------------------
 1237|       |#if !defined(NDEBUG)
 1238|       |      // We want to add entropy even when ASLR is not enabled.
 1239|       |      // In debug build we will randomly insert in either the front or back of
 1240|       |      // the group.
 1241|       |      // TODO(kfm,sbenza): revisit after we do unconditional mixing
 1242|       |      if (!is_small(common.capacity_) && ShouldInsertBackwards(hash, ctrl)) {
 1243|       |        return {seq.offset(mask.HighestBitSet()), seq.index()};
 1244|       |      }
 1245|       |#endif
 1246|     45|      return {seq.offset(mask.LowestBitSet()), seq.index()};
 1247|     45|    }
 1248|      0|    seq.next();
 1249|      0|    assert(seq.index() <= common.capacity_ && "full table!");
 1250|      0|  }
 1251|     45|}
_ZNK4absl18container_internal9probe_seqILm16EE5indexEv:
  308|     45|  size_t index() const { return index_; }
_ZN4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEENS0_10StringHashENS0_8StringEqENS7_IS9_EEE5infozEv:
 2667|     21|  HashtablezInfoHandle& infoz() { return common().infoz(); }
_ZN4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEENS0_10StringHashENS0_8StringEqENS7_IS9_EEE10emplace_atIJRKPKcEEEvmDpOT_:
 2620|     21|  void emplace_at(size_t i, Args&&... args) {
 2621|     21|    PolicyTraits::construct(&alloc_ref(), slot_array() + i,
 2622|     21|                            std::forward<Args>(args)...);
 2623|       |
 2624|     21|    assert(PolicyTraits::apply(FindElement{*this}, *iterator_at(i)) ==
 2625|     21|               iterator_at(i) &&
 2626|     21|           "constructed value does not match the lookup key");
 2627|     21|  }
_ZN4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEENS0_10StringHashENS0_8StringEqENS7_IS9_EEE11iterator_atEm:
 2629|    555|  iterator iterator_at(size_t i) ABSL_ATTRIBUTE_LIFETIME_BOUND {
 2630|    555|    return {control() + i, slot_array() + i, common().generation_ptr()};
 2631|    555|  }
_ZN4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEENS0_10StringHashENS0_8StringEqENS7_IS9_EEE8iteratorC2EPNS0_6ctrl_tEPS9_PKh:
 1570|    555|          slot_(slot) {
 1571|       |      // This assumption helps the compiler know that any non-end iterator is
 1572|       |      // not equal to any end iterator.
 1573|    555|      ABSL_ASSUME(ctrl != nullptr);
  ------------------
  |  |  258|    555|#define ABSL_ASSUME(cond) __builtin_assume(cond)
  ------------------
 1574|    555|    }
_ZNK4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEENS0_10StringHashENS0_8StringEqENS7_IS9_EEE4findINS3_17basic_string_viewIcS6_EEEENSE_14const_iteratorERKT_:
 2282|  1.10M|      ABSL_ATTRIBUTE_LIFETIME_BOUND {
 2283|  1.10M|    prefetch_heap_block();
 2284|  1.10M|    return find(key, hash_ref()(key));
 2285|  1.10M|  }
_ZNK4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEENS0_10StringHashENS0_8StringEqENS7_IS9_EEE4findINS3_17basic_string_viewIcS6_EEEENSE_14const_iteratorERKT_m:
 2277|  1.10M|                      size_t hash) const ABSL_ATTRIBUTE_LIFETIME_BOUND {
 2278|  1.10M|    return const_cast<raw_hash_set*>(this)->find(key, hash);
 2279|  1.10M|  }
_ZN4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEENS0_10StringHashENS0_8StringEqENS7_IS9_EEE4findINS3_17basic_string_viewIcS6_EEEENSE_8iteratorERKT_m:
 2252|  1.10M|                size_t hash) ABSL_ATTRIBUTE_LIFETIME_BOUND {
 2253|  1.10M|    auto seq = probe(common(), hash);
 2254|  1.10M|    slot_type* slot_ptr = slot_array();
 2255|  1.10M|    const ctrl_t* ctrl = control();
 2256|  1.10M|    while (true) {
  ------------------
  |  Branch (2256:12): [Folded - Ignored]
  ------------------
 2257|  1.10M|      Group g{ctrl + seq.offset()};
 2258|  1.10M|      for (uint32_t i : g.Match(H2(hash))) {
  ------------------
  |  Branch (2258:23): [True: 7.63k, False: 1.10M]
  ------------------
 2259|  7.63k|        if (ABSL_PREDICT_TRUE(PolicyTraits::apply(
  ------------------
  |  |  178|  7.63k|#define ABSL_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (178:30): [True: 534, False: 7.09k]
  |  |  |  Branch (178:48): [Folded - Ignored]
  |  |  |  Branch (178:57): [True: 534, False: 7.09k]
  |  |  ------------------
  ------------------
 2260|  7.63k|                EqualElement<K>{key, eq_ref()},
 2261|  7.63k|                PolicyTraits::element(slot_ptr + seq.offset(i)))))
 2262|    534|          return iterator_at(seq.offset(i));
 2263|  7.63k|      }
 2264|  1.10M|      if (ABSL_PREDICT_TRUE(g.MaskEmpty())) return end();
  ------------------
  |  |  178|  1.10M|#define ABSL_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (178:30): [True: 1.10M, False: 0]
  |  |  |  Branch (178:48): [Folded - Ignored]
  |  |  |  Branch (178:57): [True: 1.10M, False: 0]
  |  |  ------------------
  ------------------
 2265|      0|      seq.next();
 2266|      0|      assert(seq.index() <= capacity() && "full table!");
 2267|      0|    }
 2268|  1.10M|  }
_ZNK4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEENS0_10StringHashENS0_8StringEqENS7_IS9_EEE12EqualElementINS3_17basic_string_viewIcS6_EEEclIS9_JRS9_EEEbRKT_DpOT0_:
 2371|  7.63k|    bool operator()(const K2& lhs, Args&&...) const {
 2372|  7.63k|      return eq(lhs, rhs);
 2373|  7.63k|    }
_ZN4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEENS0_10StringHashENS0_8StringEqENS7_IS9_EEE3endEv:
 1836|  1.10M|  iterator end() ABSL_ATTRIBUTE_LIFETIME_BOUND {
 1837|  1.10M|    return iterator(common().generation_ptr());
 1838|  1.10M|  }
_ZN4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEENS0_10StringHashENS0_8StringEqENS7_IS9_EEE8iteratorC2EPKh:
 1577|  2.20M|        : HashSetIteratorGenerationInfo(generation_ptr), ctrl_(nullptr) {}
_ZN4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEENS0_10StringHashENS0_8StringEqENS7_IS9_EEE14const_iteratorC2ENSE_8iteratorE:
 1614|  2.20M|    const_iterator(iterator i) : inner_(std::move(i)) {}  // NOLINT
_ZNK4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEENS0_10StringHashENS0_8StringEqENS7_IS9_EEE8hash_refEv:
 2670|  1.10M|  const hasher& hash_ref() const { return settings_.template get<1>(); }
_ZNK4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEENS0_10StringHashENS0_8StringEqENS7_IS9_EEE3endEv:
 1843|  1.10M|  const_iterator end() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
 1844|  1.10M|    return iterator(common().generation_ptr());
 1845|  1.10M|  }
_ZN4absl18container_internalneERKNS0_12raw_hash_setINS0_17FlatHashSetPolicyINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEENS0_10StringHashENS0_8StringEqENS7_IS9_EEE14const_iteratorESH_:
 1628|  1.10M|    friend bool operator!=(const const_iterator& a, const const_iterator& b) {
 1629|  1.10M|      return !(a == b);
 1630|  1.10M|    }
_ZN4absl18container_internaleqERKNS0_12raw_hash_setINS0_17FlatHashSetPolicyINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEENS0_10StringHashENS0_8StringEqENS7_IS9_EEE14const_iteratorESH_:
 1625|  1.10M|    friend bool operator==(const const_iterator& a, const const_iterator& b) {
 1626|  1.10M|      return a.inner_ == b.inner_;
 1627|  1.10M|    }
_ZN4absl18container_internaleqERKNS0_12raw_hash_setINS0_17FlatHashSetPolicyINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEENS0_10StringHashENS0_8StringEqENS7_IS9_EEE8iteratorESH_:
 1554|  1.10M|    friend bool operator==(const iterator& a, const iterator& b) {
 1555|  1.10M|      AssertIsValidForComparison(a.ctrl_, a.generation(), a.generation_ptr());
 1556|  1.10M|      AssertIsValidForComparison(b.ctrl_, b.generation(), b.generation_ptr());
 1557|  1.10M|      AssertSameContainer(a.ctrl_, b.ctrl_, a.slot_, b.slot_,
 1558|  1.10M|                          a.generation_ptr(), b.generation_ptr());
 1559|  1.10M|      return a.ctrl_ == b.ctrl_;
 1560|  1.10M|    }
_ZN4absl18container_internal15InitializeSlotsINSt3__19allocatorIcEELm8ELm8EEEvRNS0_12CommonFieldsET_:
 1329|      6|ABSL_ATTRIBUTE_NOINLINE void InitializeSlots(CommonFields& c, Alloc alloc) {
 1330|      6|  assert(c.capacity_);
 1331|       |  // Folks with custom allocators often make unwarranted assumptions about the
 1332|       |  // behavior of their classes vis-a-vis trivial destructability and what
 1333|       |  // calls they will or won't make.  Avoid sampling for people with custom
 1334|       |  // allocators to get us out of this mess.  This is not a hard guarantee but
 1335|       |  // a workaround while we plan the exact guarantee we want to provide.
 1336|      6|  const size_t sample_size =
 1337|      6|      (std::is_same<Alloc, std::allocator<char>>::value && c.slots_ == nullptr)
  ------------------
  |  Branch (1337:8): [Folded - Ignored]
  |  Branch (1337:60): [True: 2, False: 4]
  ------------------
 1338|      6|          ? SizeOfSlot
 1339|      6|          : 0;
 1340|       |
 1341|      6|  const size_t cap = c.capacity_;
 1342|      6|  char* mem = static_cast<char*>(
 1343|      6|      Allocate<AlignOfSlot>(&alloc, AllocSize(cap, SizeOfSlot, AlignOfSlot)));
 1344|      6|  const GenerationType old_generation = c.generation();
 1345|      6|  c.set_generation_ptr(
 1346|      6|      reinterpret_cast<GenerationType*>(mem + GenerationOffset(cap)));
 1347|      6|  c.set_generation(NextGeneration(old_generation));
 1348|      6|  c.control_ = reinterpret_cast<ctrl_t*>(mem);
 1349|      6|  c.slots_ = mem + SlotOffset(cap, AlignOfSlot);
 1350|      6|  ResetCtrl(c, SizeOfSlot);
 1351|      6|  if (sample_size) {
  ------------------
  |  Branch (1351:7): [True: 2, False: 4]
  ------------------
 1352|      2|    c.infoz() = Sample(sample_size);
 1353|      2|  }
 1354|      6|  c.infoz().RecordStorageChanged(c.size_, cap);
 1355|      6|}
message.cc:_ZNK4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyIPKN6google8protobuf8internal15DescriptorTableEEENS4_12_GLOBAL__N_123GeneratedMessageFactory20DescriptorByNameHashENSB_18DescriptorByNameEqENSt3__19allocatorIS8_EEE8capacityEv:
 1853|      6|  size_t capacity() const { return common().capacity_; }
message.cc:_ZNK4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyIPKN6google8protobuf8internal15DescriptorTableEEENS4_12_GLOBAL__N_123GeneratedMessageFactory20DescriptorByNameHashENSB_18DescriptorByNameEqENSt3__19allocatorIS8_EEE6commonEv:
 2661|     90|  const CommonFields& common() const { return settings_.template get<0>(); }
message.cc:_ZNK4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyIPKN6google8protobuf8internal15DescriptorTableEEENS4_12_GLOBAL__N_123GeneratedMessageFactory20DescriptorByNameHashENSB_18DescriptorByNameEqENSt3__19allocatorIS8_EEE10slot_arrayEv:
 2664|     32|  slot_type* slot_array() const {
 2665|     32|    return static_cast<slot_type*>(common().slots_);
 2666|     32|  }
message.cc:_ZN4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyIPKN6google8protobuf8internal15DescriptorTableEEENS4_12_GLOBAL__N_123GeneratedMessageFactory20DescriptorByNameHashENSB_18DescriptorByNameEqENSt3__19allocatorIS8_EEE9alloc_refEv:
 2673|     28|  allocator_type& alloc_ref() { return settings_.template get<3>(); }
message.cc:_ZNK4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyIPKN6google8protobuf8internal15DescriptorTableEEENS4_12_GLOBAL__N_123GeneratedMessageFactory20DescriptorByNameHashENSB_18DescriptorByNameEqENSt3__19allocatorIS8_EEE7controlEv:
 2663|     52|  ctrl_t* control() const { return common().control_; }
message.cc:_ZN4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyIPKN6google8protobuf8internal15DescriptorTableEEENS4_12_GLOBAL__N_123GeneratedMessageFactory20DescriptorByNameHashENSB_18DescriptorByNameEqENSt3__19allocatorIS8_EEE5infozEv:
 2667|     16|  HashtablezInfoHandle& infoz() { return common().infoz(); }
message.cc:_ZN4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyIPKN6google8protobuf8internal15DescriptorTableEEENS4_12_GLOBAL__N_123GeneratedMessageFactory20DescriptorByNameHashENSB_18DescriptorByNameEqENSt3__19allocatorIS8_EEE6commonEv:
 2660|    146|  CommonFields& common() { return settings_.template get<0>(); }
message.cc:_ZN4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyIPKN6google8protobuf8internal15DescriptorTableEEENS4_12_GLOBAL__N_123GeneratedMessageFactory20DescriptorByNameHashENSB_18DescriptorByNameEqENSt3__19allocatorIS8_EEEC2Ev:
 1649|      2|              std::is_nothrow_default_constructible<allocator_type>::value) {}
_ZN4absl18container_internal12raw_hash_setINS0_17FlatHashMapPolicyIPKN6google8protobuf10DescriptorEPKNS4_7MessageEEENS0_6HashEqIS7_vE4HashENSD_2EqENSt3__19allocatorINSG_4pairIKS7_SA_EEEEEC2Ev:
 1649|      2|              std::is_nothrow_default_constructible<allocator_type>::value) {}
message.cc:_ZNK4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyIPKN6google8protobuf8internal15DescriptorTableEEENS4_12_GLOBAL__N_123GeneratedMessageFactory20DescriptorByNameHashENSB_18DescriptorByNameEqENSt3__19allocatorIS8_EEE19prefetch_heap_blockEv:
 2654|     10|  void prefetch_heap_block() const {
 2655|     10|#if ABSL_HAVE_BUILTIN(__builtin_prefetch) || defined(__GNUC__)
 2656|     10|    __builtin_prefetch(control(), 0, 1);
 2657|     10|#endif
 2658|     10|  }
message.cc:_ZN4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyIPKN6google8protobuf8internal15DescriptorTableEEENS4_12_GLOBAL__N_123GeneratedMessageFactory20DescriptorByNameHashENSB_18DescriptorByNameEqENSt3__19allocatorIS8_EEE11iterator_atEm:
 2629|     10|  iterator iterator_at(size_t i) ABSL_ATTRIBUTE_LIFETIME_BOUND {
 2630|     10|    return {control() + i, slot_array() + i, common().generation_ptr()};
 2631|     10|  }
message.cc:_ZN4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyIPKN6google8protobuf8internal15DescriptorTableEEENS4_12_GLOBAL__N_123GeneratedMessageFactory20DescriptorByNameHashENSB_18DescriptorByNameEqENSt3__19allocatorIS8_EEE8iteratorC2EPNS0_6ctrl_tEPS8_PKh:
 1570|     10|          slot_(slot) {
 1571|       |      // This assumption helps the compiler know that any non-end iterator is
 1572|       |      // not equal to any end iterator.
 1573|     10|      ABSL_ASSUME(ctrl != nullptr);
  ------------------
  |  |  258|     10|#define ABSL_ASSUME(cond) __builtin_assume(cond)
  ------------------
 1574|     10|    }
message.cc:_ZN4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyIPKN6google8protobuf8internal15DescriptorTableEEENS4_12_GLOBAL__N_123GeneratedMessageFactory20DescriptorByNameHashENSB_18DescriptorByNameEqENSt3__19allocatorIS8_EEE8hash_refEv:
 2669|     18|  hasher& hash_ref() { return settings_.template get<1>(); }
message.cc:_ZN4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyIPKN6google8protobuf8internal15DescriptorTableEEENS4_12_GLOBAL__N_123GeneratedMessageFactory20DescriptorByNameHashENSB_18DescriptorByNameEqENSt3__19allocatorIS8_EEE6insertIS8_Li0ELi0EEENSE_4pairINSH_8iteratorEbEERKT_:
 1915|     10|      ABSL_ATTRIBUTE_LIFETIME_BOUND {
 1916|     10|    return emplace(value);
 1917|     10|  }
message.cc:_ZN4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyIPKN6google8protobuf8internal15DescriptorTableEEENS4_12_GLOBAL__N_123GeneratedMessageFactory20DescriptorByNameHashENSB_18DescriptorByNameEqENSt3__19allocatorIS8_EEE7emplaceIJRKS8_ELi0EEENSE_4pairINSH_8iteratorEbEEDpOT_:
 1998|     10|      ABSL_ATTRIBUTE_LIFETIME_BOUND {
 1999|     10|    return PolicyTraits::apply(EmplaceDecomposable{*this},
 2000|     10|                               std::forward<Args>(args)...);
 2001|     10|  }
message.cc:_ZNK4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyIPKN6google8protobuf8internal15DescriptorTableEEENS4_12_GLOBAL__N_123GeneratedMessageFactory20DescriptorByNameHashENSB_18DescriptorByNameEqENSt3__19allocatorIS8_EEE19EmplaceDecomposableclIS8_JRKS8_EEENSE_4pairINSH_8iteratorEbEERKT_DpOT0_:
 2380|     10|    std::pair<iterator, bool> operator()(const K& key, Args&&... args) const {
 2381|     10|      auto res = s.find_or_prepare_insert(key);
 2382|     10|      if (res.second) {
  ------------------
  |  Branch (2382:11): [True: 10, False: 0]
  ------------------
 2383|     10|        s.emplace_at(res.first, std::forward<Args>(args)...);
 2384|     10|      }
 2385|     10|      return {s.iterator_at(res.first), res.second};
 2386|     10|    }
message.cc:_ZN4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyIPKN6google8protobuf8internal15DescriptorTableEEENS4_12_GLOBAL__N_123GeneratedMessageFactory20DescriptorByNameHashENSB_18DescriptorByNameEqENSt3__19allocatorIS8_EEE22find_or_prepare_insertIS8_EENSE_4pairImbEERKT_:
 2564|     10|  std::pair<size_t, bool> find_or_prepare_insert(const K& key) {
 2565|     10|    prefetch_heap_block();
 2566|     10|    auto hash = hash_ref()(key);
 2567|     10|    auto seq = probe(common(), hash);
 2568|     10|    const ctrl_t* ctrl = control();
 2569|     10|    while (true) {
  ------------------
  |  Branch (2569:12): [Folded - Ignored]
  ------------------
 2570|     10|      Group g{ctrl + seq.offset()};
 2571|     10|      for (uint32_t i : g.Match(H2(hash))) {
  ------------------
  |  Branch (2571:23): [True: 0, False: 10]
  ------------------
 2572|      0|        if (ABSL_PREDICT_TRUE(PolicyTraits::apply(
  ------------------
  |  |  178|      0|#define ABSL_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (178:30): [True: 0, False: 0]
  |  |  |  Branch (178:48): [Folded - Ignored]
  |  |  |  Branch (178:57): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2573|      0|                EqualElement<K>{key, eq_ref()},
 2574|      0|                PolicyTraits::element(slot_array() + seq.offset(i)))))
 2575|      0|          return {seq.offset(i), false};
 2576|      0|      }
 2577|     10|      if (ABSL_PREDICT_TRUE(g.MaskEmpty())) break;
  ------------------
  |  |  178|     10|#define ABSL_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (178:30): [True: 10, False: 0]
  |  |  |  Branch (178:48): [Folded - Ignored]
  |  |  |  Branch (178:57): [True: 10, False: 0]
  |  |  ------------------
  ------------------
 2578|      0|      seq.next();
 2579|      0|      assert(seq.index() <= capacity() && "full table!");
 2580|      0|    }
 2581|     10|    return {prepare_insert(hash), true};
 2582|     10|  }
message.cc:_ZN4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyIPKN6google8protobuf8internal15DescriptorTableEEENS4_12_GLOBAL__N_123GeneratedMessageFactory20DescriptorByNameHashENSB_18DescriptorByNameEqENSt3__19allocatorIS8_EEE14prepare_insertEm:
 2588|     10|  size_t prepare_insert(size_t hash) ABSL_ATTRIBUTE_NOINLINE {
 2589|     10|    const bool rehash_for_bug_detection =
 2590|     10|        common().should_rehash_for_bug_detection_on_insert();
 2591|     10|    if (rehash_for_bug_detection) {
  ------------------
  |  Branch (2591:9): [True: 0, False: 10]
  ------------------
 2592|       |      // Move to a different heap allocation in order to detect bugs.
 2593|      0|      const size_t cap = capacity();
 2594|      0|      resize(growth_left() > 0 ? cap : NextCapacity(cap));
  ------------------
  |  Branch (2594:14): [True: 0, False: 0]
  ------------------
 2595|      0|    }
 2596|     10|    auto target = find_first_non_full(common(), hash);
 2597|     10|    if (!rehash_for_bug_detection &&
  ------------------
  |  Branch (2597:9): [True: 10, False: 0]
  ------------------
 2598|     10|        ABSL_PREDICT_FALSE(growth_left() == 0 &&
  ------------------
  |  |  177|     16|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (177:31): [True: 6, False: 4]
  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  Branch (177:59): [True: 6, False: 4]
  |  |  |  Branch (177:59): [True: 6, False: 0]
  |  |  ------------------
  ------------------
 2599|     10|                           !IsDeleted(control()[target.offset]))) {
 2600|      6|      rehash_and_grow_if_necessary();
 2601|      6|      target = find_first_non_full(common(), hash);
 2602|      6|    }
 2603|     10|    ++common().size_;
 2604|     10|    growth_left() -= IsEmpty(control()[target.offset]);
 2605|     10|    SetCtrl(common(), target.offset, H2(hash), sizeof(slot_type));
 2606|     10|    common().maybe_increment_generation_on_insert();
 2607|     10|    infoz().RecordInsert(hash, target.probe_length);
 2608|     10|    return target.offset;
 2609|     10|  }
message.cc:_ZN4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyIPKN6google8protobuf8internal15DescriptorTableEEENS4_12_GLOBAL__N_123GeneratedMessageFactory20DescriptorByNameHashENSB_18DescriptorByNameEqENSt3__19allocatorIS8_EEE6resizeEm:
 2431|      6|  ABSL_ATTRIBUTE_NOINLINE void resize(size_t new_capacity) {
 2432|      6|    assert(IsValidCapacity(new_capacity));
 2433|      6|    auto* old_ctrl = control();
 2434|      6|    auto* old_slots = slot_array();
 2435|      6|    const size_t old_capacity = common().capacity_;
 2436|      6|    common().capacity_ = new_capacity;
 2437|      6|    initialize_slots();
 2438|       |
 2439|      6|    auto* new_slots = slot_array();
 2440|      6|    size_t total_probe_length = 0;
 2441|     14|    for (size_t i = 0; i != old_capacity; ++i) {
  ------------------
  |  Branch (2441:24): [True: 8, False: 6]
  ------------------
 2442|      8|      if (IsFull(old_ctrl[i])) {
  ------------------
  |  Branch (2442:11): [True: 8, False: 0]
  ------------------
 2443|      8|        size_t hash = PolicyTraits::apply(HashElement{hash_ref()},
 2444|      8|                                          PolicyTraits::element(old_slots + i));
 2445|      8|        auto target = find_first_non_full(common(), hash);
 2446|      8|        size_t new_i = target.offset;
 2447|      8|        total_probe_length += target.probe_length;
 2448|      8|        SetCtrl(common(), new_i, H2(hash), sizeof(slot_type));
 2449|      8|        PolicyTraits::transfer(&alloc_ref(), new_slots + new_i, old_slots + i);
 2450|      8|      }
 2451|      8|    }
 2452|      6|    if (old_capacity) {
  ------------------
  |  Branch (2452:9): [True: 4, False: 2]
  ------------------
 2453|      4|      SanitizerUnpoisonMemoryRegion(old_slots,
 2454|      4|                                    sizeof(slot_type) * old_capacity);
 2455|      4|      Deallocate<alignof(slot_type)>(
 2456|      4|          &alloc_ref(), old_ctrl,
 2457|      4|          AllocSize(old_capacity, sizeof(slot_type), alignof(slot_type)));
 2458|      4|    }
 2459|      6|    infoz().RecordRehash(total_probe_length);
 2460|      6|  }
message.cc:_ZN4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyIPKN6google8protobuf8internal15DescriptorTableEEENS4_12_GLOBAL__N_123GeneratedMessageFactory20DescriptorByNameHashENSB_18DescriptorByNameEqENSt3__19allocatorIS8_EEE16initialize_slotsEv:
 2421|      6|  inline void initialize_slots() {
 2422|       |    // People are often sloppy with the exact type of their allocator (sometimes
 2423|       |    // it has an extra const or is missing the pair, but rebinds made it work
 2424|       |    // anyway).
 2425|      6|    using CharAlloc =
 2426|      6|        typename absl::allocator_traits<Alloc>::template rebind_alloc<char>;
 2427|      6|    InitializeSlots<CharAlloc, sizeof(slot_type), alignof(slot_type)>(
 2428|      6|        common(), CharAlloc(alloc_ref()));
 2429|      6|  }
message.cc:_ZNK4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyIPKN6google8protobuf8internal15DescriptorTableEEENS4_12_GLOBAL__N_123GeneratedMessageFactory20DescriptorByNameHashENSB_18DescriptorByNameEqENSt3__19allocatorIS8_EEE11HashElementclIS8_JRS8_EEEmRKT_DpOT0_:
 2362|      8|    size_t operator()(const K& key, Args&&...) const {
 2363|      8|      return h(key);
 2364|      8|    }
message.cc:_ZN4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyIPKN6google8protobuf8internal15DescriptorTableEEENS4_12_GLOBAL__N_123GeneratedMessageFactory20DescriptorByNameHashENSB_18DescriptorByNameEqENSt3__19allocatorIS8_EEE11growth_leftEv:
 2649|     20|  size_t& growth_left() { return common().growth_left(); }
message.cc:_ZN4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyIPKN6google8protobuf8internal15DescriptorTableEEENS4_12_GLOBAL__N_123GeneratedMessageFactory20DescriptorByNameHashENSB_18DescriptorByNameEqENSt3__19allocatorIS8_EEE28rehash_and_grow_if_necessaryEv:
 2476|      6|  void rehash_and_grow_if_necessary() {
 2477|      6|    const size_t cap = capacity();
 2478|      6|    if (cap > Group::kWidth &&
  ------------------
  |  Branch (2478:9): [True: 0, False: 6]
  ------------------
 2479|       |        // Do these calculations in 64-bit to avoid overflow.
 2480|      6|        size() * uint64_t{32} <= cap * uint64_t{25}) {
  ------------------
  |  Branch (2480:9): [True: 0, False: 0]
  ------------------
 2481|       |      // Squash DELETED without growing if there is enough capacity.
 2482|       |      //
 2483|       |      // Rehash in place if the current size is <= 25/32 of capacity.
 2484|       |      // Rationale for such a high factor: 1) drop_deletes_without_resize() is
 2485|       |      // faster than resize, and 2) it takes quite a bit of work to add
 2486|       |      // tombstones.  In the worst case, seems to take approximately 4
 2487|       |      // insert/erase pairs to create a single tombstone and so if we are
 2488|       |      // rehashing because of tombstones, we can afford to rehash-in-place as
 2489|       |      // long as we are reclaiming at least 1/8 the capacity without doing more
 2490|       |      // than 2X the work.  (Where "work" is defined to be size() for rehashing
 2491|       |      // or rehashing in place, and 1 for an insert or erase.)  But rehashing in
 2492|       |      // place is faster per operation than inserting or even doubling the size
 2493|       |      // of the table, so we actually afford to reclaim even less space from a
 2494|       |      // resize-in-place.  The decision is to rehash in place if we can reclaim
 2495|       |      // at about 1/8th of the usable capacity (specifically 3/28 of the
 2496|       |      // capacity) which means that the total cost of rehashing will be a small
 2497|       |      // fraction of the total work.
 2498|       |      //
 2499|       |      // Here is output of an experiment using the BM_CacheInSteadyState
 2500|       |      // benchmark running the old case (where we rehash-in-place only if we can
 2501|       |      // reclaim at least 7/16*capacity) vs. this code (which rehashes in place
 2502|       |      // if we can recover 3/32*capacity).
 2503|       |      //
 2504|       |      // Note that although in the worst-case number of rehashes jumped up from
 2505|       |      // 15 to 190, but the number of operations per second is almost the same.
 2506|       |      //
 2507|       |      // Abridged output of running BM_CacheInSteadyState benchmark from
 2508|       |      // raw_hash_set_benchmark.   N is the number of insert/erase operations.
 2509|       |      //
 2510|       |      //      | OLD (recover >= 7/16        | NEW (recover >= 3/32)
 2511|       |      // size |    N/s LoadFactor NRehashes |    N/s LoadFactor NRehashes
 2512|       |      //  448 | 145284       0.44        18 | 140118       0.44        19
 2513|       |      //  493 | 152546       0.24        11 | 151417       0.48        28
 2514|       |      //  538 | 151439       0.26        11 | 151152       0.53        38
 2515|       |      //  583 | 151765       0.28        11 | 150572       0.57        50
 2516|       |      //  628 | 150241       0.31        11 | 150853       0.61        66
 2517|       |      //  672 | 149602       0.33        12 | 150110       0.66        90
 2518|       |      //  717 | 149998       0.35        12 | 149531       0.70       129
 2519|       |      //  762 | 149836       0.37        13 | 148559       0.74       190
 2520|       |      //  807 | 149736       0.39        14 | 151107       0.39        14
 2521|       |      //  852 | 150204       0.42        15 | 151019       0.42        15
 2522|      0|      drop_deletes_without_resize();
 2523|      6|    } else {
 2524|       |      // Otherwise grow the container.
 2525|      6|      resize(NextCapacity(cap));
 2526|      6|    }
 2527|      6|  }
message.cc:_ZN4absl18container_internal12raw_hash_setINS0_17FlatHashSetPolicyIPKN6google8protobuf8internal15DescriptorTableEEENS4_12_GLOBAL__N_123GeneratedMessageFactory20DescriptorByNameHashENSB_18DescriptorByNameEqENSt3__19allocatorIS8_EEE10emplace_atIJRKS8_EEEvmDpOT_:
 2620|     10|  void emplace_at(size_t i, Args&&... args) {
 2621|     10|    PolicyTraits::construct(&alloc_ref(), slot_array() + i,
 2622|     10|                            std::forward<Args>(args)...);
 2623|       |
 2624|     10|    assert(PolicyTraits::apply(FindElement{*this}, *iterator_at(i)) ==
 2625|     10|               iterator_at(i) &&
 2626|     10|           "constructed value does not match the lookup key");
 2627|     10|  }

_ZN4absl6HashOfIJEJNSt3__117basic_string_viewIcNS1_11char_traitsIcEEEEEEEmDpRKT0_:
  267|     18|size_t HashOf(const Types&... values) {
  268|     18|  auto tuple = std::tie(values...);
  269|     18|  return absl::Hash<decltype(tuple)>{}(tuple);
  270|     18|}

_ZN4absl13hash_internal15MixingHashState28CombineLargeContiguousImpl64EmPKhm:
   36|    529|    uint64_t state, const unsigned char* first, size_t len) {
   37|  1.98k|  while (len >= PiecewiseChunkSize()) {
  ------------------
  |  Branch (37:10): [True: 1.45k, False: 529]
  ------------------
   38|  1.45k|    state = Mix(state, Hash64(first, PiecewiseChunkSize()));
   39|  1.45k|    len -= PiecewiseChunkSize();
   40|  1.45k|    first += PiecewiseChunkSize();
   41|  1.45k|  }
   42|       |  // Handle the remainder.
   43|    529|  return CombineContiguousImpl(state, first, len,
   44|    529|                               std::integral_constant<int, 8>{});
   45|    529|}
_ZN4absl13hash_internal15MixingHashState16LowLevelHashImplEPKhm:
   63|  6.86k|                                           size_t len) {
   64|  6.86k|  return LowLevelHash(data, len, Seed(), kHashSalt);
   65|  6.86k|}

_ZN4absl13hash_internal15MixingHashState18combine_contiguousES1_PKhm:
  976|  2.20M|                                            size_t size) {
  977|  2.20M|    return MixingHashState(
  978|  2.20M|        CombineContiguousImpl(hash_state.state_, first, size,
  979|  2.20M|                              std::integral_constant<int, sizeof(size_t)>{}));
  980|  2.20M|  }
_ZN4absl13hash_internal15MixingHashStateC2Ev:
 1005|  1.10M|  MixingHashState() : state_(Seed()) {}
_ZN4absl13hash_internal15MixingHashStateC2Em:
 1038|  2.20M|  explicit MixingHashState(uint64_t state) : state_(state) {}
_ZN4absl13hash_internal15MixingHashState9Read9To16EPKhm:
 1067|  1.13k|                                                 size_t len) {
 1068|  1.13k|    uint64_t low_mem = absl::base_internal::UnalignedLoad64(p);
 1069|  1.13k|    uint64_t high_mem = absl::base_internal::UnalignedLoad64(p + len - 8);
 1070|  1.13k|#ifdef ABSL_IS_LITTLE_ENDIAN
 1071|  1.13k|    uint64_t most_significant = high_mem;
 1072|  1.13k|    uint64_t least_significant = low_mem;
 1073|       |#else
 1074|       |    uint64_t most_significant = low_mem;
 1075|       |    uint64_t least_significant = high_mem;
 1076|       |#endif
 1077|  1.13k|    return {least_significant, most_significant};
 1078|  1.13k|  }
_ZN4absl13hash_internal15MixingHashState8Read4To8EPKhm:
 1081|  1.10M|  static uint64_t Read4To8(const unsigned char* p, size_t len) {
 1082|  1.10M|    uint32_t low_mem = absl::base_internal::UnalignedLoad32(p);
 1083|  1.10M|    uint32_t high_mem = absl::base_internal::UnalignedLoad32(p + len - 4);
 1084|  1.10M|#ifdef ABSL_IS_LITTLE_ENDIAN
 1085|  1.10M|    uint32_t most_significant = high_mem;
 1086|  1.10M|    uint32_t least_significant = low_mem;
 1087|       |#else
 1088|       |    uint32_t most_significant = low_mem;
 1089|       |    uint32_t least_significant = high_mem;
 1090|       |#endif
 1091|  1.10M|    return (static_cast<uint64_t>(most_significant) << (len - 4) * 8) |
 1092|  1.10M|           least_significant;
 1093|  1.10M|  }
_ZN4absl13hash_internal15MixingHashState8Read1To3EPKhm:
 1096|  1.09M|  static uint32_t Read1To3(const unsigned char* p, size_t len) {
 1097|       |    // The trick used by this implementation is to avoid branches if possible.
 1098|  1.09M|    unsigned char mem0 = p[0];
 1099|  1.09M|    unsigned char mem1 = p[len / 2];
 1100|  1.09M|    unsigned char mem2 = p[len - 1];
 1101|  1.09M|#ifdef ABSL_IS_LITTLE_ENDIAN
 1102|  1.09M|    unsigned char significant2 = mem2;
 1103|  1.09M|    unsigned char significant1 = mem1;
 1104|  1.09M|    unsigned char significant0 = mem0;
 1105|       |#else
 1106|       |    unsigned char significant2 = mem0;
 1107|       |    unsigned char significant1 = len == 2 ? mem0 : mem1;
 1108|       |    unsigned char significant0 = mem2;
 1109|       |#endif
 1110|  1.09M|    return static_cast<uint32_t>(significant0 |                     //
 1111|  1.09M|                                 (significant1 << (len / 2 * 8)) |  //
 1112|  1.09M|                                 (significant2 << ((len - 1) * 8)));
 1113|  1.09M|  }
_ZN4absl13hash_internal15MixingHashState3MixEmm:
 1115|  2.20M|  ABSL_ATTRIBUTE_ALWAYS_INLINE static uint64_t Mix(uint64_t state, uint64_t v) {
 1116|       |    // Though the 128-bit product on AArch64 needs two instructions, it is
 1117|       |    // still a good balance between speed and hash quality.
 1118|  2.20M|    using MultType =
 1119|  2.20M|        absl::conditional_t<sizeof(size_t) == 4, uint64_t, uint128>;
 1120|       |    // We do the addition in 64-bit space to make sure the 128-bit
 1121|       |    // multiplication is fast. If we were to do it as MultType the compiler has
 1122|       |    // to assume that the high word is non-zero and needs to perform 2
 1123|       |    // multiplications instead of one.
 1124|  2.20M|    MultType m = state + v;
 1125|  2.20M|    m *= kMul;
 1126|  2.20M|    return static_cast<uint64_t>(m ^ (m >> (sizeof(m) * 8 / 2)));
 1127|  2.20M|  }
_ZN4absl13hash_internal15MixingHashState6Hash64EPKhm:
 1134|  6.86k|                                                      size_t len) {
 1135|  6.86k|#ifdef ABSL_HAVE_INTRINSIC_INT128
 1136|  6.86k|    return LowLevelHashImpl(data, len);
 1137|       |#else
 1138|       |    return hash_internal::CityHash64(reinterpret_cast<const char*>(data), len);
 1139|       |#endif
 1140|  6.86k|  }
_ZN4absl13hash_internal15MixingHashState4SeedEv:
 1158|  1.10M|  ABSL_ATTRIBUTE_ALWAYS_INLINE static uint64_t Seed() {
 1159|  1.10M|#if (!defined(__clang__) || __clang_major__ > 11) && \
 1160|  1.10M|    (!defined(__apple_build_version__) ||            \
 1161|  1.10M|     __apple_build_version__ >= 19558921)  // Xcode 12
 1162|  1.10M|    return static_cast<uint64_t>(reinterpret_cast<uintptr_t>(&kSeed));
 1163|       |#else
 1164|       |    // Workaround the absence of
 1165|       |    // https://github.com/llvm/llvm-project/commit/bc15bf66dcca76cc06fe71fca35b74dc4d521021.
 1166|       |    return static_cast<uint64_t>(reinterpret_cast<uintptr_t>(kSeed));
 1167|       |#endif
 1168|  1.10M|  }
_ZN4absl13hash_internal18PiecewiseChunkSizeEv:
   72|  12.2k|constexpr size_t PiecewiseChunkSize() { return 1024; }
_ZN4absl13hash_internal15MixingHashState21CombineContiguousImplEmPKhmNSt3__117integral_constantIiLi8EEE:
 1200|  2.20M|    std::integral_constant<int, 8> /* sizeof_size_t */) {
 1201|       |  // For large values we use LowLevelHash or CityHash depending on the platform,
 1202|       |  // for small ones we just use a multiplicative hash.
 1203|  2.20M|  uint64_t v;
 1204|  2.20M|  if (len > 16) {
  ------------------
  |  Branch (1204:7): [True: 5.94k, False: 2.19M]
  ------------------
 1205|  5.94k|    if (ABSL_PREDICT_FALSE(len > PiecewiseChunkSize())) {
  ------------------
  |  |  177|  5.94k|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (177:31): [True: 529, False: 5.41k]
  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  Branch (177:58): [True: 529, False: 5.41k]
  |  |  ------------------
  ------------------
 1206|    529|      return CombineLargeContiguousImpl64(state, first, len);
 1207|    529|    }
 1208|  5.41k|    v = Hash64(first, len);
 1209|  2.19M|  } else if (len > 8) {
  ------------------
  |  Branch (1209:14): [True: 1.13k, False: 2.19M]
  ------------------
 1210|       |    // This hash function was constructed by the ML-driven algorithm discovery
 1211|       |    // using reinforcement learning. We fed the agent lots of inputs from
 1212|       |    // microbenchmarks, SMHasher, low hamming distance from generated inputs and
 1213|       |    // picked up the one that was good on micro and macrobenchmarks.
 1214|  1.13k|    auto p = Read9To16(first, len);
 1215|  1.13k|    uint64_t lo = p.first;
 1216|  1.13k|    uint64_t hi = p.second;
 1217|       |    // Rotation by 53 was found to be most often useful when discovering these
 1218|       |    // hashing algorithms with ML techniques.
 1219|  1.13k|    lo = absl::rotr(lo, 53);
 1220|  1.13k|    state += kMul;
 1221|  1.13k|    lo += state;
 1222|  1.13k|    state ^= hi;
 1223|  1.13k|    uint128 m = state;
 1224|  1.13k|    m *= lo;
 1225|  1.13k|    return static_cast<uint64_t>(m ^ (m >> 64));
 1226|  2.19M|  } else if (len >= 4) {
  ------------------
  |  Branch (1226:14): [True: 1.10M, False: 1.09M]
  ------------------
 1227|  1.10M|    v = Read4To8(first, len);
 1228|  1.10M|  } else if (len > 0) {
  ------------------
  |  Branch (1228:14): [True: 1.09M, False: 37]
  ------------------
 1229|  1.09M|    v = Read1To3(first, len);
 1230|  1.09M|  } else {
 1231|       |    // Empty ranges have no effect.
 1232|     37|    return state;
 1233|     37|  }
 1234|  2.20M|  return Mix(state, v);
 1235|  2.20M|}
_ZNK4absl13hash_internal8HashImplINSt3__117basic_string_viewIcNS2_11char_traitsIcEEEEEclERKS6_:
 1252|  1.10M|  size_t operator()(const T& value) const {
 1253|  1.10M|    return MixingHashState::hash(value);
 1254|  1.10M|  }
_ZN4absl13hash_internal15MixingHashState4hashINSt3__117basic_string_viewIcNS3_11char_traitsIcEEEELi0EEEmRKT_:
  998|  1.10M|  static size_t hash(const T& value) {
  999|  1.10M|    return static_cast<size_t>(combine(MixingHashState{}, value).state_);
 1000|  1.10M|  }
_ZN4absl13hash_internal13HashStateBaseINS0_15MixingHashStateEE7combineINSt3__117basic_string_viewIcNS5_11char_traitsIcEEEEJEEES2_S2_RKT_DpRKT0_:
 1263|  1.10M|H HashStateBase<H>::combine(H state, const T& value, const Ts&... values) {
 1264|  1.10M|  return H::combine(hash_internal::HashSelect::template Apply<T>::Invoke(
 1265|  1.10M|                        std::move(state), value),
 1266|  1.10M|                    values...);
 1267|  1.10M|}
_ZN4absl13hash_internal10HashSelect14HashValueProbe6InvokeINS0_15MixingHashStateENSt3__117basic_string_viewIcNS5_11char_traitsIcEEEEEENS5_9enable_ifIXsr3std7is_sameIT_DTcl13AbslHashValueclsr3stdE4movefp_Efp0_EEEE5valueESB_E4typeESB_RKT0_:
  890|  1.10M|        H> {
  891|  1.10M|      return AbslHashValue(std::move(state), value);
  892|  1.10M|    }
_ZN4absl13hash_internal13AbslHashValueINS0_15MixingHashStateEEET_S3_NSt3__117basic_string_viewIcNS4_11char_traitsIcEEEE:
  533|  1.10M|H AbslHashValue(H hash_state, absl::string_view str) {
  534|  1.10M|  return H::combine(
  535|  1.10M|      H::combine_contiguous(std::move(hash_state), str.data(), str.size()),
  536|  1.10M|      str.size());
  537|  1.10M|}
_ZN4absl13hash_internal13HashStateBaseINS0_15MixingHashStateEE18combine_contiguousIcEES2_S2_PKT_m:
 1272|  1.10M|H HashStateBase<H>::combine_contiguous(H state, const T* data, size_t size) {
 1273|  1.10M|  return hash_internal::hash_range_or_bytes(std::move(state), data, size);
 1274|  1.10M|}
_ZN4absl13hash_internal19hash_range_or_bytesINS0_15MixingHashStateEcEENSt3__19enable_ifIXsr23is_uniquely_representedIT0_EE5valueET_E4typeES6_PKS5_m:
  838|  1.10M|hash_range_or_bytes(H hash_state, const T* data, size_t size) {
  839|  1.10M|  const auto* bytes = reinterpret_cast<const unsigned char*>(data);
  840|  1.10M|  return H::combine_contiguous(std::move(hash_state), bytes, sizeof(T) * size);
  841|  1.10M|}
_ZN4absl13hash_internal13HashStateBaseINS0_15MixingHashStateEE7combineImJEEES2_S2_RKT_DpRKT0_:
 1263|  1.10M|H HashStateBase<H>::combine(H state, const T& value, const Ts&... values) {
 1264|  1.10M|  return H::combine(hash_internal::HashSelect::template Apply<T>::Invoke(
 1265|  1.10M|                        std::move(state), value),
 1266|  1.10M|                    values...);
 1267|  1.10M|}
_ZN4absl13hash_internal10HashSelect24UniquelyRepresentedProbe6InvokeINS0_15MixingHashStateEmEENSt3__19enable_ifIXsr23is_uniquely_representedIT0_EE5valueET_E4typeES8_RKS7_:
  880|  1.10M|        -> absl::enable_if_t<is_uniquely_represented<T>::value, H> {
  881|  1.10M|      return hash_internal::hash_bytes(std::move(state), value);
  882|  1.10M|    }
_ZN4absl13hash_internal10hash_bytesINS0_15MixingHashStateEmEET_S3_RKT0_:
  330|  1.10M|H hash_bytes(H hash_state, const T& value) {
  331|  1.10M|  const unsigned char* start = reinterpret_cast<const unsigned char*>(&value);
  332|  1.10M|  return H::combine_contiguous(std::move(hash_state), start, sizeof(value));
  333|  1.10M|}
_ZN4absl13hash_internal13HashStateBaseINS0_15MixingHashStateEE7combineES2_:
  224|  2.20M|  static H combine(H state) { return state; }
_ZNK4absl13hash_internal8HashImplINSt3__15tupleIJRKNS2_17basic_string_viewIcNS2_11char_traitsIcEEEEEEEEclERKSA_:
 1252|     18|  size_t operator()(const T& value) const {
 1253|     18|    return MixingHashState::hash(value);
 1254|     18|  }
_ZN4absl13hash_internal15MixingHashState4hashINSt3__15tupleIJRKNS3_17basic_string_viewIcNS3_11char_traitsIcEEEEEEELi0EEEmRKT_:
  998|     18|  static size_t hash(const T& value) {
  999|     18|    return static_cast<size_t>(combine(MixingHashState{}, value).state_);
 1000|     18|  }
_ZN4absl13hash_internal13HashStateBaseINS0_15MixingHashStateEE7combineINSt3__15tupleIJRKNS5_17basic_string_viewIcNS5_11char_traitsIcEEEEEEEJEEES2_S2_RKT_DpRKT0_:
 1263|     18|H HashStateBase<H>::combine(H state, const T& value, const Ts&... values) {
 1264|     18|  return H::combine(hash_internal::HashSelect::template Apply<T>::Invoke(
 1265|     18|                        std::move(state), value),
 1266|     18|                    values...);
 1267|     18|}
_ZN4absl13hash_internal10HashSelect14HashValueProbe6InvokeINS0_15MixingHashStateENSt3__15tupleIJRKNS5_17basic_string_viewIcNS5_11char_traitsIcEEEEEEEEENS5_9enable_ifIXsr3std7is_sameIT_DTcl13AbslHashValueclsr3stdE4movefp_Efp0_EEEE5valueESF_E4typeESF_RKT0_:
  890|     18|        H> {
  891|     18|      return AbslHashValue(std::move(state), value);
  892|     18|    }
_ZN4absl13hash_internal13AbslHashValueINS0_15MixingHashStateEJRKNSt3__117basic_string_viewIcNS3_11char_traitsIcEEEEEEENS3_9enable_ifIXsr4absl11conjunctionIDpNS0_11is_hashableIT0_EEEE5valueET_E4typeESF_RKNS3_5tupleIJDpSC_EEE:
  492|     18|AbslHashValue(H hash_state, const std::tuple<Ts...>& t) {
  493|     18|  return hash_internal::hash_tuple(std::move(hash_state), t,
  494|     18|                                   absl::make_index_sequence<sizeof...(Ts)>());
  495|     18|}
_ZN4absl13hash_internal10hash_tupleINS0_15MixingHashStateENSt3__15tupleIJRKNS3_17basic_string_viewIcNS3_11char_traitsIcEEEEEEEJLm0EEEET_SC_RKT0_NS_16integer_sequenceImJXspT1_EEEE:
  479|     18|H hash_tuple(H hash_state, const Tuple& t, absl::index_sequence<Is...>) {
  480|     18|  return H::combine(std::move(hash_state), std::get<Is>(t)...);
  481|     18|}

_ZN4absl13hash_internal12LowLevelHashEPKvmmPKm:
   31|  6.86k|                      const uint64_t salt[5]) {
   32|  6.86k|  const uint8_t* ptr = static_cast<const uint8_t*>(data);
   33|  6.86k|  uint64_t starting_length = static_cast<uint64_t>(len);
   34|  6.86k|  uint64_t current_state = seed ^ salt[0];
   35|       |
   36|  6.86k|  if (len > 64) {
  ------------------
  |  Branch (36:7): [True: 2.45k, False: 4.41k]
  ------------------
   37|       |    // If we have more than 64 bytes, we're going to handle chunks of 64
   38|       |    // bytes at a time. We're going to build up two separate hash states
   39|       |    // which we will then hash together.
   40|  2.45k|    uint64_t duplicated_state = current_state;
   41|       |
   42|  26.3k|    do {
   43|  26.3k|      uint64_t a = absl::base_internal::UnalignedLoad64(ptr);
   44|  26.3k|      uint64_t b = absl::base_internal::UnalignedLoad64(ptr + 8);
   45|  26.3k|      uint64_t c = absl::base_internal::UnalignedLoad64(ptr + 16);
   46|  26.3k|      uint64_t d = absl::base_internal::UnalignedLoad64(ptr + 24);
   47|  26.3k|      uint64_t e = absl::base_internal::UnalignedLoad64(ptr + 32);
   48|  26.3k|      uint64_t f = absl::base_internal::UnalignedLoad64(ptr + 40);
   49|  26.3k|      uint64_t g = absl::base_internal::UnalignedLoad64(ptr + 48);
   50|  26.3k|      uint64_t h = absl::base_internal::UnalignedLoad64(ptr + 56);
   51|       |
   52|  26.3k|      uint64_t cs0 = Mix(a ^ salt[1], b ^ current_state);
   53|  26.3k|      uint64_t cs1 = Mix(c ^ salt[2], d ^ current_state);
   54|  26.3k|      current_state = (cs0 ^ cs1);
   55|       |
   56|  26.3k|      uint64_t ds0 = Mix(e ^ salt[3], f ^ duplicated_state);
   57|  26.3k|      uint64_t ds1 = Mix(g ^ salt[4], h ^ duplicated_state);
   58|  26.3k|      duplicated_state = (ds0 ^ ds1);
   59|       |
   60|  26.3k|      ptr += 64;
   61|  26.3k|      len -= 64;
   62|  26.3k|    } while (len > 64);
  ------------------
  |  Branch (62:14): [True: 23.8k, False: 2.45k]
  ------------------
   63|       |
   64|  2.45k|    current_state = current_state ^ duplicated_state;
   65|  2.45k|  }
   66|       |
   67|       |  // We now have a data `ptr` with at most 64 bytes and the current state
   68|       |  // of the hashing state machine stored in current_state.
   69|  17.8k|  while (len > 16) {
  ------------------
  |  Branch (69:10): [True: 10.9k, False: 6.86k]
  ------------------
   70|  10.9k|    uint64_t a = absl::base_internal::UnalignedLoad64(ptr);
   71|  10.9k|    uint64_t b = absl::base_internal::UnalignedLoad64(ptr + 8);
   72|       |
   73|  10.9k|    current_state = Mix(a ^ salt[1], b ^ current_state);
   74|       |
   75|  10.9k|    ptr += 16;
   76|  10.9k|    len -= 16;
   77|  10.9k|  }
   78|       |
   79|       |  // We now have a data `ptr` with at most 16 bytes.
   80|  6.86k|  uint64_t a = 0;
   81|  6.86k|  uint64_t b = 0;
   82|  6.86k|  if (len > 8) {
  ------------------
  |  Branch (82:7): [True: 2.68k, False: 4.18k]
  ------------------
   83|       |    // When we have at least 9 and at most 16 bytes, set A to the first 64
   84|       |    // bits of the input and B to the last 64 bits of the input. Yes, they will
   85|       |    // overlap in the middle if we are working with less than the full 16
   86|       |    // bytes.
   87|  2.68k|    a = absl::base_internal::UnalignedLoad64(ptr);
   88|  2.68k|    b = absl::base_internal::UnalignedLoad64(ptr + len - 8);
   89|  4.18k|  } else if (len > 3) {
  ------------------
  |  Branch (89:14): [True: 3.62k, False: 563]
  ------------------
   90|       |    // If we have at least 4 and at most 8 bytes, set A to the first 32
   91|       |    // bits and B to the last 32 bits.
   92|  3.62k|    a = absl::base_internal::UnalignedLoad32(ptr);
   93|  3.62k|    b = absl::base_internal::UnalignedLoad32(ptr + len - 4);
   94|  3.62k|  } else if (len > 0) {
  ------------------
  |  Branch (94:14): [True: 563, False: 0]
  ------------------
   95|       |    // If we have at least 1 and at most 3 bytes, read all of the provided
   96|       |    // bits into A, with some adjustments.
   97|    563|    a = static_cast<uint64_t>((ptr[0] << 16) | (ptr[len >> 1] << 8) |
   98|    563|                              ptr[len - 1]);
   99|    563|    b = 0;
  100|    563|  } else {
  101|      0|    a = 0;
  102|      0|    b = 0;
  103|      0|  }
  104|       |
  105|  6.86k|  uint64_t w = Mix(a ^ salt[1], b ^ current_state);
  106|  6.86k|  uint64_t z = salt[1] ^ starting_length;
  107|  6.86k|  return Mix(w, z);
  108|  6.86k|}
low_level_hash.cc:_ZN4absl13hash_internalL3MixEmm:
   24|   130k|static uint64_t Mix(uint64_t v0, uint64_t v1) {
   25|   130k|  absl::uint128 p = v0;
   26|   130k|  p *= v1;
   27|   130k|  return absl::Uint128Low64(p) ^ absl::Uint128High64(p);
   28|   130k|}

_ZN4absl12log_internal21GetReferenceableValueEl:
  377|   205M|inline constexpr long GetReferenceableValue(long t) { return t; }  // NOLINT
_ZN4absl12log_internal12Check_LEImplIllEEPNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEERKT_RKT0_PKc:
  324|   102M|                                             const char* exprtext) {     \
  325|   102M|    using U1 = CheckOpStreamType<T1>;                                    \
  326|   102M|    using U2 = CheckOpStreamType<T2>;                                    \
  327|   102M|    return ABSL_PREDICT_TRUE(v1 op v2)                                   \
  ------------------
  |  |  178|   102M|#define ABSL_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (178:30): [True: 102M, False: 0]
  |  |  |  Branch (178:48): [Folded - Ignored]
  |  |  |  Branch (178:57): [True: 102M, False: 0]
  |  |  ------------------
  ------------------
  328|   102M|               ? nullptr                                                 \
  329|   102M|               : MakeCheckOpString<U1, U2>(v1, v2, exprtext);            \
  330|   102M|  }                                                                      \

_ZN4absl11countl_zeroImEENSt3__19enable_ifIXsr3std11is_unsignedIT_EE5valueEiE4typeES3_:
   77|  22.5k|    countl_zero(T x) noexcept {
   78|  22.5k|  return numeric_internal::CountLeadingZeroes(x);
   79|  22.5k|}
_ZN4absl9bit_widthImEENSt3__19enable_ifIXsr3std11is_unsignedIT_EE5valueEiE4typeES3_:
  135|    535|    bit_width(T x) noexcept {
  136|    535|  return std::numeric_limits<T>::digits - countl_zero(x);
  137|    535|}
_ZN4absl4rotrImEENSt3__19enable_ifIXsr3std11is_unsignedIT_EE5valueES3_E4typeES3_i:
   65|  1.13k|    rotr(T x, int s) noexcept {
   66|  1.13k|  return numeric_internal::RotateRight(x, s);
   67|  1.13k|}
_ZN4absl11countr_zeroIjEENSt3__19enable_ifIXsr3std11is_unsignedIT_EE5valueEiE4typeES3_:
   92|  7.67k|    countr_zero(T x) noexcept {
   93|  7.67k|  return numeric_internal::CountTrailingZeroes(x);
   94|  7.67k|}

_ZN4absl7uint128rSEi:
  596|  25.4k|inline uint128& uint128::operator>>=(int amount) {
  597|  25.4k|  *this = *this >> amount;
  598|  25.4k|  return *this;
  599|  25.4k|}
_ZN4absl7uint128pLES0_:
  601|  2.47k|inline uint128& uint128::operator+=(uint128 other) {
  602|  2.47k|  *this = *this + other;
  603|  2.47k|  return *this;
  604|  2.47k|}
_ZN4absl7uint128mLES0_:
  611|   143k|inline uint128& uint128::operator*=(uint128 other) {
  612|   143k|  *this = *this * other;
  613|   143k|  return *this;
  614|   143k|}
_ZN4absl12Uint128Low64ENS_7uint128E:
  626|   144k|constexpr uint64_t Uint128Low64(uint128 v) { return v.lo_; }
_ZN4absl13Uint128High64ENS_7uint128E:
  628|   189k|constexpr uint64_t Uint128High64(uint128 v) { return v.hi_; }
_ZNK4absl7uint128cvmEv:
  742|  13.3k|constexpr uint128::operator unsigned long() const {  // NOLINT(runtime/int)
  743|  13.3k|  return static_cast<unsigned long>(lo_);            // NOLINT(runtime/int)
  744|  13.3k|}
_ZNK4absl7uint128cvoEv:
  759|   521k|constexpr uint128::operator unsigned __int128() const {
  760|   521k|  return (static_cast<unsigned __int128>(hi_) << 64) + lo_;
  761|   521k|}
_ZN4absleqENS_7uint128ES0_:
  781|  23.5k|constexpr bool operator==(uint128 lhs, uint128 rhs) {
  782|  23.5k|#if defined(ABSL_HAVE_INTRINSIC_INT128)
  783|  23.5k|  return static_cast<unsigned __int128>(lhs) ==
  784|  23.5k|         static_cast<unsigned __int128>(rhs);
  785|       |#else
  786|       |  return (Uint128Low64(lhs) == Uint128Low64(rhs) &&
  787|       |          Uint128High64(lhs) == Uint128High64(rhs));
  788|       |#endif
  789|  23.5k|}
_ZN4abslltENS_7uint128ES0_:
  793|  13.3k|constexpr bool operator<(uint128 lhs, uint128 rhs) {
  794|  13.3k|#ifdef ABSL_HAVE_INTRINSIC_INT128
  795|  13.3k|  return static_cast<unsigned __int128>(lhs) <
  796|  13.3k|         static_cast<unsigned __int128>(rhs);
  797|       |#else
  798|       |  return (Uint128High64(lhs) == Uint128High64(rhs))
  799|       |             ? (Uint128Low64(lhs) < Uint128Low64(rhs))
  800|       |             : (Uint128High64(lhs) < Uint128High64(rhs));
  801|       |#endif
  802|  13.3k|}
_ZN4abslgtENS_7uint128ES0_:
  804|  13.3k|constexpr bool operator>(uint128 lhs, uint128 rhs) { return rhs < lhs; }
_ZN4abslanENS_7uint128ES0_:
  854|  14.8k|constexpr inline uint128 operator&(uint128 lhs, uint128 rhs) {
  855|  14.8k|#if defined(ABSL_HAVE_INTRINSIC_INT128)
  856|  14.8k|  return static_cast<unsigned __int128>(lhs) &
  857|  14.8k|         static_cast<unsigned __int128>(rhs);
  858|       |#else
  859|       |  return MakeUint128(Uint128High64(lhs) & Uint128High64(rhs),
  860|       |                     Uint128Low64(lhs) & Uint128Low64(rhs));
  861|       |#endif
  862|  14.8k|}
_ZN4absllsENS_7uint128Ei:
  891|  26.7k|constexpr uint128 operator<<(uint128 lhs, int amount) {
  892|  26.7k|#ifdef ABSL_HAVE_INTRINSIC_INT128
  893|  26.7k|  return static_cast<unsigned __int128>(lhs) << amount;
  894|       |#else
  895|       |  // uint64_t shifts of >= 64 are undefined, so we will need some
  896|       |  // special-casing.
  897|       |  return amount >= 64  ? MakeUint128(Uint128Low64(lhs) << (amount - 64), 0)
  898|       |         : amount == 0 ? lhs
  899|       |                       : MakeUint128((Uint128High64(lhs) << amount) |
  900|       |                                         (Uint128Low64(lhs) >> (64 - amount)),
  901|       |                                     Uint128Low64(lhs) << amount);
  902|       |#endif
  903|  26.7k|}
_ZN4abslrsENS_7uint128Ei:
  905|  25.4k|constexpr uint128 operator>>(uint128 lhs, int amount) {
  906|  25.4k|#ifdef ABSL_HAVE_INTRINSIC_INT128
  907|  25.4k|  return static_cast<unsigned __int128>(lhs) >> amount;
  908|       |#else
  909|       |  // uint64_t shifts of >= 64 are undefined, so we will need some
  910|       |  // special-casing.
  911|       |  return amount >= 64  ? MakeUint128(0, Uint128High64(lhs) >> (amount - 64))
  912|       |         : amount == 0 ? lhs
  913|       |                       : MakeUint128(Uint128High64(lhs) >> amount,
  914|       |                                     (Uint128Low64(lhs) >> amount) |
  915|       |                                         (Uint128High64(lhs) << (64 - amount)));
  916|       |#endif
  917|  25.4k|}
_ZN4abslplENS_7uint128ES0_:
  930|  4.11k|constexpr uint128 operator+(uint128 lhs, uint128 rhs) {
  931|  4.11k|#if defined(ABSL_HAVE_INTRINSIC_INT128)
  932|  4.11k|  return static_cast<unsigned __int128>(lhs) +
  933|  4.11k|         static_cast<unsigned __int128>(rhs);
  934|       |#else
  935|       |  return int128_internal::AddResult(
  936|       |      MakeUint128(Uint128High64(lhs) + Uint128High64(rhs),
  937|       |                  Uint128Low64(lhs) + Uint128Low64(rhs)),
  938|       |      lhs);
  939|       |#endif
  940|  4.11k|}
_ZN4abslmiENS_7uint128ES0_:
  953|  23.6k|constexpr uint128 operator-(uint128 lhs, uint128 rhs) {
  954|  23.6k|#if defined(ABSL_HAVE_INTRINSIC_INT128)
  955|  23.6k|  return static_cast<unsigned __int128>(lhs) -
  956|  23.6k|         static_cast<unsigned __int128>(rhs);
  957|       |#else
  958|       |  return int128_internal::SubstructResult(
  959|       |      MakeUint128(Uint128High64(lhs) - Uint128High64(rhs),
  960|       |                  Uint128Low64(lhs) - Uint128Low64(rhs)),
  961|       |      lhs, rhs);
  962|       |#endif
  963|  23.6k|}
_ZN4abslmlENS_7uint128ES0_:
  965|   154k|inline uint128 operator*(uint128 lhs, uint128 rhs) {
  966|   154k|#if defined(ABSL_HAVE_INTRINSIC_INT128)
  967|       |  // TODO(strel) Remove once alignment issues are resolved and unsigned __int128
  968|       |  // can be used for uint128 storage.
  969|   154k|  return static_cast<unsigned __int128>(lhs) *
  970|   154k|         static_cast<unsigned __int128>(rhs);
  971|       |#elif defined(_MSC_VER) && defined(_M_X64) && !defined(_M_ARM64EC)
  972|       |  uint64_t carry;
  973|       |  uint64_t low = _umul128(Uint128Low64(lhs), Uint128Low64(rhs), &carry);
  974|       |  return MakeUint128(Uint128Low64(lhs) * Uint128High64(rhs) +
  975|       |                         Uint128High64(lhs) * Uint128Low64(rhs) + carry,
  976|       |                     low);
  977|       |#else   // ABSL_HAVE_INTRINSIC128
  978|       |  uint64_t a32 = Uint128Low64(lhs) >> 32;
  979|       |  uint64_t a00 = Uint128Low64(lhs) & 0xffffffff;
  980|       |  uint64_t b32 = Uint128Low64(rhs) >> 32;
  981|       |  uint64_t b00 = Uint128Low64(rhs) & 0xffffffff;
  982|       |  uint128 result =
  983|       |      MakeUint128(Uint128High64(lhs) * Uint128Low64(rhs) +
  984|       |                      Uint128Low64(lhs) * Uint128High64(rhs) + a32 * b32,
  985|       |                  a00 * b00);
  986|       |  result += uint128(a32 * b00) << 32;
  987|       |  result += uint128(a00 * b32) << 32;
  988|       |  return result;
  989|       |#endif  // ABSL_HAVE_INTRINSIC128
  990|   154k|}
_ZN4absl7uint128ppEv:
 1018|    134|inline uint128& uint128::operator++() {
 1019|    134|  *this += 1;
 1020|    134|  return *this;
 1021|    134|}
_ZN4absl7uint128C2Em:
  648|   312k|constexpr uint128::uint128(unsigned long v) : lo_{v}, hi_{0} {}
_ZN4absl7uint128C2Eo:
  658|   249k|      hi_{static_cast<uint64_t>(v >> 64)} {}
_ZN4absl7uint128C2Ei:
  638|  55.1k|      hi_{v < 0 ? (std::numeric_limits<uint64_t>::max)() : 0} {}

_ZN4absl16numeric_internal20CountLeadingZeroes64Em:
  180|  22.5k|CountLeadingZeroes64(uint64_t x) {
  181|  22.5k|#if ABSL_NUMERIC_INTERNAL_HAVE_BUILTIN_OR_GCC(__builtin_clzll)
  182|       |  // Use __builtin_clzll, which uses the following instructions:
  183|       |  //  x86: bsr, lzcnt
  184|       |  //  ARM64: clz
  185|       |  //  PPC: cntlzd
  186|  22.5k|  static_assert(sizeof(unsigned long long) == sizeof(x),  // NOLINT(runtime/int)
  187|  22.5k|                "__builtin_clzll does not take 64-bit arg");
  188|       |
  189|       |  // Handle 0 as a special case because __builtin_clzll(0) is undefined.
  190|  22.5k|  return x == 0 ? 64 : __builtin_clzll(x);
  ------------------
  |  Branch (190:10): [True: 0, False: 22.5k]
  ------------------
  191|       |#elif defined(_MSC_VER) && !defined(__clang__) && \
  192|       |    (defined(_M_X64) || defined(_M_ARM64))
  193|       |  // MSVC does not have __buitin_clzll. Use _BitScanReverse64.
  194|       |  unsigned long result = 0;  // NOLINT(runtime/int)
  195|       |  if (_BitScanReverse64(&result, x)) {
  196|       |    return 63 - result;
  197|       |  }
  198|       |  return 64;
  199|       |#elif defined(_MSC_VER) && !defined(__clang__)
  200|       |  // MSVC does not have __buitin_clzll. Compose two calls to _BitScanReverse
  201|       |  unsigned long result = 0;  // NOLINT(runtime/int)
  202|       |  if ((x >> 32) &&
  203|       |      _BitScanReverse(&result, static_cast<unsigned long>(x >> 32))) {
  204|       |    return 31 - result;
  205|       |  }
  206|       |  if (_BitScanReverse(&result, static_cast<unsigned long>(x))) {
  207|       |    return 63 - result;
  208|       |  }
  209|       |  return 64;
  210|       |#else
  211|       |  int zeroes = 60;
  212|       |  if (x >> 32) {
  213|       |    zeroes -= 32;
  214|       |    x >>= 32;
  215|       |  }
  216|       |  if (x >> 16) {
  217|       |    zeroes -= 16;
  218|       |    x >>= 16;
  219|       |  }
  220|       |  if (x >> 8) {
  221|       |    zeroes -= 8;
  222|       |    x >>= 8;
  223|       |  }
  224|       |  if (x >> 4) {
  225|       |    zeroes -= 4;
  226|       |    x >>= 4;
  227|       |  }
  228|       |  return "\4\3\2\2\1\1\1\1\0\0\0\0\0\0\0"[x] + zeroes;
  229|       |#endif
  230|  22.5k|}
_ZN4absl16numeric_internal28CountTrailingZeroesNonzero32Ej:
  251|  7.67k|CountTrailingZeroesNonzero32(uint32_t x) {
  252|  7.67k|#if ABSL_NUMERIC_INTERNAL_HAVE_BUILTIN_OR_GCC(__builtin_ctz)
  253|  7.67k|  static_assert(sizeof(unsigned int) == sizeof(x),
  254|  7.67k|                "__builtin_ctz does not take 32-bit arg");
  255|  7.67k|  return __builtin_ctz(x);
  256|       |#elif defined(_MSC_VER) && !defined(__clang__)
  257|       |  unsigned long result = 0;  // NOLINT(runtime/int)
  258|       |  _BitScanForward(&result, x);
  259|       |  return result;
  260|       |#else
  261|       |  int c = 31;
  262|       |  x &= ~x + 1;
  263|       |  if (x & 0x0000FFFF) c -= 16;
  264|       |  if (x & 0x00FF00FF) c -= 8;
  265|       |  if (x & 0x0F0F0F0F) c -= 4;
  266|       |  if (x & 0x33333333) c -= 2;
  267|       |  if (x & 0x55555555) c -= 1;
  268|       |  return c;
  269|       |#endif
  270|  7.67k|}
_ZN4absl16numeric_internal18CountLeadingZeroesImEEiT_:
  234|  22.5k|CountLeadingZeroes(T x) {
  235|  22.5k|  static_assert(std::is_unsigned<T>::value, "T must be unsigned");
  236|  22.5k|  static_assert(IsPowerOf2(std::numeric_limits<T>::digits),
  237|  22.5k|                "T must have a power-of-2 size");
  238|  22.5k|  static_assert(sizeof(T) <= sizeof(uint64_t), "T too large");
  239|  22.5k|  return sizeof(T) <= sizeof(uint16_t)
  ------------------
  |  Branch (239:10): [Folded - Ignored]
  ------------------
  240|  22.5k|             ? CountLeadingZeroes16(static_cast<uint16_t>(x)) -
  241|      0|                   (std::numeric_limits<uint16_t>::digits -
  242|      0|                    std::numeric_limits<T>::digits)
  243|  22.5k|             : (sizeof(T) <= sizeof(uint32_t)
  ------------------
  |  Branch (243:17): [Folded - Ignored]
  ------------------
  244|  22.5k|                    ? CountLeadingZeroes32(static_cast<uint32_t>(x)) -
  245|      0|                          (std::numeric_limits<uint32_t>::digits -
  246|      0|                           std::numeric_limits<T>::digits)
  247|  22.5k|                    : CountLeadingZeroes64(x));
  248|  22.5k|}
_ZN4absl16numeric_internal11RotateRightImEET_S2_i:
   75|  1.13k|    T x, int s) noexcept {
   76|  1.13k|  static_assert(std::is_unsigned<T>::value, "T must be unsigned");
   77|  1.13k|  static_assert(IsPowerOf2(std::numeric_limits<T>::digits),
   78|  1.13k|                "T must have a power-of-2 size");
   79|       |
   80|  1.13k|  return static_cast<T>(x >> (s & (std::numeric_limits<T>::digits - 1))) |
   81|  1.13k|         static_cast<T>(x << ((-s) & (std::numeric_limits<T>::digits - 1)));
   82|  1.13k|}
_ZN4absl16numeric_internal19CountTrailingZeroesIjEEiT_:
  317|  7.67k|CountTrailingZeroes(T x) noexcept {
  318|  7.67k|  static_assert(std::is_unsigned<T>::value, "T must be unsigned");
  319|  7.67k|  static_assert(IsPowerOf2(std::numeric_limits<T>::digits),
  320|  7.67k|                "T must have a power-of-2 size");
  321|  7.67k|  static_assert(sizeof(T) <= sizeof(uint64_t), "T too large");
  322|  7.67k|  return x == 0 ? std::numeric_limits<T>::digits
  ------------------
  |  Branch (322:10): [True: 0, False: 7.67k]
  ------------------
  323|  7.67k|                : (sizeof(T) <= sizeof(uint16_t)
  ------------------
  |  Branch (323:20): [Folded - Ignored]
  ------------------
  324|  7.67k|                       ? CountTrailingZeroesNonzero16(static_cast<uint16_t>(x))
  325|  7.67k|                       : (sizeof(T) <= sizeof(uint32_t)
  ------------------
  |  Branch (325:27): [Folded - Ignored]
  ------------------
  326|  7.67k|                              ? CountTrailingZeroesNonzero32(
  327|  7.67k|                                    static_cast<uint32_t>(x))
  328|  7.67k|                              : CountTrailingZeroesNonzero64(x)));
  329|  7.67k|}

_ZN4absl15status_internal9StatusRepC2ENS_10StatusCodeENSt3__117basic_string_viewIcNS3_11char_traitsIcEEEENS3_10unique_ptrINS_13InlinedVectorINS0_7PayloadELm1ENS3_9allocatorISA_EEEENS3_14default_deleteISD_EEEE:
   65|  12.4k|        payloads(std::move(payloads_arg)) {}

_ZN4absl17internal_statusor12StatusOrDataIN6google3api4expr8v1alpha110ParsedExprEED2Ev:
  237|  9.61k|  ~StatusOrData() {
  238|  9.61k|    if (ok()) {
  ------------------
  |  Branch (238:9): [True: 2.50k, False: 7.11k]
  ------------------
  239|  2.50k|      status_.~Status();
  240|  2.50k|      data_.~T();
  241|  7.11k|    } else {
  242|  7.11k|      status_.~Status();
  243|  7.11k|    }
  244|  9.61k|  }
_ZNK4absl17internal_statusor12StatusOrDataIN6google3api4expr8v1alpha110ParsedExprEE2okEv:
  263|  16.7k|  bool ok() const { return status_.ok(); }
_ZN4absl17internal_statusor12StatusOrDataIN6google3api4expr6parser17VerboseParsedExprEED2Ev:
  237|  9.61k|  ~StatusOrData() {
  238|  9.61k|    if (ok()) {
  ------------------
  |  Branch (238:9): [True: 2.50k, False: 7.11k]
  ------------------
  239|  2.50k|      status_.~Status();
  240|  2.50k|      data_.~T();
  241|  7.11k|    } else {
  242|  7.11k|      status_.~Status();
  243|  7.11k|    }
  244|  9.61k|  }
_ZNK4absl17internal_statusor12StatusOrDataIN6google3api4expr6parser17VerboseParsedExprEE2okEv:
  263|  16.7k|  bool ok() const { return status_.ok(); }
parser.cc:_ZN4absl17internal_statusor12StatusOrDataIN6google3api4expr6parser12_GLOBAL__N_115CodePointBufferEEC2INS_6StatusELi0EEEOT_:
  215|    295|  explicit StatusOrData(U&& v) : status_(std::forward<U>(v)) {
  216|    295|    EnsureNotOk();
  217|    295|  }
parser.cc:_ZN4absl17internal_statusor12StatusOrDataIN6google3api4expr6parser12_GLOBAL__N_115CodePointBufferEE11EnsureNotOkEv:
  292|    295|  void EnsureNotOk() {
  293|    295|    if (ABSL_PREDICT_FALSE(ok())) Helper::HandleInvalidStatusCtorArg(&status_);
  ------------------
  |  |  177|    295|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (177:31): [True: 0, False: 295]
  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  Branch (177:58): [True: 0, False: 295]
  |  |  ------------------
  ------------------
  294|    295|  }
parser.cc:_ZNK4absl17internal_statusor12StatusOrDataIN6google3api4expr6parser12_GLOBAL__N_115CodePointBufferEE2okEv:
  263|  9.91k|  bool ok() const { return status_.ok(); }
parser.cc:_ZN4absl17internal_statusor12StatusOrDataIN6google3api4expr6parser12_GLOBAL__N_115CodePointBufferEEC2IJS7_EEENSt3__110in_place_tEDpOT_:
  201|  9.32k|      : data_(std::forward<Args>(args)...) {
  202|  9.32k|    MakeStatus();
  203|  9.32k|  }
parser.cc:_ZN4absl17internal_statusor12StatusOrDataIN6google3api4expr6parser12_GLOBAL__N_115CodePointBufferEE10MakeStatusIJEEEvDpOT_:
  306|  9.32k|  void MakeStatus(Args&&... args) {
  307|  9.32k|    internal_statusor::PlacementNew<Status>(&status_,
  308|  9.32k|                                            std::forward<Args>(args)...);
  309|  9.32k|  }
_ZN4absl17internal_statusor12PlacementNewINS_6StatusEJEEEvPvDpOT0_:
  146|   510k|ABSL_ATTRIBUTE_NONNULL(1) void PlacementNew(void* p, Args&&... args) {
  147|   510k|  new (p) T(std::forward<Args>(args)...);
  148|   510k|}
_ZN4absl17internal_statusor12StatusOrDataINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEED2Ev:
  237|   501k|  ~StatusOrData() {
  238|   501k|    if (ok()) {
  ------------------
  |  Branch (238:9): [True: 496k, False: 5.35k]
  ------------------
  239|   496k|      status_.~Status();
  240|   496k|      data_.~T();
  241|   496k|    } else {
  242|  5.35k|      status_.~Status();
  243|  5.35k|    }
  244|   501k|  }
_ZNK4absl17internal_statusor12StatusOrDataINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE2okEv:
  263|   506k|  bool ok() const { return status_.ok(); }
parser.cc:_ZN4absl17internal_statusor12StatusOrDataIN6google3api4expr6parser12_GLOBAL__N_115CodePointBufferEED2Ev:
  237|  9.61k|  ~StatusOrData() {
  238|  9.61k|    if (ok()) {
  ------------------
  |  Branch (238:9): [True: 9.32k, False: 295]
  ------------------
  239|  9.32k|      status_.~Status();
  240|  9.32k|      data_.~T();
  241|  9.32k|    } else {
  242|    295|      status_.~Status();
  243|    295|    }
  244|  9.61k|  }
_ZN4absl17internal_statusor12StatusOrDataIN6google3api4expr8v1alpha110ParsedExprEEC2INS_6StatusELi0EEEOT_:
  215|  7.11k|  explicit StatusOrData(U&& v) : status_(std::forward<U>(v)) {
  216|  7.11k|    EnsureNotOk();
  217|  7.11k|  }
_ZN4absl17internal_statusor12StatusOrDataIN6google3api4expr8v1alpha110ParsedExprEE11EnsureNotOkEv:
  292|  7.11k|  void EnsureNotOk() {
  293|  7.11k|    if (ABSL_PREDICT_FALSE(ok())) Helper::HandleInvalidStatusCtorArg(&status_);
  ------------------
  |  |  177|  7.11k|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (177:31): [True: 0, False: 7.11k]
  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  Branch (177:58): [True: 0, False: 7.11k]
  |  |  ------------------
  ------------------
  294|  7.11k|  }
_ZN4absl17internal_statusor12StatusOrDataIN6google3api4expr8v1alpha110ParsedExprEEC2IJRKS6_EEENSt3__110in_place_tEDpOT_:
  201|  2.50k|      : data_(std::forward<Args>(args)...) {
  202|  2.50k|    MakeStatus();
  203|  2.50k|  }
_ZN4absl17internal_statusor12StatusOrDataIN6google3api4expr8v1alpha110ParsedExprEE10MakeStatusIJEEEvDpOT_:
  306|  2.50k|  void MakeStatus(Args&&... args) {
  307|  2.50k|    internal_statusor::PlacementNew<Status>(&status_,
  308|  2.50k|                                            std::forward<Args>(args)...);
  309|  2.50k|  }
_ZN4absl17internal_statusor12StatusOrDataIN6google3api4expr6parser17VerboseParsedExprEEC2INS_6StatusELi0EEEOT_:
  215|  7.11k|  explicit StatusOrData(U&& v) : status_(std::forward<U>(v)) {
  216|  7.11k|    EnsureNotOk();
  217|  7.11k|  }
_ZN4absl17internal_statusor12StatusOrDataIN6google3api4expr6parser17VerboseParsedExprEE11EnsureNotOkEv:
  292|  7.11k|  void EnsureNotOk() {
  293|  7.11k|    if (ABSL_PREDICT_FALSE(ok())) Helper::HandleInvalidStatusCtorArg(&status_);
  ------------------
  |  |  177|  7.11k|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (177:31): [True: 0, False: 7.11k]
  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  Branch (177:58): [True: 0, False: 7.11k]
  |  |  ------------------
  ------------------
  294|  7.11k|  }
_ZN4absl17internal_statusor12StatusOrDataIN6google3api4expr6parser17VerboseParsedExprEEC2IJS6_EEENSt3__110in_place_tEDpOT_:
  201|  2.50k|      : data_(std::forward<Args>(args)...) {
  202|  2.50k|    MakeStatus();
  203|  2.50k|  }
_ZN4absl17internal_statusor12StatusOrDataIN6google3api4expr6parser17VerboseParsedExprEE10MakeStatusIJEEEvDpOT_:
  306|  2.50k|  void MakeStatus(Args&&... args) {
  307|  2.50k|    internal_statusor::PlacementNew<Status>(&status_,
  308|  2.50k|                                            std::forward<Args>(args)...);
  309|  2.50k|  }
_ZN4absl17internal_statusor12StatusOrDataINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEC2INS_6StatusELi0EEEOT_:
  215|  5.35k|  explicit StatusOrData(U&& v) : status_(std::forward<U>(v)) {
  216|  5.35k|    EnsureNotOk();
  217|  5.35k|  }
_ZN4absl17internal_statusor12StatusOrDataINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE11EnsureNotOkEv:
  292|  5.35k|  void EnsureNotOk() {
  293|  5.35k|    if (ABSL_PREDICT_FALSE(ok())) Helper::HandleInvalidStatusCtorArg(&status_);
  ------------------
  |  |  177|  5.35k|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (177:31): [True: 0, False: 5.35k]
  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  Branch (177:58): [True: 0, False: 5.35k]
  |  |  ------------------
  ------------------
  294|  5.35k|  }
_ZN4absl17internal_statusor12StatusOrDataINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEC2IJS8_EEENS2_10in_place_tEDpOT_:
  201|   496k|      : data_(std::forward<Args>(args)...) {
  202|   496k|    MakeStatus();
  203|   496k|  }
_ZN4absl17internal_statusor12StatusOrDataINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE10MakeStatusIJEEEvDpOT_:
  306|   496k|  void MakeStatus(Args&&... args) {
  307|   496k|    internal_statusor::PlacementNew<Status>(&status_,
  308|   496k|                                            std::forward<Args>(args)...);
  309|   496k|  }

_ZN4absl6Status15UnrefNonInlinedEm:
  211|  12.4k|void Status::UnrefNonInlined(uintptr_t rep) {
  212|  12.4k|  status_internal::StatusRep* r = RepToPointer(rep);
  213|       |  // Fast path: if ref==1, there is no need for a RefCountDec (since
  214|       |  // this is the only reference and therefore no other thread is
  215|       |  // allowed to be mucking with r).
  216|  12.4k|  if (r->ref.load(std::memory_order_acquire) == 1 ||
  ------------------
  |  Branch (216:7): [True: 12.4k, False: 0]
  ------------------
  217|  12.4k|      r->ref.fetch_sub(1, std::memory_order_acq_rel) - 1 == 0) {
  ------------------
  |  Branch (217:7): [True: 0, False: 0]
  ------------------
  218|  12.4k|    delete r;
  219|  12.4k|  }
  220|  12.4k|}
_ZN4absl6StatusC2ENS_10StatusCodeENSt3__117basic_string_viewIcNS2_11char_traitsIcEEEE:
  223|  12.4k|    : rep_(CodeToInlinedRep(code)) {
  224|  12.4k|  if (code != absl::StatusCode::kOk && !msg.empty()) {
  ------------------
  |  Branch (224:7): [True: 12.4k, False: 0]
  |  Branch (224:40): [True: 12.4k, False: 0]
  ------------------
  225|  12.4k|    rep_ = PointerToRep(new status_internal::StatusRep(code, msg, nullptr));
  226|  12.4k|  }
  227|  12.4k|}
_ZN4absl14CancelledErrorENSt3__117basic_string_viewIcNS0_11char_traitsIcEEEE:
  335|      1|Status CancelledError(absl::string_view message) {
  336|      1|  return Status(absl::StatusCode::kCancelled, message);
  337|      1|}
_ZN4absl20InvalidArgumentErrorENSt3__117basic_string_viewIcNS0_11char_traitsIcEEEE:
  355|  12.4k|Status InvalidArgumentError(absl::string_view message) {
  356|  12.4k|  return Status(absl::StatusCode::kInvalidArgument, message);
  357|  12.4k|}

_ZNK4absl6Status7messageEv:
  806|  12.4k|inline absl::string_view Status::message() const {
  807|  12.4k|  return !IsInlined(rep_)
  ------------------
  |  Branch (807:10): [True: 12.4k, False: 0]
  ------------------
  808|  12.4k|             ? RepToPointer(rep_)->message
  809|  12.4k|             : (IsMovedFrom(rep_) ? absl::string_view(kMovedFromString)
  ------------------
  |  Branch (809:17): [True: 0, False: 0]
  ------------------
  810|      0|                                  : absl::string_view());
  811|  12.4k|}
_ZN4absl6Status9IsInlinedEm:
  842|   562k|inline bool Status::IsInlined(uintptr_t rep) { return (rep & 1) == 0; }
_ZN4absl6Status12RepToPointerEm:
  861|  24.9k|inline status_internal::StatusRep* Status::RepToPointer(uintptr_t rep) {
  862|  24.9k|  assert(!IsInlined(rep));
  863|  24.9k|  return reinterpret_cast<status_internal::StatusRep*>(rep - 1);
  864|  24.9k|}
_ZNK4absl6Status2okEv:
  802|  1.59M|inline bool Status::ok() const {
  803|  1.59M|  return rep_ == CodeToInlinedRep(absl::StatusCode::kOk);
  804|  1.59M|}
_ZN4absl6Status16CodeToInlinedRepENS_10StatusCodeE:
  852|  2.14M|inline uintptr_t Status::CodeToInlinedRep(absl::StatusCode code) {
  853|  2.14M|  return static_cast<uintptr_t>(code) << 2;
  854|  2.14M|}
_ZN4absl6StatusD2Ev:
  800|   550k|inline Status::~Status() { Unref(rep_); }
_ZN4absl6Status5UnrefEm:
  876|   550k|inline void Status::Unref(uintptr_t rep) {
  877|   550k|  if (!IsInlined(rep)) {
  ------------------
  |  Branch (877:7): [True: 12.4k, False: 537k]
  ------------------
  878|  12.4k|    UnrefNonInlined(rep);
  879|  12.4k|  }
  880|   550k|}
_ZN4absl6Status12MovedFromRepEv:
  848|  27.2k|inline uintptr_t Status::MovedFromRep() {
  849|  27.2k|  return CodeToInlinedRep(absl::StatusCode::kInternal) | 2;
  850|  27.2k|}
_ZN4absl6Status12PointerToRepEPNS_15status_internal9StatusRepE:
  866|  12.4k|inline uintptr_t Status::PointerToRep(status_internal::StatusRep* rep) {
  867|  12.4k|  return reinterpret_cast<uintptr_t>(rep) + 1;
  868|  12.4k|}
_ZN4absl6StatusC2EOS0_:
  774|  27.2k|inline Status::Status(Status&& x) noexcept : rep_(x.rep_) {
  775|  27.2k|  x.rep_ = MovedFromRep();
  776|  27.2k|}
_ZN4absl6StatusC2Ev:
  758|   510k|inline Status::Status() : rep_(CodeToInlinedRep(absl::StatusCode::kOk)) {}

_ZNK4absl8StatusOrIN6google3api4expr8v1alpha110ParsedExprEE2okEv:
  491|  9.61k|  ABSL_MUST_USE_RESULT bool ok() const { return this->status_.ok(); }
_ZNKR4absl8StatusOrIN6google3api4expr8v1alpha110ParsedExprEE6statusEv:
  694|  7.11k|const Status& StatusOr<T>::status() const& {
  695|  7.11k|  return this->status_;
  696|  7.11k|}
parser.cc:_ZN4absl8StatusOrIN6google3api4expr6parser12_GLOBAL__N_115CodePointBufferEEC2INS_6StatusELi0EEEOT_:
  360|    295|  StatusOr(U&& v) : Base(std::forward<U>(v)) {}
parser.cc:_ZN4absl8StatusOrIN6google3api4expr6parser12_GLOBAL__N_115CodePointBufferEEC2IS6_Li0EEEOT_:
  456|  9.32k|      : StatusOr(absl::in_place, std::forward<U>(u)) {}
parser.cc:_ZN4absl8StatusOrIN6google3api4expr6parser12_GLOBAL__N_115CodePointBufferEEC2IJS6_EEENSt3__110in_place_tEDpOT_:
  685|  9.32k|    : Base(absl::in_place, std::forward<Args>(args)...) {}
_ZNK4absl8StatusOrINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEE2okEv:
  491|   997k|  ABSL_MUST_USE_RESULT bool ok() const { return this->status_.ok(); }
_ZNKR4absl8StatusOrINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEE6statusEv:
  694|  5.35k|const Status& StatusOr<T>::status() const& {
  695|  5.35k|  return this->status_;
  696|  5.35k|}
_ZNR4absl8StatusOrINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEE5valueEv:
  709|   496k|T& StatusOr<T>::value() & {
  710|   496k|  if (!this->ok()) internal_statusor::ThrowBadStatusOrAccess(this->status_);
  ------------------
  |  Branch (710:7): [True: 0, False: 496k]
  ------------------
  711|   496k|  return this->data_;
  712|   496k|}
_ZNK4absl8StatusOrIN6google3api4expr6parser17VerboseParsedExprEE2okEv:
  491|  19.2k|  ABSL_MUST_USE_RESULT bool ok() const { return this->status_.ok(); }
_ZNO4absl8StatusOrIN6google3api4expr6parser17VerboseParsedExprEE6statusEv:
  698|  7.11k|Status StatusOr<T>::status() && {
  699|  7.11k|  return ok() ? OkStatus() : std::move(this->status_);
  ------------------
  |  Branch (699:10): [True: 0, False: 7.11k]
  ------------------
  700|  7.11k|}
_ZN4absl8StatusOrIN6google3api4expr8v1alpha110ParsedExprEEC2INS_6StatusELi0EEEOT_:
  360|  7.11k|  StatusOr(U&& v) : Base(std::forward<U>(v)) {}
_ZNO4absl8StatusOrIN6google3api4expr6parser17VerboseParsedExprEE5valueEv:
  723|  2.50k|T&& StatusOr<T>::value() && {
  724|  2.50k|  if (!this->ok()) {
  ------------------
  |  Branch (724:7): [True: 0, False: 2.50k]
  ------------------
  725|      0|    internal_statusor::ThrowBadStatusOrAccess(std::move(this->status_));
  726|      0|  }
  727|  2.50k|  return std::move(this->data_);
  728|  2.50k|}
_ZN4absl8StatusOrIN6google3api4expr8v1alpha110ParsedExprEEC2IRKS5_Li0EEEOT_:
  456|  2.50k|      : StatusOr(absl::in_place, std::forward<U>(u)) {}
_ZN4absl8StatusOrIN6google3api4expr8v1alpha110ParsedExprEEC2IJRKS5_EEENSt3__110in_place_tEDpOT_:
  685|  2.50k|    : Base(absl::in_place, std::forward<Args>(args)...) {}
parser.cc:_ZNK4absl8StatusOrIN6google3api4expr6parser12_GLOBAL__N_115CodePointBufferEE2okEv:
  491|  19.2k|  ABSL_MUST_USE_RESULT bool ok() const { return this->status_.ok(); }
parser.cc:_ZNO4absl8StatusOrIN6google3api4expr6parser12_GLOBAL__N_115CodePointBufferEE6statusEv:
  698|    295|Status StatusOr<T>::status() && {
  699|    295|  return ok() ? OkStatus() : std::move(this->status_);
  ------------------
  |  Branch (699:10): [True: 0, False: 295]
  ------------------
  700|    295|}
_ZN4absl8StatusOrIN6google3api4expr6parser17VerboseParsedExprEEC2INS_6StatusELi0EEEOT_:
  360|  7.11k|  StatusOr(U&& v) : Base(std::forward<U>(v)) {}
parser.cc:_ZNO4absl8StatusOrIN6google3api4expr6parser12_GLOBAL__N_115CodePointBufferEE5valueEv:
  723|  9.32k|T&& StatusOr<T>::value() && {
  724|  9.32k|  if (!this->ok()) {
  ------------------
  |  Branch (724:7): [True: 0, False: 9.32k]
  ------------------
  725|      0|    internal_statusor::ThrowBadStatusOrAccess(std::move(this->status_));
  726|      0|  }
  727|  9.32k|  return std::move(this->data_);
  728|  9.32k|}
_ZN4absl8StatusOrIN6google3api4expr6parser17VerboseParsedExprEEC2IS5_Li0EEEOT_:
  456|  2.50k|      : StatusOr(absl::in_place, std::forward<U>(u)) {}
_ZN4absl8StatusOrIN6google3api4expr6parser17VerboseParsedExprEEC2IJS5_EEENSt3__110in_place_tEDpOT_:
  685|  2.50k|    : Base(absl::in_place, std::forward<Args>(args)...) {}
_ZN4absl8StatusOrINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEEC2INS_6StatusELi0EEEOT_:
  360|  5.35k|  StatusOr(U&& v) : Base(std::forward<U>(v)) {}
_ZN4absl8StatusOrINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEEC2IS7_Li0EEEOT_:
  456|   496k|      : StatusOr(absl::in_place, std::forward<U>(u)) {}
_ZN4absl8StatusOrINSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEEC2IJS7_EEENS1_10in_place_tEDpOT_:
  685|   496k|    : Base(absl::in_place, std::forward<Args>(args)...) {}

_ZN4absl13ascii_isspaceEh:
   95|  1.23M|inline bool ascii_isspace(unsigned char c) {
   96|  1.23M|  return (ascii_internal::kPropertyBits[c] & 0x08) != 0;
   97|  1.23M|}
_ZN4absl14ascii_isxdigitEh:
  124|  34.8k|inline bool ascii_isxdigit(unsigned char c) {
  125|  34.8k|  return (ascii_internal::kPropertyBits[c] & 0x80) != 0;
  126|  34.8k|}
_ZN4absl13ascii_tolowerEh:
  163|  43.7k|inline char ascii_tolower(unsigned char c) {
  164|  43.7k|  return ascii_internal::kToLower[c];
  165|  43.7k|}
_ZN4absl27StripLeadingAsciiWhitespaceENSt3__117basic_string_viewIcNS0_11char_traitsIcEEEE:
  198|  19.9k|    absl::string_view str) {
  199|  19.9k|  auto it = std::find_if_not(str.begin(), str.end(), absl::ascii_isspace);
  200|  19.9k|  return str.substr(static_cast<size_t>(it - str.begin()));
  201|  19.9k|}
_ZN4absl28StripTrailingAsciiWhitespaceENSt3__117basic_string_viewIcNS0_11char_traitsIcEEEE:
  212|  19.9k|    absl::string_view str) {
  213|  19.9k|  auto it = std::find_if_not(str.rbegin(), str.rend(), absl::ascii_isspace);
  214|  19.9k|  return str.substr(0, static_cast<size_t>(str.rend() - it));
  215|  19.9k|}
_ZN4absl20StripAsciiWhitespaceENSt3__117basic_string_viewIcNS0_11char_traitsIcEEEE:
  226|  19.9k|    absl::string_view str) {
  227|  19.9k|  return StripTrailingAsciiWhitespace(StripLeadingAsciiWhitespace(str));
  228|  19.9k|}

_ZN4absl10from_charsEPKcS1_RdNS_12chars_formatE:
  931|  19.9k|                             chars_format fmt) {
  932|  19.9k|  return FromCharsImpl(first, last, value, fmt);
  933|  19.9k|}
charconv.cc:_ZN4absl12_GLOBAL__N_113FromCharsImplIdEENS_17from_chars_resultEPKcS4_RT_NS_12chars_formatE:
  845|  19.9k|                                FloatType& value, chars_format fmt_flags) {
  846|  19.9k|  from_chars_result result;
  847|  19.9k|  result.ptr = first;  // overwritten on successful parse
  848|  19.9k|  result.ec = std::errc();
  849|       |
  850|  19.9k|  bool negative = false;
  851|  19.9k|  if (first != last && *first == '-') {
  ------------------
  |  Branch (851:7): [True: 19.9k, False: 0]
  |  Branch (851:24): [True: 1.24k, False: 18.6k]
  ------------------
  852|  1.24k|    ++first;
  853|  1.24k|    negative = true;
  854|  1.24k|  }
  855|       |  // If the `hex` flag is *not* set, then we will accept a 0x prefix and try
  856|       |  // to parse a hexadecimal float.
  857|  19.9k|  if ((fmt_flags & chars_format::hex) == chars_format{} && last - first >= 2 &&
  ------------------
  |  Branch (857:7): [True: 19.9k, False: 0]
  |  Branch (857:60): [True: 19.9k, False: 0]
  ------------------
  858|  19.9k|      *first == '0' && (first[1] == 'x' || first[1] == 'X')) {
  ------------------
  |  Branch (858:7): [True: 1.48k, False: 18.4k]
  |  Branch (858:25): [True: 0, False: 1.48k]
  |  Branch (858:44): [True: 0, False: 1.48k]
  ------------------
  859|      0|    const char* hex_first = first + 2;
  860|      0|    strings_internal::ParsedFloat hex_parse =
  861|      0|        strings_internal::ParseFloat<16>(hex_first, last, fmt_flags);
  862|      0|    if (hex_parse.end == nullptr ||
  ------------------
  |  Branch (862:9): [True: 0, False: 0]
  ------------------
  863|      0|        hex_parse.type != strings_internal::FloatType::kNumber) {
  ------------------
  |  Branch (863:9): [True: 0, False: 0]
  ------------------
  864|       |      // Either we failed to parse a hex float after the "0x", or we read
  865|       |      // "0xinf" or "0xnan" which we don't want to match.
  866|       |      //
  867|       |      // However, a string that begins with "0x" also begins with "0", which
  868|       |      // is normally a valid match for the number zero.  So we want these
  869|       |      // strings to match zero unless fmt_flags is `scientific`.  (This flag
  870|       |      // means an exponent is required, which the string "0" does not have.)
  871|      0|      if (fmt_flags == chars_format::scientific) {
  ------------------
  |  Branch (871:11): [True: 0, False: 0]
  ------------------
  872|      0|        result.ec = std::errc::invalid_argument;
  873|      0|      } else {
  874|      0|        result.ptr = first + 1;
  875|      0|        value = negative ? -0.0 : 0.0;
  ------------------
  |  Branch (875:17): [True: 0, False: 0]
  ------------------
  876|      0|      }
  877|      0|      return result;
  878|      0|    }
  879|       |    // We matched a value.
  880|      0|    result.ptr = hex_parse.end;
  881|      0|    if (HandleEdgeCase(hex_parse, negative, &value)) {
  ------------------
  |  Branch (881:9): [True: 0, False: 0]
  ------------------
  882|      0|      return result;
  883|      0|    }
  884|      0|    CalculatedFloat calculated =
  885|      0|        CalculateFromParsedHexadecimal<FloatType>(hex_parse);
  886|      0|    EncodeResult(calculated, negative, &result, &value);
  887|      0|    return result;
  888|      0|  }
  889|       |  // Otherwise, we choose the number base based on the flags.
  890|  19.9k|  if ((fmt_flags & chars_format::hex) == chars_format::hex) {
  ------------------
  |  Branch (890:7): [True: 0, False: 19.9k]
  ------------------
  891|      0|    strings_internal::ParsedFloat hex_parse =
  892|      0|        strings_internal::ParseFloat<16>(first, last, fmt_flags);
  893|      0|    if (hex_parse.end == nullptr) {
  ------------------
  |  Branch (893:9): [True: 0, False: 0]
  ------------------
  894|      0|      result.ec = std::errc::invalid_argument;
  895|      0|      return result;
  896|      0|    }
  897|      0|    result.ptr = hex_parse.end;
  898|      0|    if (HandleEdgeCase(hex_parse, negative, &value)) {
  ------------------
  |  Branch (898:9): [True: 0, False: 0]
  ------------------
  899|      0|      return result;
  900|      0|    }
  901|      0|    CalculatedFloat calculated =
  902|      0|        CalculateFromParsedHexadecimal<FloatType>(hex_parse);
  903|      0|    EncodeResult(calculated, negative, &result, &value);
  904|      0|    return result;
  905|  19.9k|  } else {
  906|  19.9k|    strings_internal::ParsedFloat decimal_parse =
  907|  19.9k|        strings_internal::ParseFloat<10>(first, last, fmt_flags);
  908|  19.9k|    if (decimal_parse.end == nullptr) {
  ------------------
  |  Branch (908:9): [True: 0, False: 19.9k]
  ------------------
  909|      0|      result.ec = std::errc::invalid_argument;
  910|      0|      return result;
  911|      0|    }
  912|  19.9k|    result.ptr = decimal_parse.end;
  913|  19.9k|    if (HandleEdgeCase(decimal_parse, negative, &value)) {
  ------------------
  |  Branch (913:9): [True: 886, False: 19.0k]
  ------------------
  914|    886|      return result;
  915|    886|    }
  916|       |    // A nullptr subrange_begin means that the decimal_parse.mantissa is exact
  917|       |    // (not truncated), a precondition of the Eisel-Lemire algorithm.
  918|  19.0k|    if ((decimal_parse.subrange_begin == nullptr) &&
  ------------------
  |  Branch (918:9): [True: 10.5k, False: 8.54k]
  ------------------
  919|  19.0k|        EiselLemire<FloatType>(decimal_parse, negative, &value, &result.ec)) {
  ------------------
  |  Branch (919:9): [True: 5.21k, False: 5.29k]
  ------------------
  920|  5.21k|      return result;
  921|  5.21k|    }
  922|  13.8k|    CalculatedFloat calculated =
  923|  13.8k|        CalculateFromParsedDecimal<FloatType>(decimal_parse);
  924|  13.8k|    EncodeResult(calculated, negative, &result, &value);
  925|  13.8k|    return result;
  926|  19.0k|  }
  927|  19.9k|}
charconv.cc:_ZN4absl12_GLOBAL__N_114HandleEdgeCaseIdEEbRKNS_16strings_internal11ParsedFloatEbPT_:
  343|  19.9k|                    FloatType* value) {
  344|  19.9k|  if (input.type == strings_internal::FloatType::kNan) {
  ------------------
  |  Branch (344:7): [True: 0, False: 19.9k]
  ------------------
  345|       |    // A bug in both clang < 7 and gcc would cause the compiler to optimize
  346|       |    // away the buffer we are building below.  Declaring the buffer volatile
  347|       |    // avoids the issue, and has no measurable performance impact in
  348|       |    // microbenchmarks.
  349|       |    //
  350|       |    // https://bugs.llvm.org/show_bug.cgi?id=37778
  351|       |    // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86113
  352|      0|    constexpr ptrdiff_t kNanBufferSize = 128;
  353|      0|#if defined(__GNUC__) || (defined(__clang__) && __clang_major__ < 7)
  354|      0|    volatile char n_char_sequence[kNanBufferSize];
  355|       |#else
  356|       |    char n_char_sequence[kNanBufferSize];
  357|       |#endif
  358|      0|    if (input.subrange_begin == nullptr) {
  ------------------
  |  Branch (358:9): [True: 0, False: 0]
  ------------------
  359|      0|      n_char_sequence[0] = '\0';
  360|      0|    } else {
  361|      0|      ptrdiff_t nan_size = input.subrange_end - input.subrange_begin;
  362|      0|      nan_size = std::min(nan_size, kNanBufferSize - 1);
  363|      0|      std::copy_n(input.subrange_begin, nan_size, n_char_sequence);
  364|      0|      n_char_sequence[nan_size] = '\0';
  365|      0|    }
  366|      0|    char* nan_argument = const_cast<char*>(n_char_sequence);
  367|      0|    *value = negative ? -FloatTraits<FloatType>::MakeNan(nan_argument)
  ------------------
  |  Branch (367:14): [True: 0, False: 0]
  ------------------
  368|      0|                      : FloatTraits<FloatType>::MakeNan(nan_argument);
  369|      0|    return true;
  370|      0|  }
  371|  19.9k|  if (input.type == strings_internal::FloatType::kInfinity) {
  ------------------
  |  Branch (371:7): [True: 0, False: 19.9k]
  ------------------
  372|      0|    *value = negative ? -std::numeric_limits<FloatType>::infinity()
  ------------------
  |  Branch (372:14): [True: 0, False: 0]
  ------------------
  373|      0|                      : std::numeric_limits<FloatType>::infinity();
  374|      0|    return true;
  375|      0|  }
  376|  19.9k|  if (input.mantissa == 0) {
  ------------------
  |  Branch (376:7): [True: 886, False: 19.0k]
  ------------------
  377|    886|    *value = negative ? -0.0 : 0.0;
  ------------------
  |  Branch (377:14): [True: 87, False: 799]
  ------------------
  378|    886|    return true;
  379|    886|  }
  380|  19.0k|  return false;
  381|  19.9k|}
charconv.cc:_ZN4absl12_GLOBAL__N_119NormalizedShiftSizeIdEEiii:
  318|  13.3k|int NormalizedShiftSize(int mantissa_width, int binary_exponent) {
  319|  13.3k|  const int normal_shift =
  320|  13.3k|      mantissa_width - FloatTraits<FloatType>::kTargetMantissaBits;
  321|  13.3k|  const int minimum_shift =
  322|  13.3k|      FloatTraits<FloatType>::kMinNormalExponent - binary_exponent;
  323|  13.3k|  return std::max(normal_shift, minimum_shift);
  324|  13.3k|}
charconv.cc:_ZN4absl12_GLOBAL__N_118ShiftRightAndRoundENS_7uint128EibPb:
  437|  13.3k|                            bool* output_exact) {
  438|  13.3k|  if (shift <= 0) {
  ------------------
  |  Branch (438:7): [True: 0, False: 13.3k]
  ------------------
  439|      0|    *output_exact = input_exact;
  440|      0|    return static_cast<uint64_t>(value << -shift);
  441|      0|  }
  442|  13.3k|  if (shift >= 128) {
  ------------------
  |  Branch (442:7): [True: 0, False: 13.3k]
  ------------------
  443|       |    // Exponent is so small that we are shifting away all significant bits.
  444|       |    // Answer will not be representable, even as a subnormal, so return a zero
  445|       |    // mantissa (which represents underflow).
  446|      0|    *output_exact = true;
  447|      0|    return 0;
  448|      0|  }
  449|       |
  450|  13.3k|  *output_exact = true;
  451|  13.3k|  const uint128 shift_mask = (uint128(1) << shift) - 1;
  452|  13.3k|  const uint128 halfway_point = uint128(1) << (shift - 1);
  453|       |
  454|  13.3k|  const uint128 shifted_bits = value & shift_mask;
  455|  13.3k|  value >>= shift;
  456|  13.3k|  if (shifted_bits > halfway_point) {
  ------------------
  |  Branch (456:7): [True: 1.63k, False: 11.7k]
  ------------------
  457|       |    // Shifted bits greater than 10000... require rounding up.
  458|  1.63k|    return static_cast<uint64_t>(value + 1);
  459|  1.63k|  }
  460|  11.7k|  if (shifted_bits == halfway_point) {
  ------------------
  |  Branch (460:7): [True: 1.46k, False: 10.2k]
  ------------------
  461|       |    // In exact mode, shifted bits of 10000... mean we're exactly halfway
  462|       |    // between two numbers, and we must round to even.  So only round up if
  463|       |    // the low bit of `value` is set.
  464|       |    //
  465|       |    // In inexact mode, the nonzero error means the actual value is greater
  466|       |    // than the halfway point and we must always round up.
  467|  1.46k|    if ((value & 1) == 1 || !input_exact) {
  ------------------
  |  Branch (467:9): [True: 92, False: 1.36k]
  |  Branch (467:29): [True: 42, False: 1.32k]
  ------------------
  468|    134|      ++value;
  469|    134|    }
  470|  1.46k|    return static_cast<uint64_t>(value);
  471|  1.46k|  }
  472|  10.2k|  if (!input_exact && shifted_bits == halfway_point - 1) {
  ------------------
  |  Branch (472:7): [True: 10.2k, False: 0]
  |  Branch (472:23): [True: 8.20k, False: 2.09k]
  ------------------
  473|       |    // Rounding direction is unclear, due to error.
  474|  8.20k|    *output_exact = false;
  475|  8.20k|  }
  476|       |  // Otherwise, round down.
  477|  10.2k|  return static_cast<uint64_t>(value);
  478|  11.7k|}
charconv.cc:_ZN4absl12_GLOBAL__N_128CalculatedFloatFromRawValuesIdEENS0_15CalculatedFloatEmi:
  564|  13.3k|CalculatedFloat CalculatedFloatFromRawValues(uint64_t mantissa, int exponent) {
  565|  13.3k|  CalculatedFloat result;
  566|  13.3k|  if (mantissa == uint64_t{1} << FloatTraits<FloatType>::kTargetMantissaBits) {
  ------------------
  |  Branch (566:7): [True: 498, False: 12.9k]
  ------------------
  567|    498|    mantissa >>= 1;
  568|    498|    exponent += 1;
  569|    498|  }
  570|  13.3k|  if (exponent > FloatTraits<FloatType>::kMaxExponent) {
  ------------------
  |  Branch (570:7): [True: 353, False: 13.0k]
  ------------------
  571|    353|    result.exponent = kOverflow;
  572|  13.0k|  } else if (mantissa == 0) {
  ------------------
  |  Branch (572:14): [True: 859, False: 12.1k]
  ------------------
  573|    859|    result.exponent = kUnderflow;
  574|  12.1k|  } else {
  575|  12.1k|    result.exponent = exponent;
  576|  12.1k|    result.mantissa = mantissa;
  577|  12.1k|  }
  578|  13.3k|  return result;
  579|  13.3k|}
charconv.cc:_ZN4absl12_GLOBAL__N_112EncodeResultIdEEvRKNS0_15CalculatedFloatEbPNS_17from_chars_resultEPT_:
  391|  13.8k|                  absl::from_chars_result* result, FloatType* value) {
  392|  13.8k|  if (calculated.exponent == kOverflow) {
  ------------------
  |  Branch (392:7): [True: 616, False: 13.2k]
  ------------------
  393|    616|    result->ec = std::errc::result_out_of_range;
  394|    616|    *value = negative ? -std::numeric_limits<FloatType>::max()
  ------------------
  |  Branch (394:14): [True: 26, False: 590]
  ------------------
  395|    616|                      : std::numeric_limits<FloatType>::max();
  396|    616|    return;
  397|  13.2k|  } else if (calculated.mantissa == 0 || calculated.exponent == kUnderflow) {
  ------------------
  |  Branch (397:14): [True: 1.03k, False: 12.1k]
  |  Branch (397:42): [True: 0, False: 12.1k]
  ------------------
  398|  1.03k|    result->ec = std::errc::result_out_of_range;
  399|  1.03k|    *value = negative ? -0.0 : 0.0;
  ------------------
  |  Branch (399:14): [True: 5, False: 1.03k]
  ------------------
  400|  1.03k|    return;
  401|  1.03k|  }
  402|  12.1k|  *value = FloatTraits<FloatType>::Make(
  403|  12.1k|      static_cast<typename FloatTraits<FloatType>::mantissa_t>(
  404|  12.1k|          calculated.mantissa),
  405|  12.1k|      calculated.exponent, negative);
  406|  12.1k|}
charconv.cc:_ZN4absl12_GLOBAL__N_111FloatTraitsIdE4MakeEmib:
  140|  12.1k|  static double Make(mantissa_t mantissa, int exponent, bool sign) {
  141|       |#ifndef ABSL_BIT_PACK_FLOATS
  142|       |    // Support ldexp no matter which namespace it's in.  Some platforms
  143|       |    // incorrectly don't put it in namespace std.
  144|       |    using namespace std;  // NOLINT
  145|       |    return sign ? -ldexp(mantissa, exponent) : ldexp(mantissa, exponent);
  146|       |#else
  147|  12.1k|    constexpr uint64_t kMantissaMask =
  148|  12.1k|        (uint64_t{1} << (kTargetMantissaBits - 1)) - 1;
  149|  12.1k|    uint64_t dbl = static_cast<uint64_t>(sign) << 63;
  150|  12.1k|    if (mantissa > kMantissaMask) {
  ------------------
  |  Branch (150:9): [True: 10.7k, False: 1.40k]
  ------------------
  151|       |      // Normal value.
  152|       |      // Adjust by 1023 for the exponent representation bias, and an additional
  153|       |      // 52 due to the implied decimal point in the IEEE mantissa
  154|       |      // representation.
  155|  10.7k|      dbl += static_cast<uint64_t>(exponent + 1023 + kTargetMantissaBits - 1)
  156|  10.7k|             << 52;
  157|  10.7k|      mantissa &= kMantissaMask;
  158|  10.7k|    } else {
  159|       |      // subnormal value
  160|  1.40k|      assert(exponent == kMinNormalExponent);
  161|  1.40k|    }
  162|  12.1k|    dbl += mantissa;
  163|  12.1k|    return absl::bit_cast<double>(dbl);
  164|  12.1k|#endif  // ABSL_BIT_PACK_FLOATS
  165|  12.1k|  }
charconv.cc:_ZN4absl12_GLOBAL__N_111EiselLemireIdEEbRKNS_16strings_internal11ParsedFloatEbPT_PNSt3__14errcE:
  671|  10.5k|                 FloatType* value, std::errc* ec) {
  672|  10.5k|  uint64_t man = input.mantissa;
  673|  10.5k|  int exp10 = input.exponent;
  674|  10.5k|  if (exp10 < FloatTraits<FloatType>::kEiselLemireMinInclusiveExp10) {
  ------------------
  |  Branch (674:7): [True: 418, False: 10.0k]
  ------------------
  675|    418|    *value = negative ? -0.0 : 0.0;
  ------------------
  |  Branch (675:14): [True: 19, False: 399]
  ------------------
  676|    418|    *ec = std::errc::result_out_of_range;
  677|    418|    return true;
  678|  10.0k|  } else if (exp10 >= FloatTraits<FloatType>::kEiselLemireMaxExclusiveExp10) {
  ------------------
  |  Branch (678:14): [True: 916, False: 9.17k]
  ------------------
  679|       |    // Return max (a finite value) consistent with from_chars and DR 3081. For
  680|       |    // SimpleAtod and SimpleAtof, post-processing will return infinity.
  681|    916|    *value = negative ? -std::numeric_limits<FloatType>::max()
  ------------------
  |  Branch (681:14): [True: 459, False: 457]
  ------------------
  682|    916|                      : std::numeric_limits<FloatType>::max();
  683|    916|    *ec = std::errc::result_out_of_range;
  684|    916|    return true;
  685|    916|  }
  686|       |
  687|       |  // Assert kPower10TableMinInclusive <= exp10 < kPower10TableMaxExclusive.
  688|       |  // Equivalently, !Power10Underflow(exp10) and !Power10Overflow(exp10).
  689|  9.17k|  static_assert(
  690|  9.17k|      FloatTraits<FloatType>::kEiselLemireMinInclusiveExp10 >=
  691|  9.17k|          kPower10TableMinInclusive,
  692|  9.17k|      "(exp10-kPower10TableMinInclusive) in kPower10MantissaHighTable bounds");
  693|  9.17k|  static_assert(
  694|  9.17k|      FloatTraits<FloatType>::kEiselLemireMaxExclusiveExp10 <=
  695|  9.17k|          kPower10TableMaxExclusive,
  696|  9.17k|      "(exp10-kPower10TableMinInclusive) in kPower10MantissaHighTable bounds");
  697|       |
  698|       |  // The terse (+) comments in this function body refer to sections of the
  699|       |  // https://nigeltao.github.io/blog/2020/eisel-lemire.html blog post.
  700|       |  //
  701|       |  // That blog post discusses double precision (11 exponent bits with a -1023
  702|       |  // bias, 52 mantissa bits), but the same approach applies to single precision
  703|       |  // (8 exponent bits with a -127 bias, 23 mantissa bits). Either way, the
  704|       |  // computation here happens with 64-bit values (e.g. man) or 128-bit values
  705|       |  // (e.g. x) before finally converting to 64- or 32-bit floating point.
  706|       |  //
  707|       |  // See also "Number Parsing at a Gigabyte per Second, Software: Practice and
  708|       |  // Experience 51 (8), 2021" (https://arxiv.org/abs/2101.11408) for detail.
  709|       |
  710|       |  // (+) Normalization.
  711|  9.17k|  int clz = countl_zero(man);
  712|  9.17k|  man <<= static_cast<unsigned int>(clz);
  713|       |  // The 217706 etc magic numbers are from the Power10Exponent function.
  714|  9.17k|  uint64_t ret_exp2 =
  715|  9.17k|      static_cast<uint64_t>((217706 * exp10 >> 16) + 64 +
  716|  9.17k|                            FloatTraits<FloatType>::kExponentBias - clz);
  717|       |
  718|       |  // (+) Multiplication.
  719|  9.17k|  uint128 x = static_cast<uint128>(man) *
  720|  9.17k|              static_cast<uint128>(
  721|  9.17k|                  kPower10MantissaHighTable[exp10 - kPower10TableMinInclusive]);
  722|       |
  723|       |  // (+) Wider Approximation.
  724|  9.17k|  static constexpr uint64_t high64_mask =
  725|  9.17k|      FloatTraits<FloatType>::kEiselLemireMask;
  726|  9.17k|  if (((Uint128High64(x) & high64_mask) == high64_mask) &&
  ------------------
  |  Branch (726:7): [True: 2.50k, False: 6.67k]
  ------------------
  727|  9.17k|      (man > (std::numeric_limits<uint64_t>::max() - Uint128Low64(x)))) {
  ------------------
  |  Branch (727:7): [True: 2.34k, False: 166]
  ------------------
  728|  2.34k|    uint128 y =
  729|  2.34k|        static_cast<uint128>(man) *
  730|  2.34k|        static_cast<uint128>(
  731|  2.34k|            kPower10MantissaLowTable[exp10 - kPower10TableMinInclusive]);
  732|  2.34k|    x += Uint128High64(y);
  733|       |    // For example, parsing "4503599627370497.5" will take the if-true
  734|       |    // branch here (for double precision), since:
  735|       |    //  - x   = 0x8000000000000BFF_FFFFFFFFFFFFFFFF
  736|       |    //  - y   = 0x8000000000000BFF_7FFFFFFFFFFFF400
  737|       |    //  - man = 0xA000000000000F00
  738|       |    // Likewise, when parsing "0.0625" for single precision:
  739|       |    //  - x   = 0x7FFFFFFFFFFFFFFF_FFFFFFFFFFFFFFFF
  740|       |    //  - y   = 0x813FFFFFFFFFFFFF_8A00000000000000
  741|       |    //  - man = 0x9C40000000000000
  742|  2.34k|    if (((Uint128High64(x) & high64_mask) == high64_mask) &&
  ------------------
  |  Branch (742:9): [True: 2.12k, False: 218]
  ------------------
  743|  2.34k|        ((Uint128Low64(x) + 1) == 0) &&
  ------------------
  |  Branch (743:9): [True: 1.54k, False: 581]
  ------------------
  744|  2.34k|        (man > (std::numeric_limits<uint64_t>::max() - Uint128Low64(y)))) {
  ------------------
  |  Branch (744:9): [True: 1.54k, False: 0]
  ------------------
  745|  1.54k|      return false;
  746|  1.54k|    }
  747|  2.34k|  }
  748|       |
  749|       |  // (+) Shifting to 54 Bits (or for single precision, to 25 bits).
  750|  7.63k|  uint64_t msb = Uint128High64(x) >> 63;
  751|  7.63k|  uint64_t ret_man =
  752|  7.63k|      Uint128High64(x) >> (msb + FloatTraits<FloatType>::kEiselLemireShift);
  753|  7.63k|  ret_exp2 -= 1 ^ msb;
  754|       |
  755|       |  // (+) Half-way Ambiguity.
  756|       |  //
  757|       |  // For example, parsing "1e+23" will take the if-true branch here (for double
  758|       |  // precision), since:
  759|       |  //  - x       = 0x54B40B1F852BDA00_0000000000000000
  760|       |  //  - ret_man = 0x002A5A058FC295ED
  761|       |  // Likewise, when parsing "20040229.0" for single precision:
  762|       |  //  - x       = 0x4C72894000000000_0000000000000000
  763|       |  //  - ret_man = 0x000000000131CA25
  764|  7.63k|  if ((Uint128Low64(x) == 0) && ((Uint128High64(x) & high64_mask) == 0) &&
  ------------------
  |  Branch (764:7): [True: 4.54k, False: 3.09k]
  |  Branch (764:33): [True: 2.09k, False: 2.45k]
  ------------------
  765|  7.63k|      ((ret_man & 3) == 1)) {
  ------------------
  |  Branch (765:7): [True: 1.34k, False: 750]
  ------------------
  766|  1.34k|    return false;
  767|  1.34k|  }
  768|       |
  769|       |  // (+) From 54 to 53 Bits (or for single precision, from 25 to 24 bits).
  770|  6.29k|  ret_man += ret_man & 1;  // Line From54a.
  771|  6.29k|  ret_man >>= 1;           // Line From54b.
  772|       |  // Incrementing ret_man (at line From54a) may have overflowed 54 bits (53
  773|       |  // bits after the right shift by 1 at line From54b), so adjust for that.
  774|       |  //
  775|       |  // For example, parsing "9223372036854775807" will take the if-true branch
  776|       |  // here (for double precision), since:
  777|       |  //  - ret_man = 0x0020000000000000 = (1 << 53)
  778|       |  // Likewise, when parsing "2147483647.0" for single precision:
  779|       |  //  - ret_man = 0x0000000001000000 = (1 << 24)
  780|  6.29k|  if ((ret_man >> FloatTraits<FloatType>::kTargetMantissaBits) > 0) {
  ------------------
  |  Branch (780:7): [True: 95, False: 6.20k]
  ------------------
  781|     95|    ret_exp2 += 1;
  782|       |    // Conceptually, we need a "ret_man >>= 1" in this if-block to balance
  783|       |    // incrementing ret_exp2 in the line immediately above. However, we only
  784|       |    // get here when line From54a overflowed (after adding a 1), so ret_man
  785|       |    // here is (1 << 53). Its low 53 bits are therefore all zeroes. The only
  786|       |    // remaining use of ret_man is to mask it with ((1 << 52) - 1), so only its
  787|       |    // low 52 bits matter. A "ret_man >>= 1" would have no effect in practice.
  788|       |    //
  789|       |    // We omit the "ret_man >>= 1", even if it is cheap (and this if-branch is
  790|       |    // rarely taken) and technically 'more correct', so that mutation tests
  791|       |    // that would otherwise modify or omit that "ret_man >>= 1" don't complain
  792|       |    // that such code mutations have no observable effect.
  793|     95|  }
  794|       |
  795|       |  // ret_exp2 is a uint64_t. Zero or underflow means that we're in subnormal
  796|       |  // space. max_exp2 (0x7FF for double precision, 0xFF for single precision) or
  797|       |  // above means that we're in Inf/NaN space.
  798|       |  //
  799|       |  // The if block is equivalent to (but has fewer branches than):
  800|       |  //   if ((ret_exp2 <= 0) || (ret_exp2 >= max_exp2)) { etc }
  801|       |  //
  802|       |  // For example, parsing "4.9406564584124654e-324" will take the if-true
  803|       |  // branch here, since ret_exp2 = -51.
  804|  6.29k|  static constexpr uint64_t max_exp2 =
  805|  6.29k|      (1 << FloatTraits<FloatType>::kTargetExponentBits) - 1;
  806|  6.29k|  if ((ret_exp2 - 1) >= (max_exp2 - 1)) {
  ------------------
  |  Branch (806:7): [True: 2.41k, False: 3.88k]
  ------------------
  807|  2.41k|    return false;
  808|  2.41k|  }
  809|       |
  810|       |#ifndef ABSL_BIT_PACK_FLOATS
  811|       |  if (FloatTraits<FloatType>::kTargetBits == 64) {
  812|       |    *value = FloatTraits<FloatType>::Make(
  813|       |        (ret_man & 0x000FFFFFFFFFFFFFu) | 0x0010000000000000u,
  814|       |        static_cast<int>(ret_exp2) - 1023 - 52, negative);
  815|       |    return true;
  816|       |  } else if (FloatTraits<FloatType>::kTargetBits == 32) {
  817|       |    *value = FloatTraits<FloatType>::Make(
  818|       |        (static_cast<uint32_t>(ret_man) & 0x007FFFFFu) | 0x00800000u,
  819|       |        static_cast<int>(ret_exp2) - 127 - 23, negative);
  820|       |    return true;
  821|       |  }
  822|       |#else
  823|  3.88k|  if (FloatTraits<FloatType>::kTargetBits == 64) {
  ------------------
  |  Branch (823:7): [Folded - Ignored]
  ------------------
  824|  3.88k|    uint64_t ret_bits = (ret_exp2 << 52) | (ret_man & 0x000FFFFFFFFFFFFFu);
  825|  3.88k|    if (negative) {
  ------------------
  |  Branch (825:9): [True: 532, False: 3.35k]
  ------------------
  826|    532|      ret_bits |= 0x8000000000000000u;
  827|    532|    }
  828|  3.88k|    *value = absl::bit_cast<double>(ret_bits);
  829|  3.88k|    return true;
  830|  3.88k|  } else if (FloatTraits<FloatType>::kTargetBits == 32) {
  ------------------
  |  Branch (830:14): [Folded - Ignored]
  ------------------
  831|      0|    uint32_t ret_bits = (static_cast<uint32_t>(ret_exp2) << 23) |
  832|      0|                        (static_cast<uint32_t>(ret_man) & 0x007FFFFFu);
  833|      0|    if (negative) {
  ------------------
  |  Branch (833:9): [True: 0, False: 0]
  ------------------
  834|      0|      ret_bits |= 0x80000000u;
  835|      0|    }
  836|      0|    *value = absl::bit_cast<float>(ret_bits);
  837|      0|    return true;
  838|      0|  }
  839|      0|#endif  // ABSL_BIT_PACK_FLOATS
  840|      0|  return false;
  841|  3.88k|}
charconv.cc:_ZN4absl12_GLOBAL__N_126CalculateFromParsedDecimalIdEENS0_15CalculatedFloatERKNS_16strings_internal11ParsedFloatE:
  601|  13.8k|    const strings_internal::ParsedFloat& parsed_decimal) {
  602|  13.8k|  CalculatedFloat result;
  603|       |
  604|       |  // Large or small enough decimal exponents will always result in overflow
  605|       |  // or underflow.
  606|  13.8k|  if (Power10Underflow(parsed_decimal.exponent)) {
  ------------------
  |  Branch (606:7): [True: 176, False: 13.6k]
  ------------------
  607|    176|    result.exponent = kUnderflow;
  608|    176|    return result;
  609|  13.6k|  } else if (Power10Overflow(parsed_decimal.exponent)) {
  ------------------
  |  Branch (609:14): [True: 263, False: 13.3k]
  ------------------
  610|    263|    result.exponent = kOverflow;
  611|    263|    return result;
  612|    263|  }
  613|       |
  614|       |  // Otherwise convert our power of 10 into a power of 2 times an integer
  615|       |  // mantissa, and multiply this by our parsed decimal mantissa.
  616|  13.3k|  uint128 wide_binary_mantissa = parsed_decimal.mantissa;
  617|  13.3k|  wide_binary_mantissa *= Power10Mantissa(parsed_decimal.exponent);
  618|  13.3k|  int binary_exponent = Power10Exponent(parsed_decimal.exponent);
  619|       |
  620|       |  // Discard bits that are inaccurate due to truncation error.  The magic
  621|       |  // `mantissa_width` constants below are justified in
  622|       |  // https://abseil.io/about/design/charconv. They represent the number of bits
  623|       |  // in `wide_binary_mantissa` that are guaranteed to be unaffected by error
  624|       |  // propagation.
  625|  13.3k|  bool mantissa_exact;
  626|  13.3k|  int mantissa_width;
  627|  13.3k|  if (parsed_decimal.subrange_begin) {
  ------------------
  |  Branch (627:7): [True: 8.10k, False: 5.29k]
  ------------------
  628|       |    // Truncated mantissa
  629|  8.10k|    mantissa_width = 58;
  630|  8.10k|    mantissa_exact = false;
  631|  8.10k|    binary_exponent +=
  632|  8.10k|        TruncateToBitWidth(mantissa_width, &wide_binary_mantissa);
  633|  8.10k|  } else if (!Power10Exact(parsed_decimal.exponent)) {
  ------------------
  |  Branch (633:14): [True: 3.95k, False: 1.34k]
  ------------------
  634|       |    // Exact mantissa, truncated power of ten
  635|  3.95k|    mantissa_width = 63;
  636|  3.95k|    mantissa_exact = false;
  637|  3.95k|    binary_exponent +=
  638|  3.95k|        TruncateToBitWidth(mantissa_width, &wide_binary_mantissa);
  639|  3.95k|  } else {
  640|       |    // Product is exact
  641|  1.34k|    mantissa_width = BitWidth(wide_binary_mantissa);
  642|  1.34k|    mantissa_exact = true;
  643|  1.34k|  }
  644|       |
  645|       |  // Shift into an FloatType-sized mantissa, and round to nearest.
  646|  13.3k|  const int shift =
  647|  13.3k|      NormalizedShiftSize<FloatType>(mantissa_width, binary_exponent);
  648|  13.3k|  bool result_exact;
  649|  13.3k|  binary_exponent += shift;
  650|  13.3k|  uint64_t binary_mantissa = ShiftRightAndRound(wide_binary_mantissa, shift,
  651|  13.3k|                                                mantissa_exact, &result_exact);
  652|  13.3k|  if (!result_exact) {
  ------------------
  |  Branch (652:7): [True: 8.20k, False: 5.19k]
  ------------------
  653|       |    // We could not determine the rounding direction using int128 math.  Use
  654|       |    // full resolution math instead.
  655|  8.20k|    if (MustRoundUp(binary_mantissa, binary_exponent, parsed_decimal)) {
  ------------------
  |  Branch (655:9): [True: 826, False: 7.37k]
  ------------------
  656|    826|      binary_mantissa += 1;
  657|    826|    }
  658|  8.20k|  }
  659|       |
  660|  13.3k|  return CalculatedFloatFromRawValues<FloatType>(binary_mantissa,
  661|  13.3k|                                                 binary_exponent);
  662|  13.8k|}
charconv.cc:_ZN4absl12_GLOBAL__N_116Power10UnderflowEi:
  271|  13.8k|bool Power10Underflow(int n) { return n < kPower10TableMinInclusive; }
charconv.cc:_ZN4absl12_GLOBAL__N_115Power10OverflowEi:
  267|  13.6k|bool Power10Overflow(int n) { return n >= kPower10TableMaxExclusive; }
charconv.cc:_ZN4absl12_GLOBAL__N_115Power10MantissaEi:
  253|  13.3k|uint64_t Power10Mantissa(int n) {
  254|  13.3k|  return kPower10MantissaHighTable[n - kPower10TableMinInclusive];
  255|  13.3k|}
charconv.cc:_ZN4absl12_GLOBAL__N_115Power10ExponentEi:
  257|  13.3k|int Power10Exponent(int n) {
  258|       |  // The 217706 etc magic numbers encode the results as a formula instead of a
  259|       |  // table. Their equivalence (over the kPower10TableMinInclusive ..
  260|       |  // kPower10TableMaxExclusive range) is confirmed by
  261|       |  // https://github.com/google/wuffs/blob/315b2e52625ebd7b02d8fac13e3cd85ea374fb80/script/print-mpb-powers-of-10.go
  262|  13.3k|  return (217706 * n >> 16) - 63;
  263|  13.3k|}
charconv.cc:_ZN4absl12_GLOBAL__N_118TruncateToBitWidthEiPNS_7uint128E:
  331|  12.0k|int TruncateToBitWidth(int bit_width, uint128* value) {
  332|  12.0k|  const int current_bit_width = BitWidth(*value);
  333|  12.0k|  const int shift = current_bit_width - bit_width;
  334|  12.0k|  *value >>= shift;
  335|  12.0k|  return shift;
  336|  12.0k|}
charconv.cc:_ZN4absl12_GLOBAL__N_112Power10ExactEi:
  276|  5.29k|bool Power10Exact(int n) { return n >= 0 && n <= 27; }
  ------------------
  |  Branch (276:35): [True: 1.69k, False: 3.60k]
  |  Branch (276:45): [True: 1.34k, False: 353]
  ------------------
charconv.cc:_ZN4absl12_GLOBAL__N_18BitWidthENS_7uint128E:
  300|  13.3k|int BitWidth(uint128 value) {
  301|  13.3k|  if (Uint128High64(value) == 0) {
  ------------------
  |  Branch (301:7): [True: 535, False: 12.8k]
  ------------------
  302|       |    // This static_cast is only needed when using a std::bit_width()
  303|       |    // implementation that does not have the fix for LWG 3656 applied.
  304|    535|    return static_cast<int>(bit_width(Uint128Low64(value)));
  305|    535|  }
  306|  12.8k|  return 128 - countl_zero(Uint128High64(value));
  307|  13.3k|}
charconv.cc:_ZN4absl12_GLOBAL__N_111MustRoundUpEmiRKNS_16strings_internal11ParsedFloatE:
  494|  8.20k|                 const strings_internal::ParsedFloat& parsed_decimal) {
  495|       |  // 768 is the number of digits needed in the worst case.  We could determine a
  496|       |  // better limit dynamically based on the value of parsed_decimal.exponent.
  497|       |  // This would optimize pathological input cases only.  (Sane inputs won't have
  498|       |  // hundreds of digits of mantissa.)
  499|  8.20k|  absl::strings_internal::BigUnsigned<84> exact_mantissa;
  500|  8.20k|  int exact_exponent = exact_mantissa.ReadFloatMantissa(parsed_decimal, 768);
  501|       |
  502|       |  // Adjust the `guess` arguments to be halfway between A and B.
  503|  8.20k|  guess_mantissa = guess_mantissa * 2 + 1;
  504|  8.20k|  guess_exponent -= 1;
  505|       |
  506|       |  // In our comparison:
  507|       |  // lhs = exact = exact_mantissa * 10**exact_exponent
  508|       |  //             = exact_mantissa * 5**exact_exponent * 2**exact_exponent
  509|       |  // rhs = guess = guess_mantissa * 2**guess_exponent
  510|       |  //
  511|       |  // Because we are doing integer math, we can't directly deal with negative
  512|       |  // exponents.  We instead move these to the other side of the inequality.
  513|  8.20k|  absl::strings_internal::BigUnsigned<84>& lhs = exact_mantissa;
  514|  8.20k|  int comparison;
  515|  8.20k|  if (exact_exponent >= 0) {
  ------------------
  |  Branch (515:7): [True: 1.97k, False: 6.22k]
  ------------------
  516|  1.97k|    lhs.MultiplyByFiveToTheNth(exact_exponent);
  517|  1.97k|    absl::strings_internal::BigUnsigned<84> rhs(guess_mantissa);
  518|       |    // There are powers of 2 on both sides of the inequality; reduce this to
  519|       |    // a single bit-shift.
  520|  1.97k|    if (exact_exponent > guess_exponent) {
  ------------------
  |  Branch (520:9): [True: 0, False: 1.97k]
  ------------------
  521|      0|      lhs.ShiftLeft(exact_exponent - guess_exponent);
  522|  1.97k|    } else {
  523|  1.97k|      rhs.ShiftLeft(guess_exponent - exact_exponent);
  524|  1.97k|    }
  525|  1.97k|    comparison = Compare(lhs, rhs);
  526|  6.22k|  } else {
  527|       |    // Move the power of 5 to the other side of the equation, giving us:
  528|       |    // lhs = exact_mantissa * 2**exact_exponent
  529|       |    // rhs = guess_mantissa * 5**(-exact_exponent) * 2**guess_exponent
  530|  6.22k|    absl::strings_internal::BigUnsigned<84> rhs =
  531|  6.22k|        absl::strings_internal::BigUnsigned<84>::FiveToTheNth(-exact_exponent);
  532|  6.22k|    rhs.MultiplyBy(guess_mantissa);
  533|  6.22k|    if (exact_exponent > guess_exponent) {
  ------------------
  |  Branch (533:9): [True: 3.90k, False: 2.32k]
  ------------------
  534|  3.90k|      lhs.ShiftLeft(exact_exponent - guess_exponent);
  535|  3.90k|    } else {
  536|  2.32k|      rhs.ShiftLeft(guess_exponent - exact_exponent);
  537|  2.32k|    }
  538|  6.22k|    comparison = Compare(lhs, rhs);
  539|  6.22k|  }
  540|  8.20k|  if (comparison < 0) {
  ------------------
  |  Branch (540:7): [True: 6.71k, False: 1.48k]
  ------------------
  541|  6.71k|    return false;
  542|  6.71k|  } else if (comparison > 0) {
  ------------------
  |  Branch (542:14): [True: 413, False: 1.07k]
  ------------------
  543|    413|    return true;
  544|  1.07k|  } else {
  545|       |    // When lhs == rhs, the decimal input is exactly between A and B.
  546|       |    // Round towards even -- round up only if the low bit of the initial
  547|       |    // `guess_mantissa` was a 1.  We shifted guess_mantissa left 1 bit at
  548|       |    // the beginning of this function, so test the 2nd bit here.
  549|  1.07k|    return (guess_mantissa & 2) == 2;
  550|  1.07k|  }
  551|  8.20k|}

_ZN4abslanENS_12chars_formatES0_:
   89|  96.0k|inline constexpr chars_format operator&(chars_format lhs, chars_format rhs) {
   90|  96.0k|  return static_cast<chars_format>(static_cast<int>(lhs) &
   91|  96.0k|                                   static_cast<int>(rhs));
   92|  96.0k|}

_ZN4absl16strings_internal11BigUnsignedILi84EE17ReadFloatMantissaERKNS0_11ParsedFloatEi:
  172|  8.20k|                                              int significant_digits) {
  173|  8.20k|  SetToZero();
  174|  8.20k|  assert(fp.type == FloatType::kNumber);
  175|       |
  176|  8.20k|  if (fp.subrange_begin == nullptr) {
  ------------------
  |  Branch (176:7): [True: 1.24k, False: 6.95k]
  ------------------
  177|       |    // We already exactly parsed the mantissa, so no more work is necessary.
  178|  1.24k|    words_[0] = fp.mantissa & 0xffffffffu;
  179|  1.24k|    words_[1] = fp.mantissa >> 32;
  180|  1.24k|    if (words_[1]) {
  ------------------
  |  Branch (180:9): [True: 1.22k, False: 24]
  ------------------
  181|  1.22k|      size_ = 2;
  182|  1.22k|    } else if (words_[0]) {
  ------------------
  |  Branch (182:16): [True: 24, False: 0]
  ------------------
  183|     24|      size_ = 1;
  184|     24|    }
  185|  1.24k|    return fp.exponent;
  186|  1.24k|  }
  187|  6.95k|  int exponent_adjust =
  188|  6.95k|      ReadDigits(fp.subrange_begin, fp.subrange_end, significant_digits);
  189|  6.95k|  return fp.literal_exponent + exponent_adjust;
  190|  8.20k|}
_ZN4absl16strings_internal11BigUnsignedILi84EE12FiveToTheNthEi:
  289|  6.22k|    int n) {
  290|  6.22k|  BigUnsigned answer(1u);
  291|       |
  292|       |  // Seed from the table of large powers, if possible.
  293|  6.22k|  bool first_pass = true;
  294|  11.3k|  while (n >= kLargePowerOfFiveStep) {
  ------------------
  |  Branch (294:10): [True: 5.09k, False: 6.22k]
  ------------------
  295|  5.09k|    int big_power =
  296|  5.09k|        std::min(n / kLargePowerOfFiveStep, kLargestPowerOfFiveIndex);
  297|  5.09k|    if (first_pass) {
  ------------------
  |  Branch (297:9): [True: 3.30k, False: 1.79k]
  ------------------
  298|       |      // just copy, rather than multiplying by 1
  299|  3.30k|      std::copy_n(LargePowerOfFiveData(big_power),
  300|  3.30k|                  LargePowerOfFiveSize(big_power), answer.words_);
  301|  3.30k|      answer.size_ = LargePowerOfFiveSize(big_power);
  302|  3.30k|      first_pass = false;
  303|  3.30k|    } else {
  304|  1.79k|      answer.MultiplyBy(LargePowerOfFiveSize(big_power),
  305|  1.79k|                        LargePowerOfFiveData(big_power));
  306|  1.79k|    }
  307|  5.09k|    n -= kLargePowerOfFiveStep * big_power;
  308|  5.09k|  }
  309|  6.22k|  answer.MultiplyByFiveToTheNth(n);
  310|  6.22k|  return answer;
  311|  6.22k|}
_ZN4absl16strings_internal11BigUnsignedILi84EE10ReadDigitsEPKcS4_i:
  194|  6.95k|                                       int significant_digits) {
  195|  6.95k|  assert(significant_digits <= Digits10() + 1);
  196|  6.95k|  SetToZero();
  197|       |
  198|  6.95k|  bool after_decimal_point = false;
  199|       |  // Discard any leading zeroes before the decimal point
  200|  9.76k|  while (begin < end && *begin == '0') {
  ------------------
  |  Branch (200:10): [True: 9.76k, False: 0]
  |  Branch (200:25): [True: 2.81k, False: 6.95k]
  ------------------
  201|  2.81k|    ++begin;
  202|  2.81k|  }
  203|  6.95k|  int dropped_digits = 0;
  204|       |  // Discard any trailing zeroes.  These may or may not be after the decimal
  205|       |  // point.
  206|  18.9k|  while (begin < end && *std::prev(end) == '0') {
  ------------------
  |  Branch (206:10): [True: 18.9k, False: 0]
  |  Branch (206:25): [True: 12.0k, False: 6.95k]
  ------------------
  207|  12.0k|    --end;
  208|  12.0k|    ++dropped_digits;
  209|  12.0k|  }
  210|  6.95k|  if (begin < end && *std::prev(end) == '.') {
  ------------------
  |  Branch (210:7): [True: 6.95k, False: 0]
  |  Branch (210:22): [True: 675, False: 6.27k]
  ------------------
  211|       |    // If the string ends in '.', either before or after dropping zeroes, then
  212|       |    // drop the decimal point and look for more digits to drop.
  213|    675|    dropped_digits = 0;
  214|    675|    --end;
  215|    967|    while (begin < end && *std::prev(end) == '0') {
  ------------------
  |  Branch (215:12): [True: 967, False: 0]
  |  Branch (215:27): [True: 292, False: 675]
  ------------------
  216|    292|      --end;
  217|    292|      ++dropped_digits;
  218|    292|    }
  219|  6.27k|  } else if (dropped_digits) {
  ------------------
  |  Branch (219:14): [True: 529, False: 5.74k]
  ------------------
  220|       |    // We dropped digits, and aren't sure if they're before or after the decimal
  221|       |    // point.  Figure that out now.
  222|    529|    const char* dp = std::find(begin, end, '.');
  223|    529|    if (dp != end) {
  ------------------
  |  Branch (223:9): [True: 283, False: 246]
  ------------------
  224|       |      // The dropped trailing digits were after the decimal point, so don't
  225|       |      // count them.
  226|    283|      dropped_digits = 0;
  227|    283|    }
  228|    529|  }
  229|       |  // Any non-fraction digits we dropped need to be accounted for in our exponent
  230|       |  // adjustment.
  231|  6.95k|  int exponent_adjust = dropped_digits;
  232|       |
  233|  6.95k|  uint32_t queued = 0;
  234|  6.95k|  int digits_queued = 0;
  235|   919k|  for (; begin != end && significant_digits > 0; ++begin) {
  ------------------
  |  Branch (235:10): [True: 912k, False: 6.66k]
  |  Branch (235:26): [True: 912k, False: 292]
  ------------------
  236|   912k|    if (*begin == '.') {
  ------------------
  |  Branch (236:9): [True: 4.29k, False: 907k]
  ------------------
  237|  4.29k|      after_decimal_point = true;
  238|  4.29k|      continue;
  239|  4.29k|    }
  240|   907k|    if (after_decimal_point) {
  ------------------
  |  Branch (240:9): [True: 750k, False: 157k]
  ------------------
  241|       |      // For each fractional digit we emit in our parsed integer, adjust our
  242|       |      // decimal exponent to compensate.
  243|   750k|      --exponent_adjust;
  244|   750k|    }
  245|   907k|    char digit = (*begin - '0');
  246|   907k|    --significant_digits;
  247|   907k|    if (significant_digits == 0 && std::next(begin) != end &&
  ------------------
  |  Branch (247:9): [True: 327, False: 907k]
  |  Branch (247:36): [True: 292, False: 35]
  ------------------
  248|   907k|        (digit == 0 || digit == 5)) {
  ------------------
  |  Branch (248:10): [True: 76, False: 216]
  |  Branch (248:24): [True: 44, False: 172]
  ------------------
  249|       |      // If this is the very last significant digit, but insignificant digits
  250|       |      // remain, we know that the last of those remaining significant digits is
  251|       |      // nonzero.  (If it wasn't, we would have stripped it before we got here.)
  252|       |      // So if this final digit is a 0 or 5, adjust it upward by 1.
  253|       |      //
  254|       |      // This adjustment is what allows incredibly large mantissas ending in
  255|       |      // 500000...000000000001 to correctly round up, rather than to nearest.
  256|    120|      ++digit;
  257|    120|    }
  258|   907k|    queued = 10 * queued + static_cast<uint32_t>(digit);
  259|   907k|    ++digits_queued;
  260|   907k|    if (digits_queued == kMaxSmallPowerOfTen) {
  ------------------
  |  Branch (260:9): [True: 98.2k, False: 809k]
  ------------------
  261|  98.2k|      MultiplyBy(kTenToNth[kMaxSmallPowerOfTen]);
  262|  98.2k|      AddWithCarry(0, queued);
  263|  98.2k|      queued = digits_queued = 0;
  264|  98.2k|    }
  265|   907k|  }
  266|       |  // Encode any remaining digits.
  267|  6.95k|  if (digits_queued) {
  ------------------
  |  Branch (267:7): [True: 6.54k, False: 410]
  ------------------
  268|  6.54k|    MultiplyBy(kTenToNth[digits_queued]);
  269|  6.54k|    AddWithCarry(0, queued);
  270|  6.54k|  }
  271|       |
  272|       |  // If any insignificant digits remain, we will drop them.  But if we have not
  273|       |  // yet read the decimal point, then we have to adjust the exponent to account
  274|       |  // for the dropped digits.
  275|  6.95k|  if (begin < end && !after_decimal_point) {
  ------------------
  |  Branch (275:7): [True: 292, False: 6.66k]
  |  Branch (275:22): [True: 61, False: 231]
  ------------------
  276|       |    // This call to std::find will result in a pointer either to the decimal
  277|       |    // point, or to the end of our buffer if there was none.
  278|       |    //
  279|       |    // Either way, [begin, decimal_point) will contain the set of dropped digits
  280|       |    // that require an exponent adjustment.
  281|     61|    const char* decimal_point = std::find(begin, end, '.');
  282|     61|    exponent_adjust += (decimal_point - begin);
  283|     61|  }
  284|  6.95k|  return exponent_adjust;
  285|  6.95k|}
_ZN4absl16strings_internal11BigUnsignedILi84EE12MultiplyStepEiPKjii:
  316|   184k|                                          int other_size, int step) {
  317|   184k|  int this_i = std::min(original_size - 1, step);
  318|   184k|  int other_i = step - this_i;
  319|       |
  320|   184k|  uint64_t this_word = 0;
  321|   184k|  uint64_t carry = 0;
  322|   866k|  for (; this_i >= 0 && other_i < other_size; --this_i, ++other_i) {
  ------------------
  |  Branch (322:10): [True: 843k, False: 23.3k]
  |  Branch (322:25): [True: 682k, False: 161k]
  ------------------
  323|   682k|    uint64_t product = words_[this_i];
  324|   682k|    product *= other_words[other_i];
  325|   682k|    this_word += product;
  326|   682k|    carry += (this_word >> 32);
  327|   682k|    this_word &= 0xffffffff;
  328|   682k|  }
  329|   184k|  AddWithCarry(step + 1, carry);
  330|   184k|  words_[step] = this_word & 0xffffffff;
  331|   184k|  if (this_word > 0 && size_ <= step) {
  ------------------
  |  Branch (331:7): [True: 184k, False: 0]
  |  Branch (331:24): [True: 2.21k, False: 182k]
  ------------------
  332|  2.21k|    size_ = step + 1;
  333|  2.21k|  }
  334|   184k|}
charconv_bigint.cc:_ZN4absl16strings_internal12_GLOBAL__N_120LargePowerOfFiveDataEi:
  152|  5.09k|const uint32_t* LargePowerOfFiveData(int i) {
  153|  5.09k|  return kLargePowersOfFive + i * (i - 1);
  154|  5.09k|}
charconv_bigint.cc:_ZN4absl16strings_internal12_GLOBAL__N_120LargePowerOfFiveSizeEi:
  158|  8.40k|int LargePowerOfFiveSize(int i) { return 2 * i; }

_ZN4absl16strings_internal11BigUnsignedILi84EEC2Ev:
   62|  8.20k|  BigUnsigned() : size_(0), words_{} {}
_ZN4absl16strings_internal11BigUnsignedILi84EE22MultiplyByFiveToTheNthEi:
  164|  8.20k|  void MultiplyByFiveToTheNth(int n) {
  165|  27.2k|    while (n >= kMaxSmallPowerOfFive) {
  ------------------
  |  Branch (165:12): [True: 19.0k, False: 8.20k]
  ------------------
  166|  19.0k|      MultiplyBy(kFiveToNth[kMaxSmallPowerOfFive]);
  167|  19.0k|      n -= kMaxSmallPowerOfFive;
  168|  19.0k|    }
  169|  8.20k|    if (n > 0) {
  ------------------
  |  Branch (169:9): [True: 6.28k, False: 1.91k]
  ------------------
  170|  6.28k|      MultiplyBy(kFiveToNth[n]);
  171|  6.28k|    }
  172|  8.20k|  }
_ZN4absl16strings_internal11BigUnsignedILi84EE10MultiplyByEj:
  130|   130k|  void MultiplyBy(uint32_t v) {
  131|   130k|    if (size_ == 0 || v == 1) {
  ------------------
  |  Branch (131:9): [True: 7.01k, False: 123k]
  |  Branch (131:23): [True: 10, False: 123k]
  ------------------
  132|  7.02k|      return;
  133|  7.02k|    }
  134|   123k|    if (v == 0) {
  ------------------
  |  Branch (134:9): [True: 0, False: 123k]
  ------------------
  135|      0|      SetToZero();
  136|      0|      return;
  137|      0|    }
  138|   123k|    const uint64_t factor = v;
  139|   123k|    uint64_t window = 0;
  140|  2.64M|    for (int i = 0; i < size_; ++i) {
  ------------------
  |  Branch (140:21): [True: 2.51M, False: 123k]
  ------------------
  141|  2.51M|      window += factor * words_[i];
  142|  2.51M|      words_[i] = window & 0xffffffff;
  143|  2.51M|      window >>= 32;
  144|  2.51M|    }
  145|       |    // If carry bits remain and there's space for them, grow size_.
  146|   123k|    if (window && size_ < max_words) {
  ------------------
  |  Branch (146:9): [True: 108k, False: 15.1k]
  |  Branch (146:19): [True: 108k, False: 0]
  ------------------
  147|   108k|      words_[size_] = window & 0xffffffff;
  148|   108k|      ++size_;
  149|   108k|    }
  150|   123k|  }
_ZN4absl16strings_internal11BigUnsignedILi84EE9SetToZeroEv:
  199|  15.1k|  void SetToZero() {
  200|  15.1k|    std::fill_n(words_, size_, 0u);
  201|  15.1k|    size_ = 0;
  202|  15.1k|  }
_ZN4absl16strings_internal11BigUnsignedILi84EEC2Em:
   66|  8.20k|               static_cast<uint32_t>(v >> 32)} {}
_ZN4absl16strings_internal11BigUnsignedILi84EE9ShiftLeftEi:
  102|  8.20k|  void ShiftLeft(int count) {
  103|  8.20k|    if (count > 0) {
  ------------------
  |  Branch (103:9): [True: 7.53k, False: 671]
  ------------------
  104|  7.53k|      const int word_shift = count / 32;
  105|  7.53k|      if (word_shift >= max_words) {
  ------------------
  |  Branch (105:11): [True: 0, False: 7.53k]
  ------------------
  106|      0|        SetToZero();
  107|      0|        return;
  108|      0|      }
  109|  7.53k|      size_ = (std::min)(size_ + word_shift, max_words);
  110|  7.53k|      count %= 32;
  111|  7.53k|      if (count == 0) {
  ------------------
  |  Branch (111:11): [True: 481, False: 7.04k]
  ------------------
  112|    481|        std::copy_backward(words_, words_ + size_ - word_shift, words_ + size_);
  113|  7.04k|      } else {
  114|  92.7k|        for (int i = (std::min)(size_, max_words - 1); i > word_shift; --i) {
  ------------------
  |  Branch (114:56): [True: 85.7k, False: 7.04k]
  ------------------
  115|  85.7k|          words_[i] = (words_[i - word_shift] << count) |
  116|  85.7k|                      (words_[i - word_shift - 1] >> (32 - count));
  117|  85.7k|        }
  118|  7.04k|        words_[word_shift] = words_[0] << count;
  119|       |        // Grow size_ if necessary.
  120|  7.04k|        if (size_ < max_words && words_[size_]) {
  ------------------
  |  Branch (120:13): [True: 7.04k, False: 0]
  |  Branch (120:34): [True: 4.27k, False: 2.77k]
  ------------------
  121|  4.27k|          ++size_;
  122|  4.27k|        }
  123|  7.04k|      }
  124|  7.53k|      std::fill_n(words_, word_shift, 0u);
  125|  7.53k|    }
  126|  8.20k|  }
_ZN4absl16strings_internal7CompareILi84ELi84EEEiRKNS0_11BigUnsignedIXT_EEERKNS2_IXT0_EEE:
  353|  8.20k|int Compare(const BigUnsigned<N>& lhs, const BigUnsigned<M>& rhs) {
  354|  8.20k|  int limit = (std::max)(lhs.size(), rhs.size());
  355|  23.2k|  for (int i = limit - 1; i >= 0; --i) {
  ------------------
  |  Branch (355:27): [True: 22.1k, False: 1.07k]
  ------------------
  356|  22.1k|    const uint32_t lhs_word = lhs.GetWord(i);
  357|  22.1k|    const uint32_t rhs_word = rhs.GetWord(i);
  358|  22.1k|    if (lhs_word < rhs_word) {
  ------------------
  |  Branch (358:9): [True: 6.71k, False: 15.4k]
  ------------------
  359|  6.71k|      return -1;
  360|  15.4k|    } else if (lhs_word > rhs_word) {
  ------------------
  |  Branch (360:16): [True: 413, False: 15.0k]
  ------------------
  361|    413|      return 1;
  362|    413|    }
  363|  22.1k|  }
  364|  1.07k|  return 0;
  365|  8.20k|}
_ZNK4absl16strings_internal11BigUnsignedILi84EE4sizeEv:
  217|  16.4k|  int size() const { return size_; }
_ZNK4absl16strings_internal11BigUnsignedILi84EE7GetWordEi:
  206|  44.3k|  uint32_t GetWord(int index) const {
  207|  44.3k|    if (index < 0 || index >= size_) {
  ------------------
  |  Branch (207:9): [True: 0, False: 44.3k]
  |  Branch (207:22): [True: 509, False: 43.7k]
  ------------------
  208|    509|      return 0;
  209|    509|    }
  210|  43.7k|    return words_[index];
  211|  44.3k|  }
_ZN4absl16strings_internal11BigUnsignedILi84EE10MultiplyByEm:
  152|  6.22k|  void MultiplyBy(uint64_t v) {
  153|  6.22k|    uint32_t words[2];
  154|  6.22k|    words[0] = static_cast<uint32_t>(v);
  155|  6.22k|    words[1] = static_cast<uint32_t>(v >> 32);
  156|  6.22k|    if (words[1] == 0) {
  ------------------
  |  Branch (156:9): [True: 654, False: 5.57k]
  ------------------
  157|    654|      MultiplyBy(words[0]);
  158|  5.57k|    } else {
  159|  5.57k|      MultiplyBy(2, words);
  160|  5.57k|    }
  161|  6.22k|  }
_ZN4absl16strings_internal11BigUnsignedILi84EE10MultiplyByEiPKj:
  270|  7.36k|  void MultiplyBy(int other_size, const uint32_t* other_words) {
  271|  7.36k|    const int original_size = size_;
  272|  7.36k|    const int first_step =
  273|  7.36k|        (std::min)(original_size + other_size - 2, max_words - 1);
  274|   191k|    for (int step = first_step; step >= 0; --step) {
  ------------------
  |  Branch (274:33): [True: 184k, False: 7.36k]
  ------------------
  275|   184k|      MultiplyStep(original_size, other_words, other_size, step);
  276|   184k|    }
  277|  7.36k|  }
_ZN4absl16strings_internal11BigUnsignedILi84EE12AddWithCarryEij:
  280|   192k|  void AddWithCarry(int index, uint32_t value) {
  281|   192k|    if (value) {
  ------------------
  |  Branch (281:9): [True: 136k, False: 56.1k]
  ------------------
  282|   281k|      while (index < max_words && value > 0) {
  ------------------
  |  Branch (282:14): [True: 281k, False: 0]
  |  Branch (282:35): [True: 145k, False: 136k]
  ------------------
  283|   145k|        words_[index] += value;
  284|       |        // carry if we overflowed in this word:
  285|   145k|        if (value > words_[index]) {
  ------------------
  |  Branch (285:13): [True: 9.65k, False: 136k]
  ------------------
  286|  9.65k|          value = 1;
  287|  9.65k|          ++index;
  288|   136k|        } else {
  289|   136k|          value = 0;
  290|   136k|        }
  291|   145k|      }
  292|   136k|      size_ = (std::min)(max_words, (std::max)(index + 1, size_));
  293|   136k|    }
  294|   192k|  }
_ZN4absl16strings_internal11BigUnsignedILi84EE12AddWithCarryEim:
  296|   184k|  void AddWithCarry(int index, uint64_t value) {
  297|   184k|    if (value && index < max_words) {
  ------------------
  |  Branch (297:9): [True: 182k, False: 2.26k]
  |  Branch (297:18): [True: 182k, False: 0]
  ------------------
  298|   182k|      uint32_t high = value >> 32;
  299|   182k|      uint32_t low = value & 0xffffffff;
  300|   182k|      words_[index] += low;
  301|   182k|      if (words_[index] < low) {
  ------------------
  |  Branch (301:11): [True: 63.4k, False: 118k]
  ------------------
  302|  63.4k|        ++high;
  303|  63.4k|        if (high == 0) {
  ------------------
  |  Branch (303:13): [True: 0, False: 63.4k]
  ------------------
  304|       |          // Carry from the low word caused our high word to overflow.
  305|       |          // Short circuit here to do the right thing.
  306|      0|          AddWithCarry(index + 2, static_cast<uint32_t>(1));
  307|      0|          return;
  308|      0|        }
  309|  63.4k|      }
  310|   182k|      if (high > 0) {
  ------------------
  |  Branch (310:11): [True: 87.4k, False: 94.7k]
  ------------------
  311|  87.4k|        AddWithCarry(index + 1, high);
  312|  94.7k|      } else {
  313|       |        // Normally 32-bit AddWithCarry() sets size_, but since we don't call
  314|       |        // it when `high` is 0, do it ourselves here.
  315|  94.7k|        size_ = (std::min)(max_words, (std::max)(index + 1, size_));
  316|  94.7k|      }
  317|   182k|    }
  318|   184k|  }

_ZN4absl16strings_internal10ParseFloatILi10EEENS0_11ParsedFloatEPKcS4_NS_12chars_formatE:
  356|  19.9k|                                         chars_format format_flags) {
  357|  19.9k|  strings_internal::ParsedFloat result;
  358|       |
  359|       |  // Exit early if we're given an empty range.
  360|  19.9k|  if (begin == end) return result;
  ------------------
  |  Branch (360:7): [True: 0, False: 19.9k]
  ------------------
  361|       |
  362|       |  // Handle the infinity and NaN cases.
  363|  19.9k|  if (ParseInfinityOrNan(begin, end, &result)) {
  ------------------
  |  Branch (363:7): [True: 0, False: 19.9k]
  ------------------
  364|      0|    return result;
  365|      0|  }
  366|       |
  367|  19.9k|  const char* const mantissa_begin = begin;
  368|  42.1k|  while (begin < end && *begin == '0') {
  ------------------
  |  Branch (368:10): [True: 42.1k, False: 0]
  |  Branch (368:25): [True: 22.2k, False: 19.9k]
  ------------------
  369|  22.2k|    ++begin;  // skip leading zeros
  370|  22.2k|  }
  371|  19.9k|  uint64_t mantissa = 0;
  372|       |
  373|  19.9k|  int exponent_adjustment = 0;
  374|  19.9k|  bool mantissa_is_inexact = false;
  375|  19.9k|  int pre_decimal_digits = ConsumeDigits<base>(
  376|  19.9k|      begin, end, MantissaDigitsMax<base>(), &mantissa, &mantissa_is_inexact);
  377|  19.9k|  begin += pre_decimal_digits;
  378|  19.9k|  int digits_left;
  379|  19.9k|  if (pre_decimal_digits >= DigitLimit<base>()) {
  ------------------
  |  Branch (379:7): [True: 0, False: 19.9k]
  ------------------
  380|       |    // refuse to parse pathological inputs
  381|      0|    return result;
  382|  19.9k|  } else if (pre_decimal_digits > MantissaDigitsMax<base>()) {
  ------------------
  |  Branch (382:14): [True: 3.66k, False: 16.2k]
  ------------------
  383|       |    // We dropped some non-fraction digits on the floor.  Adjust our exponent
  384|       |    // to compensate.
  385|  3.66k|    exponent_adjustment =
  386|  3.66k|        static_cast<int>(pre_decimal_digits - MantissaDigitsMax<base>());
  387|  3.66k|    digits_left = 0;
  388|  16.2k|  } else {
  389|  16.2k|    digits_left =
  390|  16.2k|        static_cast<int>(MantissaDigitsMax<base>() - pre_decimal_digits);
  391|  16.2k|  }
  392|  19.9k|  if (begin < end && *begin == '.') {
  ------------------
  |  Branch (392:7): [True: 19.9k, False: 0]
  |  Branch (392:22): [True: 10.0k, False: 9.87k]
  ------------------
  393|  10.0k|    ++begin;
  394|  10.0k|    if (mantissa == 0) {
  ------------------
  |  Branch (394:9): [True: 4.30k, False: 5.76k]
  ------------------
  395|       |      // If we haven't seen any nonzero digits yet, keep skipping zeros.  We
  396|       |      // have to adjust the exponent to reflect the changed place value.
  397|  4.30k|      const char* begin_zeros = begin;
  398|  21.5k|      while (begin < end && *begin == '0') {
  ------------------
  |  Branch (398:14): [True: 20.9k, False: 551]
  |  Branch (398:29): [True: 17.2k, False: 3.75k]
  ------------------
  399|  17.2k|        ++begin;
  400|  17.2k|      }
  401|  4.30k|      int zeros_skipped = static_cast<int>(begin - begin_zeros);
  402|  4.30k|      if (zeros_skipped >= DigitLimit<base>()) {
  ------------------
  |  Branch (402:11): [True: 0, False: 4.30k]
  ------------------
  403|       |        // refuse to parse pathological inputs
  404|      0|        return result;
  405|      0|      }
  406|  4.30k|      exponent_adjustment -= static_cast<int>(zeros_skipped);
  407|  4.30k|    }
  408|  10.0k|    int post_decimal_digits = ConsumeDigits<base>(
  409|  10.0k|        begin, end, digits_left, &mantissa, &mantissa_is_inexact);
  410|  10.0k|    begin += post_decimal_digits;
  411|       |
  412|       |    // Since `mantissa` is an integer, each significant digit we read after
  413|       |    // the decimal point requires an adjustment to the exponent. "1.23e0" will
  414|       |    // be stored as `mantissa` == 123 and `exponent` == -2 (that is,
  415|       |    // "123e-2").
  416|  10.0k|    if (post_decimal_digits >= DigitLimit<base>()) {
  ------------------
  |  Branch (416:9): [True: 0, False: 10.0k]
  ------------------
  417|       |      // refuse to parse pathological inputs
  418|      0|      return result;
  419|  10.0k|    } else if (post_decimal_digits > digits_left) {
  ------------------
  |  Branch (419:16): [True: 6.05k, False: 4.01k]
  ------------------
  420|  6.05k|      exponent_adjustment -= digits_left;
  421|  6.05k|    } else {
  422|  4.01k|      exponent_adjustment -= post_decimal_digits;
  423|  4.01k|    }
  424|  10.0k|  }
  425|       |  // If we've found no mantissa whatsoever, this isn't a number.
  426|  19.9k|  if (mantissa_begin == begin) {
  ------------------
  |  Branch (426:7): [True: 0, False: 19.9k]
  ------------------
  427|      0|    return result;
  428|      0|  }
  429|       |  // A bare "." doesn't count as a mantissa either.
  430|  19.9k|  if (begin - mantissa_begin == 1 && *mantissa_begin == '.') {
  ------------------
  |  Branch (430:7): [True: 5.00k, False: 14.9k]
  |  Branch (430:38): [True: 0, False: 5.00k]
  ------------------
  431|      0|    return result;
  432|      0|  }
  433|       |
  434|  19.9k|  if (mantissa_is_inexact) {
  ------------------
  |  Branch (434:7): [True: 8.54k, False: 11.3k]
  ------------------
  435|       |    // We dropped significant digits on the floor.  Handle this appropriately.
  436|  8.54k|    if (base == 10) {
  ------------------
  |  Branch (436:9): [Folded - Ignored]
  ------------------
  437|       |      // If we truncated significant decimal digits, store the full range of the
  438|       |      // mantissa for future big integer math for exact rounding.
  439|  8.54k|      result.subrange_begin = mantissa_begin;
  440|  8.54k|      result.subrange_end = begin;
  441|  8.54k|    } else if (base == 16) {
  ------------------
  |  Branch (441:16): [Folded - Ignored]
  ------------------
  442|       |      // If we truncated hex digits, reflect this fact by setting the low
  443|       |      // ("sticky") bit.  This allows for correct rounding in all cases.
  444|      0|      mantissa |= 1;
  445|      0|    }
  446|  8.54k|  }
  447|  19.9k|  result.mantissa = mantissa;
  448|       |
  449|  19.9k|  const char* const exponent_begin = begin;
  450|  19.9k|  result.literal_exponent = 0;
  451|  19.9k|  bool found_exponent = false;
  452|  19.9k|  if (AllowExponent(format_flags) && begin < end &&
  ------------------
  |  Branch (452:7): [True: 19.9k, False: 0]
  |  Branch (452:38): [True: 11.7k, False: 8.16k]
  ------------------
  453|  19.9k|      IsExponentCharacter<base>(*begin)) {
  ------------------
  |  Branch (453:7): [True: 11.7k, False: 0]
  ------------------
  454|  11.7k|    bool negative_exponent = false;
  455|  11.7k|    ++begin;
  456|  11.7k|    if (begin < end && *begin == '-') {
  ------------------
  |  Branch (456:9): [True: 11.7k, False: 0]
  |  Branch (456:24): [True: 5.75k, False: 6.02k]
  ------------------
  457|  5.75k|      negative_exponent = true;
  458|  5.75k|      ++begin;
  459|  6.02k|    } else if (begin < end && *begin == '+') {
  ------------------
  |  Branch (459:16): [True: 6.02k, False: 0]
  |  Branch (459:31): [True: 209, False: 5.81k]
  ------------------
  460|    209|      ++begin;
  461|    209|    }
  462|  11.7k|    const char* const exponent_digits_begin = begin;
  463|       |    // Exponent is always expressed in decimal, even for hexadecimal floats.
  464|  11.7k|    begin += ConsumeDigits<10>(begin, end, kDecimalExponentDigitsMax,
  465|  11.7k|                               &result.literal_exponent, nullptr);
  466|  11.7k|    if (begin == exponent_digits_begin) {
  ------------------
  |  Branch (466:9): [True: 0, False: 11.7k]
  ------------------
  467|       |      // there were no digits where we expected an exponent.  We failed to read
  468|       |      // an exponent and should not consume the 'e' after all.  Rewind 'begin'.
  469|      0|      found_exponent = false;
  470|      0|      begin = exponent_begin;
  471|  11.7k|    } else {
  472|  11.7k|      found_exponent = true;
  473|  11.7k|      if (negative_exponent) {
  ------------------
  |  Branch (473:11): [True: 5.75k, False: 6.02k]
  ------------------
  474|  5.75k|        result.literal_exponent = -result.literal_exponent;
  475|  5.75k|      }
  476|  11.7k|    }
  477|  11.7k|  }
  478|       |
  479|  19.9k|  if (!found_exponent && RequireExponent(format_flags)) {
  ------------------
  |  Branch (479:7): [True: 8.16k, False: 11.7k]
  |  Branch (479:26): [True: 0, False: 8.16k]
  ------------------
  480|       |    // Provided flags required an exponent, but none was found.  This results
  481|       |    // in a failure to scan.
  482|      0|    return result;
  483|      0|  }
  484|       |
  485|       |  // Success!
  486|  19.9k|  result.type = strings_internal::FloatType::kNumber;
  487|  19.9k|  if (result.mantissa > 0) {
  ------------------
  |  Branch (487:7): [True: 19.0k, False: 886]
  ------------------
  488|  19.0k|    result.exponent = result.literal_exponent +
  489|  19.0k|                      (DigitMagnitude<base>() * exponent_adjustment);
  490|  19.0k|  } else {
  491|    886|    result.exponent = 0;
  492|    886|  }
  493|  19.9k|  result.end = begin;
  494|  19.9k|  return result;
  495|  19.9k|}
charconv_parse.cc:_ZN4absl12_GLOBAL__N_113AllowExponentENS_12chars_formatE:
  122|  19.9k|bool AllowExponent(chars_format flags) {
  123|  19.9k|  bool fixed = (flags & chars_format::fixed) == chars_format::fixed;
  124|  19.9k|  bool scientific =
  125|  19.9k|      (flags & chars_format::scientific) == chars_format::scientific;
  126|  19.9k|  return scientific || !fixed;
  ------------------
  |  Branch (126:10): [True: 19.9k, False: 0]
  |  Branch (126:24): [True: 0, False: 0]
  ------------------
  127|  19.9k|}
charconv_parse.cc:_ZN4absl12_GLOBAL__N_115RequireExponentENS_12chars_formatE:
  130|  8.16k|bool RequireExponent(chars_format flags) {
  131|  8.16k|  bool fixed = (flags & chars_format::fixed) == chars_format::fixed;
  132|  8.16k|  bool scientific =
  133|  8.16k|      (flags & chars_format::scientific) == chars_format::scientific;
  134|  8.16k|  return scientific && !fixed;
  ------------------
  |  Branch (134:10): [True: 8.16k, False: 0]
  |  Branch (134:24): [True: 0, False: 8.16k]
  ------------------
  135|  8.16k|}
charconv_parse.cc:_ZN4absl12_GLOBAL__N_119IsExponentCharacterILi10EEEbc:
  201|  11.7k|bool IsExponentCharacter<10>(char ch) {
  202|  11.7k|  return ch == 'e' || ch == 'E';
  ------------------
  |  Branch (202:10): [True: 3.35k, False: 8.42k]
  |  Branch (202:23): [True: 8.42k, False: 0]
  ------------------
  203|  11.7k|}
charconv_parse.cc:_ZN4absl12_GLOBAL__N_117MantissaDigitsMaxILi10EEEiv:
  211|  59.8k|constexpr int MantissaDigitsMax<10>() {
  212|  59.8k|  return kDecimalMantissaDigitsMax;
  213|  59.8k|}
charconv_parse.cc:_ZN4absl12_GLOBAL__N_110DigitLimitILi10EEEiv:
  220|  34.3k|constexpr int DigitLimit<10>() {
  221|  34.3k|  return kDecimalDigitLimit;
  222|  34.3k|}
charconv_parse.cc:_ZN4absl12_GLOBAL__N_114DigitMagnitudeILi10EEEiv:
  229|  19.0k|constexpr int DigitMagnitude<10>() {
  230|  19.0k|  return 1;
  231|  19.0k|}
charconv_parse.cc:_ZN4absl12_GLOBAL__N_118ParseInfinityOrNanEPKcS2_PNS_16strings_internal11ParsedFloatE:
  298|  19.9k|                        strings_internal::ParsedFloat* out) {
  299|  19.9k|  if (end - begin < 3) {
  ------------------
  |  Branch (299:7): [True: 1.49k, False: 18.4k]
  ------------------
  300|  1.49k|    return false;
  301|  1.49k|  }
  302|  18.4k|  switch (*begin) {
  303|      0|    case 'i':
  ------------------
  |  Branch (303:5): [True: 0, False: 18.4k]
  ------------------
  304|      0|    case 'I': {
  ------------------
  |  Branch (304:5): [True: 0, False: 18.4k]
  ------------------
  305|       |      // An infinity string consists of the characters "inf" or "infinity",
  306|       |      // case insensitive.
  307|      0|      if (strings_internal::memcasecmp(begin + 1, "nf", 2) != 0) {
  ------------------
  |  Branch (307:11): [True: 0, False: 0]
  ------------------
  308|      0|        return false;
  309|      0|      }
  310|      0|      out->type = strings_internal::FloatType::kInfinity;
  311|      0|      if (end - begin >= 8 &&
  ------------------
  |  Branch (311:11): [True: 0, False: 0]
  ------------------
  312|      0|          strings_internal::memcasecmp(begin + 3, "inity", 5) == 0) {
  ------------------
  |  Branch (312:11): [True: 0, False: 0]
  ------------------
  313|      0|        out->end = begin + 8;
  314|      0|      } else {
  315|      0|        out->end = begin + 3;
  316|      0|      }
  317|      0|      return true;
  318|      0|    }
  319|      0|    case 'n':
  ------------------
  |  Branch (319:5): [True: 0, False: 18.4k]
  ------------------
  320|      0|    case 'N': {
  ------------------
  |  Branch (320:5): [True: 0, False: 18.4k]
  ------------------
  321|       |      // A NaN consists of the characters "nan", case insensitive, optionally
  322|       |      // followed by a parenthesized sequence of zero or more alphanumeric
  323|       |      // characters and/or underscores.
  324|      0|      if (strings_internal::memcasecmp(begin + 1, "an", 2) != 0) {
  ------------------
  |  Branch (324:11): [True: 0, False: 0]
  ------------------
  325|      0|        return false;
  326|      0|      }
  327|      0|      out->type = strings_internal::FloatType::kNan;
  328|      0|      out->end = begin + 3;
  329|       |      // NaN is allowed to be followed by a parenthesized string, consisting of
  330|       |      // only the characters [a-zA-Z0-9_].  Match that if it's present.
  331|      0|      begin += 3;
  332|      0|      if (begin < end && *begin == '(') {
  ------------------
  |  Branch (332:11): [True: 0, False: 0]
  |  Branch (332:26): [True: 0, False: 0]
  ------------------
  333|      0|        const char* nan_begin = begin + 1;
  334|      0|        while (nan_begin < end && IsNanChar(*nan_begin)) {
  ------------------
  |  Branch (334:16): [True: 0, False: 0]
  |  Branch (334:35): [True: 0, False: 0]
  ------------------
  335|      0|          ++nan_begin;
  336|      0|        }
  337|      0|        if (nan_begin < end && *nan_begin == ')') {
  ------------------
  |  Branch (337:13): [True: 0, False: 0]
  |  Branch (337:32): [True: 0, False: 0]
  ------------------
  338|       |          // We found an extra NaN specifier range
  339|      0|          out->subrange_begin = begin + 1;
  340|      0|          out->subrange_end = nan_begin;
  341|      0|          out->end = nan_begin + 1;
  342|      0|        }
  343|      0|      }
  344|      0|      return true;
  345|      0|    }
  346|  18.4k|    default:
  ------------------
  |  Branch (346:5): [True: 18.4k, False: 0]
  ------------------
  347|  18.4k|      return false;
  348|  18.4k|  }
  349|  18.4k|}
charconv_parse.cc:_ZN4absl12_GLOBAL__N_113ConsumeDigitsILi10EmEEiPKcS3_iPT0_Pb:
  250|  30.0k|                  bool* dropped_nonzero_digit) {
  251|  30.0k|  if (base == 10) {
  ------------------
  |  Branch (251:7): [Folded - Ignored]
  ------------------
  252|  30.0k|    assert(max_digits <= std::numeric_limits<T>::digits10);
  253|  30.0k|  } else if (base == 16) {
  ------------------
  |  Branch (253:14): [Folded - Ignored]
  ------------------
  254|      0|    assert(max_digits * 4 <= std::numeric_limits<T>::digits);
  255|      0|  }
  256|  30.0k|  const char* const original_begin = begin;
  257|       |
  258|       |  // Skip leading zeros, but only if *out is zero.
  259|       |  // They don't cause an overflow so we don't have to count them for
  260|       |  // `max_digits`.
  261|  30.0k|  while (!*out && end != begin && *begin == '0') ++begin;
  ------------------
  |  Branch (261:10): [True: 24.2k, False: 5.76k]
  |  Branch (261:19): [True: 23.6k, False: 551]
  |  Branch (261:35): [True: 0, False: 23.6k]
  ------------------
  262|       |
  263|  30.0k|  T accumulator = *out;
  264|  30.0k|  const char* significant_digits_end =
  265|  30.0k|      (end - begin > max_digits) ? begin + max_digits : end;
  ------------------
  |  Branch (265:7): [True: 15.8k, False: 14.2k]
  ------------------
  266|   244k|  while (begin < significant_digits_end && IsDigit<base>(*begin)) {
  ------------------
  |  Branch (266:10): [True: 228k, False: 16.3k]
  |  Branch (266:44): [True: 214k, False: 13.6k]
  ------------------
  267|       |    // Do not guard against *out overflow; max_digits was chosen to avoid this.
  268|       |    // Do assert against it, to detect problems in debug builds.
  269|   214k|    auto digit = static_cast<T>(ToDigit<base>(*begin));
  270|   214k|    assert(accumulator * base >= accumulator);
  271|   214k|    accumulator *= base;
  272|   214k|    assert(accumulator + digit >= accumulator);
  273|   214k|    accumulator += digit;
  274|   214k|    ++begin;
  275|   214k|  }
  276|  30.0k|  bool dropped_nonzero = false;
  277|  1.22M|  while (begin < end && IsDigit<base>(*begin)) {
  ------------------
  |  Branch (277:10): [True: 1.21M, False: 8.16k]
  |  Branch (277:25): [True: 1.19M, False: 21.8k]
  ------------------
  278|  1.19M|    dropped_nonzero = dropped_nonzero || (*begin != '0');
  ------------------
  |  Branch (278:23): [True: 1.05M, False: 142k]
  |  Branch (278:42): [True: 8.69k, False: 133k]
  ------------------
  279|  1.19M|    ++begin;
  280|  1.19M|  }
  281|  30.0k|  if (dropped_nonzero && dropped_nonzero_digit != nullptr) {
  ------------------
  |  Branch (281:7): [True: 8.69k, False: 21.3k]
  |  Branch (281:26): [True: 8.69k, False: 0]
  ------------------
  282|  8.69k|    *dropped_nonzero_digit = true;
  283|  8.69k|  }
  284|  30.0k|  *out = accumulator;
  285|  30.0k|  return static_cast<int>(begin - original_begin);
  286|  30.0k|}
charconv_parse.cc:_ZN4absl12_GLOBAL__N_17IsDigitILi10EEEbc:
  183|  1.83M|bool IsDigit<10>(char ch) {
  184|  1.83M|  return ch >= '0' && ch <= '9';
  ------------------
  |  Branch (184:10): [True: 1.81M, False: 17.0k]
  |  Branch (184:23): [True: 1.79M, False: 18.3k]
  ------------------
  185|  1.83M|}
charconv_parse.cc:_ZN4absl12_GLOBAL__N_17ToDigitILi10EEEjc:
  192|   247k|unsigned ToDigit<10>(char ch) {
  193|   247k|  return static_cast<unsigned>(ch - '0');
  194|   247k|}
charconv_parse.cc:_ZN4absl12_GLOBAL__N_113ConsumeDigitsILi10EiEEiPKcS3_iPT0_Pb:
  250|  11.7k|                  bool* dropped_nonzero_digit) {
  251|  11.7k|  if (base == 10) {
  ------------------
  |  Branch (251:7): [Folded - Ignored]
  ------------------
  252|  11.7k|    assert(max_digits <= std::numeric_limits<T>::digits10);
  253|  11.7k|  } else if (base == 16) {
  ------------------
  |  Branch (253:14): [Folded - Ignored]
  ------------------
  254|      0|    assert(max_digits * 4 <= std::numeric_limits<T>::digits);
  255|      0|  }
  256|  11.7k|  const char* const original_begin = begin;
  257|       |
  258|       |  // Skip leading zeros, but only if *out is zero.
  259|       |  // They don't cause an overflow so we don't have to count them for
  260|       |  // `max_digits`.
  261|  13.0k|  while (!*out && end != begin && *begin == '0') ++begin;
  ------------------
  |  Branch (261:10): [True: 13.0k, False: 0]
  |  Branch (261:19): [True: 12.1k, False: 898]
  |  Branch (261:35): [True: 1.28k, False: 10.8k]
  ------------------
  262|       |
  263|  11.7k|  T accumulator = *out;
  264|  11.7k|  const char* significant_digits_end =
  265|  11.7k|      (end - begin > max_digits) ? begin + max_digits : end;
  ------------------
  |  Branch (265:7): [True: 458, False: 11.3k]
  ------------------
  266|  44.8k|  while (begin < significant_digits_end && IsDigit<base>(*begin)) {
  ------------------
  |  Branch (266:10): [True: 33.0k, False: 11.7k]
  |  Branch (266:44): [True: 33.0k, False: 0]
  ------------------
  267|       |    // Do not guard against *out overflow; max_digits was chosen to avoid this.
  268|       |    // Do assert against it, to detect problems in debug builds.
  269|  33.0k|    auto digit = static_cast<T>(ToDigit<base>(*begin));
  270|  33.0k|    assert(accumulator * base >= accumulator);
  271|  33.0k|    accumulator *= base;
  272|  33.0k|    assert(accumulator + digit >= accumulator);
  273|  33.0k|    accumulator += digit;
  274|  33.0k|    ++begin;
  275|  33.0k|  }
  276|  11.7k|  bool dropped_nonzero = false;
  277|   361k|  while (begin < end && IsDigit<base>(*begin)) {
  ------------------
  |  Branch (277:10): [True: 349k, False: 11.7k]
  |  Branch (277:25): [True: 349k, False: 0]
  ------------------
  278|   349k|    dropped_nonzero = dropped_nonzero || (*begin != '0');
  ------------------
  |  Branch (278:23): [True: 318k, False: 31.8k]
  |  Branch (278:42): [True: 448, False: 31.3k]
  ------------------
  279|   349k|    ++begin;
  280|   349k|  }
  281|  11.7k|  if (dropped_nonzero && dropped_nonzero_digit != nullptr) {
  ------------------
  |  Branch (281:7): [True: 448, False: 11.3k]
  |  Branch (281:26): [True: 0, False: 448]
  ------------------
  282|      0|    *dropped_nonzero_digit = true;
  283|      0|  }
  284|  11.7k|  *out = accumulator;
  285|  11.7k|  return static_cast<int>(begin - original_begin);
  286|  11.7k|}

_ZN4absl16strings_internal10memcasecmpEPKcS2_m:
   23|  18.4k|int memcasecmp(const char* s1, const char* s2, size_t len) {
   24|  18.4k|  const unsigned char* us1 = reinterpret_cast<const unsigned char*>(s1);
   25|  18.4k|  const unsigned char* us2 = reinterpret_cast<const unsigned char*>(s2);
   26|       |
   27|  29.4k|  for (size_t i = 0; i < len; i++) {
  ------------------
  |  Branch (27:22): [True: 21.8k, False: 7.52k]
  ------------------
   28|  21.8k|    const int diff =
   29|  21.8k|        int{static_cast<unsigned char>(absl::ascii_tolower(us1[i]))} -
   30|  21.8k|        int{static_cast<unsigned char>(absl::ascii_tolower(us2[i]))};
   31|  21.8k|    if (diff != 0) return diff;
  ------------------
  |  Branch (31:9): [True: 10.9k, False: 10.9k]
  ------------------
   32|  21.8k|  }
   33|  7.52k|  return 0;
   34|  18.4k|}

_ZN4absl16strings_internal28STLStringResizeUninitializedINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEvEEvPT_m:
   67|  83.2k|inline void STLStringResizeUninitialized(string_type* s, size_t new_size) {
   68|  83.2k|  ResizeUninitializedTraits<string_type>::Resize(s, new_size);
   69|  83.2k|}
_ZN4absl16strings_internal25ResizeUninitializedTraitsINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEvE6ResizeEPS8_m:
   47|  83.2k|  static void Resize(string_type* s, size_t new_size) {
   48|  83.2k|    s->__resize_default_init(new_size);
   49|  83.2k|  }
_ZN4absl16strings_internal37STLStringResizeUninitializedAmortizedINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEEvPT_m:
  106|  1.21M|void STLStringResizeUninitializedAmortized(string_type* s, size_t new_size) {
  107|  1.21M|  const size_t size = s->size();
  108|  1.21M|  if (new_size > size) {
  ------------------
  |  Branch (108:7): [True: 1.21M, False: 0]
  ------------------
  109|  1.21M|    AppendUninitializedTraits<string_type>::Append(s, new_size - size);
  110|  1.21M|  } else {
  111|      0|    s->erase(new_size);
  112|      0|  }
  113|  1.21M|}
_ZN4absl16strings_internal25AppendUninitializedTraitsINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEvE6AppendEPS8_m:
   96|  1.21M|  static void Append(string_type* s, size_t n) {
   97|  1.21M|    s->__append_default_init(n);
   98|  1.21M|  }

_ZN4absl19str_format_internal13ConvertIntArgIiEEbT_NS0_24FormatConversionSpecImplEPNS0_14FormatSinkImplE:
  331|   225k|bool ConvertIntArg(T v, FormatConversionSpecImpl conv, FormatSinkImpl *sink) {
  332|   225k|  using U = typename MakeUnsigned<T>::type;
  333|   225k|  IntDigits as_digits;
  334|       |
  335|   225k|  if (conv.conversion_char() == FormatConversionCharInternal::v) {
  ------------------
  |  Branch (335:7): [True: 0, False: 225k]
  ------------------
  336|      0|    conv.set_conversion_char(ConvertV(T{}));
  337|      0|  }
  338|       |
  339|       |  // This odd casting is due to a bug in -Wswitch behavior in gcc49 which causes
  340|       |  // it to complain about a switch/case type mismatch, even though both are
  341|       |  // FormatConverionChar.  Likely this is because at this point
  342|       |  // FormatConversionChar is declared, but not defined.
  343|   225k|  switch (static_cast<uint8_t>(conv.conversion_char())) {
  344|      0|    case static_cast<uint8_t>(FormatConversionCharInternal::c):
  ------------------
  |  Branch (344:5): [True: 0, False: 225k]
  ------------------
  345|      0|      return ConvertCharImpl(static_cast<char>(v), conv, sink);
  346|       |
  347|      0|    case static_cast<uint8_t>(FormatConversionCharInternal::o):
  ------------------
  |  Branch (347:5): [True: 0, False: 225k]
  ------------------
  348|      0|      as_digits.PrintAsOct(static_cast<U>(v));
  349|      0|      break;
  350|       |
  351|      0|    case static_cast<uint8_t>(FormatConversionCharInternal::x):
  ------------------
  |  Branch (351:5): [True: 0, False: 225k]
  ------------------
  352|      0|      as_digits.PrintAsHexLower(static_cast<U>(v));
  353|      0|      break;
  354|      0|    case static_cast<uint8_t>(FormatConversionCharInternal::X):
  ------------------
  |  Branch (354:5): [True: 0, False: 225k]
  ------------------
  355|      0|      as_digits.PrintAsHexUpper(static_cast<U>(v));
  356|      0|      break;
  357|       |
  358|   224k|    case static_cast<uint8_t>(FormatConversionCharInternal::u):
  ------------------
  |  Branch (358:5): [True: 224k, False: 1.63k]
  ------------------
  359|   224k|      as_digits.PrintAsDec(static_cast<U>(v));
  360|   224k|      break;
  361|       |
  362|  1.63k|    case static_cast<uint8_t>(FormatConversionCharInternal::d):
  ------------------
  |  Branch (362:5): [True: 1.63k, False: 224k]
  ------------------
  363|  1.63k|    case static_cast<uint8_t>(FormatConversionCharInternal::i):
  ------------------
  |  Branch (363:5): [True: 0, False: 225k]
  ------------------
  364|  1.63k|      as_digits.PrintAsDec(v);
  365|  1.63k|      break;
  366|       |
  367|      0|    case static_cast<uint8_t>(FormatConversionCharInternal::a):
  ------------------
  |  Branch (367:5): [True: 0, False: 225k]
  ------------------
  368|      0|    case static_cast<uint8_t>(FormatConversionCharInternal::e):
  ------------------
  |  Branch (368:5): [True: 0, False: 225k]
  ------------------
  369|      0|    case static_cast<uint8_t>(FormatConversionCharInternal::f):
  ------------------
  |  Branch (369:5): [True: 0, False: 225k]
  ------------------
  370|      0|    case static_cast<uint8_t>(FormatConversionCharInternal::g):
  ------------------
  |  Branch (370:5): [True: 0, False: 225k]
  ------------------
  371|      0|    case static_cast<uint8_t>(FormatConversionCharInternal::A):
  ------------------
  |  Branch (371:5): [True: 0, False: 225k]
  ------------------
  372|      0|    case static_cast<uint8_t>(FormatConversionCharInternal::E):
  ------------------
  |  Branch (372:5): [True: 0, False: 225k]
  ------------------
  373|      0|    case static_cast<uint8_t>(FormatConversionCharInternal::F):
  ------------------
  |  Branch (373:5): [True: 0, False: 225k]
  ------------------
  374|      0|    case static_cast<uint8_t>(FormatConversionCharInternal::G):
  ------------------
  |  Branch (374:5): [True: 0, False: 225k]
  ------------------
  375|      0|      return ConvertFloatImpl(static_cast<double>(v), conv, sink);
  376|       |
  377|      0|    default:
  ------------------
  |  Branch (377:5): [True: 0, False: 225k]
  ------------------
  378|      0|      ABSL_ASSUME(false);
  ------------------
  |  |  258|      0|#define ABSL_ASSUME(cond) __builtin_assume(cond)
  ------------------
  379|   225k|  }
  380|       |
  381|   225k|  if (conv.is_basic()) {
  ------------------
  |  Branch (381:7): [True: 225k, False: 0]
  ------------------
  382|   225k|    sink->Append(as_digits.with_neg_and_zero());
  383|   225k|    return true;
  384|   225k|  }
  385|      0|  return ConvertIntImplInnerSlow(as_digits, conv, sink);
  386|   225k|}
_ZN4absl19str_format_internal13ConvertIntArgImEEbT_NS0_24FormatConversionSpecImplEPNS0_14FormatSinkImplE:
  331|   681k|bool ConvertIntArg(T v, FormatConversionSpecImpl conv, FormatSinkImpl *sink) {
  332|   681k|  using U = typename MakeUnsigned<T>::type;
  333|   681k|  IntDigits as_digits;
  334|       |
  335|   681k|  if (conv.conversion_char() == FormatConversionCharInternal::v) {
  ------------------
  |  Branch (335:7): [True: 0, False: 681k]
  ------------------
  336|      0|    conv.set_conversion_char(ConvertV(T{}));
  337|      0|  }
  338|       |
  339|       |  // This odd casting is due to a bug in -Wswitch behavior in gcc49 which causes
  340|       |  // it to complain about a switch/case type mismatch, even though both are
  341|       |  // FormatConverionChar.  Likely this is because at this point
  342|       |  // FormatConversionChar is declared, but not defined.
  343|   681k|  switch (static_cast<uint8_t>(conv.conversion_char())) {
  344|      0|    case static_cast<uint8_t>(FormatConversionCharInternal::c):
  ------------------
  |  Branch (344:5): [True: 0, False: 681k]
  ------------------
  345|      0|      return ConvertCharImpl(static_cast<char>(v), conv, sink);
  346|       |
  347|      0|    case static_cast<uint8_t>(FormatConversionCharInternal::o):
  ------------------
  |  Branch (347:5): [True: 0, False: 681k]
  ------------------
  348|      0|      as_digits.PrintAsOct(static_cast<U>(v));
  349|      0|      break;
  350|       |
  351|      0|    case static_cast<uint8_t>(FormatConversionCharInternal::x):
  ------------------
  |  Branch (351:5): [True: 0, False: 681k]
  ------------------
  352|      0|      as_digits.PrintAsHexLower(static_cast<U>(v));
  353|      0|      break;
  354|      0|    case static_cast<uint8_t>(FormatConversionCharInternal::X):
  ------------------
  |  Branch (354:5): [True: 0, False: 681k]
  ------------------
  355|      0|      as_digits.PrintAsHexUpper(static_cast<U>(v));
  356|      0|      break;
  357|       |
  358|      0|    case static_cast<uint8_t>(FormatConversionCharInternal::u):
  ------------------
  |  Branch (358:5): [True: 0, False: 681k]
  ------------------
  359|      0|      as_digits.PrintAsDec(static_cast<U>(v));
  360|      0|      break;
  361|       |
  362|   681k|    case static_cast<uint8_t>(FormatConversionCharInternal::d):
  ------------------
  |  Branch (362:5): [True: 681k, False: 0]
  ------------------
  363|   681k|    case static_cast<uint8_t>(FormatConversionCharInternal::i):
  ------------------
  |  Branch (363:5): [True: 0, False: 681k]
  ------------------
  364|   681k|      as_digits.PrintAsDec(v);
  365|   681k|      break;
  366|       |
  367|      0|    case static_cast<uint8_t>(FormatConversionCharInternal::a):
  ------------------
  |  Branch (367:5): [True: 0, False: 681k]
  ------------------
  368|      0|    case static_cast<uint8_t>(FormatConversionCharInternal::e):
  ------------------
  |  Branch (368:5): [True: 0, False: 681k]
  ------------------
  369|      0|    case static_cast<uint8_t>(FormatConversionCharInternal::f):
  ------------------
  |  Branch (369:5): [True: 0, False: 681k]
  ------------------
  370|      0|    case static_cast<uint8_t>(FormatConversionCharInternal::g):
  ------------------
  |  Branch (370:5): [True: 0, False: 681k]
  ------------------
  371|      0|    case static_cast<uint8_t>(FormatConversionCharInternal::A):
  ------------------
  |  Branch (371:5): [True: 0, False: 681k]
  ------------------
  372|      0|    case static_cast<uint8_t>(FormatConversionCharInternal::E):
  ------------------
  |  Branch (372:5): [True: 0, False: 681k]
  ------------------
  373|      0|    case static_cast<uint8_t>(FormatConversionCharInternal::F):
  ------------------
  |  Branch (373:5): [True: 0, False: 681k]
  ------------------
  374|      0|    case static_cast<uint8_t>(FormatConversionCharInternal::G):
  ------------------
  |  Branch (374:5): [True: 0, False: 681k]
  ------------------
  375|      0|      return ConvertFloatImpl(static_cast<double>(v), conv, sink);
  376|       |
  377|      0|    default:
  ------------------
  |  Branch (377:5): [True: 0, False: 681k]
  ------------------
  378|      0|      ABSL_ASSUME(false);
  ------------------
  |  |  258|      0|#define ABSL_ASSUME(cond) __builtin_assume(cond)
  ------------------
  379|   681k|  }
  380|       |
  381|   681k|  if (conv.is_basic()) {
  ------------------
  |  Branch (381:7): [True: 681k, False: 0]
  ------------------
  382|   681k|    sink->Append(as_digits.with_neg_and_zero());
  383|   681k|    return true;
  384|   681k|  }
  385|      0|  return ConvertIntImplInnerSlow(as_digits, conv, sink);
  386|   681k|}
_ZN4absl19str_format_internal17FormatConvertImplERKNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS0_24FormatConversionSpecImplEPNS0_14FormatSinkImplE:
  423|  1.46M|                                      FormatSinkImpl *sink) {
  424|  1.46M|  return {ConvertStringArg(v, conv, sink)};
  425|  1.46M|}
_ZN4absl19str_format_internal17FormatConvertImplENSt3__117basic_string_viewIcNS1_11char_traitsIcEEEENS0_24FormatConversionSpecImplEPNS0_14FormatSinkImplE:
  429|   112k|                                      FormatSinkImpl *sink) {
  430|   112k|  return {ConvertStringArg(v, conv, sink)};
  431|   112k|}
_ZN4absl19str_format_internal17FormatConvertImplEPKcNS0_24FormatConversionSpecImplEPNS0_14FormatSinkImplE:
  436|  1.35M|                  FormatSinkImpl *sink) {
  437|  1.35M|  if (conv.conversion_char() == FormatConversionCharInternal::p)
  ------------------
  |  Branch (437:7): [True: 0, False: 1.35M]
  ------------------
  438|      0|    return {FormatConvertImpl(VoidPtr(v), conv, sink).value};
  439|  1.35M|  size_t len;
  440|  1.35M|  if (v == nullptr) {
  ------------------
  |  Branch (440:7): [True: 0, False: 1.35M]
  ------------------
  441|      0|    len = 0;
  442|  1.35M|  } else if (conv.precision() < 0) {
  ------------------
  |  Branch (442:14): [True: 1.35M, False: 0]
  ------------------
  443|  1.35M|    len = std::strlen(v);
  444|  1.35M|  } else {
  445|       |    // If precision is set, we look for the NUL-terminator on the valid range.
  446|      0|    len = static_cast<size_t>(std::find(v, v + conv.precision(), '\0') - v);
  447|      0|  }
  448|  1.35M|  return {ConvertStringArg(string_view(v, len), conv, sink)};
  449|  1.35M|}
_ZN4absl19str_format_internal17FormatConvertImplEiNS0_24FormatConversionSpecImplEPNS0_14FormatSinkImplE:
  509|   225k|                                        FormatSinkImpl *sink) {
  510|   225k|  return {ConvertIntArg(v, conv, sink)};
  511|   225k|}
_ZN4absl19str_format_internal17FormatConvertImplEmNS0_24FormatConversionSpecImplEPNS0_14FormatSinkImplE:
  524|   681k|                                        FormatSinkImpl *sink) {
  525|   681k|  return {ConvertIntArg(v, conv, sink)};
  526|   681k|}
arg.cc:_ZNK4absl19str_format_internal12_GLOBAL__N_19IntDigits17with_neg_and_zeroEv:
  163|   906k|  string_view with_neg_and_zero() const { return {start_, size_}; }
arg.cc:_ZN4absl19str_format_internal12_GLOBAL__N_116ConvertStringArgENSt3__117basic_string_viewIcNS2_11char_traitsIcEEEENS0_24FormatConversionSpecImplEPNS0_14FormatSinkImplE:
  310|  2.93M|                             FormatSinkImpl *sink) {
  311|  2.93M|  if (conv.is_basic()) {
  ------------------
  |  Branch (311:7): [True: 2.93M, False: 0]
  ------------------
  312|  2.93M|    sink->Append(v);
  313|  2.93M|    return true;
  314|  2.93M|  }
  315|      0|  return sink->PutPaddedString(v, conv.width(), conv.precision(),
  316|      0|                               conv.has_left_flag());
  317|  2.93M|}
arg.cc:_ZN4absl19str_format_internal12_GLOBAL__N_19IntDigits10PrintAsDecIjEEvT_:
   86|   224k|  void PrintAsDec(T v) {
   87|   224k|    static_assert(std::is_integral<T>::value, "");
   88|   224k|    start_ = storage_;
   89|   224k|    size_ = static_cast<size_t>(numbers_internal::FastIntToBuffer(v, storage_) -
   90|   224k|                                storage_);
   91|   224k|  }
arg.cc:_ZN4absl19str_format_internal12_GLOBAL__N_19IntDigits10PrintAsDecIiEEvT_:
   86|  1.63k|  void PrintAsDec(T v) {
   87|  1.63k|    static_assert(std::is_integral<T>::value, "");
   88|  1.63k|    start_ = storage_;
   89|  1.63k|    size_ = static_cast<size_t>(numbers_internal::FastIntToBuffer(v, storage_) -
   90|  1.63k|                                storage_);
   91|  1.63k|  }
arg.cc:_ZN4absl19str_format_internal12_GLOBAL__N_19IntDigits10PrintAsDecImEEvT_:
   86|   681k|  void PrintAsDec(T v) {
   87|   681k|    static_assert(std::is_integral<T>::value, "");
   88|   681k|    start_ = storage_;
   89|   681k|    size_ = static_cast<size_t>(numbers_internal::FastIntToBuffer(v, storage_) -
   90|   681k|                                storage_);
   91|   681k|  }

_ZN4absl19str_format_internal13FormatArgImplC2IiEERKT_:
  469|   225k|  explicit FormatArgImpl(const T& value) {
  470|   225k|    using D = typename DecayType<T>::type;
  471|   225k|    static_assert(
  472|   225k|        std::is_same<D, const T&>::value || storage_policy<D>::value == ByValue,
  473|   225k|        "Decayed types must be stored by value");
  474|   225k|    Init(static_cast<D>(value));
  475|   225k|  }
_ZN4absl19str_format_internal13FormatArgImpl4InitIiEEvRKT_:
  522|   225k|  void Init(const T& value) {
  523|   225k|    data_ = Manager<T>::SetValue(value);
  524|   225k|    dispatcher_ = &Dispatch<T>;
  525|   225k|  }
_ZN4absl19str_format_internal13FormatArgImpl7ManagerIiLNS1_13StoragePolicyE2EE8SetValueERKi:
  508|   225k|    static Data SetValue(const T& value) {
  509|   225k|      Data data;
  510|   225k|      memcpy(data.buf, &value, sizeof(value));
  511|   225k|      return data;
  512|   225k|    }
_ZN4absl19str_format_internal13FormatArgImpl8DispatchIiEEbNS1_4DataENS0_24FormatConversionSpecImplEPv:
  563|   225k|  static bool Dispatch(Data arg, FormatConversionSpecImpl spec, void* out) {
  564|       |    // A `none` conv indicates that we want the `int` conversion.
  565|   225k|    if (ABSL_PREDICT_FALSE(spec.conversion_char() ==
  ------------------
  |  |  177|   225k|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (177:31): [True: 0, False: 225k]
  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  Branch (177:58): [True: 0, False: 225k]
  |  |  ------------------
  ------------------
  566|   225k|                           FormatConversionCharInternal::kNone)) {
  567|      0|      return ToInt<T>(arg, static_cast<int*>(out), std::is_integral<T>(),
  568|      0|                      std::is_enum<T>());
  569|      0|    }
  570|   225k|    if (ABSL_PREDICT_FALSE(!Contains(ArgumentToConv<T>(),
  ------------------
  |  |  177|   225k|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (177:31): [True: 0, False: 225k]
  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  Branch (177:58): [True: 0, False: 225k]
  |  |  ------------------
  ------------------
  571|   225k|                                     spec.conversion_char()))) {
  572|      0|      return false;
  573|      0|    }
  574|   225k|    return str_format_internal::FormatConvertImpl(
  575|   225k|               Manager<T>::Value(arg), spec,
  576|   225k|               static_cast<FormatSinkImpl*>(out))
  577|   225k|        .value;
  578|   225k|  }
_ZN4absl19str_format_internal14ArgumentToConvIiEENS_23FormatConversionCharSetEv:
  398|   225k|constexpr FormatConversionCharSet ArgumentToConv() {
  399|   225k|  using ConvResult = decltype(str_format_internal::FormatConvertImpl(
  400|   225k|      std::declval<const Arg&>(),
  401|   225k|      std::declval<const FormatConversionSpecImpl&>(),
  402|   225k|      std::declval<FormatSinkImpl*>()));
  403|   225k|  return absl::str_format_internal::ExtractCharSet(ConvResult{});
  404|   225k|}
_ZN4absl19str_format_internal14ExtractCharSetILNS_23FormatConversionCharSetE655355EEES2_NS0_16ArgConvertResultIXT_EEE:
  201|   906k|constexpr FormatConversionCharSet ExtractCharSet(ArgConvertResult<C>) {
  202|   906k|  return C;
  203|   906k|}
_ZN4absl19str_format_internal13FormatArgImpl7ManagerIiLNS1_13StoragePolicyE2EE5ValueENS1_4DataE:
  514|   225k|    static T Value(Data arg) {
  515|   225k|      T value;
  516|   225k|      memcpy(&value, arg.buf, sizeof(T));
  517|   225k|      return value;
  518|   225k|    }
_ZN4absl19str_format_internal13FormatArgImplC2INSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEERKT_:
  469|  1.46M|  explicit FormatArgImpl(const T& value) {
  470|  1.46M|    using D = typename DecayType<T>::type;
  471|  1.46M|    static_assert(
  472|  1.46M|        std::is_same<D, const T&>::value || storage_policy<D>::value == ByValue,
  473|  1.46M|        "Decayed types must be stored by value");
  474|  1.46M|    Init(static_cast<D>(value));
  475|  1.46M|  }
_ZN4absl19str_format_internal13FormatArgImpl4InitINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEvRKT_:
  522|  1.46M|  void Init(const T& value) {
  523|  1.46M|    data_ = Manager<T>::SetValue(value);
  524|  1.46M|    dispatcher_ = &Dispatch<T>;
  525|  1.46M|  }
_ZN4absl19str_format_internal13FormatArgImpl7ManagerINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEELNS1_13StoragePolicyE0EE8SetValueERKS9_:
  484|  1.46M|    static Data SetValue(const T& value) {
  485|  1.46M|      Data data;
  486|  1.46M|      data.ptr = std::addressof(value);
  487|  1.46M|      return data;
  488|  1.46M|    }
_ZN4absl19str_format_internal13FormatArgImpl8DispatchINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEbNS1_4DataENS0_24FormatConversionSpecImplEPv:
  563|  1.46M|  static bool Dispatch(Data arg, FormatConversionSpecImpl spec, void* out) {
  564|       |    // A `none` conv indicates that we want the `int` conversion.
  565|  1.46M|    if (ABSL_PREDICT_FALSE(spec.conversion_char() ==
  ------------------
  |  |  177|  1.46M|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (177:31): [True: 0, False: 1.46M]
  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  Branch (177:58): [True: 0, False: 1.46M]
  |  |  ------------------
  ------------------
  566|  1.46M|                           FormatConversionCharInternal::kNone)) {
  567|      0|      return ToInt<T>(arg, static_cast<int*>(out), std::is_integral<T>(),
  568|      0|                      std::is_enum<T>());
  569|      0|    }
  570|  1.46M|    if (ABSL_PREDICT_FALSE(!Contains(ArgumentToConv<T>(),
  ------------------
  |  |  177|  1.46M|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (177:31): [True: 0, False: 1.46M]
  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  Branch (177:58): [True: 0, False: 1.46M]
  |  |  ------------------
  ------------------
  571|  1.46M|                                     spec.conversion_char()))) {
  572|      0|      return false;
  573|      0|    }
  574|  1.46M|    return str_format_internal::FormatConvertImpl(
  575|  1.46M|               Manager<T>::Value(arg), spec,
  576|  1.46M|               static_cast<FormatSinkImpl*>(out))
  577|  1.46M|        .value;
  578|  1.46M|  }
_ZN4absl19str_format_internal14ArgumentToConvINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEENS_23FormatConversionCharSetEv:
  398|  1.46M|constexpr FormatConversionCharSet ArgumentToConv() {
  399|  1.46M|  using ConvResult = decltype(str_format_internal::FormatConvertImpl(
  400|  1.46M|      std::declval<const Arg&>(),
  401|  1.46M|      std::declval<const FormatConversionSpecImpl&>(),
  402|  1.46M|      std::declval<FormatSinkImpl*>()));
  403|  1.46M|  return absl::str_format_internal::ExtractCharSet(ConvResult{});
  404|  1.46M|}
_ZN4absl19str_format_internal14ExtractCharSetILNS_23FormatConversionCharSetE524292EEES2_NS0_16ArgConvertResultIXT_EEE:
  201|  1.58M|constexpr FormatConversionCharSet ExtractCharSet(ArgConvertResult<C>) {
  202|  1.58M|  return C;
  203|  1.58M|}
_ZN4absl19str_format_internal13FormatArgImpl7ManagerINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEELNS1_13StoragePolicyE0EE5ValueENS1_4DataE:
  490|  1.46M|    static const T& Value(Data arg) { return *static_cast<const T*>(arg.ptr); }
_ZN4absl19str_format_internal13FormatArgImplC2ImEERKT_:
  469|   681k|  explicit FormatArgImpl(const T& value) {
  470|   681k|    using D = typename DecayType<T>::type;
  471|   681k|    static_assert(
  472|   681k|        std::is_same<D, const T&>::value || storage_policy<D>::value == ByValue,
  473|   681k|        "Decayed types must be stored by value");
  474|   681k|    Init(static_cast<D>(value));
  475|   681k|  }
_ZN4absl19str_format_internal13FormatArgImpl4InitImEEvRKT_:
  522|   681k|  void Init(const T& value) {
  523|   681k|    data_ = Manager<T>::SetValue(value);
  524|   681k|    dispatcher_ = &Dispatch<T>;
  525|   681k|  }
_ZN4absl19str_format_internal13FormatArgImpl7ManagerImLNS1_13StoragePolicyE2EE8SetValueERKm:
  508|   681k|    static Data SetValue(const T& value) {
  509|   681k|      Data data;
  510|   681k|      memcpy(data.buf, &value, sizeof(value));
  511|   681k|      return data;
  512|   681k|    }
_ZN4absl19str_format_internal13FormatArgImpl8DispatchImEEbNS1_4DataENS0_24FormatConversionSpecImplEPv:
  563|   681k|  static bool Dispatch(Data arg, FormatConversionSpecImpl spec, void* out) {
  564|       |    // A `none` conv indicates that we want the `int` conversion.
  565|   681k|    if (ABSL_PREDICT_FALSE(spec.conversion_char() ==
  ------------------
  |  |  177|   681k|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (177:31): [True: 0, False: 681k]
  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  Branch (177:58): [True: 0, False: 681k]
  |  |  ------------------
  ------------------
  566|   681k|                           FormatConversionCharInternal::kNone)) {
  567|      0|      return ToInt<T>(arg, static_cast<int*>(out), std::is_integral<T>(),
  568|      0|                      std::is_enum<T>());
  569|      0|    }
  570|   681k|    if (ABSL_PREDICT_FALSE(!Contains(ArgumentToConv<T>(),
  ------------------
  |  |  177|   681k|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (177:31): [True: 0, False: 681k]
  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  Branch (177:58): [True: 0, False: 681k]
  |  |  ------------------
  ------------------
  571|   681k|                                     spec.conversion_char()))) {
  572|      0|      return false;
  573|      0|    }
  574|   681k|    return str_format_internal::FormatConvertImpl(
  575|   681k|               Manager<T>::Value(arg), spec,
  576|   681k|               static_cast<FormatSinkImpl*>(out))
  577|   681k|        .value;
  578|   681k|  }
_ZN4absl19str_format_internal14ArgumentToConvImEENS_23FormatConversionCharSetEv:
  398|   681k|constexpr FormatConversionCharSet ArgumentToConv() {
  399|   681k|  using ConvResult = decltype(str_format_internal::FormatConvertImpl(
  400|   681k|      std::declval<const Arg&>(),
  401|   681k|      std::declval<const FormatConversionSpecImpl&>(),
  402|   681k|      std::declval<FormatSinkImpl*>()));
  403|   681k|  return absl::str_format_internal::ExtractCharSet(ConvResult{});
  404|   681k|}
_ZN4absl19str_format_internal13FormatArgImpl7ManagerImLNS1_13StoragePolicyE2EE5ValueENS1_4DataE:
  514|   681k|    static T Value(Data arg) {
  515|   681k|      T value;
  516|   681k|      memcpy(&value, arg.buf, sizeof(T));
  517|   681k|      return value;
  518|   681k|    }
_ZN4absl19str_format_internal13FormatArgImplC2IPKcEERKT_:
  469|  1.35M|  explicit FormatArgImpl(const T& value) {
  470|  1.35M|    using D = typename DecayType<T>::type;
  471|  1.35M|    static_assert(
  472|  1.35M|        std::is_same<D, const T&>::value || storage_policy<D>::value == ByValue,
  473|  1.35M|        "Decayed types must be stored by value");
  474|  1.35M|    Init(static_cast<D>(value));
  475|  1.35M|  }
_ZN4absl19str_format_internal13FormatArgImpl4InitIPKcEEvRKT_:
  522|  1.35M|  void Init(const T& value) {
  523|  1.35M|    data_ = Manager<T>::SetValue(value);
  524|  1.35M|    dispatcher_ = &Dispatch<T>;
  525|  1.35M|  }
_ZN4absl19str_format_internal13FormatArgImpl7ManagerIPKcLNS1_13StoragePolicyE2EE8SetValueERKS4_:
  508|  1.35M|    static Data SetValue(const T& value) {
  509|  1.35M|      Data data;
  510|  1.35M|      memcpy(data.buf, &value, sizeof(value));
  511|  1.35M|      return data;
  512|  1.35M|    }
_ZN4absl19str_format_internal13FormatArgImpl8DispatchIPKcEEbNS1_4DataENS0_24FormatConversionSpecImplEPv:
  563|  1.35M|  static bool Dispatch(Data arg, FormatConversionSpecImpl spec, void* out) {
  564|       |    // A `none` conv indicates that we want the `int` conversion.
  565|  1.35M|    if (ABSL_PREDICT_FALSE(spec.conversion_char() ==
  ------------------
  |  |  177|  1.35M|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (177:31): [True: 0, False: 1.35M]
  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  Branch (177:58): [True: 0, False: 1.35M]
  |  |  ------------------
  ------------------
  566|  1.35M|                           FormatConversionCharInternal::kNone)) {
  567|      0|      return ToInt<T>(arg, static_cast<int*>(out), std::is_integral<T>(),
  568|      0|                      std::is_enum<T>());
  569|      0|    }
  570|  1.35M|    if (ABSL_PREDICT_FALSE(!Contains(ArgumentToConv<T>(),
  ------------------
  |  |  177|  1.35M|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (177:31): [True: 0, False: 1.35M]
  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  Branch (177:58): [True: 0, False: 1.35M]
  |  |  ------------------
  ------------------
  571|  1.35M|                                     spec.conversion_char()))) {
  572|      0|      return false;
  573|      0|    }
  574|  1.35M|    return str_format_internal::FormatConvertImpl(
  575|  1.35M|               Manager<T>::Value(arg), spec,
  576|  1.35M|               static_cast<FormatSinkImpl*>(out))
  577|  1.35M|        .value;
  578|  1.35M|  }
_ZN4absl19str_format_internal14ArgumentToConvIPKcEENS_23FormatConversionCharSetEv:
  398|  1.35M|constexpr FormatConversionCharSet ArgumentToConv() {
  399|  1.35M|  using ConvResult = decltype(str_format_internal::FormatConvertImpl(
  400|  1.35M|      std::declval<const Arg&>(),
  401|  1.35M|      std::declval<const FormatConversionSpecImpl&>(),
  402|  1.35M|      std::declval<FormatSinkImpl*>()));
  403|  1.35M|  return absl::str_format_internal::ExtractCharSet(ConvResult{});
  404|  1.35M|}
_ZN4absl19str_format_internal14ExtractCharSetILNS_23FormatConversionCharSetE262148EEES2_NS0_16ArgConvertResultIXT_EEE:
  201|  1.35M|constexpr FormatConversionCharSet ExtractCharSet(ArgConvertResult<C>) {
  202|  1.35M|  return C;
  203|  1.35M|}
_ZN4absl19str_format_internal13FormatArgImpl7ManagerIPKcLNS1_13StoragePolicyE2EE5ValueENS1_4DataE:
  514|  1.35M|    static T Value(Data arg) {
  515|  1.35M|      T value;
  516|  1.35M|      memcpy(&value, arg.buf, sizeof(T));
  517|  1.35M|      return value;
  518|  1.35M|    }
_ZN4absl19str_format_internal13FormatArgImplC2INSt3__117basic_string_viewIcNS3_11char_traitsIcEEEEEERKT_:
  469|   112k|  explicit FormatArgImpl(const T& value) {
  470|   112k|    using D = typename DecayType<T>::type;
  471|   112k|    static_assert(
  472|   112k|        std::is_same<D, const T&>::value || storage_policy<D>::value == ByValue,
  473|   112k|        "Decayed types must be stored by value");
  474|   112k|    Init(static_cast<D>(value));
  475|   112k|  }
_ZN4absl19str_format_internal13FormatArgImpl4InitINSt3__117basic_string_viewIcNS3_11char_traitsIcEEEEEEvRKT_:
  522|   112k|  void Init(const T& value) {
  523|   112k|    data_ = Manager<T>::SetValue(value);
  524|   112k|    dispatcher_ = &Dispatch<T>;
  525|   112k|  }
_ZN4absl19str_format_internal13FormatArgImpl7ManagerINSt3__117basic_string_viewIcNS3_11char_traitsIcEEEELNS1_13StoragePolicyE0EE8SetValueERKS7_:
  484|   112k|    static Data SetValue(const T& value) {
  485|   112k|      Data data;
  486|   112k|      data.ptr = std::addressof(value);
  487|   112k|      return data;
  488|   112k|    }
_ZN4absl19str_format_internal13FormatArgImpl8DispatchINSt3__117basic_string_viewIcNS3_11char_traitsIcEEEEEEbNS1_4DataENS0_24FormatConversionSpecImplEPv:
  563|   112k|  static bool Dispatch(Data arg, FormatConversionSpecImpl spec, void* out) {
  564|       |    // A `none` conv indicates that we want the `int` conversion.
  565|   112k|    if (ABSL_PREDICT_FALSE(spec.conversion_char() ==
  ------------------
  |  |  177|   112k|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (177:31): [True: 0, False: 112k]
  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  Branch (177:58): [True: 0, False: 112k]
  |  |  ------------------
  ------------------
  566|   112k|                           FormatConversionCharInternal::kNone)) {
  567|      0|      return ToInt<T>(arg, static_cast<int*>(out), std::is_integral<T>(),
  568|      0|                      std::is_enum<T>());
  569|      0|    }
  570|   112k|    if (ABSL_PREDICT_FALSE(!Contains(ArgumentToConv<T>(),
  ------------------
  |  |  177|   112k|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (177:31): [True: 0, False: 112k]
  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  Branch (177:58): [True: 0, False: 112k]
  |  |  ------------------
  ------------------
  571|   112k|                                     spec.conversion_char()))) {
  572|      0|      return false;
  573|      0|    }
  574|   112k|    return str_format_internal::FormatConvertImpl(
  575|   112k|               Manager<T>::Value(arg), spec,
  576|   112k|               static_cast<FormatSinkImpl*>(out))
  577|   112k|        .value;
  578|   112k|  }
_ZN4absl19str_format_internal14ArgumentToConvINSt3__117basic_string_viewIcNS2_11char_traitsIcEEEEEENS_23FormatConversionCharSetEv:
  398|   112k|constexpr FormatConversionCharSet ArgumentToConv() {
  399|   112k|  using ConvResult = decltype(str_format_internal::FormatConvertImpl(
  400|   112k|      std::declval<const Arg&>(),
  401|   112k|      std::declval<const FormatConversionSpecImpl&>(),
  402|   112k|      std::declval<FormatSinkImpl*>()));
  403|   112k|  return absl::str_format_internal::ExtractCharSet(ConvResult{});
  404|   112k|}
_ZN4absl19str_format_internal13FormatArgImpl7ManagerINSt3__117basic_string_viewIcNS3_11char_traitsIcEEEELNS1_13StoragePolicyE0EE5ValueENS1_4DataE:
  490|   112k|    static const T& Value(Data arg) { return *static_cast<const T*>(arg.ptr); }
_ZN4absl19str_format_internal19FormatArgImplFriend7ConvertINS0_13FormatArgImplEEEbT_NS0_24FormatConversionSpecImplEPNS0_14FormatSinkImplE:
  387|  3.84M|                      FormatSinkImpl* out) {
  388|  3.84M|    return arg.dispatcher_(arg.data_, conv, out);
  389|  3.84M|  }

_ZN4absl19str_format_internal13FormatUntypedENS0_17FormatRawSinkImplENS0_21UntypedFormatSpecImplENS_4SpanIKNS0_13FormatArgImplEEE:
  198|  1.47M|                   absl::Span<const FormatArgImpl> args) {
  199|  1.47M|  FormatSinkImpl sink(raw_sink);
  200|  1.47M|  using Converter = DefaultConverter;
  201|  1.47M|  return ConvertAll(format, args, Converter(&sink));
  202|  1.47M|}
_ZN4absl19str_format_internal10FormatPackENS0_21UntypedFormatSpecImplENS_4SpanIKNS0_13FormatArgImplEEE:
  219|  1.47M|                       absl::Span<const FormatArgImpl> args) {
  220|  1.47M|  std::string out;
  221|  1.47M|  if (ABSL_PREDICT_FALSE(!FormatUntyped(&out, format, args))) {
  ------------------
  |  |  177|  1.47M|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (177:31): [True: 0, False: 1.47M]
  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  Branch (177:58): [True: 0, False: 1.47M]
  |  |  ------------------
  ------------------
  222|      0|    out.clear();
  223|      0|  }
  224|  1.47M|  return out;
  225|  1.47M|}
bind.cc:_ZN4absl19str_format_internal12_GLOBAL__N_110ArgContextC2ENS_4SpanIKNS0_13FormatArgImplEEE:
   41|  1.47M|  explicit ArgContext(absl::Span<const FormatArgImpl> pack) : pack_(pack) {}
bind.cc:_ZN4absl19str_format_internal12_GLOBAL__N_110ArgContext4BindEPKNS0_17UnboundConversionEPNS0_15BoundConversionE:
   56|  3.84M|                             BoundConversion* bound) {
   57|  3.84M|  const FormatArgImpl* arg = nullptr;
   58|  3.84M|  int arg_position = unbound->arg_position;
   59|  3.84M|  if (static_cast<size_t>(arg_position - 1) >= pack_.size()) return false;
  ------------------
  |  Branch (59:7): [True: 0, False: 3.84M]
  ------------------
   60|  3.84M|  arg = &pack_[static_cast<size_t>(arg_position - 1)];  // 1-based
   61|       |
   62|  3.84M|  if (unbound->flags != Flags::kBasic) {
  ------------------
  |  Branch (62:7): [True: 0, False: 3.84M]
  ------------------
   63|      0|    int width = unbound->width.value();
   64|      0|    bool force_left = false;
   65|      0|    if (unbound->width.is_from_arg()) {
  ------------------
  |  Branch (65:9): [True: 0, False: 0]
  ------------------
   66|      0|      if (!BindFromPosition(unbound->width.get_from_arg(), &width, pack_))
  ------------------
  |  Branch (66:11): [True: 0, False: 0]
  ------------------
   67|      0|        return false;
   68|      0|      if (width < 0) {
  ------------------
  |  Branch (68:11): [True: 0, False: 0]
  ------------------
   69|       |        // "A negative field width is taken as a '-' flag followed by a
   70|       |        // positive field width."
   71|      0|        force_left = true;
   72|       |        // Make sure we don't overflow the width when negating it.
   73|      0|        width = -std::max(width, -std::numeric_limits<int>::max());
   74|      0|      }
   75|      0|    }
   76|       |
   77|      0|    int precision = unbound->precision.value();
   78|      0|    if (unbound->precision.is_from_arg()) {
  ------------------
  |  Branch (78:9): [True: 0, False: 0]
  ------------------
   79|      0|      if (!BindFromPosition(unbound->precision.get_from_arg(), &precision,
  ------------------
  |  Branch (79:11): [True: 0, False: 0]
  ------------------
   80|      0|                            pack_))
   81|      0|        return false;
   82|      0|    }
   83|       |
   84|      0|    FormatConversionSpecImplFriend::SetWidth(width, bound);
   85|      0|    FormatConversionSpecImplFriend::SetPrecision(precision, bound);
   86|       |
   87|      0|    if (force_left) {
  ------------------
  |  Branch (87:9): [True: 0, False: 0]
  ------------------
   88|      0|      FormatConversionSpecImplFriend::SetFlags(unbound->flags | Flags::kLeft,
   89|      0|                                               bound);
   90|      0|    } else {
   91|      0|      FormatConversionSpecImplFriend::SetFlags(unbound->flags, bound);
   92|      0|    }
   93|  3.84M|  } else {
   94|  3.84M|    FormatConversionSpecImplFriend::SetFlags(unbound->flags, bound);
   95|  3.84M|    FormatConversionSpecImplFriend::SetWidth(-1, bound);
   96|  3.84M|    FormatConversionSpecImplFriend::SetPrecision(-1, bound);
   97|  3.84M|  }
   98|  3.84M|  FormatConversionSpecImplFriend::SetConversionChar(unbound->conv, bound);
   99|  3.84M|  bound->set_arg(arg);
  100|  3.84M|  return true;
  101|  3.84M|}
bind.cc:_ZN4absl19str_format_internal12_GLOBAL__N_116DefaultConverterC2EPNS0_14FormatSinkImplE:
  138|  1.47M|  explicit DefaultConverter(FormatSinkImpl* sink) : sink_(sink) {}
bind.cc:_ZN4absl19str_format_internal12_GLOBAL__N_110ConvertAllINS1_16DefaultConverterEEEbNS0_21UntypedFormatSpecImplENS_4SpanIKNS0_13FormatArgImplEEET_:
  126|  1.47M|                absl::Span<const FormatArgImpl> args, Converter converter) {
  127|  1.47M|  if (format.has_parsed_conversion()) {
  ------------------
  |  Branch (127:7): [True: 0, False: 1.47M]
  ------------------
  128|      0|    return format.parsed_conversion()->ProcessFormat(
  129|      0|        ConverterConsumer<Converter>(converter, args));
  130|  1.47M|  } else {
  131|  1.47M|    return ParseFormatString(format.str(),
  132|  1.47M|                             ConverterConsumer<Converter>(converter, args));
  133|  1.47M|  }
  134|  1.47M|}
bind.cc:_ZN4absl19str_format_internal12_GLOBAL__N_117ConverterConsumerINS1_16DefaultConverterEE10ConvertOneERKNS0_17UnboundConversionENSt3__117basic_string_viewIcNS8_11char_traitsIcEEEE:
  113|  3.84M|  bool ConvertOne(const UnboundConversion& conv, string_view conv_string) {
  114|  3.84M|    BoundConversion bound;
  115|  3.84M|    if (!arg_context_.Bind(&conv, &bound)) return false;
  ------------------
  |  Branch (115:9): [True: 0, False: 3.84M]
  ------------------
  116|  3.84M|    return converter_.ConvertOne(bound, conv_string);
  117|  3.84M|  }
bind.cc:_ZNK4absl19str_format_internal12_GLOBAL__N_116DefaultConverter10ConvertOneERKNS0_15BoundConversionENSt3__117basic_string_viewIcNS6_11char_traitsIcEEEE:
  142|  3.84M|  bool ConvertOne(const BoundConversion& bound, string_view /*conv*/) const {
  143|  3.84M|    return FormatArgImplFriend::Convert(*bound.arg(), bound, sink_);
  144|  3.84M|  }
bind.cc:_ZN4absl19str_format_internal12_GLOBAL__N_117ConverterConsumerINS1_16DefaultConverterEE6AppendENSt3__117basic_string_viewIcNS5_11char_traitsIcEEEE:
  109|  3.84M|  bool Append(string_view s) {
  110|  3.84M|    converter_.Append(s);
  111|  3.84M|    return true;
  112|  3.84M|  }
bind.cc:_ZNK4absl19str_format_internal12_GLOBAL__N_116DefaultConverter6AppendENSt3__117basic_string_viewIcNS3_11char_traitsIcEEEE:
  140|  3.84M|  void Append(string_view s) const { sink_->Append(s); }
bind.cc:_ZN4absl19str_format_internal12_GLOBAL__N_117ConverterConsumerINS1_16DefaultConverterEEC2ES3_NS_4SpanIKNS0_13FormatArgImplEEE:
  107|  1.47M|      : converter_(converter), arg_context_(pack) {}

_ZN4absl19str_format_internal21UntypedFormatSpecImpl7ExtractINS0_18FormatSpecTemplateIJLNS_23FormatConversionCharSetE655355EEEEEERKS1_RKT_:
   69|  1.63k|  static const UntypedFormatSpecImpl& Extract(const T& s) {
   70|  1.63k|    return s.spec_;
   71|  1.63k|  }
_ZN4absl19str_format_internal18FormatSpecTemplateIJLNS_23FormatConversionCharSetE655355EEEC2EUa9enable_ifIXclL_ZNS0_15ValidFormatImplIJLS2_655355EEEEbNSt3__117basic_string_viewIcNS5_11char_traitsIcEEEEEfL0p_EEEPKc:
  155|  1.63k|      : Base(s) {}
_ZN4absl19str_format_internal21UntypedFormatSpecImplC2ENSt3__117basic_string_viewIcNS2_11char_traitsIcEEEE:
   52|  1.47M|      : data_(s.data()), size_(s.size()) {}
_ZN4absl19str_format_internal21UntypedFormatSpecImpl7ExtractINS0_18FormatSpecTemplateIJLNS_23FormatConversionCharSetE524292ELS4_655355ELS4_262148EEEEEERKS1_RKT_:
   69|   681k|  static const UntypedFormatSpecImpl& Extract(const T& s) {
   70|   681k|    return s.spec_;
   71|   681k|  }
_ZN4absl19str_format_internal18FormatSpecTemplateIJLNS_23FormatConversionCharSetE524292ELS2_655355ELS2_262148EEEC2EUa9enable_ifIXclL_ZNS0_15ValidFormatImplIJLS2_524292ELS2_655355ELS2_262148EEEEbNSt3__117basic_string_viewIcNS5_11char_traitsIcEEEEEfL0p_EEEPKc:
  155|   681k|      : Base(s) {}
_ZN4absl19str_format_internal21UntypedFormatSpecImpl7ExtractINS0_18FormatSpecTemplateIJLNS_23FormatConversionCharSetE524292ELS4_262148EEEEEERKS1_RKT_:
   69|   675k|  static const UntypedFormatSpecImpl& Extract(const T& s) {
   70|   675k|    return s.spec_;
   71|   675k|  }
_ZN4absl19str_format_internal18FormatSpecTemplateIJLNS_23FormatConversionCharSetE524292ELS2_262148EEEC2EUa9enable_ifIXclL_ZNS0_15ValidFormatImplIJLS2_524292ELS2_262148EEEEbNSt3__117basic_string_viewIcNS5_11char_traitsIcEEEEEfL0p_EEEPKc:
  155|   675k|      : Base(s) {}
_ZN4absl19str_format_internal21UntypedFormatSpecImpl7ExtractINS0_18FormatSpecTemplateIJLNS_23FormatConversionCharSetE524292EEEEEERKS1_RKT_:
   69|    534|  static const UntypedFormatSpecImpl& Extract(const T& s) {
   70|    534|    return s.spec_;
   71|    534|  }
_ZN4absl19str_format_internal18FormatSpecTemplateIJLNS_23FormatConversionCharSetE524292EEEC2EUa9enable_ifIXclL_ZNS0_15ValidFormatImplIJLS2_524292EEEEbNSt3__117basic_string_viewIcNS5_11char_traitsIcEEEEEfL0p_EEEPKc:
  155|    534|      : Base(s) {}
_ZNK4absl19str_format_internal15BoundConversion3argEv:
   39|  3.84M|  const FormatArgImpl* arg() const { return arg_; }
_ZN4absl19str_format_internal15BoundConversion7set_argEPKNS0_13FormatArgImplE:
   40|  3.84M|  void set_arg(const FormatArgImpl* a) { arg_ = a; }
_ZNK4absl19str_format_internal21UntypedFormatSpecImpl21has_parsed_conversionEv:
   57|  1.47M|  bool has_parsed_conversion() const { return size_ == ~size_t{}; }
_ZNK4absl19str_format_internal21UntypedFormatSpecImpl3strEv:
   59|  1.47M|  string_view str() const {
   60|  1.47M|    assert(!has_parsed_conversion());
   61|  1.47M|    return string_view(static_cast<const char*>(data_), size_);
   62|  1.47M|  }
_ZN4absl19str_format_internal21UntypedFormatSpecImpl7ExtractINS0_18FormatSpecTemplateIJLNS_23FormatConversionCharSetE524292ELS4_655355ELS4_655355ELS4_524292EEEEEERKS1_RKT_:
   69|   112k|  static const UntypedFormatSpecImpl& Extract(const T& s) {
   70|   112k|    return s.spec_;
   71|   112k|  }
_ZN4absl19str_format_internal18FormatSpecTemplateIJLNS_23FormatConversionCharSetE524292ELS2_655355ELS2_655355ELS2_524292EEEC2EUa9enable_ifIXclL_ZNS0_15ValidFormatImplIJLS2_524292ELS2_655355ELS2_655355ELS2_524292EEEEbNSt3__117basic_string_viewIcNS5_11char_traitsIcEEEEEfL0p_EEEPKc:
  155|   112k|      : Base(s) {}

_ZN4absl19str_format_internal17UnboundConversionC2Ev:
   35|  3.84M|  UnboundConversion() {}  // NOLINT
_ZNK4absl19str_format_internal7ConvTag7is_convEv:
   93|  4.29M|  constexpr bool is_conv() const { return (tag_ & 0x80) == 0; }
_ZNK4absl19str_format_internal7ConvTag9is_lengthEv:
   94|   224k|  constexpr bool is_length() const { return (tag_ & 0xC0) == 0x80; }
_ZNK4absl19str_format_internal7ConvTag7as_convEv:
   97|  3.84M|  constexpr FormatConversionChar as_conv() const {
   98|  3.84M|    assert(is_conv());
   99|  3.84M|    assert(!is_length());
  100|  3.84M|    assert(!is_flags());
  101|  3.84M|    return static_cast<FormatConversionChar>(tag_);
  102|  3.84M|  }
_ZNK4absl19str_format_internal7ConvTag9as_lengthEv:
  103|   224k|  constexpr LengthMod as_length() const {
  104|   224k|    assert(!is_conv());
  105|   224k|    assert(is_length());
  106|   224k|    assert(!is_flags());
  107|   224k|    return static_cast<LengthMod>(tag_ & 0x3F);
  108|   224k|  }
_ZN4absl19str_format_internal17ConsumeConversionILb0EEEPKcS3_S3_PNS0_17UnboundConversionEPi:
  215|   224k|                                        int* next_arg) {
  216|   224k|  const char* const original_pos = pos;
  217|   224k|  char c = 0;
  218|       |  // Read the next char into `c` and update `pos`. Returns false if there are
  219|       |  // no more chars to read.
  220|   224k|#define ABSL_FORMAT_PARSER_INTERNAL_GET_CHAR()          \
  221|   224k|  do {                                                  \
  222|   224k|    if (ABSL_PREDICT_FALSE(pos == end)) return nullptr; \
  223|   224k|    c = *pos++;                                         \
  224|   224k|  } while (0)
  225|       |
  226|   224k|  if (is_positional) {
  ------------------
  |  Branch (226:7): [Folded - Ignored]
  ------------------
  227|      0|    ABSL_FORMAT_PARSER_INTERNAL_GET_CHAR();
  ------------------
  |  |  221|      0|  do {                                                  \
  |  |  222|      0|    if (ABSL_PREDICT_FALSE(pos == end)) return nullptr; \
  |  |  ------------------
  |  |  |  |  177|      0|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (177:31): [True: 0, False: 0]
  |  |  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  |  |  Branch (177:58): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  223|      0|    c = *pos++;                                         \
  |  |  224|      0|  } while (0)
  |  |  ------------------
  |  |  |  Branch (224:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  228|      0|    if (ABSL_PREDICT_FALSE(c < '1' || c > '9')) return nullptr;
  ------------------
  |  |  177|      0|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (177:31): [True: 0, False: 0]
  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  Branch (177:59): [True: 0, False: 0]
  |  |  |  Branch (177:59): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  229|      0|    conv->arg_position = ParseDigits(c, pos, end);
  230|      0|    assert(conv->arg_position > 0);
  231|      0|    if (ABSL_PREDICT_FALSE(c != '$')) return nullptr;
  ------------------
  |  |  177|      0|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (177:31): [True: 0, False: 0]
  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  Branch (177:58): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  232|      0|  }
  233|       |
  234|   224k|  ABSL_FORMAT_PARSER_INTERNAL_GET_CHAR();
  ------------------
  |  |  221|   224k|  do {                                                  \
  |  |  222|   224k|    if (ABSL_PREDICT_FALSE(pos == end)) return nullptr; \
  |  |  ------------------
  |  |  |  |  177|   224k|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (177:31): [True: 0, False: 224k]
  |  |  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  |  |  Branch (177:58): [True: 0, False: 224k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  223|   224k|    c = *pos++;                                         \
  |  |  224|   224k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (224:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  235|       |
  236|       |  // We should start with the basic flag on.
  237|   224k|  assert(conv->flags == Flags::kBasic);
  238|       |
  239|       |  // Any non alpha character makes this conversion not basic.
  240|       |  // This includes flags (-+ #0), width (1-9, *) or precision (.).
  241|       |  // All conversion characters and length modifiers are alpha characters.
  242|   224k|  if (c < 'A') {
  ------------------
  |  Branch (242:7): [True: 0, False: 224k]
  ------------------
  243|      0|    while (c <= '0') {
  ------------------
  |  Branch (243:12): [True: 0, False: 0]
  ------------------
  244|      0|      auto tag = GetTagForChar(c);
  245|      0|      if (tag.is_flags()) {
  ------------------
  |  Branch (245:11): [True: 0, False: 0]
  ------------------
  246|      0|        conv->flags = conv->flags | tag.as_flags();
  247|      0|        ABSL_FORMAT_PARSER_INTERNAL_GET_CHAR();
  ------------------
  |  |  221|      0|  do {                                                  \
  |  |  222|      0|    if (ABSL_PREDICT_FALSE(pos == end)) return nullptr; \
  |  |  ------------------
  |  |  |  |  177|      0|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (177:31): [True: 0, False: 0]
  |  |  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  |  |  Branch (177:58): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  223|      0|    c = *pos++;                                         \
  |  |  224|      0|  } while (0)
  |  |  ------------------
  |  |  |  Branch (224:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  248|      0|      } else {
  249|      0|        break;
  250|      0|      }
  251|      0|    }
  252|       |
  253|      0|    if (c <= '9') {
  ------------------
  |  Branch (253:9): [True: 0, False: 0]
  ------------------
  254|      0|      if (c >= '0') {
  ------------------
  |  Branch (254:11): [True: 0, False: 0]
  ------------------
  255|      0|        int maybe_width = ParseDigits(c, pos, end);
  256|      0|        if (!is_positional && c == '$') {
  ------------------
  |  Branch (256:13): [Folded - Ignored]
  |  Branch (256:31): [True: 0, False: 0]
  ------------------
  257|      0|          if (ABSL_PREDICT_FALSE(*next_arg != 0)) return nullptr;
  ------------------
  |  |  177|      0|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (177:31): [True: 0, False: 0]
  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  Branch (177:58): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  258|       |          // Positional conversion.
  259|      0|          *next_arg = -1;
  260|      0|          return ConsumeConversion<true>(original_pos, end, conv, next_arg);
  261|      0|        }
  262|      0|        conv->flags = conv->flags | Flags::kNonBasic;
  263|      0|        conv->width.set_value(maybe_width);
  264|      0|      } else if (c == '*') {
  ------------------
  |  Branch (264:18): [True: 0, False: 0]
  ------------------
  265|      0|        conv->flags = conv->flags | Flags::kNonBasic;
  266|      0|        ABSL_FORMAT_PARSER_INTERNAL_GET_CHAR();
  ------------------
  |  |  221|      0|  do {                                                  \
  |  |  222|      0|    if (ABSL_PREDICT_FALSE(pos == end)) return nullptr; \
  |  |  ------------------
  |  |  |  |  177|      0|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (177:31): [True: 0, False: 0]
  |  |  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  |  |  Branch (177:58): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  223|      0|    c = *pos++;                                         \
  |  |  224|      0|  } while (0)
  |  |  ------------------
  |  |  |  Branch (224:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  267|      0|        if (is_positional) {
  ------------------
  |  Branch (267:13): [Folded - Ignored]
  ------------------
  268|      0|          if (ABSL_PREDICT_FALSE(c < '1' || c > '9')) return nullptr;
  ------------------
  |  |  177|      0|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (177:31): [True: 0, False: 0]
  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  Branch (177:59): [True: 0, False: 0]
  |  |  |  Branch (177:59): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  269|      0|          conv->width.set_from_arg(ParseDigits(c, pos, end));
  270|      0|          if (ABSL_PREDICT_FALSE(c != '$')) return nullptr;
  ------------------
  |  |  177|      0|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (177:31): [True: 0, False: 0]
  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  Branch (177:58): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  271|      0|          ABSL_FORMAT_PARSER_INTERNAL_GET_CHAR();
  ------------------
  |  |  221|      0|  do {                                                  \
  |  |  222|      0|    if (ABSL_PREDICT_FALSE(pos == end)) return nullptr; \
  |  |  ------------------
  |  |  |  |  177|      0|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (177:31): [True: 0, False: 0]
  |  |  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  |  |  Branch (177:58): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  223|      0|    c = *pos++;                                         \
  |  |  224|      0|  } while (0)
  |  |  ------------------
  |  |  |  Branch (224:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  272|      0|        } else {
  273|      0|          conv->width.set_from_arg(++*next_arg);
  274|      0|        }
  275|      0|      }
  276|      0|    }
  277|       |
  278|      0|    if (c == '.') {
  ------------------
  |  Branch (278:9): [True: 0, False: 0]
  ------------------
  279|      0|      conv->flags = conv->flags | Flags::kNonBasic;
  280|      0|      ABSL_FORMAT_PARSER_INTERNAL_GET_CHAR();
  ------------------
  |  |  221|      0|  do {                                                  \
  |  |  222|      0|    if (ABSL_PREDICT_FALSE(pos == end)) return nullptr; \
  |  |  ------------------
  |  |  |  |  177|      0|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (177:31): [True: 0, False: 0]
  |  |  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  |  |  Branch (177:58): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  223|      0|    c = *pos++;                                         \
  |  |  224|      0|  } while (0)
  |  |  ------------------
  |  |  |  Branch (224:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  281|      0|      if ('0' <= c && c <= '9') {
  ------------------
  |  Branch (281:11): [True: 0, False: 0]
  |  Branch (281:23): [True: 0, False: 0]
  ------------------
  282|      0|        conv->precision.set_value(ParseDigits(c, pos, end));
  283|      0|      } else if (c == '*') {
  ------------------
  |  Branch (283:18): [True: 0, False: 0]
  ------------------
  284|      0|        ABSL_FORMAT_PARSER_INTERNAL_GET_CHAR();
  ------------------
  |  |  221|      0|  do {                                                  \
  |  |  222|      0|    if (ABSL_PREDICT_FALSE(pos == end)) return nullptr; \
  |  |  ------------------
  |  |  |  |  177|      0|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (177:31): [True: 0, False: 0]
  |  |  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  |  |  Branch (177:58): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  223|      0|    c = *pos++;                                         \
  |  |  224|      0|  } while (0)
  |  |  ------------------
  |  |  |  Branch (224:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  285|      0|        if (is_positional) {
  ------------------
  |  Branch (285:13): [Folded - Ignored]
  ------------------
  286|      0|          if (ABSL_PREDICT_FALSE(c < '1' || c > '9')) return nullptr;
  ------------------
  |  |  177|      0|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (177:31): [True: 0, False: 0]
  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  Branch (177:59): [True: 0, False: 0]
  |  |  |  Branch (177:59): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  287|      0|          conv->precision.set_from_arg(ParseDigits(c, pos, end));
  288|      0|          if (c != '$') return nullptr;
  ------------------
  |  Branch (288:15): [True: 0, False: 0]
  ------------------
  289|      0|          ABSL_FORMAT_PARSER_INTERNAL_GET_CHAR();
  ------------------
  |  |  221|      0|  do {                                                  \
  |  |  222|      0|    if (ABSL_PREDICT_FALSE(pos == end)) return nullptr; \
  |  |  ------------------
  |  |  |  |  177|      0|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (177:31): [True: 0, False: 0]
  |  |  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  |  |  Branch (177:58): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  223|      0|    c = *pos++;                                         \
  |  |  224|      0|  } while (0)
  |  |  ------------------
  |  |  |  Branch (224:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  290|      0|        } else {
  291|      0|          conv->precision.set_from_arg(++*next_arg);
  292|      0|        }
  293|      0|      } else {
  294|      0|        conv->precision.set_value(0);
  295|      0|      }
  296|      0|    }
  297|      0|  }
  298|       |
  299|   224k|  auto tag = GetTagForChar(c);
  300|       |
  301|   224k|  if (ABSL_PREDICT_FALSE(c == 'v' && conv->flags != Flags::kBasic)) {
  ------------------
  |  |  177|   224k|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (177:31): [True: 0, False: 224k]
  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  Branch (177:59): [True: 0, False: 224k]
  |  |  |  Branch (177:59): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  302|      0|    return nullptr;
  303|      0|  }
  304|       |
  305|   224k|  if (ABSL_PREDICT_FALSE(!tag.is_conv())) {
  ------------------
  |  |  177|   224k|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (177:31): [True: 224k, False: 0]
  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  Branch (177:58): [True: 224k, False: 0]
  |  |  ------------------
  ------------------
  306|   224k|    if (ABSL_PREDICT_FALSE(!tag.is_length())) return nullptr;
  ------------------
  |  |  177|   224k|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (177:31): [True: 0, False: 224k]
  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  Branch (177:58): [True: 0, False: 224k]
  |  |  ------------------
  ------------------
  307|       |
  308|       |    // It is a length modifier.
  309|   224k|    using str_format_internal::LengthMod;
  310|   224k|    LengthMod length_mod = tag.as_length();
  311|   224k|    ABSL_FORMAT_PARSER_INTERNAL_GET_CHAR();
  ------------------
  |  |  221|   224k|  do {                                                  \
  |  |  222|   224k|    if (ABSL_PREDICT_FALSE(pos == end)) return nullptr; \
  |  |  ------------------
  |  |  |  |  177|   224k|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (177:31): [True: 0, False: 224k]
  |  |  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  |  |  Branch (177:58): [True: 0, False: 224k]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  223|   224k|    c = *pos++;                                         \
  |  |  224|   224k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (224:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  312|   224k|    if (c == 'h' && length_mod == LengthMod::h) {
  ------------------
  |  Branch (312:9): [True: 0, False: 224k]
  |  Branch (312:21): [True: 0, False: 0]
  ------------------
  313|      0|      conv->length_mod = LengthMod::hh;
  314|      0|      ABSL_FORMAT_PARSER_INTERNAL_GET_CHAR();
  ------------------
  |  |  221|      0|  do {                                                  \
  |  |  222|      0|    if (ABSL_PREDICT_FALSE(pos == end)) return nullptr; \
  |  |  ------------------
  |  |  |  |  177|      0|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (177:31): [True: 0, False: 0]
  |  |  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  |  |  Branch (177:58): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  223|      0|    c = *pos++;                                         \
  |  |  224|      0|  } while (0)
  |  |  ------------------
  |  |  |  Branch (224:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  315|   224k|    } else if (c == 'l' && length_mod == LengthMod::l) {
  ------------------
  |  Branch (315:16): [True: 0, False: 224k]
  |  Branch (315:28): [True: 0, False: 0]
  ------------------
  316|      0|      conv->length_mod = LengthMod::ll;
  317|      0|      ABSL_FORMAT_PARSER_INTERNAL_GET_CHAR();
  ------------------
  |  |  221|      0|  do {                                                  \
  |  |  222|      0|    if (ABSL_PREDICT_FALSE(pos == end)) return nullptr; \
  |  |  ------------------
  |  |  |  |  177|      0|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (177:31): [True: 0, False: 0]
  |  |  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  |  |  Branch (177:58): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  223|      0|    c = *pos++;                                         \
  |  |  224|      0|  } while (0)
  |  |  ------------------
  |  |  |  Branch (224:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  318|   224k|    } else {
  319|   224k|      conv->length_mod = length_mod;
  320|   224k|    }
  321|   224k|    tag = GetTagForChar(c);
  322|       |
  323|   224k|    if (ABSL_PREDICT_FALSE(c == 'v')) return nullptr;
  ------------------
  |  |  177|   224k|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (177:31): [True: 0, False: 224k]
  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  Branch (177:58): [True: 0, False: 224k]
  |  |  ------------------
  ------------------
  324|   224k|    if (ABSL_PREDICT_FALSE(!tag.is_conv())) return nullptr;
  ------------------
  |  |  177|   224k|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (177:31): [True: 0, False: 224k]
  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  Branch (177:58): [True: 0, False: 224k]
  |  |  ------------------
  ------------------
  325|   224k|  }
  326|       |
  327|   224k|  assert(CheckFastPathSetting(*conv));
  328|   224k|  (void)(&CheckFastPathSetting);
  329|       |
  330|   224k|  conv->conv = tag.as_conv();
  331|   224k|  if (!is_positional) conv->arg_position = ++*next_arg;
  ------------------
  |  Branch (331:7): [Folded - Ignored]
  ------------------
  332|   224k|  return pos;
  333|   224k|}
_ZN4absl19str_format_internal13GetTagForCharEc:
  168|  4.29M|constexpr ConvTag GetTagForChar(char c) {
  169|  4.29M|  return ConvTagHolder::value[static_cast<unsigned char>(c)];
  170|  4.29M|}
_ZN4absl19str_format_internal24ConsumeUnboundConversionEPKcS2_PNS0_17UnboundConversionEPi:
  342|   224k|                                               int* next_arg) {
  343|   224k|  if (*next_arg < 0) return ConsumeConversion<true>(p, end, conv, next_arg);
  ------------------
  |  Branch (343:7): [True: 0, False: 224k]
  ------------------
  344|   224k|  return ConsumeConversion<false>(p, end, conv, next_arg);
  345|   224k|}

_ZNK4absl19str_format_internal24FormatConversionSpecImpl15conversion_charEv:
  288|  10.8M|  FormatConversionChar conversion_char() const {
  289|       |    // Keep this field first in the struct . It generates better code when
  290|       |    // accessing it when ConversionSpec is passed by value in registers.
  291|  10.8M|    static_assert(offsetof(FormatConversionSpecImpl, conv_) == 0, "");
  292|  10.8M|    return conv_;
  293|  10.8M|  }
_ZN4absl19str_format_internal8ContainsENS_23FormatConversionCharSetENS_20FormatConversionCharE:
  436|  3.84M|constexpr bool Contains(FormatConversionCharSet set, FormatConversionChar c) {
  437|  3.84M|  return (static_cast<uint64_t>(set) & FormatConversionCharToConvInt(c)) != 0;
  438|  3.84M|}
_ZN4absl19str_format_internal29FormatConversionCharToConvIntENS_20FormatConversionCharE:
  354|  3.84M|constexpr uint64_t FormatConversionCharToConvInt(FormatConversionChar c) {
  355|  3.84M|  return uint64_t{1} << (1 + static_cast<uint8_t>(c));
  356|  3.84M|}
_ZN4absl19str_format_internal17FormatRawSinkImpl5WriteENSt3__117basic_string_viewIcNS2_11char_traitsIcEEEE:
   49|  1.47M|  void Write(string_view s) { write_(sink_, s); }
_ZN4absl19str_format_internal14FormatSinkImplC2ENS0_17FormatRawSinkImplE:
   69|  1.47M|  explicit FormatSinkImpl(FormatRawSinkImpl raw) : raw_(raw) {}
_ZN4absl19str_format_internal14FormatSinkImplD2Ev:
   71|  1.47M|  ~FormatSinkImpl() { Flush(); }
_ZN4absl19str_format_internal14FormatSinkImpl5FlushEv:
   73|  1.47M|  void Flush() {
   74|  1.47M|    raw_.Write(string_view(buf_, static_cast<size_t>(pos_ - buf_)));
   75|  1.47M|    pos_ = buf_;
   76|  1.47M|  }
_ZN4absl19str_format_internal14FormatSinkImpl6AppendENSt3__117basic_string_viewIcNS2_11char_traitsIcEEEE:
   95|  7.69M|  void Append(string_view v) {
   96|  7.69M|    size_t n = v.size();
   97|  7.69M|    if (n == 0) return;
  ------------------
  |  Branch (97:9): [True: 1.35M, False: 6.33M]
  ------------------
   98|  6.33M|    size_ += n;
   99|  6.33M|    if (n >= Avail()) {
  ------------------
  |  Branch (99:9): [True: 482, False: 6.33M]
  ------------------
  100|    482|      Flush();
  101|    482|      raw_.Write(v);
  102|    482|      return;
  103|    482|    }
  104|  6.33M|    memcpy(pos_, v.data(), n);
  105|  6.33M|    pos_ += n;
  106|  6.33M|  }
_ZNK4absl19str_format_internal14FormatSinkImpl5AvailEv:
  124|  6.33M|  size_t Avail() const {
  125|  6.33M|    return static_cast<size_t>(buf_ + sizeof(buf_) - pos_);
  126|  6.33M|  }
_ZNK4absl19str_format_internal24FormatConversionSpecImpl8is_basicEv:
  277|  3.84M|  bool is_basic() const { return flags_ == Flags::kBasic; }
_ZNK4absl19str_format_internal24FormatConversionSpecImpl9precisionEv:
  302|  1.35M|  int precision() const { return precision_; }
_ZN4absl19str_format_internal30FormatConversionSpecImplFriend8SetFlagsENS0_5FlagsEPNS0_24FormatConversionSpecImplE:
  318|  3.84M|  static void SetFlags(Flags f, FormatConversionSpecImpl* conv) {
  319|  3.84M|    conv->flags_ = f;
  320|  3.84M|  }
_ZN4absl19str_format_internal30FormatConversionSpecImplFriend17SetConversionCharENS_20FormatConversionCharEPNS0_24FormatConversionSpecImplE:
  322|  3.84M|                                FormatConversionSpecImpl* conv) {
  323|  3.84M|    conv->conv_ = c;
  324|  3.84M|  }
_ZN4absl19str_format_internal30FormatConversionSpecImplFriend8SetWidthEiPNS0_24FormatConversionSpecImplE:
  325|  3.84M|  static void SetWidth(int w, FormatConversionSpecImpl* conv) {
  326|  3.84M|    conv->width_ = w;
  327|  3.84M|  }
_ZN4absl19str_format_internal30FormatConversionSpecImplFriend12SetPrecisionEiPNS0_24FormatConversionSpecImplE:
  328|  3.84M|  static void SetPrecision(int p, FormatConversionSpecImpl* conv) {
  329|  3.84M|    conv->precision_ = p;
  330|  3.84M|  }
_ZN4absl19str_format_internal17FormatRawSinkImplC2INSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEELPv0EEEPT_:
   47|  1.47M|      : sink_(raw), write_(&FormatRawSinkImpl::Flush<T>) {}
_ZN4absl19str_format_internal17FormatRawSinkImpl5FlushINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEvPvNS3_17basic_string_viewIcS6_EE:
   58|  1.47M|  static void Flush(void* r, string_view s) {
   59|  1.47M|    str_format_internal::InvokeFlush(static_cast<T*>(r), s);
   60|  1.47M|  }

_ZN4absl19str_format_internal15AbslFormatFlushEPNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS1_17basic_string_viewIcS4_EE:
   71|  1.47M|inline void AbslFormatFlush(std::string* out, string_view s) {
   72|  1.47M|  out->append(s.data(), s.size());
   73|  1.47M|}
_ZN4absl19str_format_internal11InvokeFlushINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEEDTcl15AbslFormatFlushfp_fp0_EEPT_NS2_17basic_string_viewIcS5_EE:
   89|  1.47M|auto InvokeFlush(T* out, string_view s) -> decltype(AbslFormatFlush(out, s)) {
   90|  1.47M|  AbslFormatFlush(out, s);
   91|  1.47M|}

_ZN4absl19str_format_internal32ConsumeUnboundConversionNoInlineEPKcS2_PNS0_17UnboundConversionEPi:
   38|   224k|    const char* p, const char* end, UnboundConversion* conv, int* next_arg) {
   39|   224k|  return ConsumeUnboundConversion(p, end, conv, next_arg);
   40|   224k|}

bind.cc:_ZN4absl19str_format_internal17ParseFormatStringINS0_12_GLOBAL__N_117ConverterConsumerINS2_16DefaultConverterEEEEEbNSt3__117basic_string_viewIcNS6_11char_traitsIcEEEET_:
   56|  1.47M|bool ParseFormatString(string_view src, Consumer consumer) {
   57|  1.47M|  int next_arg = 0;
   58|  1.47M|  const char* p = src.data();
   59|  1.47M|  const char* const end = p + src.size();
   60|  5.31M|  while (p != end) {
  ------------------
  |  Branch (60:10): [True: 3.84M, False: 1.46M]
  ------------------
   61|  3.84M|    const char* percent =
   62|  3.84M|        static_cast<const char*>(memchr(p, '%', static_cast<size_t>(end - p)));
   63|  3.84M|    if (!percent) {
  ------------------
  |  Branch (63:9): [True: 1.62k, False: 3.84M]
  ------------------
   64|       |      // We found the last substring.
   65|  1.62k|      return consumer.Append(string_view(p, static_cast<size_t>(end - p)));
   66|  1.62k|    }
   67|       |    // We found a percent, so push the text run then process the percent.
   68|  3.84M|    if (ABSL_PREDICT_FALSE(!consumer.Append(
  ------------------
  |  |  177|  3.84M|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (177:31): [True: 0, False: 3.84M]
  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  Branch (177:58): [True: 0, False: 3.84M]
  |  |  ------------------
  ------------------
   69|  3.84M|            string_view(p, static_cast<size_t>(percent - p))))) {
   70|      0|      return false;
   71|      0|    }
   72|  3.84M|    if (ABSL_PREDICT_FALSE(percent + 1 >= end)) return false;
  ------------------
  |  |  177|  3.84M|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (177:31): [True: 0, False: 3.84M]
  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  Branch (177:58): [True: 0, False: 3.84M]
  |  |  ------------------
  ------------------
   73|       |
   74|  3.84M|    auto tag = GetTagForChar(percent[1]);
   75|  3.84M|    if (tag.is_conv()) {
  ------------------
  |  Branch (75:9): [True: 3.62M, False: 224k]
  ------------------
   76|  3.62M|      if (ABSL_PREDICT_FALSE(next_arg < 0)) {
  ------------------
  |  |  177|  3.62M|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (177:31): [True: 0, False: 3.62M]
  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  Branch (177:58): [True: 0, False: 3.62M]
  |  |  ------------------
  ------------------
   77|       |        // This indicates an error in the format string.
   78|       |        // The only way to get `next_arg < 0` here is to have a positional
   79|       |        // argument first which sets next_arg to -1 and then a non-positional
   80|       |        // argument.
   81|      0|        return false;
   82|      0|      }
   83|  3.62M|      p = percent + 2;
   84|       |
   85|       |      // Keep this case separate from the one below.
   86|       |      // ConvertOne is more efficient when the compiler can see that the `basic`
   87|       |      // flag is set.
   88|  3.62M|      UnboundConversion conv;
   89|  3.62M|      conv.conv = tag.as_conv();
   90|  3.62M|      conv.arg_position = ++next_arg;
   91|  3.62M|      if (ABSL_PREDICT_FALSE(
  ------------------
  |  |  177|  3.62M|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (177:31): [True: 0, False: 3.62M]
  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  Branch (177:58): [True: 0, False: 3.62M]
  |  |  ------------------
  ------------------
   92|  3.62M|              !consumer.ConvertOne(conv, string_view(percent + 1, 1)))) {
   93|      0|        return false;
   94|      0|      }
   95|  3.62M|    } else if (percent[1] != '%') {
  ------------------
  |  Branch (95:16): [True: 224k, False: 0]
  ------------------
   96|   224k|      UnboundConversion conv;
   97|   224k|      p = ConsumeUnboundConversionNoInline(percent + 1, end, &conv, &next_arg);
   98|   224k|      if (ABSL_PREDICT_FALSE(p == nullptr)) return false;
  ------------------
  |  |  177|   224k|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (177:31): [True: 0, False: 224k]
  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  Branch (177:58): [True: 0, False: 224k]
  |  |  ------------------
  ------------------
   99|   224k|      if (ABSL_PREDICT_FALSE(!consumer.ConvertOne(
  ------------------
  |  |  177|   224k|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (177:31): [True: 0, False: 224k]
  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  Branch (177:58): [True: 0, False: 224k]
  |  |  ------------------
  ------------------
  100|   224k|              conv, string_view(percent + 1,
  101|   224k|                                static_cast<size_t>(p - (percent + 1)))))) {
  102|      0|        return false;
  103|      0|      }
  104|   224k|    } else {
  105|      0|      if (ABSL_PREDICT_FALSE(!consumer.Append("%"))) return false;
  ------------------
  |  |  177|      0|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (177:31): [True: 0, False: 0]
  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  Branch (177:58): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  106|      0|      p = percent + 2;
  107|      0|      continue;
  108|      0|    }
  109|  3.84M|  }
  110|  1.46M|  return true;
  111|  1.47M|}

_ZN4absl16strings_internal9JoinRangeINSt3__16vectorINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS7_IS9_EEEEEES9_RKT_NS2_17basic_string_viewIcS6_EE:
  307|  6.71k|std::string JoinRange(const Range& range, absl::string_view separator) {
  308|  6.71k|  using std::begin;
  309|  6.71k|  using std::end;
  310|  6.71k|  return JoinRange(begin(range), end(range), separator);
  311|  6.71k|}
_ZN4absl16strings_internal9JoinRangeINSt3__111__wrap_iterIPKNS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEEEES9_T_SD_NS2_17basic_string_viewIcS6_EE:
  291|  6.71k|                      absl::string_view separator) {
  292|       |  // No formatter was explicitly given, so a default must be chosen.
  293|  6.71k|  typedef typename std::iterator_traits<Iterator>::value_type ValueType;
  294|  6.71k|  typedef typename DefaultFormatter<ValueType>::Type Formatter;
  295|  6.71k|  return JoinAlgorithm(first, last, separator, Formatter());
  296|  6.71k|}
_ZN4absl16strings_internal13JoinAlgorithmINSt3__111__wrap_iterIPKNS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEEvEES9_T_SD_NS2_17basic_string_viewIcS6_EENS0_11NoFormatterE:
  228|  6.71k|                          NoFormatter) {
  229|  6.71k|  std::string result;
  230|  6.71k|  if (start != end) {
  ------------------
  |  Branch (230:7): [True: 6.71k, False: 0]
  ------------------
  231|       |    // Sums size
  232|  6.71k|    auto&& start_value = *start;
  233|  6.71k|    size_t result_size = start_value.size();
  234|   112k|    for (Iterator it = start; ++it != end;) {
  ------------------
  |  Branch (234:31): [True: 105k, False: 6.71k]
  ------------------
  235|   105k|      result_size += s.size();
  236|   105k|      result_size += (*it).size();
  237|   105k|    }
  238|       |
  239|  6.71k|    if (result_size > 0) {
  ------------------
  |  Branch (239:9): [True: 6.71k, False: 0]
  ------------------
  240|  6.71k|      STLStringResizeUninitialized(&result, result_size);
  241|       |
  242|       |      // Joins strings
  243|  6.71k|      char* result_buf = &*result.begin();
  244|       |
  245|  6.71k|      memcpy(result_buf, start_value.data(), start_value.size());
  246|  6.71k|      result_buf += start_value.size();
  247|   112k|      for (Iterator it = start; ++it != end;) {
  ------------------
  |  Branch (247:33): [True: 105k, False: 6.71k]
  ------------------
  248|   105k|        memcpy(result_buf, s.data(), s.size());
  249|   105k|        result_buf += s.size();
  250|   105k|        auto&& value = *it;
  251|   105k|        memcpy(result_buf, value.data(), value.size());
  252|   105k|        result_buf += value.size();
  253|   105k|      }
  254|  6.71k|    }
  255|  6.71k|  }
  256|       |
  257|  6.71k|  return result;
  258|  6.71k|}

_ZN4absl16strings_internal23ConvertibleToStringViewC2ENSt3__117basic_string_viewIcNS2_11char_traitsIcEEEE:
   63|  9.21k|      : value_(s) {}
_ZNK4absl16strings_internal23ConvertibleToStringView5valueEv:
   71|  9.21k|  absl::string_view value() const { return value_; }
_ZN4absl16strings_internal8SplitterINS_6ByCharENS_10AllowEmptyENSt3__117basic_string_viewIcNS4_11char_traitsIcEEEEEC2ES8_S2_S3_:
  270|  9.21k|        predicate_(std::move(p)) {}
_ZNK4absl16strings_internal8SplitterINS_6ByCharENS_10AllowEmptyENSt3__117basic_string_viewIcNS4_11char_traitsIcEEEEEcvT_INS4_6vectorIS8_NS4_9allocatorIS8_EEEEvEEv:
  287|  9.21k|  operator Container() const {  // NOLINT(runtime/explicit)
  288|  9.21k|    return ConvertToContainer<Container, typename Container::value_type,
  289|  9.21k|                              HasMappedType<Container>::value>()(*this);
  290|  9.21k|  }
_ZNK4absl16strings_internal8SplitterINS_6ByCharENS_10AllowEmptyENSt3__117basic_string_viewIcNS4_11char_traitsIcEEEEE18ConvertToContainerINS4_6vectorIS8_NS4_9allocatorIS8_EEEES8_Lb0EEclERKS9_:
  338|  9.21k|        const Splitter& splitter) const {
  339|  9.21k|      struct raw_view {
  340|  9.21k|        const char* data;
  341|  9.21k|        size_t size;
  342|  9.21k|        operator absl::string_view() const {  // NOLINT(runtime/explicit)
  343|  9.21k|          return {data, size};
  344|  9.21k|        }
  345|  9.21k|      };
  346|  9.21k|      std::vector<absl::string_view, A> v;
  347|  9.21k|      std::array<raw_view, 16> ar;
  348|   246k|      for (auto it = splitter.begin(); !it.at_end();) {
  ------------------
  |  Branch (348:40): [True: 237k, False: 9.21k]
  ------------------
  349|   237k|        size_t index = 0;
  350|  3.66M|        do {
  351|  3.66M|          ar[index].data = it->data();
  352|  3.66M|          ar[index].size = it->size();
  353|  3.66M|          ++it;
  354|  3.66M|        } while (++index != ar.size() && !it.at_end());
  ------------------
  |  Branch (354:18): [True: 3.43M, False: 227k]
  |  Branch (354:42): [True: 3.42M, False: 9.17k]
  ------------------
  355|   237k|        v.insert(v.end(), ar.begin(), ar.begin() + index);
  356|   237k|      }
  357|  9.21k|      return v;
  358|  9.21k|    }
_ZNK4absl16strings_internal8SplitterINS_6ByCharENS_10AllowEmptyENSt3__117basic_string_viewIcNS4_11char_traitsIcEEEEE5beginEv:
  279|  9.21k|  const_iterator begin() const { return {const_iterator::kInitState, this}; }
_ZN4absl16strings_internal13SplitIteratorINS0_8SplitterINS_6ByCharENS_10AllowEmptyENSt3__117basic_string_viewIcNS5_11char_traitsIcEEEEEEEC2ENSB_5StateEPKSA_:
   98|  9.21k|        predicate_(splitter->predicate()) {
   99|       |    // Hack to maintain backward compatibility. This one block makes it so an
  100|       |    // empty absl::string_view whose .data() happens to be nullptr behaves
  101|       |    // *differently* from an otherwise empty absl::string_view whose .data() is
  102|       |    // not nullptr. This is an undesirable difference in general, but this
  103|       |    // behavior is maintained to avoid breaking existing code that happens to
  104|       |    // depend on this old behavior/bug. Perhaps it will be fixed one day. The
  105|       |    // difference in behavior is as follows:
  106|       |    //   Split(absl::string_view(""), '-');  // {""}
  107|       |    //   Split(absl::string_view(), '-');    // {}
  108|  9.21k|    if (splitter_->text().data() == nullptr) {
  ------------------
  |  Branch (108:9): [True: 0, False: 9.21k]
  ------------------
  109|      0|      state_ = kEndState;
  110|      0|      pos_ = splitter_->text().size();
  111|      0|      return;
  112|      0|    }
  113|       |
  114|  9.21k|    if (state_ == kEndState) {
  ------------------
  |  Branch (114:9): [True: 0, False: 9.21k]
  ------------------
  115|      0|      pos_ = splitter_->text().size();
  116|  9.21k|    } else {
  117|  9.21k|      ++(*this);
  118|  9.21k|    }
  119|  9.21k|  }
_ZNK4absl16strings_internal8SplitterINS_6ByCharENS_10AllowEmptyENSt3__117basic_string_viewIcNS4_11char_traitsIcEEEEE9delimiterEv:
  273|  9.21k|  const Delimiter& delimiter() const { return delimiter_; }
_ZNK4absl16strings_internal8SplitterINS_6ByCharENS_10AllowEmptyENSt3__117basic_string_viewIcNS4_11char_traitsIcEEEEE9predicateEv:
  274|  9.21k|  const Predicate& predicate() const { return predicate_; }
_ZNK4absl16strings_internal8SplitterINS_6ByCharENS_10AllowEmptyENSt3__117basic_string_viewIcNS4_11char_traitsIcEEEEE4textEv:
  272|  3.67M|  absl::string_view text() const { return text_; }
_ZNK4absl16strings_internal13SplitIteratorINS0_8SplitterINS_6ByCharENS_10AllowEmptyENSt3__117basic_string_viewIcNS5_11char_traitsIcEEEEEEE6at_endEv:
  121|  3.68M|  bool at_end() const { return state_ == kEndState; }
_ZNK4absl16strings_internal13SplitIteratorINS0_8SplitterINS_6ByCharENS_10AllowEmptyENSt3__117basic_string_viewIcNS5_11char_traitsIcEEEEEEEptEv:
  124|  7.32M|  pointer operator->() const { return &curr_; }
_ZN4absl16strings_internal13SplitIteratorINS0_8SplitterINS_6ByCharENS_10AllowEmptyENSt3__117basic_string_viewIcNS5_11char_traitsIcEEEEEEEppEv:
  126|  3.67M|  SplitIterator& operator++() {
  127|  3.67M|    do {
  128|  3.67M|      if (state_ == kLastState) {
  ------------------
  |  Branch (128:11): [True: 9.21k, False: 3.66M]
  ------------------
  129|  9.21k|        state_ = kEndState;
  130|  9.21k|        return *this;
  131|  9.21k|      }
  132|  3.66M|      const absl::string_view text = splitter_->text();
  133|  3.66M|      const absl::string_view d = delimiter_.Find(text, pos_);
  134|  3.66M|      if (d.data() == text.data() + text.size()) state_ = kLastState;
  ------------------
  |  Branch (134:11): [True: 9.21k, False: 3.65M]
  ------------------
  135|  3.66M|      curr_ = text.substr(pos_,
  136|  3.66M|                          static_cast<size_t>(d.data() - (text.data() + pos_)));
  137|  3.66M|      pos_ += curr_.size() + d.size();
  138|  3.66M|    } while (!predicate_(curr_));
  ------------------
  |  Branch (138:14): [True: 0, False: 3.66M]
  ------------------
  139|  3.66M|    return *this;
  140|  3.67M|  }
_ZZNK4absl16strings_internal8SplitterINS_6ByCharENS_10AllowEmptyENSt3__117basic_string_viewIcNS4_11char_traitsIcEEEEE18ConvertToContainerINS4_6vectorIS8_NS4_9allocatorIS8_EEEES8_Lb0EEclERKS9_ENK8raw_viewcvS8_Ev:
  342|  3.66M|        operator absl::string_view() const {  // NOLINT(runtime/explicit)
  343|  3.66M|          return {data, size};
  344|  3.66M|        }

_ZN4absl16EqualsIgnoreCaseENSt3__117basic_string_viewIcNS0_11char_traitsIcEEEES4_:
   24|  18.4k|                      absl::string_view piece2) noexcept {
   25|  18.4k|  return (piece1.size() == piece2.size() &&
  ------------------
  |  Branch (25:11): [True: 18.4k, False: 0]
  ------------------
   26|  18.4k|          0 == absl::strings_internal::memcasecmp(piece1.data(), piece2.data(),
  ------------------
  |  Branch (26:11): [True: 7.52k, False: 10.9k]
  ------------------
   27|  18.4k|                                                  piece1.size()));
   28|       |  // memcasecmp uses absl::ascii_tolower().
   29|  18.4k|}
_ZN4absl20StartsWithIgnoreCaseENSt3__117basic_string_viewIcNS0_11char_traitsIcEEEES4_:
   53|  18.4k|                          absl::string_view prefix) noexcept {
   54|  18.4k|  return (text.size() >= prefix.size()) &&
  ------------------
  |  Branch (54:10): [True: 18.4k, False: 0]
  ------------------
   55|  18.4k|         EqualsIgnoreCase(text.substr(0, prefix.size()), prefix);
  ------------------
  |  Branch (55:10): [True: 7.52k, False: 10.9k]
  ------------------
   56|  18.4k|}

_ZN4absl10StartsWithENSt3__117basic_string_viewIcNS0_11char_traitsIcEEEES4_:
   59|  6.85M|                       absl::string_view prefix) noexcept {
   60|  6.85M|  return prefix.empty() ||
  ------------------
  |  Branch (60:10): [True: 0, False: 6.85M]
  ------------------
   61|  6.85M|         (text.size() >= prefix.size() &&
  ------------------
  |  Branch (61:11): [True: 6.32M, False: 525k]
  ------------------
   62|  6.85M|          memcmp(text.data(), prefix.data(), prefix.size()) == 0);
  ------------------
  |  Branch (62:11): [True: 501k, False: 5.82M]
  ------------------
   63|  6.85M|}
_ZN4absl8EndsWithENSt3__117basic_string_viewIcNS0_11char_traitsIcEEEES4_:
   69|  1.30k|                     absl::string_view suffix) noexcept {
   70|  1.30k|  return suffix.empty() ||
  ------------------
  |  Branch (70:10): [True: 0, False: 1.30k]
  ------------------
   71|  1.30k|         (text.size() >= suffix.size() &&
  ------------------
  |  Branch (71:11): [True: 1.30k, False: 0]
  ------------------
   72|  1.30k|          memcmp(text.data() + (text.size() - suffix.size()), suffix.data(),
  ------------------
  |  Branch (72:11): [True: 1.30k, False: 0]
  ------------------
   73|  1.30k|                 suffix.size()) == 0);
   74|  1.30k|}

_ZN4absl10SimpleAtodENSt3__117basic_string_viewIcNS0_11char_traitsIcEEEEPd:
   77|  19.9k|bool SimpleAtod(absl::string_view str, double* out) {
   78|  19.9k|  *out = 0.0;
   79|  19.9k|  str = StripAsciiWhitespace(str);
   80|       |  // std::from_chars doesn't accept an initial +, but SimpleAtod does, so if one
   81|       |  // is present, skip it, while avoiding accepting "+-0" as valid.
   82|  19.9k|  if (!str.empty() && str[0] == '+') {
  ------------------
  |  Branch (82:7): [True: 19.9k, False: 0]
  |  Branch (82:23): [True: 0, False: 19.9k]
  ------------------
   83|      0|    str.remove_prefix(1);
   84|      0|    if (!str.empty() && str[0] == '-') {
  ------------------
  |  Branch (84:9): [True: 0, False: 0]
  |  Branch (84:25): [True: 0, False: 0]
  ------------------
   85|      0|      return false;
   86|      0|    }
   87|      0|  }
   88|  19.9k|  auto result = absl::from_chars(str.data(), str.data() + str.size(), *out);
   89|  19.9k|  if (result.ec == std::errc::invalid_argument) {
  ------------------
  |  Branch (89:7): [True: 0, False: 19.9k]
  ------------------
   90|      0|    return false;
   91|      0|  }
   92|  19.9k|  if (result.ptr != str.data() + str.size()) {
  ------------------
  |  Branch (92:7): [True: 0, False: 19.9k]
  ------------------
   93|       |    // not all non-whitespace characters consumed
   94|      0|    return false;
   95|      0|  }
   96|       |  // from_chars() with DR 3081's current wording will return max() on
   97|       |  // overflow.  SimpleAtod returns infinity instead.
   98|  19.9k|  if (result.ec == std::errc::result_out_of_range) {
  ------------------
  |  Branch (98:7): [True: 2.98k, False: 16.9k]
  ------------------
   99|  2.98k|    if (*out > 1.0) {
  ------------------
  |  Branch (99:9): [True: 1.04k, False: 1.93k]
  ------------------
  100|  1.04k|      *out = std::numeric_limits<double>::infinity();
  101|  1.93k|    } else if (*out < -1.0) {
  ------------------
  |  Branch (101:16): [True: 485, False: 1.45k]
  ------------------
  102|    485|      *out = -std::numeric_limits<double>::infinity();
  103|    485|    }
  104|  2.98k|  }
  105|  19.9k|  return true;
  106|  19.9k|}
_ZN4absl16numbers_internal15FastIntToBufferEjPc:
  147|   974k|char* numbers_internal::FastIntToBuffer(uint32_t i, char* buffer) {
  148|   974k|  uint32_t digits;
  149|       |  // The idea of this implementation is to trim the number of divides to as few
  150|       |  // as possible, and also reducing memory stores and branches, by going in
  151|       |  // steps of two digits at a time rather than one whenever possible.
  152|       |  // The huge-number case is first, in the hopes that the compiler will output
  153|       |  // that case in one branch-free block of code, and only output conditional
  154|       |  // branches into it from below.
  155|   974k|  if (i >= 1000000000) {     // >= 1,000,000,000
  ------------------
  |  Branch (155:7): [True: 1.12k, False: 973k]
  ------------------
  156|  1.12k|    digits = i / 100000000;  //      100,000,000
  157|  1.12k|    i -= digits * 100000000;
  158|  1.12k|    PutTwoDigits(digits, buffer);
  159|  1.12k|    buffer += 2;
  160|  1.12k|  lt100_000_000:
  161|  1.12k|    digits = i / 1000000;  // 1,000,000
  162|  1.12k|    i -= digits * 1000000;
  163|  1.12k|    PutTwoDigits(digits, buffer);
  164|  1.12k|    buffer += 2;
  165|  1.33k|  lt1_000_000:
  166|  1.33k|    digits = i / 10000;  // 10,000
  167|  1.33k|    i -= digits * 10000;
  168|  1.33k|    PutTwoDigits(digits, buffer);
  169|  1.33k|    buffer += 2;
  170|  20.4k|  lt10_000:
  171|  20.4k|    digits = i / 100;
  172|  20.4k|    i -= digits * 100;
  173|  20.4k|    PutTwoDigits(digits, buffer);
  174|  20.4k|    buffer += 2;
  175|   103k| lt100:
  176|   103k|    digits = i;
  177|   103k|    PutTwoDigits(digits, buffer);
  178|   103k|    buffer += 2;
  179|   103k|    *buffer = 0;
  180|   103k|    return buffer;
  181|  20.4k|  }
  182|       |
  183|   973k|  if (i < 100) {
  ------------------
  |  Branch (183:7): [True: 919k, False: 54.6k]
  ------------------
  184|   919k|    digits = i;
  185|   919k|    if (i >= 10) goto lt100;
  ------------------
  |  Branch (185:9): [True: 47.4k, False: 871k]
  ------------------
  186|   871k|    memcpy(buffer, one_ASCII_final_digits[i], 2);
  187|   871k|    return buffer + 1;
  188|   919k|  }
  189|  54.6k|  if (i < 10000) {  //    10,000
  ------------------
  |  Branch (189:7): [True: 50.0k, False: 4.59k]
  ------------------
  190|  50.0k|    if (i >= 1000) goto lt10_000;
  ------------------
  |  Branch (190:9): [True: 14.7k, False: 35.3k]
  ------------------
  191|  35.3k|    digits = i / 100;
  192|  35.3k|    i -= digits * 100;
  193|  35.3k|    *buffer++ = '0' + static_cast<char>(digits);
  194|  35.3k|    goto lt100;
  195|  50.0k|  }
  196|  4.59k|  if (i < 1000000) {  //    1,000,000
  ------------------
  |  Branch (196:7): [True: 4.56k, False: 29]
  ------------------
  197|  4.56k|    if (i >= 100000) goto lt1_000_000;
  ------------------
  |  Branch (197:9): [True: 185, False: 4.38k]
  ------------------
  198|  4.38k|    digits = i / 10000;  //    10,000
  199|  4.38k|    i -= digits * 10000;
  200|  4.38k|    *buffer++ = '0' + static_cast<char>(digits);
  201|  4.38k|    goto lt10_000;
  202|  4.56k|  }
  203|     29|  if (i < 100000000) {  //    100,000,000
  ------------------
  |  Branch (203:7): [True: 29, False: 0]
  ------------------
  204|     29|    if (i >= 10000000) goto lt100_000_000;
  ------------------
  |  Branch (204:9): [True: 0, False: 29]
  ------------------
  205|     29|    digits = i / 1000000;  //   1,000,000
  206|     29|    i -= digits * 1000000;
  207|     29|    *buffer++ = '0' + static_cast<char>(digits);
  208|     29|    goto lt1_000_000;
  209|     29|  }
  210|       |  // we already know that i < 1,000,000,000
  211|      0|  digits = i / 100000000;  //   100,000,000
  212|      0|  i -= digits * 100000000;
  213|      0|  *buffer++ = '0' + static_cast<char>(digits);
  214|      0|  goto lt100_000_000;
  215|     29|}
_ZN4absl16numbers_internal15FastIntToBufferEiPc:
  217|  1.73k|char* numbers_internal::FastIntToBuffer(int32_t i, char* buffer) {
  218|  1.73k|  uint32_t u = static_cast<uint32_t>(i);
  219|  1.73k|  if (i < 0) {
  ------------------
  |  Branch (219:7): [True: 0, False: 1.73k]
  ------------------
  220|      0|    *buffer++ = '-';
  221|       |    // We need to do the negation in modular (i.e., "unsigned")
  222|       |    // arithmetic; MSVC++ apparently warns for plain "-u", so
  223|       |    // we write the equivalent expression "0 - u" instead.
  224|      0|    u = 0 - u;
  225|      0|  }
  226|  1.73k|  return numbers_internal::FastIntToBuffer(u, buffer);
  227|  1.73k|}
_ZN4absl16numbers_internal15FastIntToBufferEmPc:
  229|   748k|char* numbers_internal::FastIntToBuffer(uint64_t i, char* buffer) {
  230|   748k|  uint32_t u32 = static_cast<uint32_t>(i);
  231|   748k|  if (u32 == i) return numbers_internal::FastIntToBuffer(u32, buffer);
  ------------------
  |  Branch (231:7): [True: 748k, False: 0]
  ------------------
  232|       |
  233|       |  // Here we know i has at least 10 decimal digits.
  234|      0|  uint64_t top_1to11 = i / 1000000000;
  235|      0|  u32 = static_cast<uint32_t>(i - top_1to11 * 1000000000);
  236|      0|  uint32_t top_1to11_32 = static_cast<uint32_t>(top_1to11);
  237|       |
  238|      0|  if (top_1to11_32 == top_1to11) {
  ------------------
  |  Branch (238:7): [True: 0, False: 0]
  ------------------
  239|      0|    buffer = numbers_internal::FastIntToBuffer(top_1to11_32, buffer);
  240|      0|  } else {
  241|       |    // top_1to11 has more than 32 bits too; print it in two steps.
  242|      0|    uint32_t top_8to9 = static_cast<uint32_t>(top_1to11 / 100);
  243|      0|    uint32_t mid_2 = static_cast<uint32_t>(top_1to11 - top_8to9 * 100);
  244|      0|    buffer = numbers_internal::FastIntToBuffer(top_8to9, buffer);
  245|      0|    PutTwoDigits(mid_2, buffer);
  246|      0|    buffer += 2;
  247|      0|  }
  248|       |
  249|       |  // We have only 9 digits now, again the maximum uint32_t can handle fully.
  250|      0|  uint32_t digits = u32 / 10000000;  // 10,000,000
  251|      0|  u32 -= digits * 10000000;
  252|      0|  PutTwoDigits(digits, buffer);
  253|      0|  buffer += 2;
  254|      0|  digits = u32 / 100000;  // 100,000
  255|      0|  u32 -= digits * 100000;
  256|      0|  PutTwoDigits(digits, buffer);
  257|      0|  buffer += 2;
  258|      0|  digits = u32 / 1000;  // 1,000
  259|      0|  u32 -= digits * 1000;
  260|      0|  PutTwoDigits(digits, buffer);
  261|      0|  buffer += 2;
  262|      0|  digits = u32 / 10;
  263|      0|  u32 -= digits * 10;
  264|      0|  PutTwoDigits(digits, buffer);
  265|      0|  buffer += 2;
  266|      0|  memcpy(buffer, one_ASCII_final_digits[u32], 2);
  267|      0|  return buffer + 1;
  268|   748k|}
_ZN4absl16numbers_internal15FastIntToBufferElPc:
  270|    459|char* numbers_internal::FastIntToBuffer(int64_t i, char* buffer) {
  271|    459|  uint64_t u = static_cast<uint64_t>(i);
  272|    459|  if (i < 0) {
  ------------------
  |  Branch (272:7): [True: 0, False: 459]
  ------------------
  273|      0|    *buffer++ = '-';
  274|      0|    u = 0 - u;
  275|      0|  }
  276|    459|  return numbers_internal::FastIntToBuffer(u, buffer);
  277|    459|}
_ZN4absl16numbers_internal17safe_strto64_baseENSt3__117basic_string_viewIcNS1_11char_traitsIcEEEEPli:
 1074|   596k|bool safe_strto64_base(absl::string_view text, int64_t* value, int base) {
 1075|   596k|  return safe_int_internal<int64_t>(text, value, base);
 1076|   596k|}
_ZN4absl16numbers_internal18safe_strtou64_baseENSt3__117basic_string_viewIcNS1_11char_traitsIcEEEEPmi:
 1086|  2.20k|bool safe_strtou64_base(absl::string_view text, uint64_t* value, int base) {
 1087|  2.20k|  return safe_uint_internal<uint64_t>(text, value, base);
 1088|  2.20k|}
numbers.cc:_ZN4absl12_GLOBAL__N_124safe_parse_sign_and_baseEPNSt3__117basic_string_viewIcNS1_11char_traitsIcEEEEPiPb:
  635|   598k|                                     bool* negative_ptr /*output*/) {
  636|   598k|  if (text->data() == nullptr) {
  ------------------
  |  Branch (636:7): [True: 0, False: 598k]
  ------------------
  637|      0|    return false;
  638|      0|  }
  639|       |
  640|   598k|  const char* start = text->data();
  641|   598k|  const char* end = start + text->size();
  642|   598k|  int base = *base_ptr;
  643|       |
  644|       |  // Consume whitespace.
  645|   598k|  while (start < end &&
  ------------------
  |  Branch (645:10): [True: 598k, False: 0]
  ------------------
  646|   598k|         absl::ascii_isspace(static_cast<unsigned char>(start[0]))) {
  ------------------
  |  Branch (646:10): [True: 0, False: 598k]
  ------------------
  647|      0|    ++start;
  648|      0|  }
  649|   598k|  while (start < end &&
  ------------------
  |  Branch (649:10): [True: 598k, False: 0]
  ------------------
  650|   598k|         absl::ascii_isspace(static_cast<unsigned char>(end[-1]))) {
  ------------------
  |  Branch (650:10): [True: 0, False: 598k]
  ------------------
  651|      0|    --end;
  652|      0|  }
  653|   598k|  if (start >= end) {
  ------------------
  |  Branch (653:7): [True: 0, False: 598k]
  ------------------
  654|      0|    return false;
  655|      0|  }
  656|       |
  657|       |  // Consume sign.
  658|   598k|  *negative_ptr = (start[0] == '-');
  659|   598k|  if (*negative_ptr || start[0] == '+') {
  ------------------
  |  Branch (659:7): [True: 7.42k, False: 591k]
  |  Branch (659:24): [True: 0, False: 591k]
  ------------------
  660|  7.42k|    ++start;
  661|  7.42k|    if (start >= end) {
  ------------------
  |  Branch (661:9): [True: 0, False: 7.42k]
  ------------------
  662|      0|      return false;
  663|      0|    }
  664|  7.42k|  }
  665|       |
  666|       |  // Consume base-dependent prefix.
  667|       |  //  base 0: "0x" -> base 16, "0" -> base 8, default -> base 10
  668|       |  //  base 16: "0x" -> base 16
  669|       |  // Also validate the base.
  670|   598k|  if (base == 0) {
  ------------------
  |  Branch (670:7): [True: 0, False: 598k]
  ------------------
  671|      0|    if (end - start >= 2 && start[0] == '0' &&
  ------------------
  |  Branch (671:9): [True: 0, False: 0]
  |  Branch (671:29): [True: 0, False: 0]
  ------------------
  672|      0|        (start[1] == 'x' || start[1] == 'X')) {
  ------------------
  |  Branch (672:10): [True: 0, False: 0]
  |  Branch (672:29): [True: 0, False: 0]
  ------------------
  673|      0|      base = 16;
  674|      0|      start += 2;
  675|      0|      if (start >= end) {
  ------------------
  |  Branch (675:11): [True: 0, False: 0]
  ------------------
  676|       |        // "0x" with no digits after is invalid.
  677|      0|        return false;
  678|      0|      }
  679|      0|    } else if (end - start >= 1 && start[0] == '0') {
  ------------------
  |  Branch (679:16): [True: 0, False: 0]
  |  Branch (679:36): [True: 0, False: 0]
  ------------------
  680|      0|      base = 8;
  681|      0|      start += 1;
  682|      0|    } else {
  683|      0|      base = 10;
  684|      0|    }
  685|   598k|  } else if (base == 16) {
  ------------------
  |  Branch (685:14): [True: 1.24k, False: 597k]
  ------------------
  686|  1.24k|    if (end - start >= 2 && start[0] == '0' &&
  ------------------
  |  Branch (686:9): [True: 1.24k, False: 0]
  |  Branch (686:29): [True: 1.24k, False: 0]
  ------------------
  687|  1.24k|        (start[1] == 'x' || start[1] == 'X')) {
  ------------------
  |  Branch (687:10): [True: 1.24k, False: 0]
  |  Branch (687:29): [True: 0, False: 0]
  ------------------
  688|  1.24k|      start += 2;
  689|  1.24k|      if (start >= end) {
  ------------------
  |  Branch (689:11): [True: 0, False: 1.24k]
  ------------------
  690|       |        // "0x" with no digits after is invalid.
  691|      0|        return false;
  692|      0|      }
  693|  1.24k|    }
  694|   597k|  } else if (base >= 2 && base <= 36) {
  ------------------
  |  Branch (694:14): [True: 597k, False: 0]
  |  Branch (694:27): [True: 597k, False: 0]
  ------------------
  695|       |    // okay
  696|   597k|  } else {
  697|      0|    return false;
  698|      0|  }
  699|   598k|  *text = absl::string_view(start, static_cast<size_t>(end - start));
  700|   598k|  *base_ptr = base;
  701|   598k|  return true;
  702|   598k|}
numbers.cc:_ZN4absl12_GLOBAL__N_117safe_int_internalIlEEbNSt3__117basic_string_viewIcNS2_11char_traitsIcEEEEPT_i:
 1002|   596k|                              int base) {
 1003|   596k|  *value_p = 0;
 1004|   596k|  bool negative;
 1005|   596k|  if (!safe_parse_sign_and_base(&text, &base, &negative)) {
  ------------------
  |  Branch (1005:7): [True: 0, False: 596k]
  ------------------
 1006|      0|    return false;
 1007|      0|  }
 1008|   596k|  if (!negative) {
  ------------------
  |  Branch (1008:7): [True: 589k, False: 7.42k]
  ------------------
 1009|   589k|    return safe_parse_positive_int(text, base, value_p);
 1010|   589k|  } else {
 1011|  7.42k|    return safe_parse_negative_int(text, base, value_p);
 1012|  7.42k|  }
 1013|   596k|}
numbers.cc:_ZN4absl12_GLOBAL__N_123safe_parse_positive_intIlEEbNSt3__117basic_string_viewIcNS2_11char_traitsIcEEEEiPT_:
  920|   589k|                                    IntType* value_p) {
  921|   589k|  IntType value = 0;
  922|   589k|  const IntType vmax = std::numeric_limits<IntType>::max();
  923|   589k|  assert(vmax > 0);
  924|   589k|  assert(base >= 0);
  925|   589k|  const IntType base_inttype = static_cast<IntType>(base);
  926|   589k|  assert(vmax >= base_inttype);
  927|   589k|  const IntType vmax_over_base = LookupTables<IntType>::kVmaxOverBase[base];
  928|   589k|  assert(base < 2 ||
  929|   589k|         std::numeric_limits<IntType>::max() / base_inttype == vmax_over_base);
  930|   589k|  const char* start = text.data();
  931|   589k|  const char* end = start + text.size();
  932|       |  // loop over digits
  933|  1.39M|  for (; start < end; ++start) {
  ------------------
  |  Branch (933:10): [True: 812k, False: 587k]
  ------------------
  934|   812k|    unsigned char c = static_cast<unsigned char>(start[0]);
  935|   812k|    IntType digit = static_cast<IntType>(kAsciiToInt[c]);
  936|   812k|    if (digit >= base_inttype) {
  ------------------
  |  Branch (936:9): [True: 0, False: 812k]
  ------------------
  937|      0|      *value_p = value;
  938|      0|      return false;
  939|      0|    }
  940|   812k|    if (value > vmax_over_base) {
  ------------------
  |  Branch (940:9): [True: 1.56k, False: 810k]
  ------------------
  941|  1.56k|      *value_p = vmax;
  942|  1.56k|      return false;
  943|  1.56k|    }
  944|   810k|    value *= base_inttype;
  945|   810k|    if (value > vmax - digit) {
  ------------------
  |  Branch (945:9): [True: 271, False: 810k]
  ------------------
  946|    271|      *value_p = vmax;
  947|    271|      return false;
  948|    271|    }
  949|   810k|    value += digit;
  950|   810k|  }
  951|   587k|  *value_p = value;
  952|   587k|  return true;
  953|   589k|}
numbers.cc:_ZN4absl12_GLOBAL__N_123safe_parse_negative_intIlEEbNSt3__117basic_string_viewIcNS2_11char_traitsIcEEEEiPT_:
  957|  7.42k|                                    IntType* value_p) {
  958|  7.42k|  IntType value = 0;
  959|  7.42k|  const IntType vmin = std::numeric_limits<IntType>::min();
  960|  7.42k|  assert(vmin < 0);
  961|  7.42k|  assert(vmin <= 0 - base);
  962|  7.42k|  IntType vmin_over_base = LookupTables<IntType>::kVminOverBase[base];
  963|  7.42k|  assert(base < 2 ||
  964|  7.42k|         std::numeric_limits<IntType>::min() / base == vmin_over_base);
  965|       |  // 2003 c++ standard [expr.mul]
  966|       |  // "... the sign of the remainder is implementation-defined."
  967|       |  // Although (vmin/base)*base + vmin%base is always vmin.
  968|       |  // 2011 c++ standard tightens the spec but we cannot rely on it.
  969|       |  // TODO(junyer): Handle this in the lookup table generation.
  970|  7.42k|  if (vmin % base > 0) {
  ------------------
  |  Branch (970:7): [True: 0, False: 7.42k]
  ------------------
  971|      0|    vmin_over_base += 1;
  972|      0|  }
  973|  7.42k|  const char* start = text.data();
  974|  7.42k|  const char* end = start + text.size();
  975|       |  // loop over digits
  976|  32.0k|  for (; start < end; ++start) {
  ------------------
  |  Branch (976:10): [True: 25.3k, False: 6.71k]
  ------------------
  977|  25.3k|    unsigned char c = static_cast<unsigned char>(start[0]);
  978|  25.3k|    int digit = kAsciiToInt[c];
  979|  25.3k|    if (digit >= base) {
  ------------------
  |  Branch (979:9): [True: 0, False: 25.3k]
  ------------------
  980|      0|      *value_p = value;
  981|      0|      return false;
  982|      0|    }
  983|  25.3k|    if (value < vmin_over_base) {
  ------------------
  |  Branch (983:9): [True: 351, False: 24.9k]
  ------------------
  984|    351|      *value_p = vmin;
  985|    351|      return false;
  986|    351|    }
  987|  24.9k|    value *= base;
  988|  24.9k|    if (value < vmin + digit) {
  ------------------
  |  Branch (988:9): [True: 363, False: 24.5k]
  ------------------
  989|    363|      *value_p = vmin;
  990|    363|      return false;
  991|    363|    }
  992|  24.5k|    value -= digit;
  993|  24.5k|  }
  994|  6.71k|  *value_p = value;
  995|  6.71k|  return true;
  996|  7.42k|}
numbers.cc:_ZN4absl12_GLOBAL__N_118safe_uint_internalImEEbNSt3__117basic_string_viewIcNS2_11char_traitsIcEEEEPT_i:
 1017|  2.20k|                               int base) {
 1018|  2.20k|  *value_p = 0;
 1019|  2.20k|  bool negative;
 1020|  2.20k|  if (!safe_parse_sign_and_base(&text, &base, &negative) || negative) {
  ------------------
  |  Branch (1020:7): [True: 0, False: 2.20k]
  |  Branch (1020:61): [True: 0, False: 2.20k]
  ------------------
 1021|      0|    return false;
 1022|      0|  }
 1023|  2.20k|  return safe_parse_positive_int(text, base, value_p);
 1024|  2.20k|}
numbers.cc:_ZN4absl12_GLOBAL__N_123safe_parse_positive_intImEEbNSt3__117basic_string_viewIcNS2_11char_traitsIcEEEEiPT_:
  920|  2.20k|                                    IntType* value_p) {
  921|  2.20k|  IntType value = 0;
  922|  2.20k|  const IntType vmax = std::numeric_limits<IntType>::max();
  923|  2.20k|  assert(vmax > 0);
  924|  2.20k|  assert(base >= 0);
  925|  2.20k|  const IntType base_inttype = static_cast<IntType>(base);
  926|  2.20k|  assert(vmax >= base_inttype);
  927|  2.20k|  const IntType vmax_over_base = LookupTables<IntType>::kVmaxOverBase[base];
  928|  2.20k|  assert(base < 2 ||
  929|  2.20k|         std::numeric_limits<IntType>::max() / base_inttype == vmax_over_base);
  930|  2.20k|  const char* start = text.data();
  931|  2.20k|  const char* end = start + text.size();
  932|       |  // loop over digits
  933|  30.3k|  for (; start < end; ++start) {
  ------------------
  |  Branch (933:10): [True: 29.3k, False: 1.04k]
  ------------------
  934|  29.3k|    unsigned char c = static_cast<unsigned char>(start[0]);
  935|  29.3k|    IntType digit = static_cast<IntType>(kAsciiToInt[c]);
  936|  29.3k|    if (digit >= base_inttype) {
  ------------------
  |  Branch (936:9): [True: 0, False: 29.3k]
  ------------------
  937|      0|      *value_p = value;
  938|      0|      return false;
  939|      0|    }
  940|  29.3k|    if (value > vmax_over_base) {
  ------------------
  |  Branch (940:9): [True: 864, False: 28.4k]
  ------------------
  941|    864|      *value_p = vmax;
  942|    864|      return false;
  943|    864|    }
  944|  28.4k|    value *= base_inttype;
  945|  28.4k|    if (value > vmax - digit) {
  ------------------
  |  Branch (945:9): [True: 298, False: 28.1k]
  ------------------
  946|    298|      *value_p = vmax;
  947|    298|      return false;
  948|    298|    }
  949|  28.1k|    value += digit;
  950|  28.1k|  }
  951|  1.04k|  *value_p = value;
  952|  1.04k|  return true;
  953|  2.20k|}

_ZN4absl16numbers_internal12PutTwoDigitsEmPc:
  137|   127k|inline void PutTwoDigits(size_t i, char* buf) {
  138|   127k|  assert(i < 100);
  139|   127k|  memcpy(buf, two_ASCII_digits[i], 2);
  140|   127k|}
_ZN4absl13SimpleHexAtoiIlEEbNSt3__117basic_string_viewIcNS1_11char_traitsIcEEEEPT_:
  286|    719|ABSL_MUST_USE_RESULT bool SimpleHexAtoi(absl::string_view str, int_type* out) {
  287|    719|  return numbers_internal::safe_strtoi_base(str, out, 16);
  288|    719|}
_ZN4absl16numbers_internal16safe_strtoi_baseIlEEbNSt3__117basic_string_viewIcNS2_11char_traitsIcEEEEPT_i:
  203|   596k|                                           int base) {
  204|   596k|  static_assert(sizeof(*out) == 4 || sizeof(*out) == 8,
  205|   596k|                "SimpleAtoi works only with 32-bit or 64-bit integers.");
  206|   596k|  static_assert(!std::is_floating_point<int_type>::value,
  207|   596k|                "Use SimpleAtof or SimpleAtod instead.");
  208|   596k|  bool parsed;
  209|       |  // TODO(jorg): This signed-ness check is used because it works correctly
  210|       |  // with enums, and it also serves to check that int_type is not a pointer.
  211|       |  // If one day something like std::is_signed<enum E> works, switch to it.
  212|       |  // These conditions are constexpr bools to suppress MSVC warning C4127.
  213|   596k|  constexpr bool kIsSigned = static_cast<int_type>(1) - 2 < 0;
  214|   596k|  constexpr bool kUse64Bit = sizeof(*out) == 64 / 8;
  215|   596k|  if (kIsSigned) {
  ------------------
  |  Branch (215:7): [Folded - Ignored]
  ------------------
  216|   596k|    if (kUse64Bit) {
  ------------------
  |  Branch (216:9): [Folded - Ignored]
  ------------------
  217|   596k|      int64_t val;
  218|   596k|      parsed = numbers_internal::safe_strto64_base(s, &val, base);
  219|   596k|      *out = static_cast<int_type>(val);
  220|   596k|    } else {
  221|      0|      int32_t val;
  222|      0|      parsed = numbers_internal::safe_strto32_base(s, &val, base);
  223|      0|      *out = static_cast<int_type>(val);
  224|      0|    }
  225|   596k|  } else {
  226|      0|    if (kUse64Bit) {
  ------------------
  |  Branch (226:9): [Folded - Ignored]
  ------------------
  227|      0|      uint64_t val;
  228|      0|      parsed = numbers_internal::safe_strtou64_base(s, &val, base);
  229|      0|      *out = static_cast<int_type>(val);
  230|      0|    } else {
  231|      0|      uint32_t val;
  232|      0|      parsed = numbers_internal::safe_strtou32_base(s, &val, base);
  233|      0|      *out = static_cast<int_type>(val);
  234|      0|    }
  235|      0|  }
  236|   596k|  return parsed;
  237|   596k|}
_ZN4absl10SimpleAtoiIlEEbNSt3__117basic_string_viewIcNS1_11char_traitsIcEEEEPT_:
  271|   595k|ABSL_MUST_USE_RESULT bool SimpleAtoi(absl::string_view str, int_type* out) {
  272|   595k|  return numbers_internal::safe_strtoi_base(str, out, 10);
  273|   595k|}
_ZN4absl13SimpleHexAtoiImEEbNSt3__117basic_string_viewIcNS1_11char_traitsIcEEEEPT_:
  286|    527|ABSL_MUST_USE_RESULT bool SimpleHexAtoi(absl::string_view str, int_type* out) {
  287|    527|  return numbers_internal::safe_strtoi_base(str, out, 16);
  288|    527|}
_ZN4absl16numbers_internal16safe_strtoi_baseImEEbNSt3__117basic_string_viewIcNS2_11char_traitsIcEEEEPT_i:
  203|  2.20k|                                           int base) {
  204|  2.20k|  static_assert(sizeof(*out) == 4 || sizeof(*out) == 8,
  205|  2.20k|                "SimpleAtoi works only with 32-bit or 64-bit integers.");
  206|  2.20k|  static_assert(!std::is_floating_point<int_type>::value,
  207|  2.20k|                "Use SimpleAtof or SimpleAtod instead.");
  208|  2.20k|  bool parsed;
  209|       |  // TODO(jorg): This signed-ness check is used because it works correctly
  210|       |  // with enums, and it also serves to check that int_type is not a pointer.
  211|       |  // If one day something like std::is_signed<enum E> works, switch to it.
  212|       |  // These conditions are constexpr bools to suppress MSVC warning C4127.
  213|  2.20k|  constexpr bool kIsSigned = static_cast<int_type>(1) - 2 < 0;
  214|  2.20k|  constexpr bool kUse64Bit = sizeof(*out) == 64 / 8;
  215|  2.20k|  if (kIsSigned) {
  ------------------
  |  Branch (215:7): [Folded - Ignored]
  ------------------
  216|      0|    if (kUse64Bit) {
  ------------------
  |  Branch (216:9): [Folded - Ignored]
  ------------------
  217|      0|      int64_t val;
  218|      0|      parsed = numbers_internal::safe_strto64_base(s, &val, base);
  219|      0|      *out = static_cast<int_type>(val);
  220|      0|    } else {
  221|      0|      int32_t val;
  222|      0|      parsed = numbers_internal::safe_strto32_base(s, &val, base);
  223|      0|      *out = static_cast<int_type>(val);
  224|      0|    }
  225|  2.20k|  } else {
  226|  2.20k|    if (kUse64Bit) {
  ------------------
  |  Branch (226:9): [Folded - Ignored]
  ------------------
  227|  2.20k|      uint64_t val;
  228|  2.20k|      parsed = numbers_internal::safe_strtou64_base(s, &val, base);
  229|  2.20k|      *out = static_cast<int_type>(val);
  230|  2.20k|    } else {
  231|      0|      uint32_t val;
  232|      0|      parsed = numbers_internal::safe_strtou32_base(s, &val, base);
  233|      0|      *out = static_cast<int_type>(val);
  234|      0|    }
  235|  2.20k|  }
  236|  2.20k|  return parsed;
  237|  2.20k|}
_ZN4absl10SimpleAtoiImEEbNSt3__117basic_string_viewIcNS1_11char_traitsIcEEEEPT_:
  271|  1.67k|ABSL_MUST_USE_RESULT bool SimpleAtoi(absl::string_view str, int_type* out) {
  272|  1.67k|  return numbers_internal::safe_strtoi_base(str, out, 10);
  273|  1.67k|}

_ZN4absl6StrCatERKNS_8AlphaNumES2_:
   52|  8.01k|std::string StrCat(const AlphaNum& a, const AlphaNum& b) {
   53|  8.01k|  std::string result;
   54|  8.01k|  absl::strings_internal::STLStringResizeUninitialized(&result,
   55|  8.01k|                                                       a.size() + b.size());
   56|  8.01k|  char* const begin = &result[0];
   57|  8.01k|  char* out = begin;
   58|  8.01k|  out = Append(out, a);
   59|  8.01k|  out = Append(out, b);
   60|  8.01k|  assert(out == begin + result.size());
   61|  8.01k|  return result;
   62|  8.01k|}
_ZN4absl6StrCatERKNS_8AlphaNumES2_S2_:
   64|    184|std::string StrCat(const AlphaNum& a, const AlphaNum& b, const AlphaNum& c) {
   65|    184|  std::string result;
   66|    184|  strings_internal::STLStringResizeUninitialized(
   67|    184|      &result, a.size() + b.size() + c.size());
   68|    184|  char* const begin = &result[0];
   69|    184|  char* out = begin;
   70|    184|  out = Append(out, a);
   71|    184|  out = Append(out, b);
   72|    184|  out = Append(out, c);
   73|    184|  assert(out == begin + result.size());
   74|    184|  return result;
   75|    184|}
_ZN4absl16strings_internal9CatPiecesESt16initializer_listINSt3__117basic_string_viewIcNS2_11char_traitsIcEEEEE:
   95|  67.4k|std::string CatPieces(std::initializer_list<absl::string_view> pieces) {
   96|  67.4k|  std::string result;
   97|  67.4k|  size_t total_size = 0;
   98|   337k|  for (absl::string_view piece : pieces) total_size += piece.size();
  ------------------
  |  Branch (98:32): [True: 337k, False: 67.4k]
  ------------------
   99|  67.4k|  strings_internal::STLStringResizeUninitialized(&result, total_size);
  100|       |
  101|  67.4k|  char* const begin = &result[0];
  102|  67.4k|  char* out = begin;
  103|   337k|  for (absl::string_view piece : pieces) {
  ------------------
  |  Branch (103:32): [True: 337k, False: 67.4k]
  ------------------
  104|   337k|    const size_t this_size = piece.size();
  105|   337k|    if (this_size != 0) {
  ------------------
  |  Branch (105:9): [True: 337k, False: 0]
  ------------------
  106|   337k|      memcpy(out, piece.data(), this_size);
  107|   337k|      out += this_size;
  108|   337k|    }
  109|   337k|  }
  110|  67.4k|  assert(out == begin + result.size());
  111|  67.4k|  return result;
  112|  67.4k|}
_ZN4absl9StrAppendEPNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEERKNS_8AlphaNumESA_:
  152|  1.17M|void StrAppend(std::string* dest, const AlphaNum& a, const AlphaNum& b) {
  153|  1.17M|  ASSERT_NO_OVERLAP(*dest, a);
  ------------------
  |  |  120|  1.17M|  assert(((src).size() == 0) ||      \
  |  |  121|  1.17M|         (uintptr_t((src).data() - (dest).data()) > uintptr_t((dest).size())))
  ------------------
  154|  1.17M|  ASSERT_NO_OVERLAP(*dest, b);
  ------------------
  |  |  120|  1.17M|  assert(((src).size() == 0) ||      \
  |  |  121|  1.17M|         (uintptr_t((src).data() - (dest).data()) > uintptr_t((dest).size())))
  ------------------
  155|  1.17M|  std::string::size_type old_size = dest->size();
  156|  1.17M|  strings_internal::STLStringResizeUninitializedAmortized(
  157|  1.17M|      dest, old_size + a.size() + b.size());
  158|  1.17M|  char* const begin = &(*dest)[0];
  159|  1.17M|  char* out = begin + old_size;
  160|  1.17M|  out = Append(out, a);
  161|  1.17M|  out = Append(out, b);
  162|  1.17M|  assert(out == begin + dest->size());
  163|  1.17M|}
_ZN4absl9StrAppendEPNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEERKNS_8AlphaNumESA_SA_:
  166|  45.8k|               const AlphaNum& c) {
  167|  45.8k|  ASSERT_NO_OVERLAP(*dest, a);
  ------------------
  |  |  120|  45.8k|  assert(((src).size() == 0) ||      \
  |  |  121|  45.8k|         (uintptr_t((src).data() - (dest).data()) > uintptr_t((dest).size())))
  ------------------
  168|  45.8k|  ASSERT_NO_OVERLAP(*dest, b);
  ------------------
  |  |  120|  45.8k|  assert(((src).size() == 0) ||      \
  |  |  121|  45.8k|         (uintptr_t((src).data() - (dest).data()) > uintptr_t((dest).size())))
  ------------------
  169|  45.8k|  ASSERT_NO_OVERLAP(*dest, c);
  ------------------
  |  |  120|  45.8k|  assert(((src).size() == 0) ||      \
  |  |  121|  45.8k|         (uintptr_t((src).data() - (dest).data()) > uintptr_t((dest).size())))
  ------------------
  170|  45.8k|  std::string::size_type old_size = dest->size();
  171|  45.8k|  strings_internal::STLStringResizeUninitializedAmortized(
  172|  45.8k|      dest, old_size + a.size() + b.size() + c.size());
  173|  45.8k|  char* const begin = &(*dest)[0];
  174|  45.8k|  char* out = begin + old_size;
  175|  45.8k|  out = Append(out, a);
  176|  45.8k|  out = Append(out, b);
  177|  45.8k|  out = Append(out, c);
  178|  45.8k|  assert(out == begin + dest->size());
  179|  45.8k|}
str_cat.cc:_ZN4abslL6AppendEPcRKNS_8AlphaNumE:
   42|  2.49M|static char* Append(char* out, const AlphaNum& x) {
   43|       |  // memcpy is allowed to overwrite arbitrary memory, so doing this after the
   44|       |  // call would force an extra fetch of x.size().
   45|  2.49M|  char* after = out + x.size();
   46|  2.49M|  if (x.size() != 0) {
  ------------------
  |  Branch (46:7): [True: 1.36M, False: 1.13M]
  ------------------
   47|  1.36M|    memcpy(out, x.data(), x.size());
   48|  1.36M|  }
   49|  2.49M|  return after;
   50|  2.49M|}

_ZN4absl8AlphaNumC2Ei:
  314|    103|                            &digits_[0])) {}
_ZN4absl8AlphaNumC2El:
  322|    459|                            &digits_[0])) {}
_ZN4absl8AlphaNumC2Em:
  326|  67.4k|                            &digits_[0])) {}
_ZN4absl8AlphaNumC2EPKc:
  349|   210k|      : piece_(NullSafeStringView(c_str)) {}
_ZN4absl8AlphaNumC2ENSt3__117basic_string_viewIcNS1_11char_traitsIcEEEE:
  352|  2.50M|      : piece_(pc) {}
_ZNK4absl8AlphaNum4sizeEv:
  373|  8.86M|  absl::string_view::size_type size() const { return piece_.size(); }
_ZNK4absl8AlphaNum4dataEv:
  374|  1.36M|  const char* data() const { return piece_.data(); }
_ZNK4absl8AlphaNum5PieceEv:
  375|   337k|  absl::string_view Piece() const { return piece_; }
_ZN4absl6StrCatIJEEENSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEERKNS_8AlphaNumESA_SA_SA_SA_DpRKT_:
  455|  67.4k|    const AlphaNum& e, const AV&... args) {
  456|  67.4k|  return strings_internal::CatPieces(
  457|  67.4k|      {a.Piece(), b.Piece(), c.Piece(), d.Piece(), e.Piece(),
  458|  67.4k|       static_cast<const AlphaNum&>(args).Piece()...});
  459|  67.4k|}
_ZN4absl8AlphaNumC2INSt3__19allocatorIcEEEERKNS2_12basic_stringIcNS2_11char_traitsIcEET_EE:
  365|  51.1k|      : piece_(str) {}

_ZN4absl9StrFormatIJiEEENSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEERKNS_19str_format_internal18FormatSpecTemplateIJXspclsr19str_format_internalE14ArgumentToConvIT_EEEEEEDpRKSA_:
  354|  1.63k|                                           const Args&... args) {
  355|  1.63k|  return str_format_internal::FormatPack(
  356|  1.63k|      str_format_internal::UntypedFormatSpecImpl::Extract(format),
  357|  1.63k|      {str_format_internal::FormatArgImpl(args)...});
  358|  1.63k|}
_ZN4absl17UntypedFormatSpecC2ENSt3__117basic_string_viewIcNS1_11char_traitsIcEEEE:
  104|  1.47M|  explicit UntypedFormatSpec(string_view s) : spec_(s) {}
_ZN4absl9StrFormatIJNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEmPKcEEES7_RKNS_19str_format_internal18FormatSpecTemplateIJXspclsr19str_format_internalE14ArgumentToConvIT_EEEEEEDpRKSC_:
  354|   681k|                                           const Args&... args) {
  355|   681k|  return str_format_internal::FormatPack(
  356|   681k|      str_format_internal::UntypedFormatSpecImpl::Extract(format),
  357|   681k|      {str_format_internal::FormatArgImpl(args)...});
  358|   681k|}
_ZN4absl9StrFormatIJNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEPKcEEES7_RKNS_19str_format_internal18FormatSpecTemplateIJXspclsr19str_format_internalE14ArgumentToConvIT_EEEEEEDpRKSC_:
  354|   675k|                                           const Args&... args) {
  355|   675k|  return str_format_internal::FormatPack(
  356|   675k|      str_format_internal::UntypedFormatSpecImpl::Extract(format),
  357|   675k|      {str_format_internal::FormatArgImpl(args)...});
  358|   675k|}
_ZN4absl9StrFormatIJNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEEEES7_RKNS_19str_format_internal18FormatSpecTemplateIJXspclsr19str_format_internalE14ArgumentToConvIT_EEEEEEDpRKSA_:
  354|    534|                                           const Args&... args) {
  355|    534|  return str_format_internal::FormatPack(
  356|    534|      str_format_internal::UntypedFormatSpecImpl::Extract(format),
  357|    534|      {str_format_internal::FormatArgImpl(args)...});
  358|    534|}
_ZN4absl9StrFormatIJNSt3__117basic_string_viewIcNS1_11char_traitsIcEEEEiiNS1_12basic_stringIcS4_NS1_9allocatorIcEEEEEEES9_RKNS_19str_format_internal18FormatSpecTemplateIJXspclsr19str_format_internalE14ArgumentToConvIT_EEEEEEDpRKSC_:
  354|   112k|                                           const Args&... args) {
  355|   112k|  return str_format_internal::FormatPack(
  356|   112k|      str_format_internal::UntypedFormatSpecImpl::Extract(format),
  357|   112k|      {str_format_internal::FormatArgImpl(args)...});
  358|   112k|}

_ZN4absl7StrJoinINSt3__16vectorINS1_12basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS6_IS8_EEEEEES8_RKT_NS1_17basic_string_viewIcS5_EE:
  268|  6.71k|std::string StrJoin(const Range& range, absl::string_view separator) {
  269|  6.71k|  return strings_internal::JoinRange(range, separator);
  270|  6.71k|}

_ZN4absl16strings_internal18ApplySubstitutionsENSt3__117basic_string_viewIcNS1_11char_traitsIcEEEEPNS1_6vectorINS0_18ViableSubstitutionENS1_9allocatorIS7_EEEEPNS1_12basic_stringIcS4_NS8_IcEEEE:
   32|    776|    std::string* result_ptr) {
   33|    776|  auto& subs = *subs_ptr;
   34|    776|  int substitutions = 0;
   35|    776|  size_t pos = 0;
   36|  1.17M|  while (!subs.empty()) {
  ------------------
  |  Branch (36:10): [True: 1.17M, False: 776]
  ------------------
   37|  1.17M|    auto& sub = subs.back();
   38|  1.17M|    if (sub.offset >= pos) {
  ------------------
  |  Branch (38:9): [True: 1.17M, False: 0]
  ------------------
   39|  1.17M|      if (pos <= s.size()) {
  ------------------
  |  Branch (39:11): [True: 1.17M, False: 0]
  ------------------
   40|  1.17M|        StrAppend(result_ptr, s.substr(pos, sub.offset - pos), sub.replacement);
   41|  1.17M|      }
   42|  1.17M|      pos = sub.offset + sub.old.size();
   43|  1.17M|      substitutions += 1;
   44|  1.17M|    }
   45|  1.17M|    sub.offset = s.find(sub.old, pos);
   46|  1.17M|    if (sub.offset == s.npos) {
  ------------------
  |  Branch (46:9): [True: 1.35k, False: 1.17M]
  ------------------
   47|  1.35k|      subs.pop_back();
   48|  1.17M|    } else {
   49|       |      // Insertion sort to ensure the last ViableSubstitution continues to be
   50|       |      // before all the others.
   51|  1.17M|      size_t index = subs.size();
   52|  1.18M|      while (--index && subs[index - 1].OccursBefore(subs[index])) {
  ------------------
  |  Branch (52:14): [True: 893k, False: 288k]
  |  Branch (52:25): [True: 10.4k, False: 883k]
  ------------------
   53|  10.4k|        std::swap(subs[index], subs[index - 1]);
   54|  10.4k|      }
   55|  1.17M|    }
   56|  1.17M|  }
   57|    776|  result_ptr->append(s.data() + pos, s.size() - pos);
   58|    776|  return substitutions;
   59|    776|}

_ZN4absl13StrReplaceAllINSt3__15arrayINS1_4pairINS1_17basic_string_viewIcNS1_11char_traitsIcEEEES7_EELm3EEEEEiRKT_PNS1_12basic_stringIcS6_NS1_9allocatorIcEEEE:
  204|  45.8k|int StrReplaceAll(const StrToStrMapping& replacements, std::string* target) {
  205|  45.8k|  auto subs = strings_internal::FindSubstitutions(*target, replacements);
  206|  45.8k|  if (subs.empty()) return 0;
  ------------------
  |  Branch (206:7): [True: 45.0k, False: 776]
  ------------------
  207|       |
  208|    776|  std::string result;
  209|    776|  result.reserve(target->size());
  210|    776|  int substitutions =
  211|    776|      strings_internal::ApplySubstitutions(*target, &subs, &result);
  212|    776|  target->swap(result);
  213|    776|  return substitutions;
  214|  45.8k|}
_ZN4absl16strings_internal17FindSubstitutionsINSt3__15arrayINS2_4pairINS2_17basic_string_viewIcNS2_11char_traitsIcEEEES8_EELm3EEEEENS2_6vectorINS0_18ViableSubstitutionENS2_9allocatorISC_EEEES8_RKT_:
  159|  45.8k|    absl::string_view s, const StrToStrMapping& replacements) {
  160|  45.8k|  std::vector<ViableSubstitution> subs;
  161|  45.8k|  subs.reserve(replacements.size());
  162|       |
  163|   137k|  for (const auto& rep : replacements) {
  ------------------
  |  Branch (163:24): [True: 137k, False: 45.8k]
  ------------------
  164|   137k|    using std::get;
  165|   137k|    absl::string_view old(get<0>(rep));
  166|       |
  167|   137k|    size_t pos = s.find(old);
  168|   137k|    if (pos == s.npos) continue;
  ------------------
  |  Branch (168:9): [True: 136k, False: 1.35k]
  ------------------
  169|       |
  170|       |    // Ignore attempts to replace "". This condition is almost never true,
  171|       |    // but above condition is frequently true. That's why we test for this
  172|       |    // now and not before.
  173|  1.35k|    if (old.empty()) continue;
  ------------------
  |  Branch (173:9): [True: 0, False: 1.35k]
  ------------------
  174|       |
  175|  1.35k|    subs.emplace_back(old, get<1>(rep), pos);
  176|       |
  177|       |    // Insertion sort to ensure the last ViableSubstitution comes before
  178|       |    // all the others.
  179|  1.35k|    size_t index = subs.size();
  180|  1.76k|    while (--index && subs[index - 1].OccursBefore(subs[index])) {
  ------------------
  |  Branch (180:12): [True: 702, False: 1.06k]
  |  Branch (180:23): [True: 413, False: 289]
  ------------------
  181|    413|      std::swap(subs[index], subs[index - 1]);
  182|    413|    }
  183|  1.35k|  }
  184|  45.8k|  return subs;
  185|  45.8k|}
_ZN4absl16strings_internal18ViableSubstitutionC2ENSt3__117basic_string_viewIcNS2_11char_traitsIcEEEES6_m:
  143|  1.35k|      : old(old_str), replacement(replacement_str), offset(offset_val) {}
_ZNK4absl16strings_internal18ViableSubstitution12OccursBeforeERKS1_:
  147|   894k|  bool OccursBefore(const ViableSubstitution& y) const {
  148|   894k|    if (offset != y.offset) return offset < y.offset;
  ------------------
  |  Branch (148:9): [True: 894k, False: 0]
  ------------------
  149|      0|    return old.size() > y.old.size();
  150|   894k|  }

_ZNK4absl6ByChar4FindENSt3__117basic_string_viewIcNS1_11char_traitsIcEEEEm:
  106|  3.66M|absl::string_view ByChar::Find(absl::string_view text, size_t pos) const {
  107|  3.66M|  size_t found_pos = text.find(c_, pos);
  108|  3.66M|  if (found_pos == absl::string_view::npos)
  ------------------
  |  Branch (108:7): [True: 9.21k, False: 3.65M]
  ------------------
  109|  9.21k|    return absl::string_view(text.data() + text.size(), 0);
  110|  3.65M|  return text.substr(found_pos, 1);
  111|  3.66M|}

_ZN4absl8StrSplitIcEENS_16strings_internal8SplitterINS1_15SelectDelimiterIT_E4typeENS_10AllowEmptyENSt3__117basic_string_viewIcNS8_11char_traitsIcEEEEEENS1_23ConvertibleToStringViewES4_:
  499|  9.21k|StrSplit(strings_internal::ConvertibleToStringView text, Delimiter d) {
  500|  9.21k|  using DelimiterType =
  501|  9.21k|      typename strings_internal::SelectDelimiter<Delimiter>::type;
  502|  9.21k|  return strings_internal::Splitter<DelimiterType, AllowEmpty,
  503|  9.21k|                                    absl::string_view>(
  504|  9.21k|      text.value(), DelimiterType(d), AllowEmpty());
  505|  9.21k|}
_ZN4absl6ByCharC2Ec:
  158|  9.21k|  explicit ByChar(char c) : c_(c) {}
_ZNK4absl10AllowEmptyclENSt3__117basic_string_viewIcNS1_11char_traitsIcEEEE:
  330|  3.66M|  bool operator()(absl::string_view) const { return true; }

_ZN4absl13ClippedSubstrENSt3__117basic_string_viewIcNS0_11char_traitsIcEEEEmm:
  687|  6.74M|                                 size_t n = string_view::npos) {
  688|  6.74M|  pos = (std::min)(pos, static_cast<size_t>(s.size()));
  689|  6.74M|  return s.substr(pos, n);
  690|  6.74M|}
_ZN4absl18NullSafeStringViewEPKc:
  697|   210k|constexpr string_view NullSafeStringView(const char* p) {
  698|   210k|  return p ? string_view(p) : string_view();
  ------------------
  |  Branch (698:10): [True: 210k, False: 0]
  ------------------
  699|   210k|}

_ZN4absl24synchronization_internal14InvalidGraphIdEv:
   58|      6|inline GraphId InvalidGraphId() {
   59|      6|  return GraphId{0};
   60|      6|}

_ZN4absl5MutexD2Ev:
  750|  7.50k|Mutex::~Mutex() {
  751|  7.50k|  intptr_t v = mu_.load(std::memory_order_relaxed);
  752|  7.50k|  if ((v & kMuEvent) != 0 && !DebugOnlyIsExiting()) {
  ------------------
  |  Branch (752:7): [True: 0, False: 7.50k]
  |  Branch (752:30): [True: 0, False: 0]
  ------------------
  753|      0|    ForgetSynchEvent(&this->mu_, kMuEvent, kMuSpin);
  754|      0|  }
  755|  7.50k|  if (kDebugMode) {
  ------------------
  |  Branch (755:7): [Folded - Ignored]
  ------------------
  756|      0|    this->ForgetDeadlockInfo();
  757|      0|  }
  758|  7.50k|  ABSL_TSAN_MUTEX_DESTROY(this, __tsan_mutex_not_static);
  759|  7.50k|}
_ZN4absl5Mutex4LockEv:
 1495|      6|void Mutex::Lock() {
 1496|      6|  ABSL_TSAN_MUTEX_PRE_LOCK(this, 0);
 1497|      6|  GraphId id = DebugOnlyDeadlockCheck(this);
 1498|      6|  intptr_t v = mu_.load(std::memory_order_relaxed);
 1499|       |  // try fast acquire, then spin loop
 1500|      6|  if ((v & (kMuWriter | kMuReader | kMuEvent)) != 0 ||
  ------------------
  |  Branch (1500:7): [True: 0, False: 6]
  ------------------
 1501|      6|      !mu_.compare_exchange_strong(v, kMuWriter | v,
  ------------------
  |  Branch (1501:7): [True: 0, False: 6]
  ------------------
 1502|      6|                                   std::memory_order_acquire,
 1503|      6|                                   std::memory_order_relaxed)) {
 1504|       |    // try spin acquire, then slow loop
 1505|      0|    if (!TryAcquireWithSpinning(&this->mu_)) {
  ------------------
  |  Branch (1505:9): [True: 0, False: 0]
  ------------------
 1506|      0|      this->LockSlow(kExclusive, nullptr, 0);
 1507|      0|    }
 1508|      0|  }
 1509|      6|  DebugOnlyLockEnter(this, id);
 1510|      6|  ABSL_TSAN_MUTEX_POST_LOCK(this, 0, 0);
 1511|      6|}
_ZN4absl5Mutex6UnlockEv:
 1723|      6|void Mutex::Unlock() {
 1724|      6|  ABSL_TSAN_MUTEX_PRE_UNLOCK(this, 0);
 1725|      6|  DebugOnlyLockLeave(this);
 1726|      6|  intptr_t v = mu_.load(std::memory_order_relaxed);
 1727|       |
 1728|      6|  if (kDebugMode && ((v & (kMuWriter | kMuReader)) != kMuWriter)) {
  ------------------
  |  Branch (1728:7): [Folded - Ignored]
  |  Branch (1728:21): [True: 0, False: 0]
  ------------------
 1729|      0|    ABSL_RAW_LOG(FATAL, "Mutex unlocked when destroyed or not locked: v=0x%x",
  ------------------
  |  |   45|      0|  do {                                                                         \
  |  |   46|      0|    constexpr const char* absl_raw_log_internal_basename =                     \
  |  |   47|      0|        ::absl::raw_log_internal::Basename(__FILE__, sizeof(__FILE__) - 1);    \
  |  |   48|      0|    ::absl::raw_log_internal::RawLog(ABSL_RAW_LOG_INTERNAL_##severity,         \
  |  |   49|      0|                                     absl_raw_log_internal_basename, __LINE__, \
  |  |   50|      0|                                     __VA_ARGS__);                             \
  |  |   51|      0|    ABSL_RAW_LOG_INTERNAL_MAYBE_UNREACHABLE_##severity;                        \
  |  |   52|      0|  } while (0)
  |  |  ------------------
  |  |  |  Branch (52:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
 1730|      0|                 static_cast<unsigned>(v));
 1731|      0|  }
 1732|       |
 1733|       |  // should_try_cas is whether we'll try a compare-and-swap immediately.
 1734|       |  // NOTE: optimized out when kDebugMode is false.
 1735|      6|  bool should_try_cas = ((v & (kMuEvent | kMuWriter)) == kMuWriter &&
  ------------------
  |  Branch (1735:26): [True: 6, False: 0]
  ------------------
 1736|      6|                          (v & (kMuWait | kMuDesig)) != kMuWait);
  ------------------
  |  Branch (1736:27): [True: 6, False: 0]
  ------------------
 1737|       |  // But, we can use an alternate computation of it, that compilers
 1738|       |  // currently don't find on their own.  When that changes, this function
 1739|       |  // can be simplified.
 1740|      6|  intptr_t x = (v ^ (kMuWriter | kMuWait)) & (kMuWriter | kMuEvent);
 1741|      6|  intptr_t y = (v ^ (kMuWriter | kMuWait)) & (kMuWait | kMuDesig);
 1742|       |  // Claim: "x == 0 && y > 0" is equal to should_try_cas.
 1743|       |  // Also, because kMuWriter and kMuEvent exceed kMuDesig and kMuWait,
 1744|       |  // all possible non-zero values for x exceed all possible values for y.
 1745|       |  // Therefore, (x == 0 && y > 0) == (x < y).
 1746|      6|  if (kDebugMode && should_try_cas != (x < y)) {
  ------------------
  |  Branch (1746:7): [Folded - Ignored]
  |  Branch (1746:21): [True: 0, False: 0]
  ------------------
 1747|       |    // We would usually use PRIdPTR here, but is not correctly implemented
 1748|       |    // within the android toolchain.
 1749|      0|    ABSL_RAW_LOG(FATAL, "internal logic error %llx %llx %llx\n",
  ------------------
  |  |   45|      0|  do {                                                                         \
  |  |   46|      0|    constexpr const char* absl_raw_log_internal_basename =                     \
  |  |   47|      0|        ::absl::raw_log_internal::Basename(__FILE__, sizeof(__FILE__) - 1);    \
  |  |   48|      0|    ::absl::raw_log_internal::RawLog(ABSL_RAW_LOG_INTERNAL_##severity,         \
  |  |   49|      0|                                     absl_raw_log_internal_basename, __LINE__, \
  |  |   50|      0|                                     __VA_ARGS__);                             \
  |  |   51|      0|    ABSL_RAW_LOG_INTERNAL_MAYBE_UNREACHABLE_##severity;                        \
  |  |   52|      0|  } while (0)
  |  |  ------------------
  |  |  |  Branch (52:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
 1750|      0|                 static_cast<long long>(v), static_cast<long long>(x),
 1751|      0|                 static_cast<long long>(y));
 1752|      0|  }
 1753|      6|  if (x < y &&
  ------------------
  |  Branch (1753:7): [True: 6, False: 0]
  ------------------
 1754|      6|      mu_.compare_exchange_strong(v, v & ~(kMuWrWait | kMuWriter),
  ------------------
  |  Branch (1754:7): [True: 6, False: 0]
  ------------------
 1755|      6|                                  std::memory_order_release,
 1756|      6|                                  std::memory_order_relaxed)) {
 1757|       |    // fast writer release (writer with no waiters or with designated waker)
 1758|      6|  } else {
 1759|      0|    this->UnlockSlow(nullptr /*no waitp*/);  // take slow path
 1760|      0|  }
 1761|      6|  ABSL_TSAN_MUTEX_POST_UNLOCK(this, 0);
 1762|      6|}
mutex.cc:_ZN4abslL22DebugOnlyDeadlockCheckEPNS_5MutexE:
 1437|      6|static inline GraphId DebugOnlyDeadlockCheck(Mutex *mu) {
 1438|      6|  if (kDebugMode && synch_deadlock_detection.load(std::memory_order_acquire) !=
  ------------------
  |  Branch (1438:7): [Folded - Ignored]
  |  Branch (1438:21): [True: 0, False: 0]
  ------------------
 1439|      0|                        OnDeadlockCycle::kIgnore) {
 1440|      0|    return DeadlockCheck(mu);
 1441|      6|  } else {
 1442|      6|    return InvalidGraphId();
 1443|      6|  }
 1444|      6|}
mutex.cc:_ZN4abslL18DebugOnlyLockEnterEPNS_5MutexENS_24synchronization_internal7GraphIdE:
 1271|      6|static inline void DebugOnlyLockEnter(Mutex *mu, GraphId id) {
 1272|      6|  if (kDebugMode) {
  ------------------
  |  Branch (1272:7): [Folded - Ignored]
  ------------------
 1273|      0|    if (synch_deadlock_detection.load(std::memory_order_acquire) !=
  ------------------
  |  Branch (1273:9): [True: 0, False: 0]
  ------------------
 1274|      0|        OnDeadlockCycle::kIgnore) {
 1275|      0|      LockEnter(mu, id, Synch_GetAllLocks());
 1276|      0|    }
 1277|      0|  }
 1278|      6|}
mutex.cc:_ZN4abslL18DebugOnlyLockLeaveEPNS_5MutexE:
 1281|      6|static inline void DebugOnlyLockLeave(Mutex *mu) {
 1282|      6|  if (kDebugMode) {
  ------------------
  |  Branch (1282:7): [Folded - Ignored]
  ------------------
 1283|      0|    if (synch_deadlock_detection.load(std::memory_order_acquire) !=
  ------------------
  |  Branch (1283:9): [True: 0, False: 0]
  ------------------
 1284|      0|        OnDeadlockCycle::kIgnore) {
 1285|      0|      LockLeave(mu, GetGraphId(mu), Synch_GetAllLocks());
 1286|      0|    }
 1287|      0|  }
 1288|      6|}

_ZN4absl9MutexLockC2EPNS_5MutexE:
  550|      6|  explicit MutexLock(Mutex *mu) ABSL_EXCLUSIVE_LOCK_FUNCTION(mu) : mu_(mu) {
  551|      6|    this->mu_->Lock();
  552|      6|  }
_ZN4absl9MutexLockD2Ev:
  568|      6|  ~MutexLock() ABSL_UNLOCK_FUNCTION() { this->mu_->Unlock(); }
_ZN4absl5MutexC2Ev:
 1005|  7.50k|inline Mutex::Mutex() : mu_(0) {
 1006|  7.50k|  ABSL_TSAN_MUTEX_CREATE(this, __tsan_mutex_not_static);
 1007|  7.50k|}

_ZN4absl16compare_internal27compare_result_as_less_thanIbLi0EEEbT_:
  558|  30.2k|constexpr bool compare_result_as_less_than(const BoolT r) { return r; }

_ZN4absl4SpanIKNS_19str_format_internal13FormatArgImplEEC2IS3_S3_EESt16initializer_listIS2_E:
  270|  1.47M|      : Span(v.begin(), v.size()) {}
_ZN4absl4SpanIKNS_19str_format_internal13FormatArgImplEEC2EPS3_m:
  190|  1.47M|      : ptr_(array), len_(length) {}
_ZNK4absl4SpanIKNS_19str_format_internal13FormatArgImplEE4sizeEv:
  283|  3.84M|  constexpr size_type size() const noexcept { return len_; }
_ZNK4absl4SpanIKNS_19str_format_internal13FormatArgImplEEixEm:
  298|  3.84M|  constexpr reference operator[](size_type i) const noexcept {
  299|  3.84M|    return ABSL_HARDENING_ASSERT(i < size()), ptr_[i];
  ------------------
  |  |  128|  3.84M|#define ABSL_HARDENING_ASSERT(expr) ABSL_ASSERT(expr)
  |  |  ------------------
  |  |  |  |   95|  3.84M|  (false ? static_cast<void>(expr) : static_cast<void>(0))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (95:4): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  300|  3.84M|  }

_ZN4absl7forwardIjEEOT_RNSt3__116remove_referenceIS1_E4typeE:
  231|     15|    absl::remove_reference_t<T>& t) noexcept {  // NOLINT(runtime/references)
  232|     15|  return static_cast<T&&>(t);
  233|     15|}
_ZN4absl7forwardINS_18container_internal20HashtablezInfoHandleEEEOT_RNSt3__116remove_referenceIS3_E4typeE:
  231|     30|    absl::remove_reference_t<T>& t) noexcept {  // NOLINT(runtime/references)
  232|     30|  return static_cast<T&&>(t);
  233|     30|}
_ZN4absl7forwardIRmEEOT_RNSt3__116remove_referenceIS2_E4typeE:
  231|     15|    absl::remove_reference_t<T>& t) noexcept {  // NOLINT(runtime/references)
  232|     15|  return static_cast<T&&>(t);
  233|     15|}
_ZN4absl7forwardINS_18container_internal12CommonFieldsEEEOT_RNSt3__116remove_referenceIS3_E4typeE:
  231|     15|    absl::remove_reference_t<T>& t) noexcept {  // NOLINT(runtime/references)
  232|     15|  return static_cast<T&&>(t);
  233|     15|}
_ZN4absl7forwardIRKNS_18container_internal10StringHashEEEOT_RNSt3__116remove_referenceIS5_E4typeE:
  231|      3|    absl::remove_reference_t<T>& t) noexcept {  // NOLINT(runtime/references)
  232|      3|  return static_cast<T&&>(t);
  233|      3|}
_ZN4absl7forwardIRKNS_18container_internal8StringEqEEEOT_RNSt3__116remove_referenceIS5_E4typeE:
  231|      3|    absl::remove_reference_t<T>& t) noexcept {  // NOLINT(runtime/references)
  232|      3|  return static_cast<T&&>(t);
  233|      3|}
_ZN4absl7forwardIRKNSt3__19allocatorINS1_12basic_stringIcNS1_11char_traitsIcEENS2_IcEEEEEEEEOT_RNS1_16remove_referenceISB_E4typeE:
  231|      3|    absl::remove_reference_t<T>& t) noexcept {  // NOLINT(runtime/references)
  232|      3|  return static_cast<T&&>(t);
  233|      3|}
_ZN4absl7forwardIRKNS_18container_internal19key_compare_adapterINSt3__14lessImEEmE15checked_compareEEEOT_RNS3_16remove_referenceISA_E4typeE:
  231|  14.4k|    absl::remove_reference_t<T>& t) noexcept {  // NOLINT(runtime/references)
  232|  14.4k|  return static_cast<T&&>(t);
  233|  14.4k|}
_ZN4absl7forwardIRKN6google8protobuf8internal12MapAllocatorINSt3__14pairIKmPNS3_8NodeBaseEEEEEEEOT_RNS5_16remove_referenceISE_E4typeE:
  231|  14.4k|    absl::remove_reference_t<T>& t) noexcept {  // NOLINT(runtime/references)
  232|  14.4k|  return static_cast<T&&>(t);
  233|  14.4k|}
_ZN4absl7forwardIPNS_18container_internal10btree_nodeINS1_10map_paramsImPN6google8protobuf8internal8NodeBaseENSt3__14lessImEENS6_12MapAllocatorINS9_4pairIKmS8_EEEELi256ELb0EEEEEEEOT_RNS9_16remove_referenceISK_E4typeE:
  231|  14.4k|    absl::remove_reference_t<T>& t) noexcept {  // NOLINT(runtime/references)
  232|  14.4k|  return static_cast<T&&>(t);
  233|  14.4k|}
_ZN4absl7forwardINS_18container_internal6HashEqIPKN6google8protobuf10DescriptorEvE4HashEEEOT_RNSt3__116remove_referenceISA_E4typeE:
  231|      6|    absl::remove_reference_t<T>& t) noexcept {  // NOLINT(runtime/references)
  232|      6|  return static_cast<T&&>(t);
  233|      6|}
_ZN4absl7forwardINS_18container_internal6HashEqIPKN6google8protobuf10DescriptorEvE2EqEEEOT_RNSt3__116remove_referenceISA_E4typeE:
  231|      6|    absl::remove_reference_t<T>& t) noexcept {  // NOLINT(runtime/references)
  232|      6|  return static_cast<T&&>(t);
  233|      6|}
message.cc:_ZN4absl7forwardIN6google8protobuf12_GLOBAL__N_123GeneratedMessageFactory20DescriptorByNameHashEEEOT_RNSt3__116remove_referenceIS6_E4typeE:
  231|      6|    absl::remove_reference_t<T>& t) noexcept {  // NOLINT(runtime/references)
  232|      6|  return static_cast<T&&>(t);
  233|      6|}
message.cc:_ZN4absl7forwardIN6google8protobuf12_GLOBAL__N_123GeneratedMessageFactory18DescriptorByNameEqEEEOT_RNSt3__116remove_referenceIS6_E4typeE:
  231|      6|    absl::remove_reference_t<T>& t) noexcept {  // NOLINT(runtime/references)
  232|      6|  return static_cast<T&&>(t);
  233|      6|}
_ZN4absl7forwardINSt3__19allocatorIPKN6google8protobuf8internal15DescriptorTableEEEEEOT_RNS1_16remove_referenceISA_E4typeE:
  231|      6|    absl::remove_reference_t<T>& t) noexcept {  // NOLINT(runtime/references)
  232|      6|  return static_cast<T&&>(t);
  233|      6|}
_ZN4absl7forwardINSt3__19allocatorINS1_4pairIKPKN6google8protobuf10DescriptorEPKNS5_7MessageEEEEEEEOT_RNS1_16remove_referenceISF_E4typeE:
  231|      6|    absl::remove_reference_t<T>& t) noexcept {  // NOLINT(runtime/references)
  232|      6|  return static_cast<T&&>(t);
  233|      6|}
_ZN4absl7forwardIRKNS_18container_internal19key_compare_adapterIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11FileCompareENS6_9FileEntryEE15checked_compareEEEOT_RNSt3__116remove_referenceISD_E4typeE:
  231|      6|    absl::remove_reference_t<T>& t) noexcept {  // NOLINT(runtime/references)
  232|      6|  return static_cast<T&&>(t);
  233|      6|}
_ZN4absl7forwardIRKNSt3__19allocatorIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryEEEEEOT_RNS1_16remove_referenceISB_E4typeE:
  231|      6|    absl::remove_reference_t<T>& t) noexcept {  // NOLINT(runtime/references)
  232|      6|  return static_cast<T&&>(t);
  233|      6|}
_ZN4absl7forwardIPNS_18container_internal10btree_nodeINS1_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntryENS7_11FileCompareENSt3__19allocatorIS8_EELi256ELb0EEEEEEEOT_RNSA_16remove_referenceISG_E4typeE:
  231|      6|    absl::remove_reference_t<T>& t) noexcept {  // NOLINT(runtime/references)
  232|      6|  return static_cast<T&&>(t);
  233|      6|}
_ZN4absl7forwardIRKNS_18container_internal19key_compare_adapterIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex13SymbolCompareENS6_11SymbolEntryEE15checked_compareEEEOT_RNSt3__116remove_referenceISD_E4typeE:
  231|      6|    absl::remove_reference_t<T>& t) noexcept {  // NOLINT(runtime/references)
  232|      6|  return static_cast<T&&>(t);
  233|      6|}
_ZN4absl7forwardIRKNSt3__19allocatorIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryEEEEEOT_RNS1_16remove_referenceISB_E4typeE:
  231|      6|    absl::remove_reference_t<T>& t) noexcept {  // NOLINT(runtime/references)
  232|      6|  return static_cast<T&&>(t);
  233|      6|}
_ZN4absl7forwardIPNS_18container_internal10btree_nodeINS1_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS7_13SymbolCompareENSt3__19allocatorIS8_EELi256ELb0EEEEEEEOT_RNSA_16remove_referenceISG_E4typeE:
  231|      6|    absl::remove_reference_t<T>& t) noexcept {  // NOLINT(runtime/references)
  232|      6|  return static_cast<T&&>(t);
  233|      6|}
_ZN4absl7forwardIRKNS_18container_internal19key_compare_adapterIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex16ExtensionCompareENS6_14ExtensionEntryEE15checked_compareEEEOT_RNSt3__116remove_referenceISD_E4typeE:
  231|      6|    absl::remove_reference_t<T>& t) noexcept {  // NOLINT(runtime/references)
  232|      6|  return static_cast<T&&>(t);
  233|      6|}
_ZN4absl7forwardIRKNSt3__19allocatorIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex14ExtensionEntryEEEEEOT_RNS1_16remove_referenceISB_E4typeE:
  231|      6|    absl::remove_reference_t<T>& t) noexcept {  // NOLINT(runtime/references)
  232|      6|  return static_cast<T&&>(t);
  233|      6|}
_ZN4absl7forwardIPNS_18container_internal10btree_nodeINS1_10set_paramsIN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex14ExtensionEntryENS7_16ExtensionCompareENSt3__19allocatorIS8_EELi256ELb0EEEEEEEOT_RNSA_16remove_referenceISG_E4typeE:
  231|      6|    absl::remove_reference_t<T>& t) noexcept {  // NOLINT(runtime/references)
  232|      6|  return static_cast<T&&>(t);
  233|      6|}

_ZN6google8protobuf8internal14ArenaStringPtr3SetENSt3__117basic_string_viewIcNS3_11char_traitsIcEEEEPNS0_5ArenaE:
  118|  2.50k|void ArenaStringPtr::Set(absl::string_view value, Arena* arena) {
  119|  2.50k|  ScopedCheckPtrInvariants check(&tagged_ptr_);
  120|  2.50k|  if (IsDefault()) {
  ------------------
  |  Branch (120:7): [True: 2.50k, False: 0]
  ------------------
  121|       |    // If we're not on an arena, skip straight to a true string to avoid
  122|       |    // possible copy cost later.
  123|  2.50k|    tagged_ptr_ = arena != nullptr ? CreateArenaString(*arena, value)
  ------------------
  |  Branch (123:19): [True: 0, False: 2.50k]
  ------------------
  124|  2.50k|                                   : CreateString(value);
  125|  2.50k|  } else {
  126|       |#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  127|       |    if (arena == nullptr) {
  128|       |      auto* old = tagged_ptr_.GetIfAllocated();
  129|       |      tagged_ptr_ = CreateString(value);
  130|       |      delete old;
  131|       |    } else {
  132|       |      auto* old = UnsafeMutablePointer();
  133|       |      tagged_ptr_ = CreateArenaString(*arena, value);
  134|       |      old->assign("garbagedata");
  135|       |    }
  136|       |#else   // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  137|      0|    UnsafeMutablePointer()->assign(value.data(), value.length());
  138|      0|#endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  139|      0|  }
  140|  2.50k|}
_ZN6google8protobuf8internal14ArenaStringPtr3SetIJEEEvRKNSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEPNS0_5ArenaE:
  143|   171M|void ArenaStringPtr::Set(const std::string& value, Arena* arena) {
  144|   171M|  ScopedCheckPtrInvariants check(&tagged_ptr_);
  145|   171M|  if (IsDefault()) {
  ------------------
  |  Branch (145:7): [True: 171M, False: 0]
  ------------------
  146|       |    // If we're not on an arena, skip straight to a true string to avoid
  147|       |    // possible copy cost later.
  148|   171M|    tagged_ptr_ = arena != nullptr ? CreateArenaString(*arena, value)
  ------------------
  |  Branch (148:19): [True: 0, False: 171M]
  ------------------
  149|   171M|                                   : CreateString(value);
  150|   171M|  } else {
  151|       |#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  152|       |    if (arena == nullptr) {
  153|       |      auto* old = tagged_ptr_.GetIfAllocated();
  154|       |      tagged_ptr_ = CreateString(value);
  155|       |      delete old;
  156|       |    } else {
  157|       |      auto* old = UnsafeMutablePointer();
  158|       |      tagged_ptr_ = CreateArenaString(*arena, value);
  159|       |      old->assign("garbagedata");
  160|       |    }
  161|       |#else   // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  162|      0|    UnsafeMutablePointer()->assign(value);
  163|      0|#endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  164|      0|  }
  165|   171M|}
_ZN6google8protobuf8internal14ArenaStringPtr7MutableEPNS0_5ArenaE:
  181|    940|std::string* ArenaStringPtr::Mutable(Arena* arena) {
  182|    940|  ScopedCheckPtrInvariants check(&tagged_ptr_);
  183|    940|  if (tagged_ptr_.IsMutable()) {
  ------------------
  |  Branch (183:7): [True: 0, False: 940]
  ------------------
  184|      0|    return tagged_ptr_.Get();
  185|    940|  } else {
  186|    940|    return MutableSlow(arena);
  187|    940|  }
  188|    940|}
_ZN6google8protobuf8internal14ArenaStringPtr7DestroyEv:
  255|   181M|void ArenaStringPtr::Destroy() {
  256|   181M|  delete tagged_ptr_.GetIfAllocated();
  257|   181M|}
arenastring.cc:_ZN6google8protobuf8internal12_GLOBAL__N_124ScopedCheckPtrInvariantsC2EPKNS1_15TaggedStringPtrE:
   93|   171M|  explicit ScopedCheckPtrInvariants(const TaggedStringPtr*) {}
arenastring.cc:_ZN6google8protobuf8internal12_GLOBAL__N_112CreateStringENSt3__117basic_string_viewIcNS3_11char_traitsIcEEEE:
   99|   171M|inline TaggedStringPtr CreateString(absl::string_view value) {
  100|   171M|  TaggedStringPtr res;
  101|   171M|  res.SetAllocated(new std::string(value.data(), value.length()));
  102|   171M|  return res;
  103|   171M|}
_ZN6google8protobuf8internal14ArenaStringPtr11MutableSlowIJEEEPNSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEPNS0_5ArenaEDpRKT_:
  213|    940|                                         const Lazy&... lazy_default) {
  214|    940|  ABSL_DCHECK(IsDefault());
  ------------------
  |  |   43|    940|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|    940|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|  1.88k|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  163|    940|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|  1.88k|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|  1.88k|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  215|       |
  216|       |  // For empty defaults, this ends up calling the default constructor which is
  217|       |  // more efficient than a copy construction from
  218|       |  // GetEmptyStringAlreadyInited().
  219|    940|  return NewString(arena, lazy_default.get()...);
  220|    940|}

_ZN6google8protobuf14DescriptorPool24InternalAddGeneratedFileEPKvi:
 1973|     10|    const void* encoded_file_descriptor, int size) {
 1974|       |  // So, this function is called in the process of initializing the
 1975|       |  // descriptors for generated proto classes.  Each generated .pb.cc file
 1976|       |  // has an internal procedure called AddDescriptors() which is called at
 1977|       |  // process startup, and that function calls this one in order to register
 1978|       |  // the raw bytes of the FileDescriptorProto representing the file.
 1979|       |  //
 1980|       |  // We do not actually construct the descriptor objects right away.  We just
 1981|       |  // hang on to the bytes until they are actually needed.  We actually construct
 1982|       |  // the descriptor the first time one of the following things happens:
 1983|       |  // * Someone calls a method like descriptor(), GetDescriptor(), or
 1984|       |  //   GetReflection() on the generated types, which requires returning the
 1985|       |  //   descriptor or an object based on it.
 1986|       |  // * Someone looks up the descriptor in DescriptorPool::generated_pool().
 1987|       |  //
 1988|       |  // Once one of these happens, the DescriptorPool actually parses the
 1989|       |  // FileDescriptorProto and generates a FileDescriptor (and all its children)
 1990|       |  // based on it.
 1991|       |  //
 1992|       |  // Note that FileDescriptorProto is itself a generated protocol message.
 1993|       |  // Therefore, when we parse one, we have to be very careful to avoid using
 1994|       |  // any descriptor-based operations, since this might cause infinite recursion
 1995|       |  // or deadlock.
 1996|     10|  ABSL_CHECK(GeneratedDatabase()->Add(encoded_file_descriptor, size));
  ------------------
  |  |   40|     10|#define ABSL_CHECK(condition) ABSL_CHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   26|     20|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  ------------------
  |  |  |  |  |  |  163|     10|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  ------------------
  |  |  |  |   27|     20|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |   28|     20|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  ------------------
  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 1997|     10|}
descriptor.cc:_ZN6google8protobuf12_GLOBAL__N_117GeneratedDatabaseEv:
 1937|     10|EncodedDescriptorDatabase* GeneratedDatabase() {
 1938|     10|  static auto generated_database =
 1939|     10|      internal::OnShutdownDelete(new EncodedDescriptorDatabase());
 1940|     10|  return generated_database;
 1941|     10|}

_ZN6google8protobuf33FieldDescriptorProto_Type_IsValidEi:
 1560|    418|bool FieldDescriptorProto_Type_IsValid(int value) {
 1561|    418|  switch (value) {
 1562|      6|    case 1:
  ------------------
  |  Branch (1562:5): [True: 6, False: 412]
  ------------------
 1563|      6|    case 2:
  ------------------
  |  Branch (1563:5): [True: 0, False: 418]
  ------------------
 1564|     22|    case 3:
  ------------------
  |  Branch (1564:5): [True: 16, False: 402]
  ------------------
 1565|     26|    case 4:
  ------------------
  |  Branch (1565:5): [True: 4, False: 414]
  ------------------
 1566|     74|    case 5:
  ------------------
  |  Branch (1566:5): [True: 48, False: 370]
  ------------------
 1567|     74|    case 6:
  ------------------
  |  Branch (1567:5): [True: 0, False: 418]
  ------------------
 1568|     74|    case 7:
  ------------------
  |  Branch (1568:5): [True: 0, False: 418]
  ------------------
 1569|    146|    case 8:
  ------------------
  |  Branch (1569:5): [True: 72, False: 346]
  ------------------
 1570|    250|    case 9:
  ------------------
  |  Branch (1570:5): [True: 104, False: 314]
  ------------------
 1571|    250|    case 10:
  ------------------
  |  Branch (1571:5): [True: 0, False: 418]
  ------------------
 1572|    388|    case 11:
  ------------------
  |  Branch (1572:5): [True: 138, False: 280]
  ------------------
 1573|    392|    case 12:
  ------------------
  |  Branch (1573:5): [True: 4, False: 414]
  ------------------
 1574|    392|    case 13:
  ------------------
  |  Branch (1574:5): [True: 0, False: 418]
  ------------------
 1575|    418|    case 14:
  ------------------
  |  Branch (1575:5): [True: 26, False: 392]
  ------------------
 1576|    418|    case 15:
  ------------------
  |  Branch (1576:5): [True: 0, False: 418]
  ------------------
 1577|    418|    case 16:
  ------------------
  |  Branch (1577:5): [True: 0, False: 418]
  ------------------
 1578|    418|    case 17:
  ------------------
  |  Branch (1578:5): [True: 0, False: 418]
  ------------------
 1579|    418|    case 18:
  ------------------
  |  Branch (1579:5): [True: 0, False: 418]
  ------------------
 1580|    418|      return true;
 1581|      0|    default:
  ------------------
  |  Branch (1581:5): [True: 0, False: 418]
  ------------------
 1582|      0|      return false;
 1583|    418|  }
 1584|    418|}
_ZN6google8protobuf34FieldDescriptorProto_Label_IsValidEi:
 1616|    418|bool FieldDescriptorProto_Label_IsValid(int value) {
 1617|    418|  switch (value) {
 1618|    322|    case 1:
  ------------------
  |  Branch (1618:5): [True: 322, False: 96]
  ------------------
 1619|    326|    case 2:
  ------------------
  |  Branch (1619:5): [True: 4, False: 414]
  ------------------
 1620|    418|    case 3:
  ------------------
  |  Branch (1620:5): [True: 92, False: 326]
  ------------------
 1621|    418|      return true;
 1622|      0|    default:
  ------------------
  |  Branch (1622:5): [True: 0, False: 418]
  ------------------
 1623|      0|      return false;
 1624|    418|  }
 1625|    418|}
_ZN6google8protobuf32FileOptions_OptimizeMode_IsValidEi:
 1642|      2|bool FileOptions_OptimizeMode_IsValid(int value) {
 1643|      2|  switch (value) {
 1644|      2|    case 1:
  ------------------
  |  Branch (1644:5): [True: 2, False: 0]
  ------------------
 1645|      2|    case 2:
  ------------------
  |  Branch (1645:5): [True: 0, False: 2]
  ------------------
 1646|      2|    case 3:
  ------------------
  |  Branch (1646:5): [True: 0, False: 2]
  ------------------
 1647|      2|      return true;
 1648|      0|    default:
  ------------------
  |  Branch (1648:5): [True: 0, False: 2]
  ------------------
 1649|      0|      return false;
 1650|      2|  }
 1651|      2|}
_ZN6google8protobuf36FieldOptions_OptionRetention_IsValidEi:
 1720|      2|bool FieldOptions_OptionRetention_IsValid(int value) {
 1721|      2|  switch (value) {
 1722|      0|    case 0:
  ------------------
  |  Branch (1722:5): [True: 0, False: 2]
  ------------------
 1723|      0|    case 1:
  ------------------
  |  Branch (1723:5): [True: 0, False: 2]
  ------------------
 1724|      2|    case 2:
  ------------------
  |  Branch (1724:5): [True: 2, False: 0]
  ------------------
 1725|      2|      return true;
 1726|      0|    default:
  ------------------
  |  Branch (1726:5): [True: 0, False: 2]
  ------------------
 1727|      0|      return false;
 1728|      2|  }
 1729|      2|}
_ZN6google8protobuf19FileDescriptorProtoC2EPNS0_5ArenaE:
 2056|     10|  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
 2057|     10|  SharedCtor(arena);
 2058|       |  // @@protoc_insertion_point(arena_constructor:google.protobuf.FileDescriptorProto)
 2059|     10|}
_ZN6google8protobuf19FileDescriptorProtoD2Ev:
 2167|     10|FileDescriptorProto::~FileDescriptorProto() {
 2168|       |  // @@protoc_insertion_point(destructor:google.protobuf.FileDescriptorProto)
 2169|     10|  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  ------------------
  |  Branch (2169:13): [True: 0, False: 10]
  ------------------
 2170|      0|  (void)arena;
 2171|      0|    return;
 2172|      0|  }
 2173|     10|  SharedDtor();
 2174|     10|}
_ZN6google8protobuf19FileDescriptorProto5ClearEv:
 2197|     10|void FileDescriptorProto::Clear() {
 2198|       |// @@protoc_insertion_point(message_clear_start:google.protobuf.FileDescriptorProto)
 2199|     10|  ::uint32_t cached_has_bits = 0;
 2200|       |  // Prevent compiler warnings about cached_has_bits being unused
 2201|     10|  (void) cached_has_bits;
 2202|       |
 2203|     10|  _internal_mutable_dependency()->Clear();
 2204|     10|  _internal_mutable_message_type()->Clear();
 2205|     10|  _internal_mutable_enum_type()->Clear();
 2206|     10|  _internal_mutable_service()->Clear();
 2207|     10|  _internal_mutable_extension()->Clear();
 2208|     10|  _internal_mutable_public_dependency()->Clear();
 2209|     10|  _internal_mutable_weak_dependency()->Clear();
 2210|     10|  cached_has_bits = _impl_._has_bits_[0];
 2211|     10|  if (cached_has_bits & 0x0000003fu) {
  ------------------
  |  Branch (2211:7): [True: 0, False: 10]
  ------------------
 2212|      0|    if (cached_has_bits & 0x00000001u) {
  ------------------
  |  Branch (2212:9): [True: 0, False: 0]
  ------------------
 2213|      0|      _impl_.name_.ClearNonDefaultToEmpty();
 2214|      0|    }
 2215|      0|    if (cached_has_bits & 0x00000002u) {
  ------------------
  |  Branch (2215:9): [True: 0, False: 0]
  ------------------
 2216|      0|      _impl_.package_.ClearNonDefaultToEmpty();
 2217|      0|    }
 2218|      0|    if (cached_has_bits & 0x00000004u) {
  ------------------
  |  Branch (2218:9): [True: 0, False: 0]
  ------------------
 2219|      0|      _impl_.syntax_.ClearNonDefaultToEmpty();
 2220|      0|    }
 2221|      0|    if (cached_has_bits & 0x00000008u) {
  ------------------
  |  Branch (2221:9): [True: 0, False: 0]
  ------------------
 2222|      0|      _impl_.edition_.ClearNonDefaultToEmpty();
 2223|      0|    }
 2224|      0|    if (cached_has_bits & 0x00000010u) {
  ------------------
  |  Branch (2224:9): [True: 0, False: 0]
  ------------------
 2225|      0|      ABSL_DCHECK(_impl_.options_ != nullptr);
  ------------------
  |  |   43|      0|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|      0|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      0|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  163|      0|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|      0|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2226|      0|      _impl_.options_->Clear();
 2227|      0|    }
 2228|      0|    if (cached_has_bits & 0x00000020u) {
  ------------------
  |  Branch (2228:9): [True: 0, False: 0]
  ------------------
 2229|      0|      ABSL_DCHECK(_impl_.source_code_info_ != nullptr);
  ------------------
  |  |   43|      0|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|      0|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      0|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  163|      0|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|      0|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2230|      0|      _impl_.source_code_info_->Clear();
 2231|      0|    }
 2232|      0|  }
 2233|     10|  _impl_._has_bits_.Clear();
 2234|     10|  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
 2235|     10|}
_ZN6google8protobuf19FileDescriptorProto14_InternalParseEPKcPNS0_8internal12ParseContextE:
 2237|     10|const char* FileDescriptorProto::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
 2238|     10|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
 2239|     10|  _Internal::HasBits has_bits{};
 2240|     62|  while (!ctx->Done(&ptr)) {
  ------------------
  |  Branch (2240:10): [True: 52, False: 10]
  ------------------
 2241|     52|    ::uint32_t tag;
 2242|     52|    ptr = ::_pbi::ReadTag(ptr, &tag);
 2243|     52|    switch (tag >> 3) {
 2244|       |      // optional string name = 1;
 2245|     10|      case 1:
  ------------------
  |  Branch (2245:7): [True: 10, False: 42]
  ------------------
 2246|     10|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
  ------------------
  |  |  538|     10|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 10, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 10, False: 0]
  |  |  ------------------
  ------------------
 2247|     10|          auto str = _internal_mutable_name();
 2248|     10|          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
 2249|     10|          CHK_(ptr);
  ------------------
  |  | 2238|     10|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|     10|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 10]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 10]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2250|       |          #ifndef NDEBUG
 2251|       |          ::_pbi::VerifyUTF8(str, "google.protobuf.FileDescriptorProto.name");
 2252|       |          #endif  // !NDEBUG
 2253|     10|        } else {
 2254|      0|          goto handle_unusual;
 2255|      0|        }
 2256|     10|        continue;
 2257|       |      // optional string package = 2;
 2258|     10|      case 2:
  ------------------
  |  Branch (2258:7): [True: 10, False: 42]
  ------------------
 2259|     10|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 18)) {
  ------------------
  |  |  538|     10|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 10, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 10, False: 0]
  |  |  ------------------
  ------------------
 2260|     10|          auto str = _internal_mutable_package();
 2261|     10|          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
 2262|     10|          CHK_(ptr);
  ------------------
  |  | 2238|     10|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|     10|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 10]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 10]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2263|       |          #ifndef NDEBUG
 2264|       |          ::_pbi::VerifyUTF8(str, "google.protobuf.FileDescriptorProto.package");
 2265|       |          #endif  // !NDEBUG
 2266|     10|        } else {
 2267|      0|          goto handle_unusual;
 2268|      0|        }
 2269|     10|        continue;
 2270|       |      // repeated string dependency = 3;
 2271|     10|      case 3:
  ------------------
  |  Branch (2271:7): [True: 2, False: 50]
  ------------------
 2272|      2|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 26)) {
  ------------------
  |  |  538|      2|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 2, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 2, False: 0]
  |  |  ------------------
  ------------------
 2273|      2|          ptr -= 1;
 2274|      6|          do {
 2275|      6|            ptr += 1;
 2276|      6|            auto str = _internal_add_dependency();
 2277|      6|            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
 2278|      6|            CHK_(ptr);
  ------------------
  |  | 2238|      6|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      6|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 6]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2279|       |            #ifndef NDEBUG
 2280|       |            ::_pbi::VerifyUTF8(str, "google.protobuf.FileDescriptorProto.dependency");
 2281|       |            #endif  // !NDEBUG
 2282|      6|            if (!ctx->DataAvailable(ptr)) break;
  ------------------
  |  Branch (2282:17): [True: 0, False: 6]
  ------------------
 2283|      6|          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr));
  ------------------
  |  Branch (2283:20): [True: 4, False: 2]
  ------------------
 2284|      2|        } else {
 2285|      0|          goto handle_unusual;
 2286|      0|        }
 2287|      2|        continue;
 2288|       |      // repeated .google.protobuf.DescriptorProto message_type = 4;
 2289|     10|      case 4:
  ------------------
  |  Branch (2289:7): [True: 10, False: 42]
  ------------------
 2290|     10|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 34)) {
  ------------------
  |  |  538|     10|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 10, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 10, False: 0]
  |  |  ------------------
  ------------------
 2291|     10|          ptr -= 1;
 2292|     62|          do {
 2293|     62|            ptr += 1;
 2294|     62|            ptr = ctx->ParseMessage(_internal_add_message_type(), ptr);
 2295|     62|            CHK_(ptr);
  ------------------
  |  | 2238|     62|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|     62|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 62]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 62]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2296|     62|            if (!ctx->DataAvailable(ptr)) break;
  ------------------
  |  Branch (2296:17): [True: 0, False: 62]
  ------------------
 2297|     62|          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<34>(ptr));
  ------------------
  |  Branch (2297:20): [True: 52, False: 10]
  ------------------
 2298|     10|        } else {
 2299|      0|          goto handle_unusual;
 2300|      0|        }
 2301|     10|        continue;
 2302|       |      // repeated .google.protobuf.EnumDescriptorProto enum_type = 5;
 2303|     10|      case 5:
  ------------------
  |  Branch (2303:7): [True: 2, False: 50]
  ------------------
 2304|      2|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 42)) {
  ------------------
  |  |  538|      2|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 2, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 2, False: 0]
  |  |  ------------------
  ------------------
 2305|      2|          ptr -= 1;
 2306|      2|          do {
 2307|      2|            ptr += 1;
 2308|      2|            ptr = ctx->ParseMessage(_internal_add_enum_type(), ptr);
 2309|      2|            CHK_(ptr);
  ------------------
  |  | 2238|      2|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      2|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 2]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2310|      2|            if (!ctx->DataAvailable(ptr)) break;
  ------------------
  |  Branch (2310:17): [True: 0, False: 2]
  ------------------
 2311|      2|          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<42>(ptr));
  ------------------
  |  Branch (2311:20): [True: 0, False: 2]
  ------------------
 2312|      2|        } else {
 2313|      0|          goto handle_unusual;
 2314|      0|        }
 2315|      2|        continue;
 2316|       |      // repeated .google.protobuf.ServiceDescriptorProto service = 6;
 2317|      2|      case 6:
  ------------------
  |  Branch (2317:7): [True: 0, False: 52]
  ------------------
 2318|      0|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 50)) {
  ------------------
  |  |  538|      0|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 0, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2319|      0|          ptr -= 1;
 2320|      0|          do {
 2321|      0|            ptr += 1;
 2322|      0|            ptr = ctx->ParseMessage(_internal_add_service(), ptr);
 2323|      0|            CHK_(ptr);
  ------------------
  |  | 2238|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2324|      0|            if (!ctx->DataAvailable(ptr)) break;
  ------------------
  |  Branch (2324:17): [True: 0, False: 0]
  ------------------
 2325|      0|          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<50>(ptr));
  ------------------
  |  Branch (2325:20): [True: 0, False: 0]
  ------------------
 2326|      0|        } else {
 2327|      0|          goto handle_unusual;
 2328|      0|        }
 2329|      0|        continue;
 2330|       |      // repeated .google.protobuf.FieldDescriptorProto extension = 7;
 2331|      0|      case 7:
  ------------------
  |  Branch (2331:7): [True: 0, False: 52]
  ------------------
 2332|      0|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 58)) {
  ------------------
  |  |  538|      0|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 0, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2333|      0|          ptr -= 1;
 2334|      0|          do {
 2335|      0|            ptr += 1;
 2336|      0|            ptr = ctx->ParseMessage(_internal_add_extension(), ptr);
 2337|      0|            CHK_(ptr);
  ------------------
  |  | 2238|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2338|      0|            if (!ctx->DataAvailable(ptr)) break;
  ------------------
  |  Branch (2338:17): [True: 0, False: 0]
  ------------------
 2339|      0|          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<58>(ptr));
  ------------------
  |  Branch (2339:20): [True: 0, False: 0]
  ------------------
 2340|      0|        } else {
 2341|      0|          goto handle_unusual;
 2342|      0|        }
 2343|      0|        continue;
 2344|       |      // optional .google.protobuf.FileOptions options = 8;
 2345|     10|      case 8:
  ------------------
  |  Branch (2345:7): [True: 10, False: 42]
  ------------------
 2346|     10|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 66)) {
  ------------------
  |  |  538|     10|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 10, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 10, False: 0]
  |  |  ------------------
  ------------------
 2347|     10|          ptr = ctx->ParseMessage(_internal_mutable_options(), ptr);
 2348|     10|          CHK_(ptr);
  ------------------
  |  | 2238|     10|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|     10|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 10]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 10]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2349|     10|        } else {
 2350|      0|          goto handle_unusual;
 2351|      0|        }
 2352|     10|        continue;
 2353|       |      // optional .google.protobuf.SourceCodeInfo source_code_info = 9;
 2354|     10|      case 9:
  ------------------
  |  Branch (2354:7): [True: 0, False: 52]
  ------------------
 2355|      0|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 74)) {
  ------------------
  |  |  538|      0|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 0, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2356|      0|          ptr = ctx->ParseMessage(_internal_mutable_source_code_info(), ptr);
 2357|      0|          CHK_(ptr);
  ------------------
  |  | 2238|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2358|      0|        } else {
 2359|      0|          goto handle_unusual;
 2360|      0|        }
 2361|      0|        continue;
 2362|       |      // repeated int32 public_dependency = 10;
 2363|      0|      case 10:
  ------------------
  |  Branch (2363:7): [True: 0, False: 52]
  ------------------
 2364|      0|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 80)) {
  ------------------
  |  |  538|      0|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 0, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2365|      0|          ptr -= 1;
 2366|      0|          do {
 2367|      0|            ptr += 1;
 2368|      0|            _internal_add_public_dependency(::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr));
 2369|      0|            CHK_(ptr);
  ------------------
  |  | 2238|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2370|      0|            if (!ctx->DataAvailable(ptr)) break;
  ------------------
  |  Branch (2370:17): [True: 0, False: 0]
  ------------------
 2371|      0|          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<80>(ptr));
  ------------------
  |  Branch (2371:20): [True: 0, False: 0]
  ------------------
 2372|      0|        } else if (static_cast<::uint8_t>(tag) == 82) {
  ------------------
  |  Branch (2372:20): [True: 0, False: 0]
  ------------------
 2373|      0|          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedInt32Parser(_internal_mutable_public_dependency(), ptr, ctx);
 2374|      0|          CHK_(ptr);
  ------------------
  |  | 2238|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2375|      0|        } else {
 2376|      0|          goto handle_unusual;
 2377|      0|        }
 2378|      0|        continue;
 2379|       |      // repeated int32 weak_dependency = 11;
 2380|      0|      case 11:
  ------------------
  |  Branch (2380:7): [True: 0, False: 52]
  ------------------
 2381|      0|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 88)) {
  ------------------
  |  |  538|      0|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 0, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2382|      0|          ptr -= 1;
 2383|      0|          do {
 2384|      0|            ptr += 1;
 2385|      0|            _internal_add_weak_dependency(::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr));
 2386|      0|            CHK_(ptr);
  ------------------
  |  | 2238|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2387|      0|            if (!ctx->DataAvailable(ptr)) break;
  ------------------
  |  Branch (2387:17): [True: 0, False: 0]
  ------------------
 2388|      0|          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<88>(ptr));
  ------------------
  |  Branch (2388:20): [True: 0, False: 0]
  ------------------
 2389|      0|        } else if (static_cast<::uint8_t>(tag) == 90) {
  ------------------
  |  Branch (2389:20): [True: 0, False: 0]
  ------------------
 2390|      0|          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedInt32Parser(_internal_mutable_weak_dependency(), ptr, ctx);
 2391|      0|          CHK_(ptr);
  ------------------
  |  | 2238|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2392|      0|        } else {
 2393|      0|          goto handle_unusual;
 2394|      0|        }
 2395|      0|        continue;
 2396|       |      // optional string syntax = 12;
 2397|      8|      case 12:
  ------------------
  |  Branch (2397:7): [True: 8, False: 44]
  ------------------
 2398|      8|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 98)) {
  ------------------
  |  |  538|      8|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 8, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 8, False: 0]
  |  |  ------------------
  ------------------
 2399|      8|          auto str = _internal_mutable_syntax();
 2400|      8|          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
 2401|      8|          CHK_(ptr);
  ------------------
  |  | 2238|      8|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      8|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 8]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2402|       |          #ifndef NDEBUG
 2403|       |          ::_pbi::VerifyUTF8(str, "google.protobuf.FileDescriptorProto.syntax");
 2404|       |          #endif  // !NDEBUG
 2405|      8|        } else {
 2406|      0|          goto handle_unusual;
 2407|      0|        }
 2408|      8|        continue;
 2409|       |      // optional string edition = 13;
 2410|      8|      case 13:
  ------------------
  |  Branch (2410:7): [True: 0, False: 52]
  ------------------
 2411|      0|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 106)) {
  ------------------
  |  |  538|      0|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 0, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2412|      0|          auto str = _internal_mutable_edition();
 2413|      0|          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
 2414|      0|          CHK_(ptr);
  ------------------
  |  | 2238|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2415|       |          #ifndef NDEBUG
 2416|       |          ::_pbi::VerifyUTF8(str, "google.protobuf.FileDescriptorProto.edition");
 2417|       |          #endif  // !NDEBUG
 2418|      0|        } else {
 2419|      0|          goto handle_unusual;
 2420|      0|        }
 2421|      0|        continue;
 2422|      0|      default:
  ------------------
  |  Branch (2422:7): [True: 0, False: 52]
  ------------------
 2423|      0|        goto handle_unusual;
 2424|     52|    }  // switch
 2425|      0|  handle_unusual:
 2426|      0|    if ((tag == 0) || ((tag & 7) == 4)) {
  ------------------
  |  Branch (2426:9): [True: 0, False: 0]
  |  Branch (2426:23): [True: 0, False: 0]
  ------------------
 2427|      0|      CHK_(ptr);
  ------------------
  |  | 2238|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2428|      0|      ctx->SetLastTag(tag);
 2429|      0|      goto message_done;
 2430|      0|    }
 2431|      0|    ptr = UnknownFieldParse(
 2432|      0|        tag,
 2433|      0|        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
 2434|      0|        ptr, ctx);
 2435|      0|    CHK_(ptr != nullptr);
  ------------------
  |  | 2238|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2436|      0|  }  // while
 2437|     10|message_done:
 2438|     10|  _impl_._has_bits_.Or(has_bits);
 2439|     10|  return ptr;
 2440|      0|failure:
 2441|      0|  ptr = nullptr;
 2442|      0|  goto message_done;
 2443|     10|#undef CHK_
 2444|     10|}
_ZNK6google8protobuf19FileDescriptorProto13IsInitializedEv:
 2725|     10|bool FileDescriptorProto::IsInitialized() const {
 2726|     10|  if (!::PROTOBUF_NAMESPACE_ID::internal::AllAreInitialized(_internal_message_type()))
  ------------------
  |  Branch (2726:7): [True: 0, False: 10]
  ------------------
 2727|      0|    return false;
 2728|     10|  if (!::PROTOBUF_NAMESPACE_ID::internal::AllAreInitialized(_internal_enum_type()))
  ------------------
  |  Branch (2728:7): [True: 0, False: 10]
  ------------------
 2729|      0|    return false;
 2730|     10|  if (!::PROTOBUF_NAMESPACE_ID::internal::AllAreInitialized(_internal_service()))
  ------------------
  |  Branch (2730:7): [True: 0, False: 10]
  ------------------
 2731|      0|    return false;
 2732|     10|  if (!::PROTOBUF_NAMESPACE_ID::internal::AllAreInitialized(_internal_extension()))
  ------------------
  |  Branch (2732:7): [True: 0, False: 10]
  ------------------
 2733|      0|    return false;
 2734|     10|  if ((_impl_._has_bits_[0] & 0x00000010u) != 0) {
  ------------------
  |  Branch (2734:7): [True: 10, False: 0]
  ------------------
 2735|     10|    if (!_impl_.options_->IsInitialized()) return false;
  ------------------
  |  Branch (2735:9): [True: 0, False: 10]
  ------------------
 2736|     10|  }
 2737|     10|  return true;
 2738|     10|}
_ZN6google8protobuf30DescriptorProto_ExtensionRangeC2EPNS0_5ArenaE:
 2799|     18|  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
 2800|     18|  SharedCtor(arena);
 2801|       |  // @@protoc_insertion_point(arena_constructor:google.protobuf.DescriptorProto.ExtensionRange)
 2802|     18|}
_ZN6google8protobuf30DescriptorProto_ExtensionRangeD2Ev:
 2838|     18|DescriptorProto_ExtensionRange::~DescriptorProto_ExtensionRange() {
 2839|       |  // @@protoc_insertion_point(destructor:google.protobuf.DescriptorProto.ExtensionRange)
 2840|     18|  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  ------------------
  |  Branch (2840:13): [True: 0, False: 18]
  ------------------
 2841|      0|  (void)arena;
 2842|      0|    return;
 2843|      0|  }
 2844|     18|  SharedDtor();
 2845|     18|}
_ZN6google8protobuf30DescriptorProto_ExtensionRange14_InternalParseEPKcPNS0_8internal12ParseContextE:
 2876|     18|const char* DescriptorProto_ExtensionRange::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
 2877|     18|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
 2878|     18|  _Internal::HasBits has_bits{};
 2879|     54|  while (!ctx->Done(&ptr)) {
  ------------------
  |  Branch (2879:10): [True: 36, False: 18]
  ------------------
 2880|     36|    ::uint32_t tag;
 2881|     36|    ptr = ::_pbi::ReadTag(ptr, &tag);
 2882|     36|    switch (tag >> 3) {
 2883|       |      // optional int32 start = 1;
 2884|     18|      case 1:
  ------------------
  |  Branch (2884:7): [True: 18, False: 18]
  ------------------
 2885|     18|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 8)) {
  ------------------
  |  |  538|     18|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 18, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 18, False: 0]
  |  |  ------------------
  ------------------
 2886|     18|          _Internal::set_has_start(&has_bits);
 2887|     18|          _impl_.start_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
 2888|     18|          CHK_(ptr);
  ------------------
  |  | 2877|     18|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|     18|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 18]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 18]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2889|     18|        } else {
 2890|      0|          goto handle_unusual;
 2891|      0|        }
 2892|     18|        continue;
 2893|       |      // optional int32 end = 2;
 2894|     18|      case 2:
  ------------------
  |  Branch (2894:7): [True: 18, False: 18]
  ------------------
 2895|     18|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 16)) {
  ------------------
  |  |  538|     18|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 18, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 18, False: 0]
  |  |  ------------------
  ------------------
 2896|     18|          _Internal::set_has_end(&has_bits);
 2897|     18|          _impl_.end_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
 2898|     18|          CHK_(ptr);
  ------------------
  |  | 2877|     18|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|     18|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 18]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 18]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2899|     18|        } else {
 2900|      0|          goto handle_unusual;
 2901|      0|        }
 2902|     18|        continue;
 2903|       |      // optional .google.protobuf.ExtensionRangeOptions options = 3;
 2904|     18|      case 3:
  ------------------
  |  Branch (2904:7): [True: 0, False: 36]
  ------------------
 2905|      0|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 26)) {
  ------------------
  |  |  538|      0|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 0, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 2906|      0|          ptr = ctx->ParseMessage(_internal_mutable_options(), ptr);
 2907|      0|          CHK_(ptr);
  ------------------
  |  | 2877|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2908|      0|        } else {
 2909|      0|          goto handle_unusual;
 2910|      0|        }
 2911|      0|        continue;
 2912|      0|      default:
  ------------------
  |  Branch (2912:7): [True: 0, False: 36]
  ------------------
 2913|      0|        goto handle_unusual;
 2914|     36|    }  // switch
 2915|      0|  handle_unusual:
 2916|      0|    if ((tag == 0) || ((tag & 7) == 4)) {
  ------------------
  |  Branch (2916:9): [True: 0, False: 0]
  |  Branch (2916:23): [True: 0, False: 0]
  ------------------
 2917|      0|      CHK_(ptr);
  ------------------
  |  | 2877|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2918|      0|      ctx->SetLastTag(tag);
 2919|      0|      goto message_done;
 2920|      0|    }
 2921|      0|    ptr = UnknownFieldParse(
 2922|      0|        tag,
 2923|      0|        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
 2924|      0|        ptr, ctx);
 2925|      0|    CHK_(ptr != nullptr);
  ------------------
  |  | 2877|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2926|      0|  }  // while
 2927|     18|message_done:
 2928|     18|  _impl_._has_bits_.Or(has_bits);
 2929|     18|  return ptr;
 2930|      0|failure:
 2931|      0|  ptr = nullptr;
 2932|      0|  goto message_done;
 2933|     18|#undef CHK_
 2934|     18|}
_ZNK6google8protobuf30DescriptorProto_ExtensionRange13IsInitializedEv:
 3044|     18|bool DescriptorProto_ExtensionRange::IsInitialized() const {
 3045|     18|  if ((_impl_._has_bits_[0] & 0x00000001u) != 0) {
  ------------------
  |  Branch (3045:7): [True: 0, False: 18]
  ------------------
 3046|      0|    if (!_impl_.options_->IsInitialized()) return false;
  ------------------
  |  Branch (3046:9): [True: 0, False: 0]
  ------------------
 3047|      0|  }
 3048|     18|  return true;
 3049|     18|}
_ZN6google8protobuf29DescriptorProto_ReservedRangeC2EPNS0_5ArenaE:
 3084|     16|  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
 3085|     16|  SharedCtor(arena);
 3086|       |  // @@protoc_insertion_point(arena_constructor:google.protobuf.DescriptorProto.ReservedRange)
 3087|     16|}
_ZN6google8protobuf29DescriptorProto_ReservedRangeD2Ev:
 3107|     16|DescriptorProto_ReservedRange::~DescriptorProto_ReservedRange() {
 3108|       |  // @@protoc_insertion_point(destructor:google.protobuf.DescriptorProto.ReservedRange)
 3109|     16|  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  ------------------
  |  Branch (3109:13): [True: 0, False: 16]
  ------------------
 3110|      0|  (void)arena;
 3111|      0|    return;
 3112|      0|  }
 3113|     16|  SharedDtor();
 3114|     16|}
_ZN6google8protobuf29DescriptorProto_ReservedRange14_InternalParseEPKcPNS0_8internal12ParseContextE:
 3140|     16|const char* DescriptorProto_ReservedRange::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
 3141|     16|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
 3142|     16|  _Internal::HasBits has_bits{};
 3143|     48|  while (!ctx->Done(&ptr)) {
  ------------------
  |  Branch (3143:10): [True: 32, False: 16]
  ------------------
 3144|     32|    ::uint32_t tag;
 3145|     32|    ptr = ::_pbi::ReadTag(ptr, &tag);
 3146|     32|    switch (tag >> 3) {
 3147|       |      // optional int32 start = 1;
 3148|     16|      case 1:
  ------------------
  |  Branch (3148:7): [True: 16, False: 16]
  ------------------
 3149|     16|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 8)) {
  ------------------
  |  |  538|     16|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 16, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 16, False: 0]
  |  |  ------------------
  ------------------
 3150|     16|          _Internal::set_has_start(&has_bits);
 3151|     16|          _impl_.start_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
 3152|     16|          CHK_(ptr);
  ------------------
  |  | 3141|     16|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|     16|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 16]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 16]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3153|     16|        } else {
 3154|      0|          goto handle_unusual;
 3155|      0|        }
 3156|     16|        continue;
 3157|       |      // optional int32 end = 2;
 3158|     16|      case 2:
  ------------------
  |  Branch (3158:7): [True: 16, False: 16]
  ------------------
 3159|     16|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 16)) {
  ------------------
  |  |  538|     16|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 16, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 16, False: 0]
  |  |  ------------------
  ------------------
 3160|     16|          _Internal::set_has_end(&has_bits);
 3161|     16|          _impl_.end_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
 3162|     16|          CHK_(ptr);
  ------------------
  |  | 3141|     16|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|     16|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 16]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 16]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3163|     16|        } else {
 3164|      0|          goto handle_unusual;
 3165|      0|        }
 3166|     16|        continue;
 3167|     16|      default:
  ------------------
  |  Branch (3167:7): [True: 0, False: 32]
  ------------------
 3168|      0|        goto handle_unusual;
 3169|     32|    }  // switch
 3170|      0|  handle_unusual:
 3171|      0|    if ((tag == 0) || ((tag & 7) == 4)) {
  ------------------
  |  Branch (3171:9): [True: 0, False: 0]
  |  Branch (3171:23): [True: 0, False: 0]
  ------------------
 3172|      0|      CHK_(ptr);
  ------------------
  |  | 3141|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3173|      0|      ctx->SetLastTag(tag);
 3174|      0|      goto message_done;
 3175|      0|    }
 3176|      0|    ptr = UnknownFieldParse(
 3177|      0|        tag,
 3178|      0|        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
 3179|      0|        ptr, ctx);
 3180|      0|    CHK_(ptr != nullptr);
  ------------------
  |  | 3141|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3181|      0|  }  // while
 3182|     16|message_done:
 3183|     16|  _impl_._has_bits_.Or(has_bits);
 3184|     16|  return ptr;
 3185|      0|failure:
 3186|      0|  ptr = nullptr;
 3187|      0|  goto message_done;
 3188|     16|#undef CHK_
 3189|     16|}
_ZN6google8protobuf15DescriptorProtoC2EPNS0_5ArenaE:
 3323|     96|  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
 3324|     96|  SharedCtor(arena);
 3325|       |  // @@protoc_insertion_point(arena_constructor:google.protobuf.DescriptorProto)
 3326|     96|}
_ZN6google8protobuf15DescriptorProtoD2Ev:
 3382|     96|DescriptorProto::~DescriptorProto() {
 3383|       |  // @@protoc_insertion_point(destructor:google.protobuf.DescriptorProto)
 3384|     96|  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  ------------------
  |  Branch (3384:13): [True: 0, False: 96]
  ------------------
 3385|      0|  (void)arena;
 3386|      0|    return;
 3387|      0|  }
 3388|     96|  SharedDtor();
 3389|     96|}
_ZN6google8protobuf15DescriptorProto14_InternalParseEPKcPNS0_8internal12ParseContextE:
 3437|     96|const char* DescriptorProto::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
 3438|     96|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
 3439|     96|  _Internal::HasBits has_bits{};
 3440|    360|  while (!ctx->Done(&ptr)) {
  ------------------
  |  Branch (3440:10): [True: 264, False: 96]
  ------------------
 3441|    264|    ::uint32_t tag;
 3442|    264|    ptr = ::_pbi::ReadTag(ptr, &tag);
 3443|    264|    switch (tag >> 3) {
 3444|       |      // optional string name = 1;
 3445|     96|      case 1:
  ------------------
  |  Branch (3445:7): [True: 96, False: 168]
  ------------------
 3446|     96|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
  ------------------
  |  |  538|     96|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 96, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 96, False: 0]
  |  |  ------------------
  ------------------
 3447|     96|          auto str = _internal_mutable_name();
 3448|     96|          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
 3449|     96|          CHK_(ptr);
  ------------------
  |  | 3438|     96|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|     96|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 96]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 96]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3450|       |          #ifndef NDEBUG
 3451|       |          ::_pbi::VerifyUTF8(str, "google.protobuf.DescriptorProto.name");
 3452|       |          #endif  // !NDEBUG
 3453|     96|        } else {
 3454|      0|          goto handle_unusual;
 3455|      0|        }
 3456|     96|        continue;
 3457|       |      // repeated .google.protobuf.FieldDescriptorProto field = 2;
 3458|     96|      case 2:
  ------------------
  |  Branch (3458:7): [True: 96, False: 168]
  ------------------
 3459|     96|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 18)) {
  ------------------
  |  |  538|     96|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 96, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 96, False: 0]
  |  |  ------------------
  ------------------
 3460|     96|          ptr -= 1;
 3461|    418|          do {
 3462|    418|            ptr += 1;
 3463|    418|            ptr = ctx->ParseMessage(_internal_add_field(), ptr);
 3464|    418|            CHK_(ptr);
  ------------------
  |  | 3438|    418|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|    418|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 418]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 418]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3465|    418|            if (!ctx->DataAvailable(ptr)) break;
  ------------------
  |  Branch (3465:17): [True: 44, False: 374]
  ------------------
 3466|    418|          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr));
  ------------------
  |  Branch (3466:20): [True: 322, False: 52]
  ------------------
 3467|     96|        } else {
 3468|      0|          goto handle_unusual;
 3469|      0|        }
 3470|     96|        continue;
 3471|       |      // repeated .google.protobuf.DescriptorProto nested_type = 3;
 3472|     96|      case 3:
  ------------------
  |  Branch (3472:7): [True: 20, False: 244]
  ------------------
 3473|     20|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 26)) {
  ------------------
  |  |  538|     20|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 20, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 20, False: 0]
  |  |  ------------------
  ------------------
 3474|     20|          ptr -= 1;
 3475|     34|          do {
 3476|     34|            ptr += 1;
 3477|     34|            ptr = ctx->ParseMessage(_internal_add_nested_type(), ptr);
 3478|     34|            CHK_(ptr);
  ------------------
  |  | 3438|     34|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|     34|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 34]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 34]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3479|     34|            if (!ctx->DataAvailable(ptr)) break;
  ------------------
  |  Branch (3479:17): [True: 16, False: 18]
  ------------------
 3480|     34|          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr));
  ------------------
  |  Branch (3480:20): [True: 14, False: 4]
  ------------------
 3481|     20|        } else {
 3482|      0|          goto handle_unusual;
 3483|      0|        }
 3484|     20|        continue;
 3485|       |      // repeated .google.protobuf.EnumDescriptorProto enum_type = 4;
 3486|     20|      case 4:
  ------------------
  |  Branch (3486:7): [True: 12, False: 252]
  ------------------
 3487|     12|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 34)) {
  ------------------
  |  |  538|     12|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 12, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 12, False: 0]
  |  |  ------------------
  ------------------
 3488|     12|          ptr -= 1;
 3489|     20|          do {
 3490|     20|            ptr += 1;
 3491|     20|            ptr = ctx->ParseMessage(_internal_add_enum_type(), ptr);
 3492|     20|            CHK_(ptr);
  ------------------
  |  | 3438|     20|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|     20|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 20]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 20]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3493|     20|            if (!ctx->DataAvailable(ptr)) break;
  ------------------
  |  Branch (3493:17): [True: 4, False: 16]
  ------------------
 3494|     20|          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<34>(ptr));
  ------------------
  |  Branch (3494:20): [True: 8, False: 8]
  ------------------
 3495|     12|        } else {
 3496|      0|          goto handle_unusual;
 3497|      0|        }
 3498|     12|        continue;
 3499|       |      // repeated .google.protobuf.DescriptorProto.ExtensionRange extension_range = 5;
 3500|     18|      case 5:
  ------------------
  |  Branch (3500:7): [True: 18, False: 246]
  ------------------
 3501|     18|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 42)) {
  ------------------
  |  |  538|     18|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 18, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 18, False: 0]
  |  |  ------------------
  ------------------
 3502|     18|          ptr -= 1;
 3503|     18|          do {
 3504|     18|            ptr += 1;
 3505|     18|            ptr = ctx->ParseMessage(_internal_add_extension_range(), ptr);
 3506|     18|            CHK_(ptr);
  ------------------
  |  | 3438|     18|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|     18|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 18]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 18]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3507|     18|            if (!ctx->DataAvailable(ptr)) break;
  ------------------
  |  Branch (3507:17): [True: 10, False: 8]
  ------------------
 3508|     18|          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<42>(ptr));
  ------------------
  |  Branch (3508:20): [True: 0, False: 8]
  ------------------
 3509|     18|        } else {
 3510|      0|          goto handle_unusual;
 3511|      0|        }
 3512|     18|        continue;
 3513|       |      // repeated .google.protobuf.FieldDescriptorProto extension = 6;
 3514|     18|      case 6:
  ------------------
  |  Branch (3514:7): [True: 0, False: 264]
  ------------------
 3515|      0|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 50)) {
  ------------------
  |  |  538|      0|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 0, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3516|      0|          ptr -= 1;
 3517|      0|          do {
 3518|      0|            ptr += 1;
 3519|      0|            ptr = ctx->ParseMessage(_internal_add_extension(), ptr);
 3520|      0|            CHK_(ptr);
  ------------------
  |  | 3438|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3521|      0|            if (!ctx->DataAvailable(ptr)) break;
  ------------------
  |  Branch (3521:17): [True: 0, False: 0]
  ------------------
 3522|      0|          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<50>(ptr));
  ------------------
  |  Branch (3522:20): [True: 0, False: 0]
  ------------------
 3523|      0|        } else {
 3524|      0|          goto handle_unusual;
 3525|      0|        }
 3526|      0|        continue;
 3527|       |      // optional .google.protobuf.MessageOptions options = 7;
 3528|      6|      case 7:
  ------------------
  |  Branch (3528:7): [True: 6, False: 258]
  ------------------
 3529|      6|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 58)) {
  ------------------
  |  |  538|      6|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 6, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 6, False: 0]
  |  |  ------------------
  ------------------
 3530|      6|          ptr = ctx->ParseMessage(_internal_mutable_options(), ptr);
 3531|      6|          CHK_(ptr);
  ------------------
  |  | 3438|      6|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      6|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 6]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3532|      6|        } else {
 3533|      0|          goto handle_unusual;
 3534|      0|        }
 3535|      6|        continue;
 3536|       |      // repeated .google.protobuf.OneofDescriptorProto oneof_decl = 8;
 3537|      8|      case 8:
  ------------------
  |  Branch (3537:7): [True: 8, False: 256]
  ------------------
 3538|      8|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 66)) {
  ------------------
  |  |  538|      8|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 8, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 8, False: 0]
  |  |  ------------------
  ------------------
 3539|      8|          ptr -= 1;
 3540|      8|          do {
 3541|      8|            ptr += 1;
 3542|      8|            ptr = ctx->ParseMessage(_internal_add_oneof_decl(), ptr);
 3543|      8|            CHK_(ptr);
  ------------------
  |  | 3438|      8|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      8|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 8]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3544|      8|            if (!ctx->DataAvailable(ptr)) break;
  ------------------
  |  Branch (3544:17): [True: 8, False: 0]
  ------------------
 3545|      8|          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<66>(ptr));
  ------------------
  |  Branch (3545:20): [True: 0, False: 0]
  ------------------
 3546|      8|        } else {
 3547|      0|          goto handle_unusual;
 3548|      0|        }
 3549|      8|        continue;
 3550|       |      // repeated .google.protobuf.DescriptorProto.ReservedRange reserved_range = 9;
 3551|      8|      case 9:
  ------------------
  |  Branch (3551:7): [True: 8, False: 256]
  ------------------
 3552|      8|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 74)) {
  ------------------
  |  |  538|      8|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 8, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 8, False: 0]
  |  |  ------------------
  ------------------
 3553|      8|          ptr -= 1;
 3554|     16|          do {
 3555|     16|            ptr += 1;
 3556|     16|            ptr = ctx->ParseMessage(_internal_add_reserved_range(), ptr);
 3557|     16|            CHK_(ptr);
  ------------------
  |  | 3438|     16|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|     16|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 16]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 16]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3558|     16|            if (!ctx->DataAvailable(ptr)) break;
  ------------------
  |  Branch (3558:17): [True: 8, False: 8]
  ------------------
 3559|     16|          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<74>(ptr));
  ------------------
  |  Branch (3559:20): [True: 8, False: 0]
  ------------------
 3560|      8|        } else {
 3561|      0|          goto handle_unusual;
 3562|      0|        }
 3563|      8|        continue;
 3564|       |      // repeated string reserved_name = 10;
 3565|      8|      case 10:
  ------------------
  |  Branch (3565:7): [True: 0, False: 264]
  ------------------
 3566|      0|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 82)) {
  ------------------
  |  |  538|      0|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 0, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 3567|      0|          ptr -= 1;
 3568|      0|          do {
 3569|      0|            ptr += 1;
 3570|      0|            auto str = _internal_add_reserved_name();
 3571|      0|            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
 3572|      0|            CHK_(ptr);
  ------------------
  |  | 3438|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3573|       |            #ifndef NDEBUG
 3574|       |            ::_pbi::VerifyUTF8(str, "google.protobuf.DescriptorProto.reserved_name");
 3575|       |            #endif  // !NDEBUG
 3576|      0|            if (!ctx->DataAvailable(ptr)) break;
  ------------------
  |  Branch (3576:17): [True: 0, False: 0]
  ------------------
 3577|      0|          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<82>(ptr));
  ------------------
  |  Branch (3577:20): [True: 0, False: 0]
  ------------------
 3578|      0|        } else {
 3579|      0|          goto handle_unusual;
 3580|      0|        }
 3581|      0|        continue;
 3582|      0|      default:
  ------------------
  |  Branch (3582:7): [True: 0, False: 264]
  ------------------
 3583|      0|        goto handle_unusual;
 3584|    264|    }  // switch
 3585|      0|  handle_unusual:
 3586|      0|    if ((tag == 0) || ((tag & 7) == 4)) {
  ------------------
  |  Branch (3586:9): [True: 0, False: 0]
  |  Branch (3586:23): [True: 0, False: 0]
  ------------------
 3587|      0|      CHK_(ptr);
  ------------------
  |  | 3438|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3588|      0|      ctx->SetLastTag(tag);
 3589|      0|      goto message_done;
 3590|      0|    }
 3591|      0|    ptr = UnknownFieldParse(
 3592|      0|        tag,
 3593|      0|        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
 3594|      0|        ptr, ctx);
 3595|      0|    CHK_(ptr != nullptr);
  ------------------
  |  | 3438|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3596|      0|  }  // while
 3597|     96|message_done:
 3598|     96|  _impl_._has_bits_.Or(has_bits);
 3599|     96|  return ptr;
 3600|      0|failure:
 3601|      0|  ptr = nullptr;
 3602|      0|  goto message_done;
 3603|     96|#undef CHK_
 3604|     96|}
_ZNK6google8protobuf15DescriptorProto13IsInitializedEv:
 3826|     96|bool DescriptorProto::IsInitialized() const {
 3827|     96|  if (!::PROTOBUF_NAMESPACE_ID::internal::AllAreInitialized(_internal_field()))
  ------------------
  |  Branch (3827:7): [True: 0, False: 96]
  ------------------
 3828|      0|    return false;
 3829|     96|  if (!::PROTOBUF_NAMESPACE_ID::internal::AllAreInitialized(_internal_nested_type()))
  ------------------
  |  Branch (3829:7): [True: 0, False: 96]
  ------------------
 3830|      0|    return false;
 3831|     96|  if (!::PROTOBUF_NAMESPACE_ID::internal::AllAreInitialized(_internal_enum_type()))
  ------------------
  |  Branch (3831:7): [True: 0, False: 96]
  ------------------
 3832|      0|    return false;
 3833|     96|  if (!::PROTOBUF_NAMESPACE_ID::internal::AllAreInitialized(_internal_extension_range()))
  ------------------
  |  Branch (3833:7): [True: 0, False: 96]
  ------------------
 3834|      0|    return false;
 3835|     96|  if (!::PROTOBUF_NAMESPACE_ID::internal::AllAreInitialized(_internal_extension()))
  ------------------
  |  Branch (3835:7): [True: 0, False: 96]
  ------------------
 3836|      0|    return false;
 3837|     96|  if (!::PROTOBUF_NAMESPACE_ID::internal::AllAreInitialized(_internal_oneof_decl()))
  ------------------
  |  Branch (3837:7): [True: 0, False: 96]
  ------------------
 3838|      0|    return false;
 3839|     96|  if ((_impl_._has_bits_[0] & 0x00000002u) != 0) {
  ------------------
  |  Branch (3839:7): [True: 6, False: 90]
  ------------------
 3840|      6|    if (!_impl_.options_->IsInitialized()) return false;
  ------------------
  |  Branch (3840:9): [True: 0, False: 6]
  ------------------
 3841|      6|  }
 3842|     96|  return true;
 3843|     96|}
_ZN6google8protobuf20FieldDescriptorProtoC2EPNS0_5ArenaE:
 4630|    418|  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
 4631|    418|  SharedCtor(arena);
 4632|       |  // @@protoc_insertion_point(arena_constructor:google.protobuf.FieldDescriptorProto)
 4633|    418|}
_ZN6google8protobuf20FieldDescriptorProtoD2Ev:
 4756|    418|FieldDescriptorProto::~FieldDescriptorProto() {
 4757|       |  // @@protoc_insertion_point(destructor:google.protobuf.FieldDescriptorProto)
 4758|    418|  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  ------------------
  |  Branch (4758:13): [True: 0, False: 418]
  ------------------
 4759|      0|  (void)arena;
 4760|      0|    return;
 4761|      0|  }
 4762|    418|  SharedDtor();
 4763|    418|}
_ZN6google8protobuf20FieldDescriptorProto14_InternalParseEPKcPNS0_8internal12ParseContextE:
 4821|    418|const char* FieldDescriptorProto::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
 4822|    418|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
 4823|    418|  _Internal::HasBits has_bits{};
 4824|  2.37k|  while (!ctx->Done(&ptr)) {
  ------------------
  |  Branch (4824:10): [True: 1.96k, False: 418]
  ------------------
 4825|  1.96k|    ::uint32_t tag;
 4826|  1.96k|    ptr = ::_pbi::ReadTag(ptr, &tag);
 4827|  1.96k|    switch (tag >> 3) {
 4828|       |      // optional string name = 1;
 4829|    418|      case 1:
  ------------------
  |  Branch (4829:7): [True: 418, False: 1.54k]
  ------------------
 4830|    418|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
  ------------------
  |  |  538|    418|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 418, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 418, False: 0]
  |  |  ------------------
  ------------------
 4831|    418|          auto str = _internal_mutable_name();
 4832|    418|          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
 4833|    418|          CHK_(ptr);
  ------------------
  |  | 4822|    418|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|    418|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 418]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 418]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4834|       |          #ifndef NDEBUG
 4835|       |          ::_pbi::VerifyUTF8(str, "google.protobuf.FieldDescriptorProto.name");
 4836|       |          #endif  // !NDEBUG
 4837|    418|        } else {
 4838|      0|          goto handle_unusual;
 4839|      0|        }
 4840|    418|        continue;
 4841|       |      // optional string extendee = 2;
 4842|    418|      case 2:
  ------------------
  |  Branch (4842:7): [True: 0, False: 1.96k]
  ------------------
 4843|      0|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 18)) {
  ------------------
  |  |  538|      0|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 0, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4844|      0|          auto str = _internal_mutable_extendee();
 4845|      0|          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
 4846|      0|          CHK_(ptr);
  ------------------
  |  | 4822|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4847|       |          #ifndef NDEBUG
 4848|       |          ::_pbi::VerifyUTF8(str, "google.protobuf.FieldDescriptorProto.extendee");
 4849|       |          #endif  // !NDEBUG
 4850|      0|        } else {
 4851|      0|          goto handle_unusual;
 4852|      0|        }
 4853|      0|        continue;
 4854|       |      // optional int32 number = 3;
 4855|    418|      case 3:
  ------------------
  |  Branch (4855:7): [True: 418, False: 1.54k]
  ------------------
 4856|    418|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 24)) {
  ------------------
  |  |  538|    418|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 418, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 418, False: 0]
  |  |  ------------------
  ------------------
 4857|    418|          _Internal::set_has_number(&has_bits);
 4858|    418|          _impl_.number_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
 4859|    418|          CHK_(ptr);
  ------------------
  |  | 4822|    418|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|    418|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 418]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 418]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4860|    418|        } else {
 4861|      0|          goto handle_unusual;
 4862|      0|        }
 4863|    418|        continue;
 4864|       |      // optional .google.protobuf.FieldDescriptorProto.Label label = 4;
 4865|    418|      case 4:
  ------------------
  |  Branch (4865:7): [True: 418, False: 1.54k]
  ------------------
 4866|    418|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 32)) {
  ------------------
  |  |  538|    418|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 418, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 418, False: 0]
  |  |  ------------------
  ------------------
 4867|    418|          ::int32_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
 4868|    418|          CHK_(ptr);
  ------------------
  |  | 4822|    418|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|    418|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 418]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 418]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4869|    418|          if (PROTOBUF_PREDICT_TRUE(::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto_Label_IsValid(static_cast<int>(val)))) {
  ------------------
  |  |  538|    418|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 418, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 418, False: 0]
  |  |  ------------------
  ------------------
 4870|    418|            _internal_set_label(static_cast<::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto_Label>(val));
 4871|    418|          } else {
 4872|      0|            ::PROTOBUF_NAMESPACE_ID::internal::WriteVarint(4, val, mutable_unknown_fields());
 4873|      0|          }
 4874|    418|        } else {
 4875|      0|          goto handle_unusual;
 4876|      0|        }
 4877|    418|        continue;
 4878|       |      // optional .google.protobuf.FieldDescriptorProto.Type type = 5;
 4879|    418|      case 5:
  ------------------
  |  Branch (4879:7): [True: 418, False: 1.54k]
  ------------------
 4880|    418|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 40)) {
  ------------------
  |  |  538|    418|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 418, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 418, False: 0]
  |  |  ------------------
  ------------------
 4881|    418|          ::int32_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
 4882|    418|          CHK_(ptr);
  ------------------
  |  | 4822|    418|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|    418|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 418]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 418]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4883|    418|          if (PROTOBUF_PREDICT_TRUE(::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto_Type_IsValid(static_cast<int>(val)))) {
  ------------------
  |  |  538|    418|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 418, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 418, False: 0]
  |  |  ------------------
  ------------------
 4884|    418|            _internal_set_type(static_cast<::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto_Type>(val));
 4885|    418|          } else {
 4886|      0|            ::PROTOBUF_NAMESPACE_ID::internal::WriteVarint(5, val, mutable_unknown_fields());
 4887|      0|          }
 4888|    418|        } else {
 4889|      0|          goto handle_unusual;
 4890|      0|        }
 4891|    418|        continue;
 4892|       |      // optional string type_name = 6;
 4893|    418|      case 6:
  ------------------
  |  Branch (4893:7): [True: 164, False: 1.79k]
  ------------------
 4894|    164|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 50)) {
  ------------------
  |  |  538|    164|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 164, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 164, False: 0]
  |  |  ------------------
  ------------------
 4895|    164|          auto str = _internal_mutable_type_name();
 4896|    164|          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
 4897|    164|          CHK_(ptr);
  ------------------
  |  | 4822|    164|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|    164|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 164]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 164]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4898|       |          #ifndef NDEBUG
 4899|       |          ::_pbi::VerifyUTF8(str, "google.protobuf.FieldDescriptorProto.type_name");
 4900|       |          #endif  // !NDEBUG
 4901|    164|        } else {
 4902|      0|          goto handle_unusual;
 4903|      0|        }
 4904|    164|        continue;
 4905|       |      // optional string default_value = 7;
 4906|    164|      case 7:
  ------------------
  |  Branch (4906:7): [True: 54, False: 1.90k]
  ------------------
 4907|     54|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 58)) {
  ------------------
  |  |  538|     54|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 54, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 54, False: 0]
  |  |  ------------------
  ------------------
 4908|     54|          auto str = _internal_mutable_default_value();
 4909|     54|          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
 4910|     54|          CHK_(ptr);
  ------------------
  |  | 4822|     54|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|     54|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 54]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 54]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4911|       |          #ifndef NDEBUG
 4912|       |          ::_pbi::VerifyUTF8(str, "google.protobuf.FieldDescriptorProto.default_value");
 4913|       |          #endif  // !NDEBUG
 4914|     54|        } else {
 4915|      0|          goto handle_unusual;
 4916|      0|        }
 4917|     54|        continue;
 4918|       |      // optional .google.protobuf.FieldOptions options = 8;
 4919|     54|      case 8:
  ------------------
  |  Branch (4919:7): [True: 22, False: 1.93k]
  ------------------
 4920|     22|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 66)) {
  ------------------
  |  |  538|     22|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 22, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 22, False: 0]
  |  |  ------------------
  ------------------
 4921|     22|          ptr = ctx->ParseMessage(_internal_mutable_options(), ptr);
 4922|     22|          CHK_(ptr);
  ------------------
  |  | 4822|     22|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|     22|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 22]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 22]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4923|     22|        } else {
 4924|      0|          goto handle_unusual;
 4925|      0|        }
 4926|     22|        continue;
 4927|       |      // optional int32 oneof_index = 9;
 4928|     48|      case 9:
  ------------------
  |  Branch (4928:7): [True: 48, False: 1.91k]
  ------------------
 4929|     48|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 72)) {
  ------------------
  |  |  538|     48|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 48, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 48, False: 0]
  |  |  ------------------
  ------------------
 4930|     48|          _Internal::set_has_oneof_index(&has_bits);
 4931|     48|          _impl_.oneof_index_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
 4932|     48|          CHK_(ptr);
  ------------------
  |  | 4822|     48|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|     48|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 48]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 48]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4933|     48|        } else {
 4934|      0|          goto handle_unusual;
 4935|      0|        }
 4936|     48|        continue;
 4937|       |      // optional string json_name = 10;
 4938|     48|      case 10:
  ------------------
  |  Branch (4938:7): [True: 0, False: 1.96k]
  ------------------
 4939|      0|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 82)) {
  ------------------
  |  |  538|      0|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 0, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4940|      0|          auto str = _internal_mutable_json_name();
 4941|      0|          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
 4942|      0|          CHK_(ptr);
  ------------------
  |  | 4822|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4943|       |          #ifndef NDEBUG
 4944|       |          ::_pbi::VerifyUTF8(str, "google.protobuf.FieldDescriptorProto.json_name");
 4945|       |          #endif  // !NDEBUG
 4946|      0|        } else {
 4947|      0|          goto handle_unusual;
 4948|      0|        }
 4949|      0|        continue;
 4950|       |      // optional bool proto3_optional = 17;
 4951|      0|      case 17:
  ------------------
  |  Branch (4951:7): [True: 0, False: 1.96k]
  ------------------
 4952|      0|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 136)) {
  ------------------
  |  |  538|      0|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 0, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 4953|      0|          _Internal::set_has_proto3_optional(&has_bits);
 4954|      0|          _impl_.proto3_optional_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
 4955|      0|          CHK_(ptr);
  ------------------
  |  | 4822|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4956|      0|        } else {
 4957|      0|          goto handle_unusual;
 4958|      0|        }
 4959|      0|        continue;
 4960|      0|      default:
  ------------------
  |  Branch (4960:7): [True: 0, False: 1.96k]
  ------------------
 4961|      0|        goto handle_unusual;
 4962|  1.96k|    }  // switch
 4963|      0|  handle_unusual:
 4964|      0|    if ((tag == 0) || ((tag & 7) == 4)) {
  ------------------
  |  Branch (4964:9): [True: 0, False: 0]
  |  Branch (4964:23): [True: 0, False: 0]
  ------------------
 4965|      0|      CHK_(ptr);
  ------------------
  |  | 4822|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4966|      0|      ctx->SetLastTag(tag);
 4967|      0|      goto message_done;
 4968|      0|    }
 4969|      0|    ptr = UnknownFieldParse(
 4970|      0|        tag,
 4971|      0|        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
 4972|      0|        ptr, ctx);
 4973|      0|    CHK_(ptr != nullptr);
  ------------------
  |  | 4822|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4974|      0|  }  // while
 4975|    418|message_done:
 4976|    418|  _impl_._has_bits_.Or(has_bits);
 4977|    418|  return ptr;
 4978|      0|failure:
 4979|      0|  ptr = nullptr;
 4980|      0|  goto message_done;
 4981|    418|#undef CHK_
 4982|    418|}
_ZNK6google8protobuf20FieldDescriptorProto13IsInitializedEv:
 5229|    418|bool FieldDescriptorProto::IsInitialized() const {
 5230|    418|  if ((_impl_._has_bits_[0] & 0x00000020u) != 0) {
  ------------------
  |  Branch (5230:7): [True: 22, False: 396]
  ------------------
 5231|     22|    if (!_impl_.options_->IsInitialized()) return false;
  ------------------
  |  Branch (5231:9): [True: 0, False: 22]
  ------------------
 5232|     22|  }
 5233|    418|  return true;
 5234|    418|}
_ZN6google8protobuf20OneofDescriptorProtoC2EPNS0_5ArenaE:
 5286|      8|  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
 5287|      8|  SharedCtor(arena);
 5288|       |  // @@protoc_insertion_point(arena_constructor:google.protobuf.OneofDescriptorProto)
 5289|      8|}
_ZN6google8protobuf20OneofDescriptorProtoD2Ev:
 5329|      8|OneofDescriptorProto::~OneofDescriptorProto() {
 5330|       |  // @@protoc_insertion_point(destructor:google.protobuf.OneofDescriptorProto)
 5331|      8|  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  ------------------
  |  Branch (5331:13): [True: 0, False: 8]
  ------------------
 5332|      0|  (void)arena;
 5333|      0|    return;
 5334|      0|  }
 5335|      8|  SharedDtor();
 5336|      8|}
_ZN6google8protobuf20OneofDescriptorProto14_InternalParseEPKcPNS0_8internal12ParseContextE:
 5368|      8|const char* OneofDescriptorProto::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
 5369|      8|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
 5370|      8|  _Internal::HasBits has_bits{};
 5371|     16|  while (!ctx->Done(&ptr)) {
  ------------------
  |  Branch (5371:10): [True: 8, False: 8]
  ------------------
 5372|      8|    ::uint32_t tag;
 5373|      8|    ptr = ::_pbi::ReadTag(ptr, &tag);
 5374|      8|    switch (tag >> 3) {
 5375|       |      // optional string name = 1;
 5376|      8|      case 1:
  ------------------
  |  Branch (5376:7): [True: 8, False: 0]
  ------------------
 5377|      8|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
  ------------------
  |  |  538|      8|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 8, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 8, False: 0]
  |  |  ------------------
  ------------------
 5378|      8|          auto str = _internal_mutable_name();
 5379|      8|          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
 5380|      8|          CHK_(ptr);
  ------------------
  |  | 5369|      8|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      8|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 8]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5381|       |          #ifndef NDEBUG
 5382|       |          ::_pbi::VerifyUTF8(str, "google.protobuf.OneofDescriptorProto.name");
 5383|       |          #endif  // !NDEBUG
 5384|      8|        } else {
 5385|      0|          goto handle_unusual;
 5386|      0|        }
 5387|      8|        continue;
 5388|       |      // optional .google.protobuf.OneofOptions options = 2;
 5389|      8|      case 2:
  ------------------
  |  Branch (5389:7): [True: 0, False: 8]
  ------------------
 5390|      0|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 18)) {
  ------------------
  |  |  538|      0|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 0, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5391|      0|          ptr = ctx->ParseMessage(_internal_mutable_options(), ptr);
 5392|      0|          CHK_(ptr);
  ------------------
  |  | 5369|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5393|      0|        } else {
 5394|      0|          goto handle_unusual;
 5395|      0|        }
 5396|      0|        continue;
 5397|      0|      default:
  ------------------
  |  Branch (5397:7): [True: 0, False: 8]
  ------------------
 5398|      0|        goto handle_unusual;
 5399|      8|    }  // switch
 5400|      0|  handle_unusual:
 5401|      0|    if ((tag == 0) || ((tag & 7) == 4)) {
  ------------------
  |  Branch (5401:9): [True: 0, False: 0]
  |  Branch (5401:23): [True: 0, False: 0]
  ------------------
 5402|      0|      CHK_(ptr);
  ------------------
  |  | 5369|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5403|      0|      ctx->SetLastTag(tag);
 5404|      0|      goto message_done;
 5405|      0|    }
 5406|      0|    ptr = UnknownFieldParse(
 5407|      0|        tag,
 5408|      0|        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
 5409|      0|        ptr, ctx);
 5410|      0|    CHK_(ptr != nullptr);
  ------------------
  |  | 5369|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5411|      0|  }  // while
 5412|      8|message_done:
 5413|      8|  _impl_._has_bits_.Or(has_bits);
 5414|      8|  return ptr;
 5415|      0|failure:
 5416|      0|  ptr = nullptr;
 5417|      0|  goto message_done;
 5418|      8|#undef CHK_
 5419|      8|}
_ZNK6google8protobuf20OneofDescriptorProto13IsInitializedEv:
 5513|      8|bool OneofDescriptorProto::IsInitialized() const {
 5514|      8|  if ((_impl_._has_bits_[0] & 0x00000002u) != 0) {
  ------------------
  |  Branch (5514:7): [True: 0, False: 8]
  ------------------
 5515|      0|    if (!_impl_.options_->IsInitialized()) return false;
  ------------------
  |  Branch (5515:9): [True: 0, False: 0]
  ------------------
 5516|      0|  }
 5517|      8|  return true;
 5518|      8|}
_ZN6google8protobuf19EnumDescriptorProtoC2EPNS0_5ArenaE:
 5791|     22|  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
 5792|     22|  SharedCtor(arena);
 5793|       |  // @@protoc_insertion_point(arena_constructor:google.protobuf.EnumDescriptorProto)
 5794|     22|}
_ZN6google8protobuf19EnumDescriptorProtoD2Ev:
 5840|     22|EnumDescriptorProto::~EnumDescriptorProto() {
 5841|       |  // @@protoc_insertion_point(destructor:google.protobuf.EnumDescriptorProto)
 5842|     22|  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  ------------------
  |  Branch (5842:13): [True: 0, False: 22]
  ------------------
 5843|      0|  (void)arena;
 5844|      0|    return;
 5845|      0|  }
 5846|     22|  SharedDtor();
 5847|     22|}
_ZN6google8protobuf19EnumDescriptorProto14_InternalParseEPKcPNS0_8internal12ParseContextE:
 5885|     22|const char* EnumDescriptorProto::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
 5886|     22|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
 5887|     22|  _Internal::HasBits has_bits{};
 5888|     66|  while (!ctx->Done(&ptr)) {
  ------------------
  |  Branch (5888:10): [True: 44, False: 22]
  ------------------
 5889|     44|    ::uint32_t tag;
 5890|     44|    ptr = ::_pbi::ReadTag(ptr, &tag);
 5891|     44|    switch (tag >> 3) {
 5892|       |      // optional string name = 1;
 5893|     22|      case 1:
  ------------------
  |  Branch (5893:7): [True: 22, False: 22]
  ------------------
 5894|     22|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
  ------------------
  |  |  538|     22|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 22, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 22, False: 0]
  |  |  ------------------
  ------------------
 5895|     22|          auto str = _internal_mutable_name();
 5896|     22|          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
 5897|     22|          CHK_(ptr);
  ------------------
  |  | 5886|     22|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|     22|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 22]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 22]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5898|       |          #ifndef NDEBUG
 5899|       |          ::_pbi::VerifyUTF8(str, "google.protobuf.EnumDescriptorProto.name");
 5900|       |          #endif  // !NDEBUG
 5901|     22|        } else {
 5902|      0|          goto handle_unusual;
 5903|      0|        }
 5904|     22|        continue;
 5905|       |      // repeated .google.protobuf.EnumValueDescriptorProto value = 2;
 5906|     22|      case 2:
  ------------------
  |  Branch (5906:7): [True: 22, False: 22]
  ------------------
 5907|     22|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 18)) {
  ------------------
  |  |  538|     22|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 22, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 22, False: 0]
  |  |  ------------------
  ------------------
 5908|     22|          ptr -= 1;
 5909|    104|          do {
 5910|    104|            ptr += 1;
 5911|    104|            ptr = ctx->ParseMessage(_internal_add_value(), ptr);
 5912|    104|            CHK_(ptr);
  ------------------
  |  | 5886|    104|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|    104|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 104]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 104]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5913|    104|            if (!ctx->DataAvailable(ptr)) break;
  ------------------
  |  Branch (5913:17): [True: 22, False: 82]
  ------------------
 5914|    104|          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<18>(ptr));
  ------------------
  |  Branch (5914:20): [True: 82, False: 0]
  ------------------
 5915|     22|        } else {
 5916|      0|          goto handle_unusual;
 5917|      0|        }
 5918|     22|        continue;
 5919|       |      // optional .google.protobuf.EnumOptions options = 3;
 5920|     22|      case 3:
  ------------------
  |  Branch (5920:7): [True: 0, False: 44]
  ------------------
 5921|      0|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 26)) {
  ------------------
  |  |  538|      0|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 0, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5922|      0|          ptr = ctx->ParseMessage(_internal_mutable_options(), ptr);
 5923|      0|          CHK_(ptr);
  ------------------
  |  | 5886|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5924|      0|        } else {
 5925|      0|          goto handle_unusual;
 5926|      0|        }
 5927|      0|        continue;
 5928|       |      // repeated .google.protobuf.EnumDescriptorProto.EnumReservedRange reserved_range = 4;
 5929|      0|      case 4:
  ------------------
  |  Branch (5929:7): [True: 0, False: 44]
  ------------------
 5930|      0|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 34)) {
  ------------------
  |  |  538|      0|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 0, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5931|      0|          ptr -= 1;
 5932|      0|          do {
 5933|      0|            ptr += 1;
 5934|      0|            ptr = ctx->ParseMessage(_internal_add_reserved_range(), ptr);
 5935|      0|            CHK_(ptr);
  ------------------
  |  | 5886|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5936|      0|            if (!ctx->DataAvailable(ptr)) break;
  ------------------
  |  Branch (5936:17): [True: 0, False: 0]
  ------------------
 5937|      0|          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<34>(ptr));
  ------------------
  |  Branch (5937:20): [True: 0, False: 0]
  ------------------
 5938|      0|        } else {
 5939|      0|          goto handle_unusual;
 5940|      0|        }
 5941|      0|        continue;
 5942|       |      // repeated string reserved_name = 5;
 5943|      0|      case 5:
  ------------------
  |  Branch (5943:7): [True: 0, False: 44]
  ------------------
 5944|      0|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 42)) {
  ------------------
  |  |  538|      0|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 0, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 5945|      0|          ptr -= 1;
 5946|      0|          do {
 5947|      0|            ptr += 1;
 5948|      0|            auto str = _internal_add_reserved_name();
 5949|      0|            ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
 5950|      0|            CHK_(ptr);
  ------------------
  |  | 5886|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5951|       |            #ifndef NDEBUG
 5952|       |            ::_pbi::VerifyUTF8(str, "google.protobuf.EnumDescriptorProto.reserved_name");
 5953|       |            #endif  // !NDEBUG
 5954|      0|            if (!ctx->DataAvailable(ptr)) break;
  ------------------
  |  Branch (5954:17): [True: 0, False: 0]
  ------------------
 5955|      0|          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<42>(ptr));
  ------------------
  |  Branch (5955:20): [True: 0, False: 0]
  ------------------
 5956|      0|        } else {
 5957|      0|          goto handle_unusual;
 5958|      0|        }
 5959|      0|        continue;
 5960|      0|      default:
  ------------------
  |  Branch (5960:7): [True: 0, False: 44]
  ------------------
 5961|      0|        goto handle_unusual;
 5962|     44|    }  // switch
 5963|      0|  handle_unusual:
 5964|      0|    if ((tag == 0) || ((tag & 7) == 4)) {
  ------------------
  |  Branch (5964:9): [True: 0, False: 0]
  |  Branch (5964:23): [True: 0, False: 0]
  ------------------
 5965|      0|      CHK_(ptr);
  ------------------
  |  | 5886|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5966|      0|      ctx->SetLastTag(tag);
 5967|      0|      goto message_done;
 5968|      0|    }
 5969|      0|    ptr = UnknownFieldParse(
 5970|      0|        tag,
 5971|      0|        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
 5972|      0|        ptr, ctx);
 5973|      0|    CHK_(ptr != nullptr);
  ------------------
  |  | 5886|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5974|      0|  }  // while
 5975|     22|message_done:
 5976|     22|  _impl_._has_bits_.Or(has_bits);
 5977|     22|  return ptr;
 5978|      0|failure:
 5979|      0|  ptr = nullptr;
 5980|      0|  goto message_done;
 5981|     22|#undef CHK_
 5982|     22|}
_ZNK6google8protobuf19EnumDescriptorProto13IsInitializedEv:
 6124|     22|bool EnumDescriptorProto::IsInitialized() const {
 6125|     22|  if (!::PROTOBUF_NAMESPACE_ID::internal::AllAreInitialized(_internal_value()))
  ------------------
  |  Branch (6125:7): [True: 0, False: 22]
  ------------------
 6126|      0|    return false;
 6127|     22|  if ((_impl_._has_bits_[0] & 0x00000002u) != 0) {
  ------------------
  |  Branch (6127:7): [True: 0, False: 22]
  ------------------
 6128|      0|    if (!_impl_.options_->IsInitialized()) return false;
  ------------------
  |  Branch (6128:9): [True: 0, False: 0]
  ------------------
 6129|      0|  }
 6130|     22|  return true;
 6131|     22|}
_ZN6google8protobuf24EnumValueDescriptorProtoC2EPNS0_5ArenaE:
 6177|    104|  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
 6178|    104|  SharedCtor(arena);
 6179|       |  // @@protoc_insertion_point(arena_constructor:google.protobuf.EnumValueDescriptorProto)
 6180|    104|}
_ZN6google8protobuf24EnumValueDescriptorProtoD2Ev:
 6225|    104|EnumValueDescriptorProto::~EnumValueDescriptorProto() {
 6226|       |  // @@protoc_insertion_point(destructor:google.protobuf.EnumValueDescriptorProto)
 6227|    104|  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  ------------------
  |  Branch (6227:13): [True: 0, False: 104]
  ------------------
 6228|      0|  (void)arena;
 6229|      0|    return;
 6230|      0|  }
 6231|    104|  SharedDtor();
 6232|    104|}
_ZN6google8protobuf24EnumValueDescriptorProto14_InternalParseEPKcPNS0_8internal12ParseContextE:
 6265|    104|const char* EnumValueDescriptorProto::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
 6266|    104|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
 6267|    104|  _Internal::HasBits has_bits{};
 6268|    312|  while (!ctx->Done(&ptr)) {
  ------------------
  |  Branch (6268:10): [True: 208, False: 104]
  ------------------
 6269|    208|    ::uint32_t tag;
 6270|    208|    ptr = ::_pbi::ReadTag(ptr, &tag);
 6271|    208|    switch (tag >> 3) {
 6272|       |      // optional string name = 1;
 6273|    104|      case 1:
  ------------------
  |  Branch (6273:7): [True: 104, False: 104]
  ------------------
 6274|    104|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
  ------------------
  |  |  538|    104|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 104, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 104, False: 0]
  |  |  ------------------
  ------------------
 6275|    104|          auto str = _internal_mutable_name();
 6276|    104|          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
 6277|    104|          CHK_(ptr);
  ------------------
  |  | 6266|    104|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|    104|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 104]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 104]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6278|       |          #ifndef NDEBUG
 6279|       |          ::_pbi::VerifyUTF8(str, "google.protobuf.EnumValueDescriptorProto.name");
 6280|       |          #endif  // !NDEBUG
 6281|    104|        } else {
 6282|      0|          goto handle_unusual;
 6283|      0|        }
 6284|    104|        continue;
 6285|       |      // optional int32 number = 2;
 6286|    104|      case 2:
  ------------------
  |  Branch (6286:7): [True: 104, False: 104]
  ------------------
 6287|    104|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 16)) {
  ------------------
  |  |  538|    104|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 104, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 104, False: 0]
  |  |  ------------------
  ------------------
 6288|    104|          _Internal::set_has_number(&has_bits);
 6289|    104|          _impl_.number_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
 6290|    104|          CHK_(ptr);
  ------------------
  |  | 6266|    104|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|    104|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 104]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 104]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6291|    104|        } else {
 6292|      0|          goto handle_unusual;
 6293|      0|        }
 6294|    104|        continue;
 6295|       |      // optional .google.protobuf.EnumValueOptions options = 3;
 6296|    104|      case 3:
  ------------------
  |  Branch (6296:7): [True: 0, False: 208]
  ------------------
 6297|      0|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 26)) {
  ------------------
  |  |  538|      0|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 0, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 6298|      0|          ptr = ctx->ParseMessage(_internal_mutable_options(), ptr);
 6299|      0|          CHK_(ptr);
  ------------------
  |  | 6266|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6300|      0|        } else {
 6301|      0|          goto handle_unusual;
 6302|      0|        }
 6303|      0|        continue;
 6304|      0|      default:
  ------------------
  |  Branch (6304:7): [True: 0, False: 208]
  ------------------
 6305|      0|        goto handle_unusual;
 6306|    208|    }  // switch
 6307|      0|  handle_unusual:
 6308|      0|    if ((tag == 0) || ((tag & 7) == 4)) {
  ------------------
  |  Branch (6308:9): [True: 0, False: 0]
  |  Branch (6308:23): [True: 0, False: 0]
  ------------------
 6309|      0|      CHK_(ptr);
  ------------------
  |  | 6266|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6310|      0|      ctx->SetLastTag(tag);
 6311|      0|      goto message_done;
 6312|      0|    }
 6313|      0|    ptr = UnknownFieldParse(
 6314|      0|        tag,
 6315|      0|        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
 6316|      0|        ptr, ctx);
 6317|      0|    CHK_(ptr != nullptr);
  ------------------
  |  | 6266|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6318|      0|  }  // while
 6319|    104|message_done:
 6320|    104|  _impl_._has_bits_.Or(has_bits);
 6321|    104|  return ptr;
 6322|      0|failure:
 6323|      0|  ptr = nullptr;
 6324|      0|  goto message_done;
 6325|    104|#undef CHK_
 6326|    104|}
_ZNK6google8protobuf24EnumValueDescriptorProto13IsInitializedEv:
 6437|    104|bool EnumValueDescriptorProto::IsInitialized() const {
 6438|    104|  if ((_impl_._has_bits_[0] & 0x00000002u) != 0) {
  ------------------
  |  Branch (6438:7): [True: 0, False: 104]
  ------------------
 6439|      0|    if (!_impl_.options_->IsInitialized()) return false;
  ------------------
  |  Branch (6439:9): [True: 0, False: 0]
  ------------------
 6440|      0|  }
 6441|    104|  return true;
 6442|    104|}
_ZN6google8protobuf11FileOptionsC2EPNS0_5ArenaE:
 7298|     10|  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
 7299|     10|  SharedCtor(arena);
 7300|       |  // @@protoc_insertion_point(arena_constructor:google.protobuf.FileOptions)
 7301|     10|}
_ZN6google8protobuf11FileOptionsD2Ev:
 7519|     10|FileOptions::~FileOptions() {
 7520|       |  // @@protoc_insertion_point(destructor:google.protobuf.FileOptions)
 7521|     10|  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  ------------------
  |  Branch (7521:13): [True: 0, False: 10]
  ------------------
 7522|      0|  (void)arena;
 7523|      0|    return;
 7524|      0|  }
 7525|     10|  SharedDtor();
 7526|     10|}
_ZN6google8protobuf11FileOptions14_InternalParseEPKcPNS0_8internal12ParseContextE:
 7607|     10|const char* FileOptions::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
 7608|     10|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
 7609|     10|  _Internal::HasBits has_bits{};
 7610|     76|  while (!ctx->Done(&ptr)) {
  ------------------
  |  Branch (7610:10): [True: 66, False: 10]
  ------------------
 7611|     66|    ::uint32_t tag;
 7612|     66|    ptr = ::_pbi::ReadTag(ptr, &tag);
 7613|     66|    switch (tag >> 3) {
 7614|       |      // optional string java_package = 1;
 7615|     10|      case 1:
  ------------------
  |  Branch (7615:7): [True: 10, False: 56]
  ------------------
 7616|     10|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 10)) {
  ------------------
  |  |  538|     10|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 10, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 10, False: 0]
  |  |  ------------------
  ------------------
 7617|     10|          auto str = _internal_mutable_java_package();
 7618|     10|          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
 7619|     10|          CHK_(ptr);
  ------------------
  |  | 7608|     10|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|     10|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 10]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 10]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7620|       |          #ifndef NDEBUG
 7621|       |          ::_pbi::VerifyUTF8(str, "google.protobuf.FileOptions.java_package");
 7622|       |          #endif  // !NDEBUG
 7623|     10|        } else {
 7624|      0|          goto handle_unusual;
 7625|      0|        }
 7626|     10|        continue;
 7627|       |      // optional string java_outer_classname = 8;
 7628|     10|      case 8:
  ------------------
  |  Branch (7628:7): [True: 10, False: 56]
  ------------------
 7629|     10|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 66)) {
  ------------------
  |  |  538|     10|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 10, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 10, False: 0]
  |  |  ------------------
  ------------------
 7630|     10|          auto str = _internal_mutable_java_outer_classname();
 7631|     10|          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
 7632|     10|          CHK_(ptr);
  ------------------
  |  | 7608|     10|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|     10|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 10]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 10]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7633|       |          #ifndef NDEBUG
 7634|       |          ::_pbi::VerifyUTF8(str, "google.protobuf.FileOptions.java_outer_classname");
 7635|       |          #endif  // !NDEBUG
 7636|     10|        } else {
 7637|      0|          goto handle_unusual;
 7638|      0|        }
 7639|     10|        continue;
 7640|       |      // optional .google.protobuf.FileOptions.OptimizeMode optimize_for = 9 [default = SPEED];
 7641|     10|      case 9:
  ------------------
  |  Branch (7641:7): [True: 2, False: 64]
  ------------------
 7642|      2|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 72)) {
  ------------------
  |  |  538|      2|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 2, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 2, False: 0]
  |  |  ------------------
  ------------------
 7643|      2|          ::int32_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
 7644|      2|          CHK_(ptr);
  ------------------
  |  | 7608|      2|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      2|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 2]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7645|      2|          if (PROTOBUF_PREDICT_TRUE(::PROTOBUF_NAMESPACE_ID::FileOptions_OptimizeMode_IsValid(static_cast<int>(val)))) {
  ------------------
  |  |  538|      2|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 2, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 2, False: 0]
  |  |  ------------------
  ------------------
 7646|      2|            _internal_set_optimize_for(static_cast<::PROTOBUF_NAMESPACE_ID::FileOptions_OptimizeMode>(val));
 7647|      2|          } else {
 7648|      0|            ::PROTOBUF_NAMESPACE_ID::internal::WriteVarint(9, val, mutable_unknown_fields());
 7649|      0|          }
 7650|      2|        } else {
 7651|      0|          goto handle_unusual;
 7652|      0|        }
 7653|      2|        continue;
 7654|       |      // optional bool java_multiple_files = 10 [default = false];
 7655|      8|      case 10:
  ------------------
  |  Branch (7655:7): [True: 8, False: 58]
  ------------------
 7656|      8|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 80)) {
  ------------------
  |  |  538|      8|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 8, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 8, False: 0]
  |  |  ------------------
  ------------------
 7657|      8|          _Internal::set_has_java_multiple_files(&has_bits);
 7658|      8|          _impl_.java_multiple_files_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
 7659|      8|          CHK_(ptr);
  ------------------
  |  | 7608|      8|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      8|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 8]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7660|      8|        } else {
 7661|      0|          goto handle_unusual;
 7662|      0|        }
 7663|      8|        continue;
 7664|       |      // optional string go_package = 11;
 7665|     10|      case 11:
  ------------------
  |  Branch (7665:7): [True: 10, False: 56]
  ------------------
 7666|     10|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 90)) {
  ------------------
  |  |  538|     10|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 10, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 10, False: 0]
  |  |  ------------------
  ------------------
 7667|     10|          auto str = _internal_mutable_go_package();
 7668|     10|          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
 7669|     10|          CHK_(ptr);
  ------------------
  |  | 7608|     10|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|     10|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 10]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 10]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7670|       |          #ifndef NDEBUG
 7671|       |          ::_pbi::VerifyUTF8(str, "google.protobuf.FileOptions.go_package");
 7672|       |          #endif  // !NDEBUG
 7673|     10|        } else {
 7674|      0|          goto handle_unusual;
 7675|      0|        }
 7676|     10|        continue;
 7677|       |      // optional bool cc_generic_services = 16 [default = false];
 7678|     10|      case 16:
  ------------------
  |  Branch (7678:7): [True: 0, False: 66]
  ------------------
 7679|      0|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 128)) {
  ------------------
  |  |  538|      0|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 0, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7680|      0|          _Internal::set_has_cc_generic_services(&has_bits);
 7681|      0|          _impl_.cc_generic_services_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
 7682|      0|          CHK_(ptr);
  ------------------
  |  | 7608|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7683|      0|        } else {
 7684|      0|          goto handle_unusual;
 7685|      0|        }
 7686|      0|        continue;
 7687|       |      // optional bool java_generic_services = 17 [default = false];
 7688|      0|      case 17:
  ------------------
  |  Branch (7688:7): [True: 0, False: 66]
  ------------------
 7689|      0|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 136)) {
  ------------------
  |  |  538|      0|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 0, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7690|      0|          _Internal::set_has_java_generic_services(&has_bits);
 7691|      0|          _impl_.java_generic_services_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
 7692|      0|          CHK_(ptr);
  ------------------
  |  | 7608|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7693|      0|        } else {
 7694|      0|          goto handle_unusual;
 7695|      0|        }
 7696|      0|        continue;
 7697|       |      // optional bool py_generic_services = 18 [default = false];
 7698|      0|      case 18:
  ------------------
  |  Branch (7698:7): [True: 0, False: 66]
  ------------------
 7699|      0|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 144)) {
  ------------------
  |  |  538|      0|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 0, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7700|      0|          _Internal::set_has_py_generic_services(&has_bits);
 7701|      0|          _impl_.py_generic_services_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
 7702|      0|          CHK_(ptr);
  ------------------
  |  | 7608|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7703|      0|        } else {
 7704|      0|          goto handle_unusual;
 7705|      0|        }
 7706|      0|        continue;
 7707|       |      // optional bool java_generate_equals_and_hash = 20 [deprecated = true];
 7708|      0|      case 20:
  ------------------
  |  Branch (7708:7): [True: 0, False: 66]
  ------------------
 7709|      0|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 160)) {
  ------------------
  |  |  538|      0|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 0, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7710|      0|          _Internal::set_has_java_generate_equals_and_hash(&has_bits);
 7711|      0|          _impl_.java_generate_equals_and_hash_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
 7712|      0|          CHK_(ptr);
  ------------------
  |  | 7608|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7713|      0|        } else {
 7714|      0|          goto handle_unusual;
 7715|      0|        }
 7716|      0|        continue;
 7717|       |      // optional bool deprecated = 23 [default = false];
 7718|      0|      case 23:
  ------------------
  |  Branch (7718:7): [True: 0, False: 66]
  ------------------
 7719|      0|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 184)) {
  ------------------
  |  |  538|      0|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 0, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7720|      0|          _Internal::set_has_deprecated(&has_bits);
 7721|      0|          _impl_.deprecated_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
 7722|      0|          CHK_(ptr);
  ------------------
  |  | 7608|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7723|      0|        } else {
 7724|      0|          goto handle_unusual;
 7725|      0|        }
 7726|      0|        continue;
 7727|       |      // optional bool java_string_check_utf8 = 27 [default = false];
 7728|      0|      case 27:
  ------------------
  |  Branch (7728:7): [True: 0, False: 66]
  ------------------
 7729|      0|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 216)) {
  ------------------
  |  |  538|      0|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 0, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7730|      0|          _Internal::set_has_java_string_check_utf8(&has_bits);
 7731|      0|          _impl_.java_string_check_utf8_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
 7732|      0|          CHK_(ptr);
  ------------------
  |  | 7608|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7733|      0|        } else {
 7734|      0|          goto handle_unusual;
 7735|      0|        }
 7736|      0|        continue;
 7737|       |      // optional bool cc_enable_arenas = 31 [default = true];
 7738|     10|      case 31:
  ------------------
  |  Branch (7738:7): [True: 10, False: 56]
  ------------------
 7739|     10|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 248)) {
  ------------------
  |  |  538|     10|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 10, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 10, False: 0]
  |  |  ------------------
  ------------------
 7740|     10|          _Internal::set_has_cc_enable_arenas(&has_bits);
 7741|     10|          _impl_.cc_enable_arenas_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
 7742|     10|          CHK_(ptr);
  ------------------
  |  | 7608|     10|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|     10|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 10]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 10]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7743|     10|        } else {
 7744|      0|          goto handle_unusual;
 7745|      0|        }
 7746|     10|        continue;
 7747|       |      // optional string objc_class_prefix = 36;
 7748|     10|      case 36:
  ------------------
  |  Branch (7748:7): [True: 8, False: 58]
  ------------------
 7749|      8|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 34)) {
  ------------------
  |  |  538|      8|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 8, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 8, False: 0]
  |  |  ------------------
  ------------------
 7750|      8|          auto str = _internal_mutable_objc_class_prefix();
 7751|      8|          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
 7752|      8|          CHK_(ptr);
  ------------------
  |  | 7608|      8|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      8|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 8]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7753|       |          #ifndef NDEBUG
 7754|       |          ::_pbi::VerifyUTF8(str, "google.protobuf.FileOptions.objc_class_prefix");
 7755|       |          #endif  // !NDEBUG
 7756|      8|        } else {
 7757|      0|          goto handle_unusual;
 7758|      0|        }
 7759|      8|        continue;
 7760|       |      // optional string csharp_namespace = 37;
 7761|      8|      case 37:
  ------------------
  |  Branch (7761:7): [True: 8, False: 58]
  ------------------
 7762|      8|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 42)) {
  ------------------
  |  |  538|      8|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 8, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 8, False: 0]
  |  |  ------------------
  ------------------
 7763|      8|          auto str = _internal_mutable_csharp_namespace();
 7764|      8|          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
 7765|      8|          CHK_(ptr);
  ------------------
  |  | 7608|      8|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      8|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 8]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7766|       |          #ifndef NDEBUG
 7767|       |          ::_pbi::VerifyUTF8(str, "google.protobuf.FileOptions.csharp_namespace");
 7768|       |          #endif  // !NDEBUG
 7769|      8|        } else {
 7770|      0|          goto handle_unusual;
 7771|      0|        }
 7772|      8|        continue;
 7773|       |      // optional string swift_prefix = 39;
 7774|      8|      case 39:
  ------------------
  |  Branch (7774:7): [True: 0, False: 66]
  ------------------
 7775|      0|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 58)) {
  ------------------
  |  |  538|      0|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 0, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7776|      0|          auto str = _internal_mutable_swift_prefix();
 7777|      0|          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
 7778|      0|          CHK_(ptr);
  ------------------
  |  | 7608|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7779|       |          #ifndef NDEBUG
 7780|       |          ::_pbi::VerifyUTF8(str, "google.protobuf.FileOptions.swift_prefix");
 7781|       |          #endif  // !NDEBUG
 7782|      0|        } else {
 7783|      0|          goto handle_unusual;
 7784|      0|        }
 7785|      0|        continue;
 7786|       |      // optional string php_class_prefix = 40;
 7787|      0|      case 40:
  ------------------
  |  Branch (7787:7): [True: 0, False: 66]
  ------------------
 7788|      0|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 66)) {
  ------------------
  |  |  538|      0|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 0, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7789|      0|          auto str = _internal_mutable_php_class_prefix();
 7790|      0|          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
 7791|      0|          CHK_(ptr);
  ------------------
  |  | 7608|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7792|       |          #ifndef NDEBUG
 7793|       |          ::_pbi::VerifyUTF8(str, "google.protobuf.FileOptions.php_class_prefix");
 7794|       |          #endif  // !NDEBUG
 7795|      0|        } else {
 7796|      0|          goto handle_unusual;
 7797|      0|        }
 7798|      0|        continue;
 7799|       |      // optional string php_namespace = 41;
 7800|      0|      case 41:
  ------------------
  |  Branch (7800:7): [True: 0, False: 66]
  ------------------
 7801|      0|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 74)) {
  ------------------
  |  |  538|      0|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 0, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7802|      0|          auto str = _internal_mutable_php_namespace();
 7803|      0|          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
 7804|      0|          CHK_(ptr);
  ------------------
  |  | 7608|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7805|       |          #ifndef NDEBUG
 7806|       |          ::_pbi::VerifyUTF8(str, "google.protobuf.FileOptions.php_namespace");
 7807|       |          #endif  // !NDEBUG
 7808|      0|        } else {
 7809|      0|          goto handle_unusual;
 7810|      0|        }
 7811|      0|        continue;
 7812|       |      // optional bool php_generic_services = 42 [default = false];
 7813|      0|      case 42:
  ------------------
  |  Branch (7813:7): [True: 0, False: 66]
  ------------------
 7814|      0|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 80)) {
  ------------------
  |  |  538|      0|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 0, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7815|      0|          _Internal::set_has_php_generic_services(&has_bits);
 7816|      0|          _impl_.php_generic_services_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
 7817|      0|          CHK_(ptr);
  ------------------
  |  | 7608|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7818|      0|        } else {
 7819|      0|          goto handle_unusual;
 7820|      0|        }
 7821|      0|        continue;
 7822|       |      // optional string php_metadata_namespace = 44;
 7823|      0|      case 44:
  ------------------
  |  Branch (7823:7): [True: 0, False: 66]
  ------------------
 7824|      0|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 98)) {
  ------------------
  |  |  538|      0|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 0, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7825|      0|          auto str = _internal_mutable_php_metadata_namespace();
 7826|      0|          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
 7827|      0|          CHK_(ptr);
  ------------------
  |  | 7608|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7828|       |          #ifndef NDEBUG
 7829|       |          ::_pbi::VerifyUTF8(str, "google.protobuf.FileOptions.php_metadata_namespace");
 7830|       |          #endif  // !NDEBUG
 7831|      0|        } else {
 7832|      0|          goto handle_unusual;
 7833|      0|        }
 7834|      0|        continue;
 7835|       |      // optional string ruby_package = 45;
 7836|      0|      case 45:
  ------------------
  |  Branch (7836:7): [True: 0, False: 66]
  ------------------
 7837|      0|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 106)) {
  ------------------
  |  |  538|      0|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 0, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7838|      0|          auto str = _internal_mutable_ruby_package();
 7839|      0|          ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
 7840|      0|          CHK_(ptr);
  ------------------
  |  | 7608|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7841|       |          #ifndef NDEBUG
 7842|       |          ::_pbi::VerifyUTF8(str, "google.protobuf.FileOptions.ruby_package");
 7843|       |          #endif  // !NDEBUG
 7844|      0|        } else {
 7845|      0|          goto handle_unusual;
 7846|      0|        }
 7847|      0|        continue;
 7848|       |      // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
 7849|      0|      case 999:
  ------------------
  |  Branch (7849:7): [True: 0, False: 66]
  ------------------
 7850|      0|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 58)) {
  ------------------
  |  |  538|      0|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 0, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 7851|      0|          ptr -= 2;
 7852|      0|          do {
 7853|      0|            ptr += 2;
 7854|      0|            ptr = ctx->ParseMessage(_internal_add_uninterpreted_option(), ptr);
 7855|      0|            CHK_(ptr);
  ------------------
  |  | 7608|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7856|      0|            if (!ctx->DataAvailable(ptr)) break;
  ------------------
  |  Branch (7856:17): [True: 0, False: 0]
  ------------------
 7857|      0|          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<7994>(ptr));
  ------------------
  |  Branch (7857:20): [True: 0, False: 0]
  ------------------
 7858|      0|        } else {
 7859|      0|          goto handle_unusual;
 7860|      0|        }
 7861|      0|        continue;
 7862|      0|      default:
  ------------------
  |  Branch (7862:7): [True: 0, False: 66]
  ------------------
 7863|      0|        goto handle_unusual;
 7864|     66|    }  // switch
 7865|      0|  handle_unusual:
 7866|      0|    if ((tag == 0) || ((tag & 7) == 4)) {
  ------------------
  |  Branch (7866:9): [True: 0, False: 0]
  |  Branch (7866:23): [True: 0, False: 0]
  ------------------
 7867|      0|      CHK_(ptr);
  ------------------
  |  | 7608|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7868|      0|      ctx->SetLastTag(tag);
 7869|      0|      goto message_done;
 7870|      0|    }
 7871|      0|    if ((8000u <= tag)) {
  ------------------
  |  Branch (7871:9): [True: 0, False: 0]
  ------------------
 7872|      0|      ptr = _impl_._extensions_.ParseField(tag, ptr, internal_default_instance(), &_internal_metadata_, ctx);
 7873|      0|      CHK_(ptr != nullptr);
  ------------------
  |  | 7608|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7874|      0|      continue;
 7875|      0|    }
 7876|      0|    ptr = UnknownFieldParse(
 7877|      0|        tag,
 7878|      0|        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
 7879|      0|        ptr, ctx);
 7880|      0|    CHK_(ptr != nullptr);
  ------------------
  |  | 7608|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7881|      0|  }  // while
 7882|     10|message_done:
 7883|     10|  _impl_._has_bits_.Or(has_bits);
 7884|     10|  return ptr;
 7885|      0|failure:
 7886|      0|  ptr = nullptr;
 7887|      0|  goto message_done;
 7888|     10|#undef CHK_
 7889|     10|}
_ZNK6google8protobuf11FileOptions13IsInitializedEv:
 8302|     10|bool FileOptions::IsInitialized() const {
 8303|     10|  if (!_impl_._extensions_.IsInitialized(internal_default_instance())) {
  ------------------
  |  Branch (8303:7): [True: 0, False: 10]
  ------------------
 8304|      0|    return false;
 8305|      0|  }
 8306|       |
 8307|     10|  if (!::PROTOBUF_NAMESPACE_ID::internal::AllAreInitialized(_internal_uninterpreted_option()))
  ------------------
  |  Branch (8307:7): [True: 0, False: 10]
  ------------------
 8308|      0|    return false;
 8309|     10|  return true;
 8310|     10|}
_ZN6google8protobuf14MessageOptionsC2EPNS0_5ArenaE:
 8378|      6|  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
 8379|      6|  SharedCtor(arena);
 8380|       |  // @@protoc_insertion_point(arena_constructor:google.protobuf.MessageOptions)
 8381|      6|}
_ZN6google8protobuf14MessageOptionsD2Ev:
 8429|      6|MessageOptions::~MessageOptions() {
 8430|       |  // @@protoc_insertion_point(destructor:google.protobuf.MessageOptions)
 8431|      6|  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  ------------------
  |  Branch (8431:13): [True: 0, False: 6]
  ------------------
 8432|      0|  (void)arena;
 8433|      0|    return;
 8434|      0|  }
 8435|      6|  SharedDtor();
 8436|      6|}
_ZN6google8protobuf14MessageOptions14_InternalParseEPKcPNS0_8internal12ParseContextE:
 8466|      6|const char* MessageOptions::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
 8467|      6|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
 8468|      6|  _Internal::HasBits has_bits{};
 8469|     12|  while (!ctx->Done(&ptr)) {
  ------------------
  |  Branch (8469:10): [True: 6, False: 6]
  ------------------
 8470|      6|    ::uint32_t tag;
 8471|      6|    ptr = ::_pbi::ReadTag(ptr, &tag);
 8472|      6|    switch (tag >> 3) {
 8473|       |      // optional bool message_set_wire_format = 1 [default = false];
 8474|      0|      case 1:
  ------------------
  |  Branch (8474:7): [True: 0, False: 6]
  ------------------
 8475|      0|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 8)) {
  ------------------
  |  |  538|      0|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 0, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 8476|      0|          _Internal::set_has_message_set_wire_format(&has_bits);
 8477|      0|          _impl_.message_set_wire_format_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
 8478|      0|          CHK_(ptr);
  ------------------
  |  | 8467|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8479|      0|        } else {
 8480|      0|          goto handle_unusual;
 8481|      0|        }
 8482|      0|        continue;
 8483|       |      // optional bool no_standard_descriptor_accessor = 2 [default = false];
 8484|      0|      case 2:
  ------------------
  |  Branch (8484:7): [True: 0, False: 6]
  ------------------
 8485|      0|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 16)) {
  ------------------
  |  |  538|      0|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 0, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 8486|      0|          _Internal::set_has_no_standard_descriptor_accessor(&has_bits);
 8487|      0|          _impl_.no_standard_descriptor_accessor_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
 8488|      0|          CHK_(ptr);
  ------------------
  |  | 8467|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8489|      0|        } else {
 8490|      0|          goto handle_unusual;
 8491|      0|        }
 8492|      0|        continue;
 8493|       |      // optional bool deprecated = 3 [default = false];
 8494|      0|      case 3:
  ------------------
  |  Branch (8494:7): [True: 0, False: 6]
  ------------------
 8495|      0|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 24)) {
  ------------------
  |  |  538|      0|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 0, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 8496|      0|          _Internal::set_has_deprecated(&has_bits);
 8497|      0|          _impl_.deprecated_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
 8498|      0|          CHK_(ptr);
  ------------------
  |  | 8467|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8499|      0|        } else {
 8500|      0|          goto handle_unusual;
 8501|      0|        }
 8502|      0|        continue;
 8503|       |      // optional bool map_entry = 7;
 8504|      6|      case 7:
  ------------------
  |  Branch (8504:7): [True: 6, False: 0]
  ------------------
 8505|      6|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 56)) {
  ------------------
  |  |  538|      6|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 6, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 6, False: 0]
  |  |  ------------------
  ------------------
 8506|      6|          _Internal::set_has_map_entry(&has_bits);
 8507|      6|          _impl_.map_entry_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
 8508|      6|          CHK_(ptr);
  ------------------
  |  | 8467|      6|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      6|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 6]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8509|      6|        } else {
 8510|      0|          goto handle_unusual;
 8511|      0|        }
 8512|      6|        continue;
 8513|       |      // optional bool deprecated_legacy_json_field_conflicts = 11 [deprecated = true];
 8514|      6|      case 11:
  ------------------
  |  Branch (8514:7): [True: 0, False: 6]
  ------------------
 8515|      0|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 88)) {
  ------------------
  |  |  538|      0|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 0, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 8516|      0|          _Internal::set_has_deprecated_legacy_json_field_conflicts(&has_bits);
 8517|      0|          _impl_.deprecated_legacy_json_field_conflicts_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
 8518|      0|          CHK_(ptr);
  ------------------
  |  | 8467|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8519|      0|        } else {
 8520|      0|          goto handle_unusual;
 8521|      0|        }
 8522|      0|        continue;
 8523|       |      // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
 8524|      0|      case 999:
  ------------------
  |  Branch (8524:7): [True: 0, False: 6]
  ------------------
 8525|      0|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 58)) {
  ------------------
  |  |  538|      0|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 0, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 8526|      0|          ptr -= 2;
 8527|      0|          do {
 8528|      0|            ptr += 2;
 8529|      0|            ptr = ctx->ParseMessage(_internal_add_uninterpreted_option(), ptr);
 8530|      0|            CHK_(ptr);
  ------------------
  |  | 8467|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8531|      0|            if (!ctx->DataAvailable(ptr)) break;
  ------------------
  |  Branch (8531:17): [True: 0, False: 0]
  ------------------
 8532|      0|          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<7994>(ptr));
  ------------------
  |  Branch (8532:20): [True: 0, False: 0]
  ------------------
 8533|      0|        } else {
 8534|      0|          goto handle_unusual;
 8535|      0|        }
 8536|      0|        continue;
 8537|      0|      default:
  ------------------
  |  Branch (8537:7): [True: 0, False: 6]
  ------------------
 8538|      0|        goto handle_unusual;
 8539|      6|    }  // switch
 8540|      0|  handle_unusual:
 8541|      0|    if ((tag == 0) || ((tag & 7) == 4)) {
  ------------------
  |  Branch (8541:9): [True: 0, False: 0]
  |  Branch (8541:23): [True: 0, False: 0]
  ------------------
 8542|      0|      CHK_(ptr);
  ------------------
  |  | 8467|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8543|      0|      ctx->SetLastTag(tag);
 8544|      0|      goto message_done;
 8545|      0|    }
 8546|      0|    if ((8000u <= tag)) {
  ------------------
  |  Branch (8546:9): [True: 0, False: 0]
  ------------------
 8547|      0|      ptr = _impl_._extensions_.ParseField(tag, ptr, internal_default_instance(), &_internal_metadata_, ctx);
 8548|      0|      CHK_(ptr != nullptr);
  ------------------
  |  | 8467|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8549|      0|      continue;
 8550|      0|    }
 8551|      0|    ptr = UnknownFieldParse(
 8552|      0|        tag,
 8553|      0|        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
 8554|      0|        ptr, ctx);
 8555|      0|    CHK_(ptr != nullptr);
  ------------------
  |  | 8467|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8556|      0|  }  // while
 8557|      6|message_done:
 8558|      6|  _impl_._has_bits_.Or(has_bits);
 8559|      6|  return ptr;
 8560|      0|failure:
 8561|      0|  ptr = nullptr;
 8562|      0|  goto message_done;
 8563|      6|#undef CHK_
 8564|      6|}
_ZNK6google8protobuf14MessageOptions13IsInitializedEv:
 8722|      6|bool MessageOptions::IsInitialized() const {
 8723|      6|  if (!_impl_._extensions_.IsInitialized(internal_default_instance())) {
  ------------------
  |  Branch (8723:7): [True: 0, False: 6]
  ------------------
 8724|      0|    return false;
 8725|      0|  }
 8726|       |
 8727|      6|  if (!::PROTOBUF_NAMESPACE_ID::internal::AllAreInitialized(_internal_uninterpreted_option()))
  ------------------
  |  Branch (8727:7): [True: 0, False: 6]
  ------------------
 8728|      0|    return false;
 8729|      6|  return true;
 8730|      6|}
_ZN6google8protobuf12FieldOptionsC2EPNS0_5ArenaE:
 8791|     22|  : ::PROTOBUF_NAMESPACE_ID::Message(arena) {
 8792|     22|  SharedCtor(arena);
 8793|       |  // @@protoc_insertion_point(arena_constructor:google.protobuf.FieldOptions)
 8794|     22|}
_ZN6google8protobuf12FieldOptionsD2Ev:
 8866|     22|FieldOptions::~FieldOptions() {
 8867|       |  // @@protoc_insertion_point(destructor:google.protobuf.FieldOptions)
 8868|     22|  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
  ------------------
  |  Branch (8868:13): [True: 0, False: 22]
  ------------------
 8869|      0|  (void)arena;
 8870|      0|    return;
 8871|      0|  }
 8872|     22|  SharedDtor();
 8873|     22|}
_ZN6google8protobuf12FieldOptions14_InternalParseEPKcPNS0_8internal12ParseContextE:
 8910|     22|const char* FieldOptions::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
 8911|     22|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
 8912|     22|  _Internal::HasBits has_bits{};
 8913|     44|  while (!ctx->Done(&ptr)) {
  ------------------
  |  Branch (8913:10): [True: 22, False: 22]
  ------------------
 8914|     22|    ::uint32_t tag;
 8915|     22|    ptr = ::_pbi::ReadTag(ptr, &tag);
 8916|     22|    switch (tag >> 3) {
 8917|       |      // optional .google.protobuf.FieldOptions.CType ctype = 1 [default = STRING];
 8918|      0|      case 1:
  ------------------
  |  Branch (8918:7): [True: 0, False: 22]
  ------------------
 8919|      0|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 8)) {
  ------------------
  |  |  538|      0|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 0, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 8920|      0|          ::int32_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
 8921|      0|          CHK_(ptr);
  ------------------
  |  | 8911|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8922|      0|          if (PROTOBUF_PREDICT_TRUE(::PROTOBUF_NAMESPACE_ID::FieldOptions_CType_IsValid(static_cast<int>(val)))) {
  ------------------
  |  |  538|      0|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 0, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 8923|      0|            _internal_set_ctype(static_cast<::PROTOBUF_NAMESPACE_ID::FieldOptions_CType>(val));
 8924|      0|          } else {
 8925|      0|            ::PROTOBUF_NAMESPACE_ID::internal::WriteVarint(1, val, mutable_unknown_fields());
 8926|      0|          }
 8927|      0|        } else {
 8928|      0|          goto handle_unusual;
 8929|      0|        }
 8930|      0|        continue;
 8931|       |      // optional bool packed = 2;
 8932|      6|      case 2:
  ------------------
  |  Branch (8932:7): [True: 6, False: 16]
  ------------------
 8933|      6|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 16)) {
  ------------------
  |  |  538|      6|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 6, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 6, False: 0]
  |  |  ------------------
  ------------------
 8934|      6|          _Internal::set_has_packed(&has_bits);
 8935|      6|          _impl_.packed_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
 8936|      6|          CHK_(ptr);
  ------------------
  |  | 8911|      6|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      6|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 6]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 6]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8937|      6|        } else {
 8938|      0|          goto handle_unusual;
 8939|      0|        }
 8940|      6|        continue;
 8941|       |      // optional bool deprecated = 3 [default = false];
 8942|     14|      case 3:
  ------------------
  |  Branch (8942:7): [True: 14, False: 8]
  ------------------
 8943|     14|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 24)) {
  ------------------
  |  |  538|     14|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 14, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 14, False: 0]
  |  |  ------------------
  ------------------
 8944|     14|          _Internal::set_has_deprecated(&has_bits);
 8945|     14|          _impl_.deprecated_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
 8946|     14|          CHK_(ptr);
  ------------------
  |  | 8911|     14|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|     14|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 14]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 14]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8947|     14|        } else {
 8948|      0|          goto handle_unusual;
 8949|      0|        }
 8950|     14|        continue;
 8951|       |      // optional bool lazy = 5 [default = false];
 8952|     14|      case 5:
  ------------------
  |  Branch (8952:7): [True: 0, False: 22]
  ------------------
 8953|      0|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 40)) {
  ------------------
  |  |  538|      0|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 0, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 8954|      0|          _Internal::set_has_lazy(&has_bits);
 8955|      0|          _impl_.lazy_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
 8956|      0|          CHK_(ptr);
  ------------------
  |  | 8911|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8957|      0|        } else {
 8958|      0|          goto handle_unusual;
 8959|      0|        }
 8960|      0|        continue;
 8961|       |      // optional .google.protobuf.FieldOptions.JSType jstype = 6 [default = JS_NORMAL];
 8962|      0|      case 6:
  ------------------
  |  Branch (8962:7): [True: 0, False: 22]
  ------------------
 8963|      0|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 48)) {
  ------------------
  |  |  538|      0|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 0, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 8964|      0|          ::int32_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
 8965|      0|          CHK_(ptr);
  ------------------
  |  | 8911|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8966|      0|          if (PROTOBUF_PREDICT_TRUE(::PROTOBUF_NAMESPACE_ID::FieldOptions_JSType_IsValid(static_cast<int>(val)))) {
  ------------------
  |  |  538|      0|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 0, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 8967|      0|            _internal_set_jstype(static_cast<::PROTOBUF_NAMESPACE_ID::FieldOptions_JSType>(val));
 8968|      0|          } else {
 8969|      0|            ::PROTOBUF_NAMESPACE_ID::internal::WriteVarint(6, val, mutable_unknown_fields());
 8970|      0|          }
 8971|      0|        } else {
 8972|      0|          goto handle_unusual;
 8973|      0|        }
 8974|      0|        continue;
 8975|       |      // optional bool weak = 10 [default = false];
 8976|      0|      case 10:
  ------------------
  |  Branch (8976:7): [True: 0, False: 22]
  ------------------
 8977|      0|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 80)) {
  ------------------
  |  |  538|      0|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 0, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 8978|      0|          _Internal::set_has_weak(&has_bits);
 8979|      0|          _impl_.weak_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
 8980|      0|          CHK_(ptr);
  ------------------
  |  | 8911|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8981|      0|        } else {
 8982|      0|          goto handle_unusual;
 8983|      0|        }
 8984|      0|        continue;
 8985|       |      // optional bool unverified_lazy = 15 [default = false];
 8986|      0|      case 15:
  ------------------
  |  Branch (8986:7): [True: 0, False: 22]
  ------------------
 8987|      0|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 120)) {
  ------------------
  |  |  538|      0|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 0, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 8988|      0|          _Internal::set_has_unverified_lazy(&has_bits);
 8989|      0|          _impl_.unverified_lazy_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
 8990|      0|          CHK_(ptr);
  ------------------
  |  | 8911|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8991|      0|        } else {
 8992|      0|          goto handle_unusual;
 8993|      0|        }
 8994|      0|        continue;
 8995|       |      // optional bool debug_redact = 16 [default = false];
 8996|      0|      case 16:
  ------------------
  |  Branch (8996:7): [True: 0, False: 22]
  ------------------
 8997|      0|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 128)) {
  ------------------
  |  |  538|      0|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 0, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 8998|      0|          _Internal::set_has_debug_redact(&has_bits);
 8999|      0|          _impl_.debug_redact_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
 9000|      0|          CHK_(ptr);
  ------------------
  |  | 8911|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9001|      0|        } else {
 9002|      0|          goto handle_unusual;
 9003|      0|        }
 9004|      0|        continue;
 9005|       |      // optional .google.protobuf.FieldOptions.OptionRetention retention = 17;
 9006|      2|      case 17:
  ------------------
  |  Branch (9006:7): [True: 2, False: 20]
  ------------------
 9007|      2|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 136)) {
  ------------------
  |  |  538|      2|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 2, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 2, False: 0]
  |  |  ------------------
  ------------------
 9008|      2|          ::int32_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
 9009|      2|          CHK_(ptr);
  ------------------
  |  | 8911|      2|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      2|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 2]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9010|      2|          if (PROTOBUF_PREDICT_TRUE(::PROTOBUF_NAMESPACE_ID::FieldOptions_OptionRetention_IsValid(static_cast<int>(val)))) {
  ------------------
  |  |  538|      2|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 2, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 2, False: 0]
  |  |  ------------------
  ------------------
 9011|      2|            _internal_set_retention(static_cast<::PROTOBUF_NAMESPACE_ID::FieldOptions_OptionRetention>(val));
 9012|      2|          } else {
 9013|      0|            ::PROTOBUF_NAMESPACE_ID::internal::WriteVarint(17, val, mutable_unknown_fields());
 9014|      0|          }
 9015|      2|        } else {
 9016|      0|          goto handle_unusual;
 9017|      0|        }
 9018|      2|        continue;
 9019|       |      // optional .google.protobuf.FieldOptions.OptionTargetType target = 18 [deprecated = true];
 9020|      2|      case 18:
  ------------------
  |  Branch (9020:7): [True: 0, False: 22]
  ------------------
 9021|      0|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 144)) {
  ------------------
  |  |  538|      0|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 0, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 9022|      0|          ::int32_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
 9023|      0|          CHK_(ptr);
  ------------------
  |  | 8911|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9024|      0|          if (PROTOBUF_PREDICT_TRUE(::PROTOBUF_NAMESPACE_ID::FieldOptions_OptionTargetType_IsValid(static_cast<int>(val)))) {
  ------------------
  |  |  538|      0|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 0, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 9025|      0|            _internal_set_target(static_cast<::PROTOBUF_NAMESPACE_ID::FieldOptions_OptionTargetType>(val));
 9026|      0|          } else {
 9027|      0|            ::PROTOBUF_NAMESPACE_ID::internal::WriteVarint(18, val, mutable_unknown_fields());
 9028|      0|          }
 9029|      0|        } else {
 9030|      0|          goto handle_unusual;
 9031|      0|        }
 9032|      0|        continue;
 9033|       |      // repeated .google.protobuf.FieldOptions.OptionTargetType targets = 19;
 9034|      0|      case 19:
  ------------------
  |  Branch (9034:7): [True: 0, False: 22]
  ------------------
 9035|      0|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 152)) {
  ------------------
  |  |  538|      0|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 0, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 9036|      0|          ptr -= 2;
 9037|      0|          do {
 9038|      0|            ptr += 2;
 9039|      0|            ::int32_t val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint32(&ptr);
 9040|      0|            CHK_(ptr);
  ------------------
  |  | 8911|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9041|      0|            if (PROTOBUF_PREDICT_TRUE(::PROTOBUF_NAMESPACE_ID::FieldOptions_OptionTargetType_IsValid(static_cast<int>(val)))) {
  ------------------
  |  |  538|      0|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 0, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 9042|      0|              _internal_add_targets(static_cast<::PROTOBUF_NAMESPACE_ID::FieldOptions_OptionTargetType>(val));
 9043|      0|            } else {
 9044|      0|              ::PROTOBUF_NAMESPACE_ID::internal::WriteVarint(19, val, mutable_unknown_fields());
 9045|      0|            }
 9046|      0|            if (!ctx->DataAvailable(ptr)) break;
  ------------------
  |  Branch (9046:17): [True: 0, False: 0]
  ------------------
 9047|      0|          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<152>(ptr));
  ------------------
  |  Branch (9047:20): [True: 0, False: 0]
  ------------------
 9048|      0|        } else if (static_cast<::uint8_t>(tag) == 154) {
  ------------------
  |  Branch (9048:20): [True: 0, False: 0]
  ------------------
 9049|      0|          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedEnumParser<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(_internal_mutable_targets(), ptr, ctx, ::PROTOBUF_NAMESPACE_ID::FieldOptions_OptionTargetType_IsValid, &_internal_metadata_, 19);
 9050|      0|          CHK_(ptr);
  ------------------
  |  | 8911|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9051|      0|        } else {
 9052|      0|          goto handle_unusual;
 9053|      0|        }
 9054|      0|        continue;
 9055|       |      // repeated .google.protobuf.UninterpretedOption uninterpreted_option = 999;
 9056|      0|      case 999:
  ------------------
  |  Branch (9056:7): [True: 0, False: 22]
  ------------------
 9057|      0|        if (PROTOBUF_PREDICT_TRUE(static_cast<::uint8_t>(tag) == 58)) {
  ------------------
  |  |  538|      0|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 0, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 9058|      0|          ptr -= 2;
 9059|      0|          do {
 9060|      0|            ptr += 2;
 9061|      0|            ptr = ctx->ParseMessage(_internal_add_uninterpreted_option(), ptr);
 9062|      0|            CHK_(ptr);
  ------------------
  |  | 8911|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9063|      0|            if (!ctx->DataAvailable(ptr)) break;
  ------------------
  |  Branch (9063:17): [True: 0, False: 0]
  ------------------
 9064|      0|          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<7994>(ptr));
  ------------------
  |  Branch (9064:20): [True: 0, False: 0]
  ------------------
 9065|      0|        } else {
 9066|      0|          goto handle_unusual;
 9067|      0|        }
 9068|      0|        continue;
 9069|      0|      default:
  ------------------
  |  Branch (9069:7): [True: 0, False: 22]
  ------------------
 9070|      0|        goto handle_unusual;
 9071|     22|    }  // switch
 9072|      0|  handle_unusual:
 9073|      0|    if ((tag == 0) || ((tag & 7) == 4)) {
  ------------------
  |  Branch (9073:9): [True: 0, False: 0]
  |  Branch (9073:23): [True: 0, False: 0]
  ------------------
 9074|      0|      CHK_(ptr);
  ------------------
  |  | 8911|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9075|      0|      ctx->SetLastTag(tag);
 9076|      0|      goto message_done;
 9077|      0|    }
 9078|      0|    if ((8000u <= tag)) {
  ------------------
  |  Branch (9078:9): [True: 0, False: 0]
  ------------------
 9079|      0|      ptr = _impl_._extensions_.ParseField(tag, ptr, internal_default_instance(), &_internal_metadata_, ctx);
 9080|      0|      CHK_(ptr != nullptr);
  ------------------
  |  | 8911|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9081|      0|      continue;
 9082|      0|    }
 9083|      0|    ptr = UnknownFieldParse(
 9084|      0|        tag,
 9085|      0|        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
 9086|      0|        ptr, ctx);
 9087|      0|    CHK_(ptr != nullptr);
  ------------------
  |  | 8911|      0|#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  |  |  ------------------
  |  |  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 9088|      0|  }  // while
 9089|     22|message_done:
 9090|     22|  _impl_._has_bits_.Or(has_bits);
 9091|     22|  return ptr;
 9092|      0|failure:
 9093|      0|  ptr = nullptr;
 9094|      0|  goto message_done;
 9095|     22|#undef CHK_
 9096|     22|}
_ZNK6google8protobuf12FieldOptions13IsInitializedEv:
 9359|     22|bool FieldOptions::IsInitialized() const {
 9360|     22|  if (!_impl_._extensions_.IsInitialized(internal_default_instance())) {
  ------------------
  |  Branch (9360:7): [True: 0, False: 22]
  ------------------
 9361|      0|    return false;
 9362|      0|  }
 9363|       |
 9364|     22|  if (!::PROTOBUF_NAMESPACE_ID::internal::AllAreInitialized(_internal_uninterpreted_option()))
  ------------------
  |  Branch (9364:7): [True: 0, False: 22]
  ------------------
 9365|      0|    return false;
 9366|     22|  return true;
 9367|     22|}
_ZN6google8protobuf5Arena18CreateMaybeMessageINS0_30DescriptorProto_ExtensionRangeEJEEEPT_PS1_DpOT0_:
12655|     18|Arena::CreateMaybeMessage< ::PROTOBUF_NAMESPACE_ID::DescriptorProto_ExtensionRange >(Arena* arena) {
12656|     18|  return Arena::CreateMessageInternal< ::PROTOBUF_NAMESPACE_ID::DescriptorProto_ExtensionRange >(arena);
12657|     18|}
_ZN6google8protobuf5Arena18CreateMaybeMessageINS0_29DescriptorProto_ReservedRangeEJEEEPT_PS1_DpOT0_:
12659|     16|Arena::CreateMaybeMessage< ::PROTOBUF_NAMESPACE_ID::DescriptorProto_ReservedRange >(Arena* arena) {
12660|     16|  return Arena::CreateMessageInternal< ::PROTOBUF_NAMESPACE_ID::DescriptorProto_ReservedRange >(arena);
12661|     16|}
_ZN6google8protobuf5Arena18CreateMaybeMessageINS0_15DescriptorProtoEJEEEPT_PS1_DpOT0_:
12663|     96|Arena::CreateMaybeMessage< ::PROTOBUF_NAMESPACE_ID::DescriptorProto >(Arena* arena) {
12664|     96|  return Arena::CreateMessageInternal< ::PROTOBUF_NAMESPACE_ID::DescriptorProto >(arena);
12665|     96|}
_ZN6google8protobuf5Arena18CreateMaybeMessageINS0_20FieldDescriptorProtoEJEEEPT_PS1_DpOT0_:
12675|    418|Arena::CreateMaybeMessage< ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto >(Arena* arena) {
12676|    418|  return Arena::CreateMessageInternal< ::PROTOBUF_NAMESPACE_ID::FieldDescriptorProto >(arena);
12677|    418|}
_ZN6google8protobuf5Arena18CreateMaybeMessageINS0_20OneofDescriptorProtoEJEEEPT_PS1_DpOT0_:
12679|      8|Arena::CreateMaybeMessage< ::PROTOBUF_NAMESPACE_ID::OneofDescriptorProto >(Arena* arena) {
12680|      8|  return Arena::CreateMessageInternal< ::PROTOBUF_NAMESPACE_ID::OneofDescriptorProto >(arena);
12681|      8|}
_ZN6google8protobuf5Arena18CreateMaybeMessageINS0_19EnumDescriptorProtoEJEEEPT_PS1_DpOT0_:
12687|     22|Arena::CreateMaybeMessage< ::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto >(Arena* arena) {
12688|     22|  return Arena::CreateMessageInternal< ::PROTOBUF_NAMESPACE_ID::EnumDescriptorProto >(arena);
12689|     22|}
_ZN6google8protobuf5Arena18CreateMaybeMessageINS0_24EnumValueDescriptorProtoEJEEEPT_PS1_DpOT0_:
12691|    104|Arena::CreateMaybeMessage< ::PROTOBUF_NAMESPACE_ID::EnumValueDescriptorProto >(Arena* arena) {
12692|    104|  return Arena::CreateMessageInternal< ::PROTOBUF_NAMESPACE_ID::EnumValueDescriptorProto >(arena);
12693|    104|}
_ZN6google8protobuf5Arena18CreateMaybeMessageINS0_11FileOptionsEJEEEPT_PS1_DpOT0_:
12703|     10|Arena::CreateMaybeMessage< ::PROTOBUF_NAMESPACE_ID::FileOptions >(Arena* arena) {
12704|     10|  return Arena::CreateMessageInternal< ::PROTOBUF_NAMESPACE_ID::FileOptions >(arena);
12705|     10|}
_ZN6google8protobuf5Arena18CreateMaybeMessageINS0_14MessageOptionsEJEEEPT_PS1_DpOT0_:
12707|      6|Arena::CreateMaybeMessage< ::PROTOBUF_NAMESPACE_ID::MessageOptions >(Arena* arena) {
12708|      6|  return Arena::CreateMessageInternal< ::PROTOBUF_NAMESPACE_ID::MessageOptions >(arena);
12709|      6|}
_ZN6google8protobuf5Arena18CreateMaybeMessageINS0_12FieldOptionsEJEEEPT_PS1_DpOT0_:
12711|     22|Arena::CreateMaybeMessage< ::PROTOBUF_NAMESPACE_ID::FieldOptions >(Arena* arena) {
12712|     22|  return Arena::CreateMessageInternal< ::PROTOBUF_NAMESPACE_ID::FieldOptions >(arena);
12713|     22|}
_ZN6google8protobuf19FileDescriptorProto10SharedCtorEPNS0_5ArenaE:
 2124|     10|inline void FileDescriptorProto::SharedCtor(::_pb::Arena* arena) {
 2125|     10|  (void)arena;
 2126|     10|  new (&_impl_) Impl_{
 2127|     10|      decltype(_impl_._has_bits_){}
 2128|     10|    , /*decltype(_impl_._cached_size_)*/{}
 2129|     10|    , decltype(_impl_.dependency_){arena}
 2130|     10|    , decltype(_impl_.message_type_){arena}
 2131|     10|    , decltype(_impl_.enum_type_){arena}
 2132|     10|    , decltype(_impl_.service_){arena}
 2133|     10|    , decltype(_impl_.extension_){arena}
 2134|     10|    , decltype(_impl_.public_dependency_) { arena }
 2135|       |
 2136|     10|    , decltype(_impl_.weak_dependency_) { arena }
 2137|       |
 2138|     10|    , decltype(_impl_.name_) {}
 2139|       |
 2140|     10|    , decltype(_impl_.package_) {}
 2141|       |
 2142|     10|    , decltype(_impl_.syntax_) {}
 2143|       |
 2144|     10|    , decltype(_impl_.edition_) {}
 2145|       |
 2146|     10|    , decltype(_impl_.options_){nullptr}
 2147|     10|    , decltype(_impl_.source_code_info_){nullptr}
 2148|     10|  };
 2149|     10|  _impl_.name_.InitDefault();
 2150|       |  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
 2151|       |        _impl_.name_.Set("", GetArenaForAllocation());
 2152|       |  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
 2153|     10|  _impl_.package_.InitDefault();
 2154|       |  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
 2155|       |        _impl_.package_.Set("", GetArenaForAllocation());
 2156|       |  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
 2157|     10|  _impl_.syntax_.InitDefault();
 2158|       |  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
 2159|       |        _impl_.syntax_.Set("", GetArenaForAllocation());
 2160|       |  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
 2161|     10|  _impl_.edition_.InitDefault();
 2162|       |  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
 2163|       |        _impl_.edition_.Set("", GetArenaForAllocation());
 2164|       |  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
 2165|     10|}
_ZN6google8protobuf19FileDescriptorProto10SharedDtorEv:
 2176|     10|inline void FileDescriptorProto::SharedDtor() {
 2177|     10|  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  ------------------
  |  |   43|     10|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|     10|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|     20|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  163|     10|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|     20|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|     20|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2178|     10|  _internal_mutable_dependency()->~RepeatedPtrField();
 2179|     10|  _internal_mutable_message_type()->~RepeatedPtrField();
 2180|     10|  _internal_mutable_enum_type()->~RepeatedPtrField();
 2181|     10|  _internal_mutable_service()->~RepeatedPtrField();
 2182|     10|  _internal_mutable_extension()->~RepeatedPtrField();
 2183|     10|  _impl_.public_dependency_.~RepeatedField();
 2184|     10|  _impl_.weak_dependency_.~RepeatedField();
 2185|     10|  _impl_.name_.Destroy();
 2186|     10|  _impl_.package_.Destroy();
 2187|     10|  _impl_.syntax_.Destroy();
 2188|     10|  _impl_.edition_.Destroy();
 2189|     10|  if (this != internal_default_instance()) delete _impl_.options_;
  ------------------
  |  Branch (2189:7): [True: 10, False: 0]
  ------------------
 2190|     10|  if (this != internal_default_instance()) delete _impl_.source_code_info_;
  ------------------
  |  Branch (2190:7): [True: 10, False: 0]
  ------------------
 2191|     10|}
_ZN6google8protobuf30DescriptorProto_ExtensionRange10SharedCtorEPNS0_5ArenaE:
 2825|     18|inline void DescriptorProto_ExtensionRange::SharedCtor(::_pb::Arena* arena) {
 2826|     18|  (void)arena;
 2827|     18|  new (&_impl_) Impl_{
 2828|     18|      decltype(_impl_._has_bits_){}
 2829|     18|    , /*decltype(_impl_._cached_size_)*/{}
 2830|     18|    , decltype(_impl_.options_){nullptr}
 2831|     18|    , decltype(_impl_.start_) { 0 }
 2832|       |
 2833|     18|    , decltype(_impl_.end_) { 0 }
 2834|       |
 2835|     18|  };
 2836|     18|}
_ZN6google8protobuf30DescriptorProto_ExtensionRange10SharedDtorEv:
 2847|     18|inline void DescriptorProto_ExtensionRange::SharedDtor() {
 2848|     18|  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  ------------------
  |  |   43|     18|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|     18|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|     36|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  163|     18|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|     36|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|     36|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 2849|     18|  if (this != internal_default_instance()) delete _impl_.options_;
  ------------------
  |  Branch (2849:7): [True: 18, False: 0]
  ------------------
 2850|     18|}
_ZN6google8protobuf30DescriptorProto_ExtensionRange9_Internal13set_has_startEPNS0_8internal7HasBitsILm1EEE:
 2782|     18|  static void set_has_start(HasBits* has_bits) {
 2783|     18|    (*has_bits)[0] |= 2u;
 2784|     18|  }
_ZN6google8protobuf30DescriptorProto_ExtensionRange9_Internal11set_has_endEPNS0_8internal7HasBitsILm1EEE:
 2785|     18|  static void set_has_end(HasBits* has_bits) {
 2786|     18|    (*has_bits)[0] |= 4u;
 2787|     18|  }
_ZN6google8protobuf29DescriptorProto_ReservedRange10SharedCtorEPNS0_5ArenaE:
 3095|     16|inline void DescriptorProto_ReservedRange::SharedCtor(::_pb::Arena* arena) {
 3096|     16|  (void)arena;
 3097|     16|  new (&_impl_) Impl_{
 3098|     16|      decltype(_impl_._has_bits_){}
 3099|     16|    , /*decltype(_impl_._cached_size_)*/{}
 3100|     16|    , decltype(_impl_.start_) { 0 }
 3101|       |
 3102|     16|    , decltype(_impl_.end_) { 0 }
 3103|       |
 3104|     16|  };
 3105|     16|}
_ZN6google8protobuf29DescriptorProto_ReservedRange10SharedDtorEv:
 3116|     16|inline void DescriptorProto_ReservedRange::SharedDtor() {
 3117|     16|  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  ------------------
  |  |   43|     16|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|     16|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|     32|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  163|     16|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|     32|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|     32|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3118|     16|}
_ZN6google8protobuf29DescriptorProto_ReservedRange9_Internal13set_has_startEPNS0_8internal7HasBitsILm1EEE:
 3075|     16|  static void set_has_start(HasBits* has_bits) {
 3076|     16|    (*has_bits)[0] |= 1u;
 3077|     16|  }
_ZN6google8protobuf29DescriptorProto_ReservedRange9_Internal11set_has_endEPNS0_8internal7HasBitsILm1EEE:
 3078|     16|  static void set_has_end(HasBits* has_bits) {
 3079|     16|    (*has_bits)[0] |= 2u;
 3080|     16|  }
_ZN6google8protobuf15DescriptorProto10SharedCtorEPNS0_5ArenaE:
 3359|     96|inline void DescriptorProto::SharedCtor(::_pb::Arena* arena) {
 3360|     96|  (void)arena;
 3361|     96|  new (&_impl_) Impl_{
 3362|     96|      decltype(_impl_._has_bits_){}
 3363|     96|    , /*decltype(_impl_._cached_size_)*/{}
 3364|     96|    , decltype(_impl_.field_){arena}
 3365|     96|    , decltype(_impl_.nested_type_){arena}
 3366|     96|    , decltype(_impl_.enum_type_){arena}
 3367|     96|    , decltype(_impl_.extension_range_){arena}
 3368|     96|    , decltype(_impl_.extension_){arena}
 3369|     96|    , decltype(_impl_.oneof_decl_){arena}
 3370|     96|    , decltype(_impl_.reserved_range_){arena}
 3371|     96|    , decltype(_impl_.reserved_name_){arena}
 3372|     96|    , decltype(_impl_.name_) {}
 3373|       |
 3374|     96|    , decltype(_impl_.options_){nullptr}
 3375|     96|  };
 3376|     96|  _impl_.name_.InitDefault();
 3377|       |  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
 3378|       |        _impl_.name_.Set("", GetArenaForAllocation());
 3379|       |  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
 3380|     96|}
_ZN6google8protobuf15DescriptorProto10SharedDtorEv:
 3391|     96|inline void DescriptorProto::SharedDtor() {
 3392|     96|  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  ------------------
  |  |   43|     96|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|     96|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|    192|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  163|     96|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|    192|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|    192|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 3393|     96|  _internal_mutable_field()->~RepeatedPtrField();
 3394|     96|  _internal_mutable_nested_type()->~RepeatedPtrField();
 3395|     96|  _internal_mutable_enum_type()->~RepeatedPtrField();
 3396|     96|  _internal_mutable_extension_range()->~RepeatedPtrField();
 3397|     96|  _internal_mutable_extension()->~RepeatedPtrField();
 3398|     96|  _internal_mutable_oneof_decl()->~RepeatedPtrField();
 3399|     96|  _internal_mutable_reserved_range()->~RepeatedPtrField();
 3400|     96|  _internal_mutable_reserved_name()->~RepeatedPtrField();
 3401|     96|  _impl_.name_.Destroy();
 3402|     96|  if (this != internal_default_instance()) delete _impl_.options_;
  ------------------
  |  Branch (3402:7): [True: 96, False: 0]
  ------------------
 3403|     96|}
_ZN6google8protobuf20FieldDescriptorProto10SharedCtorEPNS0_5ArenaE:
 4707|    418|inline void FieldDescriptorProto::SharedCtor(::_pb::Arena* arena) {
 4708|    418|  (void)arena;
 4709|    418|  new (&_impl_) Impl_{
 4710|    418|      decltype(_impl_._has_bits_){}
 4711|    418|    , /*decltype(_impl_._cached_size_)*/{}
 4712|    418|    , decltype(_impl_.name_) {}
 4713|       |
 4714|    418|    , decltype(_impl_.extendee_) {}
 4715|       |
 4716|    418|    , decltype(_impl_.type_name_) {}
 4717|       |
 4718|    418|    , decltype(_impl_.default_value_) {}
 4719|       |
 4720|    418|    , decltype(_impl_.json_name_) {}
 4721|       |
 4722|    418|    , decltype(_impl_.options_){nullptr}
 4723|    418|    , decltype(_impl_.number_) { 0 }
 4724|       |
 4725|    418|    , decltype(_impl_.oneof_index_) { 0 }
 4726|       |
 4727|    418|    , decltype(_impl_.proto3_optional_) { false }
 4728|       |
 4729|    418|    , decltype(_impl_.label_) { 1 }
 4730|       |
 4731|    418|    , decltype(_impl_.type_) { 1 }
 4732|       |
 4733|    418|  };
 4734|    418|  _impl_.name_.InitDefault();
 4735|       |  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
 4736|       |        _impl_.name_.Set("", GetArenaForAllocation());
 4737|       |  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
 4738|    418|  _impl_.extendee_.InitDefault();
 4739|       |  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
 4740|       |        _impl_.extendee_.Set("", GetArenaForAllocation());
 4741|       |  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
 4742|    418|  _impl_.type_name_.InitDefault();
 4743|       |  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
 4744|       |        _impl_.type_name_.Set("", GetArenaForAllocation());
 4745|       |  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
 4746|    418|  _impl_.default_value_.InitDefault();
 4747|       |  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
 4748|       |        _impl_.default_value_.Set("", GetArenaForAllocation());
 4749|       |  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
 4750|    418|  _impl_.json_name_.InitDefault();
 4751|       |  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
 4752|       |        _impl_.json_name_.Set("", GetArenaForAllocation());
 4753|       |  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
 4754|    418|}
_ZN6google8protobuf20FieldDescriptorProto10SharedDtorEv:
 4765|    418|inline void FieldDescriptorProto::SharedDtor() {
 4766|    418|  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  ------------------
  |  |   43|    418|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|    418|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|    836|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  163|    418|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|    836|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|    836|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 4767|    418|  _impl_.name_.Destroy();
 4768|    418|  _impl_.extendee_.Destroy();
 4769|    418|  _impl_.type_name_.Destroy();
 4770|    418|  _impl_.default_value_.Destroy();
 4771|    418|  _impl_.json_name_.Destroy();
 4772|    418|  if (this != internal_default_instance()) delete _impl_.options_;
  ------------------
  |  Branch (4772:7): [True: 418, False: 0]
  ------------------
 4773|    418|}
_ZN6google8protobuf20FieldDescriptorProto9_Internal14set_has_numberEPNS0_8internal7HasBitsILm1EEE:
 4592|    418|  static void set_has_number(HasBits* has_bits) {
 4593|    418|    (*has_bits)[0] |= 64u;
 4594|    418|  }
_ZN6google8protobuf20FieldDescriptorProto9_Internal19set_has_oneof_indexEPNS0_8internal7HasBitsILm1EEE:
 4610|     48|  static void set_has_oneof_index(HasBits* has_bits) {
 4611|     48|    (*has_bits)[0] |= 128u;
 4612|     48|  }
_ZN6google8protobuf20OneofDescriptorProto10SharedCtorEPNS0_5ArenaE:
 5314|      8|inline void OneofDescriptorProto::SharedCtor(::_pb::Arena* arena) {
 5315|      8|  (void)arena;
 5316|      8|  new (&_impl_) Impl_{
 5317|      8|      decltype(_impl_._has_bits_){}
 5318|      8|    , /*decltype(_impl_._cached_size_)*/{}
 5319|      8|    , decltype(_impl_.name_) {}
 5320|       |
 5321|      8|    , decltype(_impl_.options_){nullptr}
 5322|      8|  };
 5323|      8|  _impl_.name_.InitDefault();
 5324|       |  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
 5325|       |        _impl_.name_.Set("", GetArenaForAllocation());
 5326|       |  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
 5327|      8|}
_ZN6google8protobuf20OneofDescriptorProto10SharedDtorEv:
 5338|      8|inline void OneofDescriptorProto::SharedDtor() {
 5339|      8|  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  ------------------
  |  |   43|      8|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|      8|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|     16|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  163|      8|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|     16|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|     16|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5340|      8|  _impl_.name_.Destroy();
 5341|      8|  if (this != internal_default_instance()) delete _impl_.options_;
  ------------------
  |  Branch (5341:7): [True: 8, False: 0]
  ------------------
 5342|      8|}
_ZN6google8protobuf19EnumDescriptorProto10SharedCtorEPNS0_5ArenaE:
 5822|     22|inline void EnumDescriptorProto::SharedCtor(::_pb::Arena* arena) {
 5823|     22|  (void)arena;
 5824|     22|  new (&_impl_) Impl_{
 5825|     22|      decltype(_impl_._has_bits_){}
 5826|     22|    , /*decltype(_impl_._cached_size_)*/{}
 5827|     22|    , decltype(_impl_.value_){arena}
 5828|     22|    , decltype(_impl_.reserved_range_){arena}
 5829|     22|    , decltype(_impl_.reserved_name_){arena}
 5830|     22|    , decltype(_impl_.name_) {}
 5831|       |
 5832|     22|    , decltype(_impl_.options_){nullptr}
 5833|     22|  };
 5834|     22|  _impl_.name_.InitDefault();
 5835|       |  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
 5836|       |        _impl_.name_.Set("", GetArenaForAllocation());
 5837|       |  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
 5838|     22|}
_ZN6google8protobuf19EnumDescriptorProto10SharedDtorEv:
 5849|     22|inline void EnumDescriptorProto::SharedDtor() {
 5850|     22|  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  ------------------
  |  |   43|     22|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|     22|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|     44|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  163|     22|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|     44|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|     44|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 5851|     22|  _internal_mutable_value()->~RepeatedPtrField();
 5852|     22|  _internal_mutable_reserved_range()->~RepeatedPtrField();
 5853|     22|  _internal_mutable_reserved_name()->~RepeatedPtrField();
 5854|     22|  _impl_.name_.Destroy();
 5855|     22|  if (this != internal_default_instance()) delete _impl_.options_;
  ------------------
  |  Branch (5855:7): [True: 22, False: 0]
  ------------------
 5856|     22|}
_ZN6google8protobuf24EnumValueDescriptorProto10SharedCtorEPNS0_5ArenaE:
 6208|    104|inline void EnumValueDescriptorProto::SharedCtor(::_pb::Arena* arena) {
 6209|    104|  (void)arena;
 6210|    104|  new (&_impl_) Impl_{
 6211|    104|      decltype(_impl_._has_bits_){}
 6212|    104|    , /*decltype(_impl_._cached_size_)*/{}
 6213|    104|    , decltype(_impl_.name_) {}
 6214|       |
 6215|    104|    , decltype(_impl_.options_){nullptr}
 6216|    104|    , decltype(_impl_.number_) { 0 }
 6217|       |
 6218|    104|  };
 6219|    104|  _impl_.name_.InitDefault();
 6220|       |  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
 6221|       |        _impl_.name_.Set("", GetArenaForAllocation());
 6222|       |  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
 6223|    104|}
_ZN6google8protobuf24EnumValueDescriptorProto10SharedDtorEv:
 6234|    104|inline void EnumValueDescriptorProto::SharedDtor() {
 6235|    104|  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  ------------------
  |  |   43|    104|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|    104|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|    208|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  163|    104|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|    208|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|    208|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 6236|    104|  _impl_.name_.Destroy();
 6237|    104|  if (this != internal_default_instance()) delete _impl_.options_;
  ------------------
  |  Branch (6237:7): [True: 104, False: 0]
  ------------------
 6238|    104|}
_ZN6google8protobuf24EnumValueDescriptorProto9_Internal14set_has_numberEPNS0_8internal7HasBitsILm1EEE:
 6163|    104|  static void set_has_number(HasBits* has_bits) {
 6164|    104|    (*has_bits)[0] |= 4u;
 6165|    104|  }
_ZN6google8protobuf11FileOptions10SharedCtorEPNS0_5ArenaE:
 7429|     10|inline void FileOptions::SharedCtor(::_pb::Arena* arena) {
 7430|     10|  (void)arena;
 7431|     10|  new (&_impl_) Impl_{
 7432|     10|      /*decltype(_impl_._extensions_)*/{::_pbi::ArenaInitialized(), arena}
 7433|     10|    , decltype(_impl_._has_bits_){}
 7434|     10|    , /*decltype(_impl_._cached_size_)*/{}
 7435|     10|    , decltype(_impl_.uninterpreted_option_){arena}
 7436|     10|    , decltype(_impl_.java_package_) {}
 7437|       |
 7438|     10|    , decltype(_impl_.java_outer_classname_) {}
 7439|       |
 7440|     10|    , decltype(_impl_.go_package_) {}
 7441|       |
 7442|     10|    , decltype(_impl_.objc_class_prefix_) {}
 7443|       |
 7444|     10|    , decltype(_impl_.csharp_namespace_) {}
 7445|       |
 7446|     10|    , decltype(_impl_.swift_prefix_) {}
 7447|       |
 7448|     10|    , decltype(_impl_.php_class_prefix_) {}
 7449|       |
 7450|     10|    , decltype(_impl_.php_namespace_) {}
 7451|       |
 7452|     10|    , decltype(_impl_.php_metadata_namespace_) {}
 7453|       |
 7454|     10|    , decltype(_impl_.ruby_package_) {}
 7455|       |
 7456|     10|    , decltype(_impl_.java_multiple_files_) { false }
 7457|       |
 7458|     10|    , decltype(_impl_.java_generate_equals_and_hash_) { false }
 7459|       |
 7460|     10|    , decltype(_impl_.java_string_check_utf8_) { false }
 7461|       |
 7462|     10|    , decltype(_impl_.cc_generic_services_) { false }
 7463|       |
 7464|     10|    , decltype(_impl_.java_generic_services_) { false }
 7465|       |
 7466|     10|    , decltype(_impl_.py_generic_services_) { false }
 7467|       |
 7468|     10|    , decltype(_impl_.php_generic_services_) { false }
 7469|       |
 7470|     10|    , decltype(_impl_.deprecated_) { false }
 7471|       |
 7472|     10|    , decltype(_impl_.optimize_for_) { 1 }
 7473|       |
 7474|     10|    , decltype(_impl_.cc_enable_arenas_) { true }
 7475|       |
 7476|     10|  };
 7477|     10|  _impl_.java_package_.InitDefault();
 7478|       |  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
 7479|       |        _impl_.java_package_.Set("", GetArenaForAllocation());
 7480|       |  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
 7481|     10|  _impl_.java_outer_classname_.InitDefault();
 7482|       |  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
 7483|       |        _impl_.java_outer_classname_.Set("", GetArenaForAllocation());
 7484|       |  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
 7485|     10|  _impl_.go_package_.InitDefault();
 7486|       |  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
 7487|       |        _impl_.go_package_.Set("", GetArenaForAllocation());
 7488|       |  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
 7489|     10|  _impl_.objc_class_prefix_.InitDefault();
 7490|       |  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
 7491|       |        _impl_.objc_class_prefix_.Set("", GetArenaForAllocation());
 7492|       |  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
 7493|     10|  _impl_.csharp_namespace_.InitDefault();
 7494|       |  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
 7495|       |        _impl_.csharp_namespace_.Set("", GetArenaForAllocation());
 7496|       |  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
 7497|     10|  _impl_.swift_prefix_.InitDefault();
 7498|       |  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
 7499|       |        _impl_.swift_prefix_.Set("", GetArenaForAllocation());
 7500|       |  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
 7501|     10|  _impl_.php_class_prefix_.InitDefault();
 7502|       |  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
 7503|       |        _impl_.php_class_prefix_.Set("", GetArenaForAllocation());
 7504|       |  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
 7505|     10|  _impl_.php_namespace_.InitDefault();
 7506|       |  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
 7507|       |        _impl_.php_namespace_.Set("", GetArenaForAllocation());
 7508|       |  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
 7509|     10|  _impl_.php_metadata_namespace_.InitDefault();
 7510|       |  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
 7511|       |        _impl_.php_metadata_namespace_.Set("", GetArenaForAllocation());
 7512|       |  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
 7513|     10|  _impl_.ruby_package_.InitDefault();
 7514|       |  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
 7515|       |        _impl_.ruby_package_.Set("", GetArenaForAllocation());
 7516|       |  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
 7517|     10|}
_ZN6google8protobuf11FileOptions10SharedDtorEv:
 7528|     10|inline void FileOptions::SharedDtor() {
 7529|     10|  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  ------------------
  |  |   43|     10|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|     10|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|     20|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  163|     10|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|     20|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|     20|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 7530|     10|  _impl_._extensions_.~ExtensionSet();
 7531|     10|  _internal_mutable_uninterpreted_option()->~RepeatedPtrField();
 7532|     10|  _impl_.java_package_.Destroy();
 7533|     10|  _impl_.java_outer_classname_.Destroy();
 7534|     10|  _impl_.go_package_.Destroy();
 7535|     10|  _impl_.objc_class_prefix_.Destroy();
 7536|     10|  _impl_.csharp_namespace_.Destroy();
 7537|     10|  _impl_.swift_prefix_.Destroy();
 7538|     10|  _impl_.php_class_prefix_.Destroy();
 7539|     10|  _impl_.php_namespace_.Destroy();
 7540|     10|  _impl_.php_metadata_namespace_.Destroy();
 7541|     10|  _impl_.ruby_package_.Destroy();
 7542|     10|}
_ZN6google8protobuf11FileOptions9_Internal27set_has_java_multiple_filesEPNS0_8internal7HasBitsILm1EEE:
 7241|      8|  static void set_has_java_multiple_files(HasBits* has_bits) {
 7242|      8|    (*has_bits)[0] |= 1024u;
 7243|      8|  }
_ZN6google8protobuf11FileOptions9_Internal24set_has_cc_enable_arenasEPNS0_8internal7HasBitsILm1EEE:
 7271|     10|  static void set_has_cc_enable_arenas(HasBits* has_bits) {
 7272|     10|    (*has_bits)[0] |= 524288u;
 7273|     10|  }
_ZN6google8protobuf14MessageOptions10SharedCtorEPNS0_5ArenaE:
 8409|      6|inline void MessageOptions::SharedCtor(::_pb::Arena* arena) {
 8410|      6|  (void)arena;
 8411|      6|  new (&_impl_) Impl_{
 8412|      6|      /*decltype(_impl_._extensions_)*/{::_pbi::ArenaInitialized(), arena}
 8413|      6|    , decltype(_impl_._has_bits_){}
 8414|      6|    , /*decltype(_impl_._cached_size_)*/{}
 8415|      6|    , decltype(_impl_.uninterpreted_option_){arena}
 8416|      6|    , decltype(_impl_.message_set_wire_format_) { false }
 8417|       |
 8418|      6|    , decltype(_impl_.no_standard_descriptor_accessor_) { false }
 8419|       |
 8420|      6|    , decltype(_impl_.deprecated_) { false }
 8421|       |
 8422|      6|    , decltype(_impl_.map_entry_) { false }
 8423|       |
 8424|      6|    , decltype(_impl_.deprecated_legacy_json_field_conflicts_) { false }
 8425|       |
 8426|      6|  };
 8427|      6|}
_ZN6google8protobuf14MessageOptions10SharedDtorEv:
 8438|      6|inline void MessageOptions::SharedDtor() {
 8439|      6|  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  ------------------
  |  |   43|      6|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|      6|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|     12|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  163|      6|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|     12|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|     12|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8440|      6|  _impl_._extensions_.~ExtensionSet();
 8441|      6|  _internal_mutable_uninterpreted_option()->~RepeatedPtrField();
 8442|      6|}
_ZN6google8protobuf14MessageOptions9_Internal17set_has_map_entryEPNS0_8internal7HasBitsILm1EEE:
 8369|      6|  static void set_has_map_entry(HasBits* has_bits) {
 8370|      6|    (*has_bits)[0] |= 8u;
 8371|      6|  }
_ZN6google8protobuf12FieldOptions10SharedCtorEPNS0_5ArenaE:
 8834|     22|inline void FieldOptions::SharedCtor(::_pb::Arena* arena) {
 8835|     22|  (void)arena;
 8836|     22|  new (&_impl_) Impl_{
 8837|     22|      /*decltype(_impl_._extensions_)*/{::_pbi::ArenaInitialized(), arena}
 8838|     22|    , decltype(_impl_._has_bits_){}
 8839|     22|    , /*decltype(_impl_._cached_size_)*/{}
 8840|     22|    , decltype(_impl_.targets_) { arena }
 8841|       |
 8842|     22|    , decltype(_impl_.uninterpreted_option_){arena}
 8843|     22|    , decltype(_impl_.ctype_) { 0 }
 8844|       |
 8845|     22|    , decltype(_impl_.jstype_) { 0 }
 8846|       |
 8847|     22|    , decltype(_impl_.packed_) { false }
 8848|       |
 8849|     22|    , decltype(_impl_.lazy_) { false }
 8850|       |
 8851|     22|    , decltype(_impl_.unverified_lazy_) { false }
 8852|       |
 8853|     22|    , decltype(_impl_.deprecated_) { false }
 8854|       |
 8855|     22|    , decltype(_impl_.weak_) { false }
 8856|       |
 8857|     22|    , decltype(_impl_.debug_redact_) { false }
 8858|       |
 8859|     22|    , decltype(_impl_.retention_) { 0 }
 8860|       |
 8861|     22|    , decltype(_impl_.target_) { 0 }
 8862|       |
 8863|     22|  };
 8864|     22|}
_ZN6google8protobuf12FieldOptions10SharedDtorEv:
 8875|     22|inline void FieldOptions::SharedDtor() {
 8876|     22|  ABSL_DCHECK(GetArenaForAllocation() == nullptr);
  ------------------
  |  |   43|     22|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|     22|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|     44|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  163|     22|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|     44|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|     44|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
 8877|     22|  _impl_._extensions_.~ExtensionSet();
 8878|     22|  _internal_mutable_targets()->~RepeatedField();
 8879|     22|  _internal_mutable_uninterpreted_option()->~RepeatedPtrField();
 8880|     22|}
_ZN6google8protobuf12FieldOptions9_Internal14set_has_packedEPNS0_8internal7HasBitsILm1EEE:
 8761|      6|  static void set_has_packed(HasBits* has_bits) {
 8762|      6|    (*has_bits)[0] |= 4u;
 8763|      6|  }
_ZN6google8protobuf12FieldOptions9_Internal18set_has_deprecatedEPNS0_8internal7HasBitsILm1EEE:
 8773|     14|  static void set_has_deprecated(HasBits* has_bits) {
 8774|     14|    (*has_bits)[0] |= 32u;
 8775|     14|  }

_ZN6google8protobuf25EncodedDescriptorDatabase3AddEPKvi:
  568|     10|                                    int size) {
  569|     10|  FileDescriptorProto file;
  570|     10|  if (file.ParseFromArray(encoded_file_descriptor, size)) {
  ------------------
  |  Branch (570:7): [True: 10, False: 0]
  ------------------
  571|     10|    return index_->AddFile(file, std::make_pair(encoded_file_descriptor, size));
  572|     10|  } else {
  573|      0|    ABSL_LOG(ERROR) << "Invalid file descriptor data passed to "
  ------------------
  |  |   38|      0|#define ABSL_LOG(severity) ABSL_LOG_IMPL(_##severity)
  |  |  ------------------
  |  |  |  |   24|      0|  ABSL_LOG_INTERNAL_CONDITION##severity(STATELESS, true) \
  |  |  |  |   25|      0|      ABSL_LOGGING_INTERNAL_LOG##severity.InternalStream()
  |  |  ------------------
  ------------------
  574|      0|                       "EncodedDescriptorDatabase::Add().";
  575|      0|    return false;
  576|      0|  }
  577|     10|}
_ZN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9AddSymbolENSt3__117basic_string_viewIcNS3_11char_traitsIcEEEE:
  707|     64|    absl::string_view symbol) {
  708|     64|  SymbolEntry entry = {static_cast<int>(all_values_.size() - 1),
  709|     64|                       EncodeString(symbol)};
  710|     64|  std::string entry_as_string = entry.AsString(*this);
  711|       |
  712|       |  // We need to make sure not to violate our map invariant.
  713|       |
  714|       |  // If the symbol name is invalid it could break our lookup algorithm (which
  715|       |  // relies on the fact that '.' sorts before all other characters that are
  716|       |  // valid in symbol names).
  717|     64|  if (!ValidateSymbolName(symbol)) {
  ------------------
  |  Branch (717:7): [True: 0, False: 64]
  ------------------
  718|      0|    ABSL_LOG(ERROR) << "Invalid symbol name: " << entry_as_string;
  ------------------
  |  |   38|      0|#define ABSL_LOG(severity) ABSL_LOG_IMPL(_##severity)
  |  |  ------------------
  |  |  |  |   24|      0|  ABSL_LOG_INTERNAL_CONDITION##severity(STATELESS, true) \
  |  |  |  |   25|      0|      ABSL_LOGGING_INTERNAL_LOG##severity.InternalStream()
  |  |  ------------------
  ------------------
  719|      0|    return false;
  720|      0|  }
  721|       |
  722|     64|  auto iter = FindLastLessOrEqual(&by_symbol_, entry);
  723|     64|  if (!CheckForMutualSubsymbols(entry_as_string, &iter, by_symbol_.end(),
  ------------------
  |  Branch (723:7): [True: 0, False: 64]
  ------------------
  724|     64|                                *this)) {
  725|      0|    return false;
  726|      0|  }
  727|       |
  728|       |  // Same, but on by_symbol_flat_
  729|     64|  auto flat_iter =
  730|     64|      FindLastLessOrEqual(&by_symbol_flat_, entry, by_symbol_.key_comp());
  731|     64|  if (!CheckForMutualSubsymbols(entry_as_string, &flat_iter,
  ------------------
  |  Branch (731:7): [True: 0, False: 64]
  ------------------
  732|     64|                                by_symbol_flat_.end(), *this)) {
  733|      0|    return false;
  734|      0|  }
  735|       |
  736|       |  // OK, no conflicts.
  737|       |
  738|       |  // Insert the new symbol using the iterator as a hint, the new entry will
  739|       |  // appear immediately before the one the iterator is pointing at.
  740|     64|  by_symbol_.insert(iter, entry);
  741|       |
  742|     64|  return true;
  743|     64|}
_ZN6google8protobuf25EncodedDescriptorDatabaseC2Ev:
  895|      2|    : index_(new DescriptorIndex()) {}
_ZNK6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex12EncodeStringENSt3__117basic_string_viewIcNS3_11char_traitsIcEEEE:
  443|     84|  String EncodeString(absl::string_view str) const { return String(str); }
_ZNK6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntry8AsStringERKS2_:
  493|    184|    std::string AsString(const DescriptorIndex& index) const {
  494|    184|      auto p = package(index);
  495|    184|      return absl::StrCat(p, p.empty() ? "" : ".", symbol(index));
  ------------------
  |  Branch (495:30): [True: 0, False: 184]
  ------------------
  496|    184|    }
_ZNK6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntry7packageERKS2_:
  485|    916|    absl::string_view package(const DescriptorIndex& index) const {
  486|    916|      return index.DecodeString(index.all_values_[data_offset].encoded_package,
  487|    916|                                data_offset);
  488|    916|    }
_ZNK6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex12DecodeStringERKNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEi:
  444|  1.86k|  absl::string_view DecodeString(const String& str, int) const { return str; }
_ZNK6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntry6symbolERKS2_:
  489|    916|    absl::string_view symbol(const DescriptorIndex& index) const {
  490|    916|      return index.DecodeString(encoded_symbol, data_offset);
  491|    916|    }
descriptor_database.cc:_ZN6google8protobuf12_GLOBAL__N_118ValidateSymbolNameENSt3__117basic_string_viewIcNS2_11char_traitsIcEEEE:
  161|     74|bool ValidateSymbolName(absl::string_view name) {
  162|  1.05k|  for (char c : name) {
  ------------------
  |  Branch (162:15): [True: 1.05k, False: 74]
  ------------------
  163|       |    // I don't trust ctype.h due to locales.  :(
  164|  1.05k|    if (c != '.' && c != '_' && (c < '0' || c > '9') && (c < 'A' || c > 'Z') &&
  ------------------
  |  Branch (164:9): [True: 1.04k, False: 14]
  |  Branch (164:21): [True: 1.04k, False: 0]
  |  Branch (164:34): [True: 0, False: 1.04k]
  |  Branch (164:45): [True: 1.03k, False: 4]
  |  Branch (164:58): [True: 0, False: 1.03k]
  |  Branch (164:69): [True: 894, False: 142]
  ------------------
  165|  1.05k|        (c < 'a' || c > 'z')) {
  ------------------
  |  Branch (165:10): [True: 0, False: 894]
  |  Branch (165:21): [True: 0, False: 894]
  ------------------
  166|      0|      return false;
  167|      0|    }
  168|  1.05k|  }
  169|     74|  return true;
  170|     74|}
descriptor_database.cc:_ZN6google8protobuf12_GLOBAL__N_111IsSubSymbolENSt3__117basic_string_viewIcNS2_11char_traitsIcEEEES6_:
  195|    120|bool IsSubSymbol(absl::string_view sub_symbol, absl::string_view super_symbol) {
  196|    120|  return sub_symbol == super_symbol ||
  ------------------
  |  Branch (196:10): [True: 0, False: 120]
  ------------------
  197|    120|         (absl::StartsWith(super_symbol, sub_symbol) &&
  ------------------
  |  Branch (197:11): [True: 0, False: 120]
  ------------------
  198|    120|          super_symbol[sub_symbol.size()] == '.');
  ------------------
  |  Branch (198:11): [True: 0, False: 0]
  ------------------
  199|    120|}
_ZNK6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex9FileEntry4nameERKS2_:
  461|     36|    absl::string_view name(const DescriptorIndex& index) const {
  462|     36|      return index.DecodeString(encoded_name, data_offset);
  463|     36|    }
_ZN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex7AddFileINS0_19FileDescriptorProtoEEEbRKT_NSt3__14pairIPKviEE:
  639|     10|                                                         Value value) {
  640|       |  // We push `value` into the array first. This is important because the AddXXX
  641|       |  // functions below will expect it to be there.
  642|     10|  all_values_.push_back({value.first, value.second, {}});
  643|       |
  644|     10|  if (!ValidateSymbolName(file.package())) {
  ------------------
  |  Branch (644:7): [True: 0, False: 10]
  ------------------
  645|      0|    ABSL_LOG(ERROR) << "Invalid package name: " << file.package();
  ------------------
  |  |   38|      0|#define ABSL_LOG(severity) ABSL_LOG_IMPL(_##severity)
  |  |  ------------------
  |  |  |  |   24|      0|  ABSL_LOG_INTERNAL_CONDITION##severity(STATELESS, true) \
  |  |  |  |   25|      0|      ABSL_LOGGING_INTERNAL_LOG##severity.InternalStream()
  |  |  ------------------
  ------------------
  646|      0|    return false;
  647|      0|  }
  648|     10|  all_values_.back().encoded_package = EncodeString(file.package());
  649|       |
  650|     10|  if (!by_name_
  ------------------
  |  Branch (650:7): [True: 0, False: 10]
  |  Branch (650:7): [True: 0, False: 10]
  ------------------
  651|     10|           .insert({static_cast<int>(all_values_.size() - 1),
  652|     10|                    EncodeString(file.name())})
  653|     10|           .second ||
  654|     10|      std::binary_search(by_name_flat_.begin(), by_name_flat_.end(),
  ------------------
  |  Branch (654:7): [True: 0, False: 10]
  ------------------
  655|     10|                         file.name(), by_name_.key_comp())) {
  656|      0|    ABSL_LOG(ERROR) << "File already exists in database: " << file.name();
  ------------------
  |  |   38|      0|#define ABSL_LOG(severity) ABSL_LOG_IMPL(_##severity)
  |  |  ------------------
  |  |  |  |   24|      0|  ABSL_LOG_INTERNAL_CONDITION##severity(STATELESS, true) \
  |  |  |  |   25|      0|      ABSL_LOGGING_INTERNAL_LOG##severity.InternalStream()
  |  |  ------------------
  ------------------
  657|      0|    return false;
  658|      0|  }
  659|       |
  660|     62|  for (const auto& message_type : file.message_type()) {
  ------------------
  |  Branch (660:33): [True: 62, False: 10]
  ------------------
  661|     62|    if (!AddSymbol(message_type.name())) return false;
  ------------------
  |  Branch (661:9): [True: 0, False: 62]
  ------------------
  662|     62|    if (!AddNestedExtensions(file.name(), message_type)) return false;
  ------------------
  |  Branch (662:9): [True: 0, False: 62]
  ------------------
  663|     62|  }
  664|     10|  for (const auto& enum_type : file.enum_type()) {
  ------------------
  |  Branch (664:30): [True: 2, False: 10]
  ------------------
  665|      2|    if (!AddSymbol(enum_type.name())) return false;
  ------------------
  |  Branch (665:9): [True: 0, False: 2]
  ------------------
  666|      2|  }
  667|     10|  for (const auto& extension : file.extension()) {
  ------------------
  |  Branch (667:30): [True: 0, False: 10]
  ------------------
  668|      0|    if (!AddSymbol(extension.name())) return false;
  ------------------
  |  Branch (668:9): [True: 0, False: 0]
  ------------------
  669|      0|    if (!AddExtension(file.name(), extension)) return false;
  ------------------
  |  Branch (669:9): [True: 0, False: 0]
  ------------------
  670|      0|  }
  671|     10|  for (const auto& service : file.service()) {
  ------------------
  |  Branch (671:28): [True: 0, False: 10]
  ------------------
  672|      0|    if (!AddSymbol(service.name())) return false;
  ------------------
  |  Branch (672:9): [True: 0, False: 0]
  ------------------
  673|      0|  }
  674|       |
  675|     10|  return true;
  676|     10|}
_ZNK6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex11FileCompareclERKNS2_9FileEntryES6_:
  468|     18|    bool operator()(const FileEntry& a, const FileEntry& b) const {
  469|     18|      return a.name(index) < b.name(index);
  470|     18|    }
_ZN6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex19AddNestedExtensionsINS0_15DescriptorProtoEEEbNSt3__117basic_string_viewIcNS5_11char_traitsIcEEEERKT_:
  747|     96|    absl::string_view filename, const DescProto& message_type) {
  748|     96|  for (const auto& nested_type : message_type.nested_type()) {
  ------------------
  |  Branch (748:32): [True: 34, False: 96]
  ------------------
  749|     34|    if (!AddNestedExtensions(filename, nested_type)) return false;
  ------------------
  |  Branch (749:9): [True: 0, False: 34]
  ------------------
  750|     34|  }
  751|     96|  for (const auto& extension : message_type.extension()) {
  ------------------
  |  Branch (751:30): [True: 0, False: 96]
  ------------------
  752|      0|    if (!AddExtension(filename, extension)) return false;
  ------------------
  |  Branch (752:9): [True: 0, False: 0]
  ------------------
  753|      0|  }
  754|     96|  return true;
  755|     96|}
descriptor_database.cc:_ZN6google8protobuf12_GLOBAL__N_119FindLastLessOrEqualIN4absl9btree_setINS0_25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS6_13SymbolCompareENSt3__19allocatorIS7_EEEES7_EENT_14const_iteratorEPKSD_RKT0_:
  177|     64|    const Container* container, const Key& key) {
  178|     64|  auto iter = container->upper_bound(key);
  179|     64|  if (iter != container->begin()) --iter;
  ------------------
  |  Branch (179:7): [True: 56, False: 8]
  ------------------
  180|     64|  return iter;
  181|     64|}
_ZNK6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex13SymbolCompareclINS2_11SymbolEntryES5_EEbRKT_RKT0_:
  519|    366|    bool operator()(const T& lhs, const U& rhs) const {
  520|    366|      auto lhs_parts = GetParts(lhs);
  521|    366|      auto rhs_parts = GetParts(rhs);
  522|       |
  523|       |      // Fast path to avoid making the whole string for common cases.
  524|    366|      if (int res =
  ------------------
  |  Branch (524:15): [True: 48, False: 318]
  ------------------
  525|    366|              lhs_parts.first.substr(0, rhs_parts.first.size())
  526|    366|                  .compare(rhs_parts.first.substr(0, lhs_parts.first.size()))) {
  527|       |        // If the packages already differ, exit early.
  528|     48|        return res < 0;
  529|    318|      } else if (lhs_parts.first.size() == rhs_parts.first.size()) {
  ------------------
  |  Branch (529:18): [True: 318, False: 0]
  ------------------
  530|    318|        return lhs_parts.second < rhs_parts.second;
  531|    318|      }
  532|      0|      return AsString(lhs) < AsString(rhs);
  533|    366|    }
_ZNK6google8protobuf25EncodedDescriptorDatabase15DescriptorIndex13SymbolCompare8GetPartsERKNS2_11SymbolEntryE:
  508|    732|        const SymbolEntry& entry) const {
  509|    732|      auto package = entry.package(index);
  510|    732|      if (package.empty()) return {entry.symbol(index), absl::string_view{}};
  ------------------
  |  Branch (510:11): [True: 0, False: 732]
  ------------------
  511|    732|      return {package, entry.symbol(index)};
  512|    732|    }
descriptor_database.cc:_ZN6google8protobufL24CheckForMutualSubsymbolsIN4absl18container_internal14btree_iteratorIKNS3_10btree_nodeINS3_10set_paramsINS0_25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS8_13SymbolCompareENSt3__19allocatorIS9_EELi256ELb0EEEEERKS9_PSH_EENS4_ISF_RS9_PS9_EES8_EEbNSB_17basic_string_viewIcNSB_11char_traitsIcEEEEPT_T0_RKT1_:
  680|     64|                                     Iter2 end, const Index& index) {
  681|     64|  if (*iter != end) {
  ------------------
  |  Branch (681:7): [True: 62, False: 2]
  ------------------
  682|     62|    if (IsSubSymbol((*iter)->AsString(index), symbol_name)) {
  ------------------
  |  Branch (682:9): [True: 0, False: 62]
  ------------------
  683|      0|      ABSL_LOG(ERROR) << "Symbol name \"" << symbol_name
  ------------------
  |  |   38|      0|#define ABSL_LOG(severity) ABSL_LOG_IMPL(_##severity)
  |  |  ------------------
  |  |  |  |   24|      0|  ABSL_LOG_INTERNAL_CONDITION##severity(STATELESS, true) \
  |  |  |  |   25|      0|      ABSL_LOGGING_INTERNAL_LOG##severity.InternalStream()
  |  |  ------------------
  ------------------
  684|      0|                      << "\" conflicts with the existing symbol \""
  685|      0|                      << (*iter)->AsString(index) << "\".";
  686|      0|      return false;
  687|      0|    }
  688|       |
  689|       |    // OK, that worked.  Now we have to make sure that no symbol in the map is
  690|       |    // a sub-symbol of the one we are inserting.  The only symbol which could
  691|       |    // be so is the first symbol that is greater than the new symbol.  Since
  692|       |    // |iter| points at the last symbol that is less than or equal, we just have
  693|       |    // to increment it.
  694|     62|    ++*iter;
  695|       |
  696|     62|    if (*iter != end && IsSubSymbol(symbol_name, (*iter)->AsString(index))) {
  ------------------
  |  Branch (696:9): [True: 58, False: 4]
  |  Branch (696:9): [True: 0, False: 62]
  |  Branch (696:25): [True: 0, False: 58]
  ------------------
  697|      0|      ABSL_LOG(ERROR) << "Symbol name \"" << symbol_name
  ------------------
  |  |   38|      0|#define ABSL_LOG(severity) ABSL_LOG_IMPL(_##severity)
  |  |  ------------------
  |  |  |  |   24|      0|  ABSL_LOG_INTERNAL_CONDITION##severity(STATELESS, true) \
  |  |  |  |   25|      0|      ABSL_LOGGING_INTERNAL_LOG##severity.InternalStream()
  |  |  ------------------
  ------------------
  698|      0|                      << "\" conflicts with the existing symbol \""
  699|      0|                      << (*iter)->AsString(index) << "\".";
  700|      0|      return false;
  701|      0|    }
  702|     62|  }
  703|     64|  return true;
  704|     64|}
descriptor_database.cc:_ZN6google8protobuf12_GLOBAL__N_119FindLastLessOrEqualINSt3__16vectorINS0_25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryENS3_9allocatorIS7_EEEES7_NS6_13SymbolCompareEEENT_14const_iteratorEPKSC_RKT0_RKT1_:
  186|     64|    const Container* container, const Key& key, const Cmp& cmp) {
  187|     64|  auto iter = std::upper_bound(container->begin(), container->end(), key, cmp);
  188|     64|  if (iter != container->begin()) --iter;
  ------------------
  |  Branch (188:7): [True: 0, False: 64]
  ------------------
  189|     64|  return iter;
  190|     64|}
descriptor_database.cc:_ZN6google8protobufL24CheckForMutualSubsymbolsINSt3__111__wrap_iterIPKNS0_25EncodedDescriptorDatabase15DescriptorIndex11SymbolEntryEEENS3_IPS6_EES5_EEbNS2_17basic_string_viewIcNS2_11char_traitsIcEEEEPT_T0_RKT1_:
  680|     64|                                     Iter2 end, const Index& index) {
  681|     64|  if (*iter != end) {
  ------------------
  |  Branch (681:7): [True: 0, False: 64]
  ------------------
  682|      0|    if (IsSubSymbol((*iter)->AsString(index), symbol_name)) {
  ------------------
  |  Branch (682:9): [True: 0, False: 0]
  ------------------
  683|      0|      ABSL_LOG(ERROR) << "Symbol name \"" << symbol_name
  ------------------
  |  |   38|      0|#define ABSL_LOG(severity) ABSL_LOG_IMPL(_##severity)
  |  |  ------------------
  |  |  |  |   24|      0|  ABSL_LOG_INTERNAL_CONDITION##severity(STATELESS, true) \
  |  |  |  |   25|      0|      ABSL_LOGGING_INTERNAL_LOG##severity.InternalStream()
  |  |  ------------------
  ------------------
  684|      0|                      << "\" conflicts with the existing symbol \""
  685|      0|                      << (*iter)->AsString(index) << "\".";
  686|      0|      return false;
  687|      0|    }
  688|       |
  689|       |    // OK, that worked.  Now we have to make sure that no symbol in the map is
  690|       |    // a sub-symbol of the one we are inserting.  The only symbol which could
  691|       |    // be so is the first symbol that is greater than the new symbol.  Since
  692|       |    // |iter| points at the last symbol that is less than or equal, we just have
  693|       |    // to increment it.
  694|      0|    ++*iter;
  695|       |
  696|      0|    if (*iter != end && IsSubSymbol(symbol_name, (*iter)->AsString(index))) {
  ------------------
  |  Branch (696:9): [True: 0, False: 0]
  |  Branch (696:9): [True: 0, False: 0]
  |  Branch (696:25): [True: 0, False: 0]
  ------------------
  697|      0|      ABSL_LOG(ERROR) << "Symbol name \"" << symbol_name
  ------------------
  |  |   38|      0|#define ABSL_LOG(severity) ABSL_LOG_IMPL(_##severity)
  |  |  ------------------
  |  |  |  |   24|      0|  ABSL_LOG_INTERNAL_CONDITION##severity(STATELESS, true) \
  |  |  |  |   25|      0|      ABSL_LOGGING_INTERNAL_LOG##severity.InternalStream()
  |  |  ------------------
  ------------------
  698|      0|                      << "\" conflicts with the existing symbol \""
  699|      0|                      << (*iter)->AsString(index) << "\".";
  700|      0|      return false;
  701|      0|    }
  702|      0|  }
  703|     64|  return true;
  704|     64|}

_ZN6google8protobuf8internal12ExtensionSetC2EPNS0_5ArenaE:
  189|     38|               : Arena::CreateArray<KeyValue>(arena_, flat_capacity_)} {}
_ZN6google8protobuf8internal12ExtensionSetD2Ev:
  191|     38|ExtensionSet::~ExtensionSet() {
  192|       |  // Deletes all allocated extensions.
  193|     38|  if (arena_ == nullptr) {
  ------------------
  |  Branch (193:7): [True: 38, False: 0]
  ------------------
  194|     38|    ForEach([](int /* number */, Extension& ext) { ext.Free(); });
  195|     38|    if (PROTOBUF_PREDICT_FALSE(is_large())) {
  ------------------
  |  |  539|     38|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (539:36): [True: 0, False: 38]
  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  Branch (539:63): [True: 0, False: 38]
  |  |  ------------------
  ------------------
  196|      0|      delete map_.large;
  197|     38|    } else {
  198|     38|      DeleteFlatMap(map_.flat, flat_capacity_);
  199|     38|    }
  200|     38|  }
  201|     38|}
_ZN6google8protobuf8internal12ExtensionSet13DeleteFlatMapEPKNS2_8KeyValueEt:
  204|     38|                                 uint16_t flat_capacity) {
  205|       |  // Arena::CreateArray already requires a trivially destructible type, but
  206|       |  // ensure this constraint is not violated in the future.
  207|     38|  static_assert(std::is_trivially_destructible<KeyValue>::value,
  208|     38|                "CreateArray requires a trivially destructible type");
  209|       |  // A const-cast is needed, but this is safe as we are about to deallocate the
  210|       |  // array.
  211|     38|  internal::SizedArrayDelete(const_cast<KeyValue*>(flat),
  212|     38|                             sizeof(*flat) * flat_capacity);
  213|     38|}
_ZNK6google8protobuf8internal12ExtensionSet13IsInitializedEPKNS0_11MessageLiteE:
 1217|     38|bool ExtensionSet::IsInitialized(const MessageLite* extendee) const {
 1218|       |  // Extensions are never required.  However, we need to check that all
 1219|       |  // embedded messages are initialized.
 1220|     38|  if (PROTOBUF_PREDICT_FALSE(is_large())) {
  ------------------
  |  |  539|     38|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (539:36): [True: 0, False: 38]
  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  Branch (539:63): [True: 0, False: 38]
  |  |  ------------------
  ------------------
 1221|      0|    for (const auto& kv : *map_.large) {
  ------------------
  |  Branch (1221:25): [True: 0, False: 0]
  ------------------
 1222|      0|      if (!kv.second.IsInitialized(this, extendee, kv.first, arena_)) {
  ------------------
  |  Branch (1222:11): [True: 0, False: 0]
  ------------------
 1223|      0|        return false;
 1224|      0|      }
 1225|      0|    }
 1226|      0|    return true;
 1227|      0|  }
 1228|     38|  for (const KeyValue* it = flat_begin(); it != flat_end(); ++it) {
  ------------------
  |  Branch (1228:43): [True: 0, False: 38]
  ------------------
 1229|      0|    if (!it->second.IsInitialized(this, extendee, it->first, arena_)) {
  ------------------
  |  Branch (1229:9): [True: 0, False: 0]
  ------------------
 1230|      0|      return false;
 1231|      0|    }
 1232|      0|  }
 1233|     38|  return true;
 1234|     38|}

_ZN6google8protobuf8internal20AddDescriptorsRunnerC2EPKNS1_15DescriptorTableE:
 3627|     10|AddDescriptorsRunner::AddDescriptorsRunner(const DescriptorTable* table) {
 3628|     10|  AddDescriptors(table);
 3629|     10|}
generated_message_reflection.cc:_ZN6google8protobuf12_GLOBAL__N_114AddDescriptorsEPKNS0_8internal15DescriptorTableE:
 3587|     16|void AddDescriptors(const DescriptorTable* table) {
 3588|       |  // AddDescriptors is not thread safe. Callers need to ensure calls are
 3589|       |  // properly serialized. This function is only called pre-main by global
 3590|       |  // descriptors and we can assume single threaded access or it's called
 3591|       |  // by AssignDescriptorImpl which uses a mutex to sequence calls.
 3592|     16|  if (table->is_initialized) return;
  ------------------
  |  Branch (3592:7): [True: 6, False: 10]
  ------------------
 3593|     10|  table->is_initialized = true;
 3594|     10|  AddDescriptorsImpl(table);
 3595|     10|}
generated_message_reflection.cc:_ZN6google8protobuf12_GLOBAL__N_118AddDescriptorsImplEPKNS0_8internal15DescriptorTableE:
 3570|     10|void AddDescriptorsImpl(const DescriptorTable* table) {
 3571|       |  // Reflection refers to the default fields so make sure they are initialized.
 3572|     10|  internal::InitProtobufDefaults();
 3573|       |
 3574|       |  // Ensure all dependent descriptors are registered to the generated descriptor
 3575|       |  // pool and message factory.
 3576|     10|  int num_deps = table->num_deps;
 3577|     16|  for (int i = 0; i < num_deps; i++) {
  ------------------
  |  Branch (3577:19): [True: 6, False: 10]
  ------------------
 3578|       |    // In case of weak fields deps[i] could be null.
 3579|      6|    if (table->deps[i]) AddDescriptors(table->deps[i]);
  ------------------
  |  Branch (3579:9): [True: 6, False: 0]
  ------------------
 3580|      6|  }
 3581|       |
 3582|       |  // Register the descriptor of this file.
 3583|     10|  DescriptorPool::InternalAddGeneratedFile(table->descriptor, table->size);
 3584|     10|  MessageFactory::InternalRegisterGeneratedFile(table);
 3585|     10|}

_ZN6google8protobuf8internal24InitProtobufDefaultsSlowEv:
   84|      2|void InitProtobufDefaultsSlow() {
   85|      2|  static bool is_inited = InitProtobufDefaultsImpl();
   86|      2|  (void)is_inited;
   87|      2|}
generated_message_util.cc:_ZN6google8protobuf8internalL24InitProtobufDefaultsImplEv:
   75|      2|static bool InitProtobufDefaultsImpl() {
   76|      2|  fixed_address_empty_string.DefaultConstruct();
   77|      2|  OnShutdownDestroyString(fixed_address_empty_string.get_mutable());
   78|       |
   79|       |
   80|      2|  init_protobuf_defaults_state.store(true, std::memory_order_release);
   81|      2|  return true;
   82|      2|}

_ZN6google8protobuf8internal12MapFieldBaseD2Ev:
   47|  15.0k|MapFieldBase::~MapFieldBase() {
   48|  15.0k|  ABSL_DCHECK_EQ(arena(), nullptr);
  ------------------
  |  |   70|  15.0k|  ABSL_DCHECK_EQ_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   86|  15.0k|  ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|  15.0k|  while (false && ((void)(x), (void)(y), 0)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (56:10): [Folded - Ignored]
  |  |  |  |  |  |  |  Branch (56:19): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   57|  15.0k|  ::absl::log_internal::NullStream().InternalStream()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   49|  15.0k|  delete maybe_payload();
   50|  15.0k|}
_ZNK6google8protobuf8internal12MapFieldBase11PayloadSlowEv:
   73|  7.50k|MapFieldBase::ReflectionPayload& MapFieldBase::PayloadSlow() const {
   74|  7.50k|  auto p = payload_.load(std::memory_order_acquire);
   75|  7.50k|  if (!IsPayload(p)) {
  ------------------
  |  Branch (75:7): [True: 7.50k, False: 0]
  ------------------
   76|  7.50k|    auto* arena = ToArena(p);
   77|  7.50k|    auto* payload = Arena::Create<ReflectionPayload>(arena, arena);
   78|  7.50k|    auto new_p = ToTaggedPtr(payload);
   79|  7.50k|    if (payload_.compare_exchange_strong(p, new_p, std::memory_order_acq_rel)) {
  ------------------
  |  Branch (79:9): [True: 7.50k, False: 0]
  ------------------
   80|       |      // We were able to store it.
   81|  7.50k|      p = new_p;
   82|  7.50k|    } else {
   83|       |      // Someone beat us to it. Throw away the one we made. `p` already contains
   84|       |      // the one we want.
   85|      0|      if (arena == nullptr) delete payload;
  ------------------
  |  Branch (85:11): [True: 0, False: 0]
  ------------------
   86|      0|    }
   87|  7.50k|  }
   88|  7.50k|  return *ToPayload(p);
   89|  7.50k|}
_ZN6google8protobuf8internal12MapFieldBase12InternalSwapEPS2_:
  111|  5.00k|void MapFieldBase::InternalSwap(MapFieldBase* other) {
  112|  5.00k|  SwapRelaxed(payload_, other->payload_);
  113|  5.00k|}
_ZN6google8protobuf8internal12MapFieldBase11SetMapDirtyEv:
  148|  7.50k|void MapFieldBase::SetMapDirty() {
  149|  7.50k|  MutableAccess();
  150|       |  // These are called by (non-const) mutator functions. So by our API it's the
  151|       |  // callers responsibility to have these calls properly ordered.
  152|  7.50k|  payload().state.store(STATE_MODIFIED_MAP, std::memory_order_relaxed);
  153|  7.50k|}
_ZNK6google8protobuf8internal12MapFieldBase24SyncMapWithRepeatedFieldEv:
  179|  12.5k|void MapFieldBase::SyncMapWithRepeatedField() const {
  180|  12.5k|  ConstAccess();
  181|       |  // acquire here matches with release below to ensure that we can only see a
  182|       |  // value of CLEAN after all previous changes have been synced.
  183|  12.5k|  if (state() == STATE_MODIFIED_REPEATED) {
  ------------------
  |  Branch (183:7): [True: 0, False: 12.5k]
  ------------------
  184|      0|    auto& p = payload();
  185|      0|    {
  186|      0|      absl::MutexLock lock(&p.mutex);
  187|       |      // Double check state, because another thread may have seen the same state
  188|       |      // and done the synchronization before the current thread.
  189|      0|      if (p.state.load(std::memory_order_relaxed) == STATE_MODIFIED_REPEATED) {
  ------------------
  |  Branch (189:11): [True: 0, False: 0]
  ------------------
  190|      0|        SyncMapWithRepeatedFieldNoLock();
  191|      0|        p.state.store(CLEAN, std::memory_order_release);
  192|      0|      }
  193|      0|    }
  194|      0|    ConstAccess();
  195|      0|  }
  196|  12.5k|}
map_field.cc:_ZN6google8protobuf8internalL11SwapRelaxedINS1_12MapFieldBase9TaggedPtrEEEvRNSt3__16atomicIT_EES9_:
   66|  5.00k|static void SwapRelaxed(std::atomic<T>& a, std::atomic<T>& b) {
   67|  5.00k|  auto value_b = b.load(std::memory_order_relaxed);
   68|  5.00k|  auto value_a = a.load(std::memory_order_relaxed);
   69|  5.00k|  b.store(value_a, std::memory_order_relaxed);
   70|  5.00k|  a.store(value_b, std::memory_order_relaxed);
   71|  5.00k|}

_ZN6google8protobuf14MessageFactory29InternalRegisterGeneratedFileEPKNS0_8internal15DescriptorTableE:
  379|     10|    const google::protobuf::internal::DescriptorTable* table) {
  380|     10|  GeneratedMessageFactory::singleton()->RegisterFile(table);
  381|     10|}
message.cc:_ZN6google8protobuf12_GLOBAL__N_123GeneratedMessageFactory9singletonEv:
  302|     10|GeneratedMessageFactory* GeneratedMessageFactory::singleton() {
  303|     10|  static auto instance =
  304|     10|      internal::OnShutdownDelete(new GeneratedMessageFactory);
  305|     10|  return instance;
  306|     10|}
message.cc:_ZN6google8protobuf12_GLOBAL__N_123GeneratedMessageFactory12RegisterFileEPKNS0_8internal15DescriptorTableE:
  309|     10|    const google::protobuf::internal::DescriptorTable* table) {
  310|     10|  if (!files_.insert(table).second) {
  ------------------
  |  Branch (310:7): [True: 0, False: 10]
  ------------------
  311|      0|    ABSL_LOG(FATAL) << "File is already registered: " << table->filename;
  ------------------
  |  |   38|      0|#define ABSL_LOG(severity) ABSL_LOG_IMPL(_##severity)
  |  |  ------------------
  |  |  |  |   24|      0|  ABSL_LOG_INTERNAL_CONDITION##severity(STATELESS, true) \
  |  |  |  |   25|      0|      ABSL_LOGGING_INTERNAL_LOG##severity.InternalStream()
  |  |  ------------------
  ------------------
  312|      0|  }
  313|     10|}
message.cc:_ZNK6google8protobuf12_GLOBAL__N_123GeneratedMessageFactory20DescriptorByNameHashclEPKNS0_8internal15DescriptorTableE:
  265|     18|    size_t operator()(const google::protobuf::internal::DescriptorTable* t) const {
  266|     18|      return absl::HashOf(absl::string_view{t->filename});
  267|     18|    }

_ZN6google8protobuf8internal13MergeFromImplILb0EEEbNSt3__117basic_string_viewIcNS3_11char_traitsIcEEEEPNS0_11MessageLiteENS8_10ParseFlagsE:
  134|     10|                   MessageLite::ParseFlags parse_flags) {
  135|     10|  const char* ptr;
  136|     10|  internal::ParseContext ctx(io::CodedInputStream::GetDefaultRecursionLimit(),
  137|     10|                             aliasing, &ptr, input);
  138|     10|  ptr = msg->_InternalParse(ptr, &ctx);
  139|       |  // ctx has an explicit limit set (length of string_view).
  140|     10|  if (PROTOBUF_PREDICT_TRUE(ptr && ctx.EndedAtLimit())) {
  ------------------
  |  |  538|     20|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 10, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:63): [True: 10, False: 0]
  |  |  |  Branch (538:63): [True: 10, False: 0]
  |  |  ------------------
  ------------------
  141|     10|    return CheckFieldPresence(ctx, *msg, parse_flags);
  142|     10|  }
  143|      0|  return false;
  144|     10|}
_ZN6google8protobuf11MessageLite14ParseFromArrayEPKvi:
  320|     10|bool MessageLite::ParseFromArray(const void* data, int size) {
  321|     10|  return ParseFrom<kParse>(as_string_view(data, size));
  322|     10|}
_ZN6google8protobuf8internal13OnShutdownRunEPFvPKvES3_:
  690|      6|void OnShutdownRun(void (*f)(const void*), const void* arg) {
  691|      6|  auto shutdown_data = ShutdownData::get();
  692|      6|  absl::MutexLock lock(&shutdown_data->mutex);
  693|      6|  shutdown_data->functions.push_back(std::make_pair(f, arg));
  694|      6|}
message_lite.cc:_ZN6google8protobuf12_GLOBAL__N_118CheckFieldPresenceERKNS0_8internal12ParseContextERKNS0_11MessageLiteENS6_10ParseFlagsE:
  116|     10|                               MessageLite::ParseFlags parse_flags) {
  117|     10|  (void)ctx;  // Parameter is used by Google-internal code.
  118|     10|  if (PROTOBUF_PREDICT_FALSE((parse_flags & MessageLite::kMergePartial) != 0)) {
  ------------------
  |  |  539|     10|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (539:36): [True: 0, False: 10]
  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  Branch (539:63): [True: 0, False: 10]
  |  |  ------------------
  ------------------
  119|      0|    return true;
  120|      0|  }
  121|     10|  return msg.IsInitializedWithErrors();
  122|     10|}
message_lite.cc:_ZN6google8protobuf12_GLOBAL__N_114as_string_viewEPKvi:
  109|     10|inline absl::string_view as_string_view(const void* data, int size) {
  110|     10|  return absl::string_view(static_cast<const char*>(data), size);
  111|     10|}
_ZN6google8protobuf8internal12ShutdownData3getEv:
  672|      6|  static ShutdownData* get() {
  673|      6|    static auto* data = new ShutdownData;
  674|      6|    return data;
  675|      6|  }

_ZN6google8protobuf8internal18EpsCopyInputStream12DoneFallbackEii:
  172|      8|                                                              int depth) {
  173|       |  // Did we exceeded the limit (parse error).
  174|      8|  if (PROTOBUF_PREDICT_FALSE(overrun > limit_)) return {nullptr, true};
  ------------------
  |  |  539|      8|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (539:36): [True: 0, False: 8]
  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  Branch (539:63): [True: 0, False: 8]
  |  |  ------------------
  ------------------
  175|      8|  ABSL_DCHECK(overrun != limit_);  // Guaranteed by caller.
  ------------------
  |  |   43|      8|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|      8|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|     24|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  163|      8|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|     24|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|     24|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  176|      8|  ABSL_DCHECK(overrun < limit_);   // Follows from above
  ------------------
  |  |   43|      8|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|      8|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|     24|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  163|      8|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|     24|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|     24|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  177|       |  // TODO(gerbens) Instead of this dcheck we could just assign, and remove
  178|       |  // updating the limit_end from PopLimit, ie.
  179|       |  // limit_end_ = buffer_end_ + (std::min)(0, limit_);
  180|       |  // if (ptr < limit_end_) return {ptr, false};
  181|      8|  ABSL_DCHECK(limit_end_ == buffer_end_ + (std::min)(0, limit_));
  ------------------
  |  |   43|      8|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|      8|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|     24|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  163|      8|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|     24|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|     24|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  182|       |  // At this point we know the following assertion holds.
  183|      8|  ABSL_DCHECK_GT(limit_, 0);
  ------------------
  |  |   80|      8|  ABSL_DCHECK_GT_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   96|      8|  ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|      8|  while (false && ((void)(x), (void)(y), 0)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (56:10): [Folded - Ignored]
  |  |  |  |  |  |  |  Branch (56:19): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   57|      8|  ::absl::log_internal::NullStream().InternalStream()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  184|      8|  ABSL_DCHECK(limit_end_ == buffer_end_);  // because limit_ > 0
  ------------------
  |  |   43|      8|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|      8|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|     16|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  163|      8|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|     16|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|     16|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  185|      8|  const char* p;
  186|      8|  do {
  187|       |    // We are past the end of buffer_end_, in the slop region.
  188|      8|    ABSL_DCHECK_GE(overrun, 0);
  ------------------
  |  |   78|      8|  ABSL_DCHECK_GE_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   94|      8|  ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|      8|  while (false && ((void)(x), (void)(y), 0)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (56:10): [Folded - Ignored]
  |  |  |  |  |  |  |  Branch (56:19): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   57|      8|  ::absl::log_internal::NullStream().InternalStream()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  189|      8|    p = NextBuffer(overrun, depth);
  190|      8|    if (p == nullptr) {
  ------------------
  |  Branch (190:9): [True: 0, False: 8]
  ------------------
  191|       |      // We are at the end of the stream
  192|      0|      if (PROTOBUF_PREDICT_FALSE(overrun != 0)) return {nullptr, true};
  ------------------
  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  193|      0|      ABSL_DCHECK_GT(limit_, 0);
  ------------------
  |  |   80|      0|  ABSL_DCHECK_GT_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   96|      0|  ABSL_LOG_INTERNAL_DCHECK_NOP(val1, val2)
  |  |  |  |  ------------------
  |  |  |  |  |  |   56|      0|  while (false && ((void)(x), (void)(y), 0)) \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (56:10): [Folded - Ignored]
  |  |  |  |  |  |  |  Branch (56:19): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   57|      0|  ::absl::log_internal::NullStream().InternalStream()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  194|      0|      limit_end_ = buffer_end_;
  195|       |      // Distinguish ending on a pushed limit or ending on end-of-stream.
  196|      0|      SetEndOfStream();
  197|      0|      return {buffer_end_, true};
  198|      0|    }
  199|      8|    limit_ -= buffer_end_ - p;  // Adjust limit_ relative to new anchor
  200|      8|    p += overrun;
  201|      8|    overrun = p - buffer_end_;
  202|      8|  } while (overrun >= 0);
  ------------------
  |  Branch (202:12): [True: 0, False: 8]
  ------------------
  203|      8|  limit_end_ = buffer_end_ + std::min(0, limit_);
  204|      8|  return {p, false};
  205|      8|}
_ZN6google8protobuf8internal12ParseContext28ReadSizeAndPushLimitAndDepthEPKcPNS1_18EpsCopyInputStream10LimitTokenE:
  322|    720|                                                       LimitToken* old_limit) {
  323|    720|  return ReadSizeAndPushLimitAndDepthInlined(ptr, old_limit);
  324|    720|}
_ZN6google8protobuf8internal12ParseContext12ParseMessageEPNS0_11MessageLiteEPKc:
  326|    720|const char* ParseContext::ParseMessage(MessageLite* msg, const char* ptr) {
  327|    720|  LimitToken old;
  328|    720|  ptr = ReadSizeAndPushLimitAndDepth(ptr, &old);
  329|    720|  if (ptr == nullptr) return ptr;
  ------------------
  |  Branch (329:7): [True: 0, False: 720]
  ------------------
  330|    720|  auto old_depth = depth_;
  331|    720|  ptr = msg->_InternalParse(ptr, this);
  332|    720|  if (ptr != nullptr) ABSL_DCHECK_EQ(old_depth, depth_);
  ------------------
  |  |   70|    720|  ABSL_DCHECK_EQ_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   86|    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()
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  |  Branch (332:7): [True: 720, False: 0]
  ------------------
  333|    720|  depth_++;
  334|    720|  if (!PopLimit(std::move(old))) return nullptr;
  ------------------
  |  Branch (334:7): [True: 0, False: 720]
  ------------------
  335|    720|  return ptr;
  336|    720|}
_ZN6google8protobuf8internal17VarintParseSlow32EPKcj:
  359|     54|                                                   uint32_t res) {
  360|    108|  for (std::uint32_t i = 1; i < 5; i++) {
  ------------------
  |  Branch (360:29): [True: 108, False: 0]
  ------------------
  361|    108|    uint32_t byte = static_cast<uint8_t>(p[i]);
  362|    108|    res += (byte - 1) << (7 * i);
  363|    108|    if (PROTOBUF_PREDICT_TRUE(byte < 128)) {
  ------------------
  |  |  538|    108|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 54, False: 54]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 54, False: 54]
  |  |  ------------------
  ------------------
  364|     54|      return {p + i + 1, res};
  365|     54|    }
  366|    108|  }
  367|       |  // Accept >5 bytes
  368|      0|  for (std::uint32_t i = 5; i < 10; i++) {
  ------------------
  |  Branch (368:29): [True: 0, False: 0]
  ------------------
  369|      0|    uint32_t byte = static_cast<uint8_t>(p[i]);
  370|      0|    if (PROTOBUF_PREDICT_TRUE(byte < 128)) {
  ------------------
  |  |  538|      0|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 0, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  371|      0|      return {p + i + 1, res};
  372|      0|    }
  373|      0|  }
  374|      0|  return {nullptr, 0};
  375|      0|}
_ZN6google8protobuf8internal16ReadSizeFallbackEPKcj:
  401|     58|std::pair<const char*, int32_t> ReadSizeFallback(const char* p, uint32_t res) {
  402|     58|  for (std::uint32_t i = 1; i < 4; i++) {
  ------------------
  |  Branch (402:29): [True: 58, False: 0]
  ------------------
  403|     58|    uint32_t byte = static_cast<uint8_t>(p[i]);
  404|     58|    res += (byte - 1) << (7 * i);
  405|     58|    if (PROTOBUF_PREDICT_TRUE(byte < 128)) {
  ------------------
  |  |  538|     58|# define PROTOBUF_PREDICT_TRUE(x) (__builtin_expect(false || (x), true))
  |  |  ------------------
  |  |  |  Branch (538:35): [True: 58, False: 0]
  |  |  |  Branch (538:53): [Folded - Ignored]
  |  |  |  Branch (538:62): [True: 58, False: 0]
  |  |  ------------------
  ------------------
  406|     58|      return {p + i + 1, res};
  407|     58|    }
  408|     58|  }
  409|      0|  std::uint32_t byte = static_cast<uint8_t>(p[4]);
  410|      0|  if (PROTOBUF_PREDICT_FALSE(byte >= 8)) return {nullptr, 0};  // size >= 2gb
  ------------------
  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  411|      0|  res += (byte - 1) << 28;
  412|       |  // Protect against sign integer overflow in PushLimit. Limits are relative
  413|       |  // to buffer ends and ptr could potential be kSlopBytes beyond a buffer end.
  414|       |  // To protect against overflow we reject limits absurdly close to INT_MAX.
  415|      0|  if (PROTOBUF_PREDICT_FALSE(res > INT_MAX - ParseContext::kSlopBytes)) {
  ------------------
  |  |  539|      0|# define PROTOBUF_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (539:36): [True: 0, False: 0]
  |  |  |  Branch (539:54): [Folded - Ignored]
  |  |  |  Branch (539:63): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  416|      0|    return {nullptr, 0};
  417|      0|  }
  418|      0|  return {p + 5, res};
  419|      0|}
_ZN6google8protobuf8internal24InlineGreedyStringParserEPNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEPKcPNS1_12ParseContextE:
  442|    946|                                     ParseContext* ctx) {
  443|    946|  int size = ReadSize(&ptr);
  444|    946|  if (!ptr) return nullptr;
  ------------------
  |  Branch (444:7): [True: 0, False: 946]
  ------------------
  445|    946|  return ctx->ReadString(ptr, size, s);
  446|    946|}
_ZN6google8protobuf8internal18EpsCopyInputStream10NextBufferEii:
  102|      8|const char* EpsCopyInputStream::NextBuffer(int overrun, int depth) {
  103|      8|  if (next_chunk_ == nullptr) return nullptr;  // We've reached end of stream.
  ------------------
  |  Branch (103:7): [True: 0, False: 8]
  ------------------
  104|      8|  if (next_chunk_ != patch_buffer_) {
  ------------------
  |  Branch (104:7): [True: 0, False: 8]
  ------------------
  105|      0|    ABSL_DCHECK(size_ > kSlopBytes);
  ------------------
  |  |   43|      0|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|      0|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      0|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  163|      0|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|      0|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  106|       |    // The chunk is large enough to be used directly
  107|      0|    buffer_end_ = next_chunk_ + size_ - kSlopBytes;
  108|      0|    auto res = next_chunk_;
  109|      0|    next_chunk_ = patch_buffer_;
  110|      0|    if (aliasing_ == kOnPatch) aliasing_ = kNoDelta;
  ------------------
  |  Branch (110:9): [True: 0, False: 0]
  ------------------
  111|      0|    return res;
  112|      0|  }
  113|       |  // Move the slop bytes of previous buffer to start of the patch buffer.
  114|       |  // Note we must use memmove because the previous buffer could be part of
  115|       |  // patch_buffer_.
  116|      8|  std::memmove(patch_buffer_, buffer_end_, kSlopBytes);
  117|      8|  if (overall_limit_ > 0 &&
  ------------------
  |  Branch (117:7): [True: 0, False: 8]
  ------------------
  118|      8|      (depth < 0 || !ParseEndsInSlopRegion(patch_buffer_, overrun, depth))) {
  ------------------
  |  Branch (118:8): [True: 0, False: 0]
  |  Branch (118:21): [True: 0, False: 0]
  ------------------
  119|      0|    const void* data;
  120|       |    // ZeroCopyInputStream indicates Next may return 0 size buffers. Hence
  121|       |    // we loop.
  122|      0|    while (StreamNext(&data)) {
  ------------------
  |  Branch (122:12): [True: 0, False: 0]
  ------------------
  123|      0|      if (size_ > kSlopBytes) {
  ------------------
  |  Branch (123:11): [True: 0, False: 0]
  ------------------
  124|       |        // We got a large chunk
  125|      0|        std::memcpy(patch_buffer_ + kSlopBytes, data, kSlopBytes);
  126|      0|        next_chunk_ = static_cast<const char*>(data);
  127|      0|        buffer_end_ = patch_buffer_ + kSlopBytes;
  128|      0|        if (aliasing_ >= kNoDelta) aliasing_ = kOnPatch;
  ------------------
  |  Branch (128:13): [True: 0, False: 0]
  ------------------
  129|      0|        return patch_buffer_;
  130|      0|      } else if (size_ > 0) {
  ------------------
  |  Branch (130:18): [True: 0, False: 0]
  ------------------
  131|      0|        std::memcpy(patch_buffer_ + kSlopBytes, data, size_);
  132|      0|        next_chunk_ = patch_buffer_;
  133|      0|        buffer_end_ = patch_buffer_ + size_;
  134|      0|        if (aliasing_ >= kNoDelta) aliasing_ = kOnPatch;
  ------------------
  |  Branch (134:13): [True: 0, False: 0]
  ------------------
  135|      0|        return patch_buffer_;
  136|      0|      }
  137|      0|      ABSL_DCHECK(size_ == 0) << size_;
  ------------------
  |  |   43|      0|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|      0|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|      0|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  163|      0|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|      0|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  138|      0|    }
  139|      0|    overall_limit_ = 0;  // Next failed, no more needs for next
  140|      0|  }
  141|       |  // End of stream or array
  142|      8|  if (aliasing_ == kNoDelta) {
  ------------------
  |  Branch (142:7): [True: 0, False: 8]
  ------------------
  143|       |    // If there is no more block and aliasing is true, the previous block
  144|       |    // is still valid and we can alias. We have users relying on string_view's
  145|       |    // obtained from protos to outlive the proto, when the parse was from an
  146|       |    // array. This guarantees string_view's are always aliased if parsed from
  147|       |    // an array.
  148|      0|    aliasing_ = reinterpret_cast<std::uintptr_t>(buffer_end_) -
  149|      0|                reinterpret_cast<std::uintptr_t>(patch_buffer_);
  150|      0|  }
  151|      8|  next_chunk_ = nullptr;
  152|      8|  buffer_end_ = patch_buffer_ + kSlopBytes;
  153|      8|  size_ = 0;
  154|      8|  return patch_buffer_;
  155|      8|}

_ZN6google8protobuf8internal20RepeatedPtrFieldBase14InternalExtendEi:
   50|   102M|void** RepeatedPtrFieldBase::InternalExtend(int extend_amount) {
   51|   102M|  int new_size = current_size_ + extend_amount;
   52|   102M|  if (total_size_ >= new_size) {
  ------------------
  |  Branch (52:7): [True: 0, False: 102M]
  ------------------
   53|       |    // N.B.: rep_ is non-nullptr because extend_amount is always > 0, hence
   54|       |    // total_size must be non-zero since it is lower-bounded by new_size.
   55|      0|    return &rep_->elements[current_size_];
   56|      0|  }
   57|   102M|  Rep* old_rep = rep_;
   58|   102M|  Arena* arena = GetOwningArena();
   59|   102M|  new_size = internal::CalculateReserveSize<void*, kRepHeaderSize>(total_size_,
   60|   102M|                                                                   new_size);
   61|   102M|  ABSL_CHECK_LE(static_cast<int64_t>(new_size),
  ------------------
  |  |   50|      0|  ABSL_CHECK_LE_IMPL((val1), #val1, (val2), #val2)
  |  |  ------------------
  |  |  |  |   52|   102M|  ABSL_LOG_INTERNAL_CHECK_OP(Check_LE, <=, val1, val1_text, val2, val2_text)
  |  |  |  |  ------------------
  |  |  |  |  |  |   61|   102M|  while (                                                                      \
  |  |  |  |  |  |   62|   102M|      ::std::string* absl_log_internal_check_op_result ABSL_ATTRIBUTE_UNUSED = \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (62:22): [True: 0, False: 102M]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|   102M|          ::absl::log_internal::name##Impl(                                    \
  |  |  |  |  |  |   64|   102M|              ::absl::log_internal::GetReferenceableValue(val1),               \
  |  |  |  |  |  |   65|   102M|              ::absl::log_internal::GetReferenceableValue(val2),               \
  |  |  |  |  |  |   66|   102M|              ABSL_LOG_INTERNAL_STRIP_STRING_LITERAL(val1_text                 \
  |  |  |  |  |  |   67|   102M|                                                     " " #op " " val2_text)))  \
  |  |  |  |  |  |   68|   102M|  ABSL_LOG_INTERNAL_CHECK(*absl_log_internal_check_op_result).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
   62|      0|                static_cast<int64_t>(
   63|      0|                    (std::numeric_limits<size_t>::max() - kRepHeaderSize) /
   64|      0|                    sizeof(old_rep->elements[0])))
   65|      0|      << "Requested size is too large to fit into size_t.";
   66|   102M|  size_t bytes = kRepHeaderSize + sizeof(old_rep->elements[0]) * new_size;
   67|   102M|  if (arena == nullptr) {
  ------------------
  |  Branch (67:7): [True: 102M, False: 0]
  ------------------
   68|   102M|    internal::SizedPtr res = internal::AllocateAtLeast(bytes);
   69|   102M|    new_size = (res.n - kRepHeaderSize) / sizeof(old_rep->elements[0]);
   70|   102M|    rep_ = reinterpret_cast<Rep*>(res.p);
   71|   102M|  } else {
   72|      0|    rep_ = reinterpret_cast<Rep*>(Arena::CreateArray<char>(arena, bytes));
   73|      0|  }
   74|   102M|  const int old_total_size = total_size_;
   75|   102M|  total_size_ = new_size;
   76|   102M|  if (old_rep) {
  ------------------
  |  Branch (76:7): [True: 773k, False: 101M]
  ------------------
   77|   773k|    if (old_rep->allocated_size > 0) {
  ------------------
  |  Branch (77:9): [True: 773k, False: 0]
  ------------------
   78|   773k|      memcpy(rep_->elements, old_rep->elements,
   79|   773k|             old_rep->allocated_size * sizeof(rep_->elements[0]));
   80|   773k|    }
   81|   773k|    rep_->allocated_size = old_rep->allocated_size;
   82|       |
   83|   773k|    const size_t old_size =
   84|   773k|        old_total_size * sizeof(rep_->elements[0]) + kRepHeaderSize;
   85|   773k|    if (arena == nullptr) {
  ------------------
  |  Branch (85:9): [True: 773k, False: 0]
  ------------------
   86|   773k|      internal::SizedDelete(old_rep, old_size);
   87|   773k|    } else {
   88|      0|      arena_->ReturnArrayMemory(old_rep, old_size);
   89|      0|    }
   90|   101M|  } else {
   91|   101M|    rep_->allocated_size = 0;
   92|   101M|  }
   93|   102M|  return &rep_->elements[current_size_];
   94|   102M|}
_ZN6google8protobuf8internal20RepeatedPtrFieldBase13DestroyProtosEv:
  102|   101M|void RepeatedPtrFieldBase::DestroyProtos() {
  103|   101M|  ABSL_DCHECK(rep_);
  ------------------
  |  |   43|   101M|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|   101M|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|   203M|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  163|   101M|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|   203M|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|   203M|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  104|   101M|  ABSL_DCHECK(arena_ == nullptr);
  ------------------
  |  |   43|   101M|#define ABSL_DCHECK(condition) ABSL_DCHECK_IMPL((condition), #condition)
  |  |  ------------------
  |  |  |  |   43|   101M|  ABSL_CHECK_IMPL(true || (condition), "true")
  |  |  |  |  ------------------
  |  |  |  |  |  |   26|   305M|  ABSL_LOG_INTERNAL_CONDITION_FATAL(STATELESS,                        \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  163|   101M|  ABSL_LOG_INTERNAL_##type##_CONDITION(condition)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   27|   305M|                                    ABSL_PREDICT_FALSE(!(condition))) \
  |  |  |  |  |  |   28|   305M|  ABSL_LOG_INTERNAL_CHECK(condition_text).InternalStream()
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   65|      0|  ::absl::log_internal::LogMessageFatal(__FILE__, __LINE__, failure_message)
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  105|   101M|  int n = rep_->allocated_size;
  106|   101M|  void* const* elements = rep_->elements;
  107|   304M|  for (int i = 0; i < n; i++) {
  ------------------
  |  Branch (107:19): [True: 202M, False: 101M]
  ------------------
  108|   202M|    delete static_cast<MessageLite*>(elements[i]);
  109|   202M|  }
  110|   101M|  const size_t size = total_size_ * sizeof(elements[0]) + kRepHeaderSize;
  111|   101M|  internal::SizedDelete(rep_, size);
  112|   101M|  rep_ = nullptr;
  113|   101M|}
_ZN6google8protobuf8internal20RepeatedPtrFieldBase18AddOutOfLineHelperEPv:
  115|  3.22M|void* RepeatedPtrFieldBase::AddOutOfLineHelper(void* obj) {
  116|  3.22M|  if (!rep_ || rep_->allocated_size == total_size_) {
  ------------------
  |  Branch (116:7): [True: 1.31M, False: 1.91M]
  |  Branch (116:16): [True: 773k, False: 1.14M]
  ------------------
  117|  2.08M|    InternalExtend(1);  // Equivalent to "Reserve(total_size_ + 1)"
  118|  2.08M|  }
  119|  3.22M|  ++rep_->allocated_size;
  120|  3.22M|  rep_->elements[ExchangeCurrentSize(current_size_ + 1)] = obj;
  121|  3.22M|  return obj;
  122|  3.22M|}

LLVMFuzzerTestOneInput:
   24|  9.61k|extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
   25|  9.61k|    std::string str (reinterpret_cast<const char*>(data), size);
   26|  9.61k|    google::api::expr::parser::ParserOptions options;
   27|  9.61k|    options.max_recursion_depth = MAX_RECURSION;
  ------------------
  |  |   22|  9.61k|#define MAX_RECURSION 0x100
  ------------------
   28|  9.61k|    try {
   29|  9.61k|        auto parse_status = google::api::expr::parser::Parse(str, "fuzzinput", options);
   30|  9.61k|        if (!parse_status.ok()) {
  ------------------
  |  Branch (30:13): [True: 7.11k, False: 2.50k]
  ------------------
   31|  7.11k|            parse_status.status().message();
   32|  7.11k|        }
   33|  9.61k|    } catch (const std::exception& e) {
   34|      0|        return 0;
   35|      0|    }
   36|  9.61k|    return 0;
   37|  9.61k|}

_ZN3cel8internal18ParseStringLiteralENSt3__117basic_string_viewIcNS1_11char_traitsIcEEEE:
  585|   497k|absl::StatusOr<std::string> ParseStringLiteral(absl::string_view str) {
  586|   497k|  std::string out;
  587|   497k|  bool is_string_literal = MayBeStringLiteral(str);
  588|   497k|  bool is_raw_string_literal = MayBeRawStringLiteral(str);
  589|   497k|  if (!is_string_literal && !is_raw_string_literal) {
  ------------------
  |  Branch (589:7): [True: 2.50k, False: 495k]
  |  Branch (589:29): [True: 0, False: 2.50k]
  ------------------
  590|      0|    return absl::InvalidArgumentError("Invalid string literal");
  591|      0|  }
  592|       |
  593|   497k|  absl::string_view copy_str = str;
  594|   497k|  if (is_raw_string_literal) {
  ------------------
  |  Branch (594:7): [True: 2.50k, False: 495k]
  ------------------
  595|       |    // Strip off the prefix 'r' from the raw string content before parsing.
  596|  2.50k|    copy_str = absl::ClippedSubstr(copy_str, 1);
  597|  2.50k|  }
  598|       |
  599|   497k|  bool is_triple_quoted = MayBeTripleQuotedString(copy_str);
  600|       |  // Starts after the opening quotes {""", '''} or {", '}.
  601|   497k|  int quotes_length = is_triple_quoted ? 3 : 1;
  ------------------
  |  Branch (601:23): [True: 1.24k, False: 496k]
  ------------------
  602|   497k|  absl::string_view quotes = copy_str.substr(0, quotes_length);
  603|   497k|  copy_str = absl::ClippedSubstr(copy_str, quotes_length);
  604|   497k|  std::string error;
  605|   497k|  if (!UnescapeInternal(copy_str, quotes, is_raw_string_literal, false, &out,
  ------------------
  |  Branch (605:7): [True: 3.75k, False: 493k]
  ------------------
  606|   497k|                        &error)) {
  607|  3.75k|    return absl::InvalidArgumentError(
  608|  3.75k|        absl::StrCat("Invalid string literal: ", error));
  609|  3.75k|  }
  610|   493k|  return out;
  611|   497k|}
_ZN3cel8internal17ParseBytesLiteralENSt3__117basic_string_viewIcNS1_11char_traitsIcEEEE:
  613|  3.89k|absl::StatusOr<std::string> ParseBytesLiteral(absl::string_view str) {
  614|  3.89k|  std::string out;
  615|  3.89k|  bool is_bytes_literal = MayBeBytesLiteral(str);
  616|  3.89k|  bool is_raw_bytes_literal = MayBeRawBytesLiteral(str);
  617|  3.89k|  if (!is_bytes_literal && !is_raw_bytes_literal) {
  ------------------
  |  Branch (617:7): [True: 1.13k, False: 2.75k]
  |  Branch (617:28): [True: 0, False: 1.13k]
  ------------------
  618|      0|    return absl::InvalidArgumentError("Invalid bytes literal");
  619|      0|  }
  620|       |
  621|  3.89k|  absl::string_view copy_str = str;
  622|  3.89k|  if (is_raw_bytes_literal) {
  ------------------
  |  Branch (622:7): [True: 1.13k, False: 2.75k]
  ------------------
  623|       |    // Strip off the prefix {"rb", "br"} from the raw bytes content before
  624|  1.13k|    copy_str = absl::ClippedSubstr(copy_str, 2);
  625|  2.75k|  } else {
  626|       |    // Strip off the prefix 'b' from the bytes content before parsing.
  627|  2.75k|    copy_str = absl::ClippedSubstr(copy_str, 1);
  628|  2.75k|  }
  629|       |
  630|  3.89k|  bool is_triple_quoted = MayBeTripleQuotedString(copy_str);
  631|       |  // Starts after the opening quotes {""", '''} or {", '}.
  632|  3.89k|  int quotes_length = is_triple_quoted ? 3 : 1;
  ------------------
  |  Branch (632:23): [True: 55, False: 3.83k]
  ------------------
  633|  3.89k|  absl::string_view quotes = copy_str.substr(0, quotes_length);
  634|       |  // Includes the closing quotes.
  635|  3.89k|  copy_str = absl::ClippedSubstr(copy_str, quotes_length);
  636|  3.89k|  std::string error;
  637|  3.89k|  if (!UnescapeInternal(copy_str, quotes, is_raw_bytes_literal, true, &out,
  ------------------
  |  Branch (637:7): [True: 1.59k, False: 2.29k]
  ------------------
  638|  3.89k|                        &error)) {
  639|  1.59k|    return absl::InvalidArgumentError(
  640|  1.59k|        absl::StrCat("Invalid bytes literal: ", error));
  641|  1.59k|  }
  642|  2.29k|  return out;
  643|  3.89k|}
strings.cc:_ZN3cel8internal12_GLOBAL__N_116UnescapeInternalENSt3__117basic_string_viewIcNS2_11char_traitsIcEEEES6_bbPNS2_12basic_stringIcS5_NS2_9allocatorIcEEEESB_:
  110|   501k|                      std::string* dest, std::string* error) {
  111|   501k|  if (!CheckForClosingString(source, closing_str, error)) {
  ------------------
  |  Branch (111:7): [True: 2.20k, False: 499k]
  ------------------
  112|  2.20k|    return false;
  113|  2.20k|  }
  114|       |
  115|   499k|  if (ABSL_PREDICT_FALSE(source.empty())) {
  ------------------
  |  |  177|   499k|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (177:31): [True: 0, False: 499k]
  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  Branch (177:58): [True: 0, False: 499k]
  |  |  ------------------
  ------------------
  116|      0|    *dest = std::string();
  117|      0|    return true;
  118|      0|  }
  119|       |
  120|       |  // Strip off the closing_str from the end before unescaping.
  121|   499k|  source = source.substr(0, source.size() - closing_str.size());
  122|   499k|  if (!is_bytes_literal) {
  ------------------
  |  Branch (122:7): [True: 495k, False: 3.51k]
  ------------------
  123|   495k|    if (!Utf8IsValid(source)) {
  ------------------
  |  Branch (123:9): [True: 0, False: 495k]
  ------------------
  124|      0|      if (error) {
  ------------------
  |  Branch (124:11): [True: 0, False: 0]
  ------------------
  125|      0|        *error = absl::StrCat("Structurally invalid UTF8 string: ",
  126|      0|                              EscapeBytes(source));
  127|      0|      }
  128|      0|      return false;
  129|      0|    }
  130|   495k|  }
  131|       |
  132|   499k|  dest->reserve(source.size());
  133|       |
  134|   499k|  const char* p = source.data();
  135|   499k|  const char* end = source.end();
  136|   499k|  const char* last_byte = end - 1;
  137|       |
  138|  5.82M|  while (p < end) {
  ------------------
  |  Branch (138:10): [True: 5.32M, False: 496k]
  ------------------
  139|  5.32M|    if (*p != '\\') {
  ------------------
  |  Branch (139:9): [True: 5.28M, False: 47.6k]
  ------------------
  140|  5.28M|      if (*p != '\r') {
  ------------------
  |  Branch (140:11): [True: 5.27M, False: 3.70k]
  ------------------
  141|  5.27M|        dest->push_back(*p++);
  142|  5.27M|      } else {
  143|       |        // All types of newlines in different platforms i.e. '\r', '\n', '\r\n'
  144|       |        // are replaced with '\n'.
  145|  3.70k|        dest->push_back('\n');
  146|  3.70k|        p++;
  147|  3.70k|        if (p < end && *p == '\n') {
  ------------------
  |  Branch (147:13): [True: 3.43k, False: 267]
  |  Branch (147:24): [True: 573, False: 2.86k]
  ------------------
  148|    573|          p++;
  149|    573|        }
  150|  3.70k|      }
  151|  5.28M|    } else {
  152|  47.6k|      if ((p + 1) > last_byte) {
  ------------------
  |  Branch (152:11): [True: 0, False: 47.6k]
  ------------------
  153|      0|        if (error) {
  ------------------
  |  Branch (153:13): [True: 0, False: 0]
  ------------------
  154|      0|          *error = is_raw_literal
  ------------------
  |  Branch (154:20): [True: 0, False: 0]
  ------------------
  155|      0|                       ? "Raw literals cannot end with odd number of \\"
  156|      0|                   : is_bytes_literal ? "Bytes literal cannot end with \\"
  ------------------
  |  Branch (156:22): [True: 0, False: 0]
  ------------------
  157|      0|                                      : "String literal cannot end with \\";
  158|      0|        }
  159|      0|        return false;
  160|      0|      }
  161|  47.6k|      if (is_raw_literal) {
  ------------------
  |  Branch (161:11): [True: 17.9k, False: 29.7k]
  ------------------
  162|       |        // For raw literals, all escapes are valid and those characters ('\\'
  163|       |        // and the escaped character) come through literally in the string.
  164|  17.9k|        dest->push_back(*p++);
  165|  17.9k|        dest->push_back(*p++);
  166|  17.9k|        continue;
  167|  17.9k|      }
  168|       |      // Any error that occurs in the escape is accounted to the start of
  169|       |      // the escape.
  170|  29.7k|      p++;  // Read past the escape character.
  171|       |
  172|  29.7k|      switch (*p) {
  173|  1.98k|        case 'a':
  ------------------
  |  Branch (173:9): [True: 1.98k, False: 27.7k]
  ------------------
  174|  1.98k|          dest->push_back('\a');
  175|  1.98k|          break;
  176|  1.51k|        case 'b':
  ------------------
  |  Branch (176:9): [True: 1.51k, False: 28.1k]
  ------------------
  177|  1.51k|          dest->push_back('\b');
  178|  1.51k|          break;
  179|  2.44k|        case 'f':
  ------------------
  |  Branch (179:9): [True: 2.44k, False: 27.2k]
  ------------------
  180|  2.44k|          dest->push_back('\f');
  181|  2.44k|          break;
  182|  1.36k|        case 'n':
  ------------------
  |  Branch (182:9): [True: 1.36k, False: 28.3k]
  ------------------
  183|  1.36k|          dest->push_back('\n');
  184|  1.36k|          break;
  185|    275|        case 'r':
  ------------------
  |  Branch (185:9): [True: 275, False: 29.4k]
  ------------------
  186|    275|          dest->push_back('\r');
  187|    275|          break;
  188|  4.34k|        case 't':
  ------------------
  |  Branch (188:9): [True: 4.34k, False: 25.3k]
  ------------------
  189|  4.34k|          dest->push_back('\t');
  190|  4.34k|          break;
  191|    360|        case 'v':
  ------------------
  |  Branch (191:9): [True: 360, False: 29.3k]
  ------------------
  192|    360|          dest->push_back('\v');
  193|    360|          break;
  194|  1.38k|        case '\\':
  ------------------
  |  Branch (194:9): [True: 1.38k, False: 28.3k]
  ------------------
  195|  1.38k|          dest->push_back('\\');
  196|  1.38k|          break;
  197|    283|        case '?':
  ------------------
  |  Branch (197:9): [True: 283, False: 29.4k]
  ------------------
  198|    283|          dest->push_back('\?');
  199|    283|          break;  // \?  Who knew?
  200|    705|        case '\'':
  ------------------
  |  Branch (200:9): [True: 705, False: 29.0k]
  ------------------
  201|    705|          dest->push_back('\'');
  202|    705|          break;
  203|    964|        case '"':
  ------------------
  |  Branch (203:9): [True: 964, False: 28.7k]
  ------------------
  204|    964|          dest->push_back('\"');
  205|    964|          break;
  206|    287|        case '`':
  ------------------
  |  Branch (206:9): [True: 287, False: 29.4k]
  ------------------
  207|    287|          dest->push_back('`');
  208|    287|          break;
  209|    607|        case '0':
  ------------------
  |  Branch (209:9): [True: 607, False: 29.1k]
  ------------------
  210|    607|          ABSL_FALLTHROUGH_INTENDED;
  ------------------
  |  |  644|    607|#define ABSL_FALLTHROUGH_INTENDED [[fallthrough]]
  ------------------
  211|  1.60k|        case '1':
  ------------------
  |  Branch (211:9): [True: 997, False: 28.7k]
  ------------------
  212|  1.60k|          ABSL_FALLTHROUGH_INTENDED;
  ------------------
  |  |  644|  1.60k|#define ABSL_FALLTHROUGH_INTENDED [[fallthrough]]
  ------------------
  213|  2.11k|        case '2':
  ------------------
  |  Branch (213:9): [True: 510, False: 29.2k]
  ------------------
  214|  2.11k|          ABSL_FALLTHROUGH_INTENDED;
  ------------------
  |  |  644|  2.11k|#define ABSL_FALLTHROUGH_INTENDED [[fallthrough]]
  ------------------
  215|  2.52k|        case '3': {
  ------------------
  |  Branch (215:9): [True: 406, False: 29.3k]
  ------------------
  216|       |          // Octal escape '\ddd': requires exactly 3 octal digits.  Note that
  217|       |          // the highest valid escape sequence is '\377'.
  218|       |          // For string literals, octal and hex escape sequences are interpreted
  219|       |          // as unicode code points, and the related UTF8-encoded character is
  220|       |          // added to the destination.  For bytes literals, octal and hex
  221|       |          // escape sequences are interpreted as a single byte value.
  222|  2.52k|          const char* octal_start = p;
  223|  2.52k|          if (p + 2 >= end) {
  ------------------
  |  Branch (223:15): [True: 0, False: 2.52k]
  ------------------
  224|      0|            if (error) {
  ------------------
  |  Branch (224:17): [True: 0, False: 0]
  ------------------
  225|      0|              *error =
  226|      0|                  "Illegal escape sequence: Octal escape must be followed by 3 "
  227|      0|                  "octal digits but saw: \\" +
  228|      0|                  std::string(octal_start, end - p);
  229|      0|            }
  230|       |            // Error offset was set to the start of the escape above the switch.
  231|      0|            return false;
  232|      0|          }
  233|  2.52k|          const char* octal_end = p + 2;
  234|  2.52k|          char32_t ch = 0;
  235|  10.0k|          for (; p <= octal_end; ++p) {
  ------------------
  |  Branch (235:18): [True: 7.56k, False: 2.52k]
  ------------------
  236|  7.56k|            if (IsOctalDigit(*p)) {
  ------------------
  |  Branch (236:17): [True: 7.56k, False: 0]
  ------------------
  237|  7.56k|              ch = ch * 8 + *p - '0';
  238|  7.56k|            } else {
  239|      0|              if (error) {
  ------------------
  |  Branch (239:19): [True: 0, False: 0]
  ------------------
  240|      0|                *error =
  241|      0|                    "Illegal escape sequence: Octal escape must be followed by "
  242|      0|                    "3 octal digits but saw: \\" +
  243|      0|                    std::string(octal_start, 3);
  244|      0|              }
  245|       |              // Error offset was set to the start of the escape above the
  246|       |              // switch.
  247|      0|              return false;
  248|      0|            }
  249|  7.56k|          }
  250|  2.52k|          p = octal_end;  // p points at last digit.
  251|  2.52k|          if (is_bytes_literal) {
  ------------------
  |  Branch (251:15): [True: 836, False: 1.68k]
  ------------------
  252|    836|            dest->push_back(static_cast<char>(ch));
  253|  1.68k|          } else {
  254|  1.68k|            Utf8Encode(dest, ch);
  255|  1.68k|          }
  256|  2.52k|          break;
  257|  2.52k|        }
  258|  5.67k|        case 'x':
  ------------------
  |  Branch (258:9): [True: 5.67k, False: 24.0k]
  ------------------
  259|  5.67k|          ABSL_FALLTHROUGH_INTENDED;
  ------------------
  |  |  644|  5.67k|#define ABSL_FALLTHROUGH_INTENDED [[fallthrough]]
  ------------------
  260|  6.36k|        case 'X': {
  ------------------
  |  Branch (260:9): [True: 688, False: 29.0k]
  ------------------
  261|       |          // Hex escape '\xhh': requires exactly 2 hex digits.
  262|       |          // For string literals, octal and hex escape sequences are
  263|       |          // interpreted as unicode code points, and the related UTF8-encoded
  264|       |          // character is added to the destination.  For bytes literals, octal
  265|       |          // and hex escape sequences are interpreted as a single byte value.
  266|  6.36k|          const char* hex_start = p;
  267|  6.36k|          if (p + 2 >= end) {
  ------------------
  |  Branch (267:15): [True: 0, False: 6.36k]
  ------------------
  268|      0|            if (error) {
  ------------------
  |  Branch (268:17): [True: 0, False: 0]
  ------------------
  269|      0|              *error =
  270|      0|                  "Illegal escape sequence: Hex escape must be followed by 2 "
  271|      0|                  "hex digits but saw: \\" +
  272|      0|                  std::string(hex_start, end - p);
  273|      0|            }
  274|       |            // Error offset was set to the start of the escape above the switch.
  275|      0|            return false;
  276|      0|          }
  277|  6.36k|          char32_t ch = 0;
  278|  6.36k|          const char* hex_end = p + 2;
  279|  19.0k|          for (++p; p <= hex_end; ++p) {
  ------------------
  |  Branch (279:21): [True: 12.7k, False: 6.36k]
  ------------------
  280|  12.7k|            if (absl::ascii_isxdigit(*p)) {
  ------------------
  |  Branch (280:17): [True: 12.7k, False: 0]
  ------------------
  281|  12.7k|              ch = (ch << 4) + HexDigitToInt(*p);
  282|  12.7k|            } else {
  283|      0|              if (error) {
  ------------------
  |  Branch (283:19): [True: 0, False: 0]
  ------------------
  284|      0|                *error =
  285|      0|                    "Illegal escape sequence: Hex escape must be followed by 2 "
  286|      0|                    "hex digits but saw: \\" +
  287|      0|                    std::string(hex_start, 3);
  288|      0|              }
  289|       |              // Error offset was set to the start of the escape above the
  290|       |              // switch.
  291|      0|              return false;
  292|      0|            }
  293|  12.7k|          }
  294|  6.36k|          p = hex_end;  // p points at last digit.
  295|  6.36k|          if (is_bytes_literal) {
  ------------------
  |  Branch (295:15): [True: 945, False: 5.41k]
  ------------------
  296|    945|            dest->push_back(static_cast<char>(ch));
  297|  5.41k|          } else {
  298|  5.41k|            Utf8Encode(dest, ch);
  299|  5.41k|          }
  300|  6.36k|          break;
  301|  6.36k|        }
  302|  2.32k|        case 'u': {
  ------------------
  |  Branch (302:9): [True: 2.32k, False: 27.3k]
  ------------------
  303|  2.32k|          if (is_bytes_literal) {
  ------------------
  |  Branch (303:15): [True: 867, False: 1.45k]
  ------------------
  304|    867|            if (error) {
  ------------------
  |  Branch (304:17): [True: 867, False: 0]
  ------------------
  305|    867|              *error =
  306|    867|                  std::string(
  307|    867|                      "Illegal escape sequence: Unicode escape sequence \\") +
  308|    867|                  *p + " cannot be used in bytes literals";
  309|    867|            }
  310|       |            // Error offset was set to the start of the escape above the switch.
  311|    867|            return false;
  312|    867|          }
  313|       |          // \uhhhh => Read 4 hex digits as a code point,
  314|       |          //           then write it as UTF-8 bytes.
  315|  1.45k|          char32_t cp = 0;
  316|  1.45k|          const char* hex_start = p;
  317|  1.45k|          if (p + 4 >= end) {
  ------------------
  |  Branch (317:15): [True: 0, False: 1.45k]
  ------------------
  318|      0|            if (error) {
  ------------------
  |  Branch (318:17): [True: 0, False: 0]
  ------------------
  319|      0|              *error =
  320|      0|                  "Illegal escape sequence: \\u must be followed by 4 hex "
  321|      0|                  "digits but saw: \\" +
  322|      0|                  std::string(hex_start, end - p);
  323|      0|            }
  324|       |            // Error offset was set to the start of the escape above the switch.
  325|      0|            return false;
  326|      0|          }
  327|  7.29k|          for (int i = 0; i < 4; ++i) {
  ------------------
  |  Branch (327:27): [True: 5.83k, False: 1.45k]
  ------------------
  328|       |            // Look one char ahead.
  329|  5.83k|            if (absl::ascii_isxdigit(p[1])) {
  ------------------
  |  Branch (329:17): [True: 5.83k, False: 0]
  ------------------
  330|  5.83k|              cp = (cp << 4) + HexDigitToInt(*++p);  // Advance p.
  331|  5.83k|            } else {
  332|      0|              if (error) {
  ------------------
  |  Branch (332:19): [True: 0, False: 0]
  ------------------
  333|      0|                *error =
  334|      0|                    "Illegal escape sequence: \\u must be followed by 4 "
  335|      0|                    "hex digits but saw: \\" +
  336|      0|                    std::string(hex_start, 5);
  337|      0|              }
  338|       |              // Error offset was set to the start of the escape above the
  339|       |              // switch.
  340|      0|              return false;
  341|      0|            }
  342|  5.83k|          }
  343|  1.45k|          if (!UnicodeIsValid(cp)) {
  ------------------
  |  Branch (343:15): [True: 621, False: 837]
  ------------------
  344|    621|            if (error) {
  ------------------
  |  Branch (344:17): [True: 621, False: 0]
  ------------------
  345|    621|              *error = "Illegal escape sequence: Unicode value \\" +
  346|    621|                       std::string(hex_start, 5) + " is invalid";
  347|    621|            }
  348|       |            // Error offset was set to the start of the escape above the switch.
  349|    621|            return false;
  350|    621|          }
  351|    837|          Utf8Encode(dest, cp);
  352|    837|          break;
  353|  1.45k|        }
  354|  2.59k|        case 'U': {
  ------------------
  |  Branch (354:9): [True: 2.59k, False: 27.1k]
  ------------------
  355|  2.59k|          if (is_bytes_literal) {
  ------------------
  |  Branch (355:15): [True: 355, False: 2.23k]
  ------------------
  356|    355|            if (error) {
  ------------------
  |  Branch (356:17): [True: 355, False: 0]
  ------------------
  357|    355|              *error =
  358|    355|                  std::string(
  359|    355|                      "Illegal escape sequence: Unicode escape sequence \\") +
  360|    355|                  *p + " cannot be used in bytes literals";
  361|    355|            }
  362|    355|            return false;
  363|    355|          }
  364|       |          // \Uhhhhhhhh => convert 8 hex digits to UTF-8.  Note that the
  365|       |          // first two digits must be 00: The valid range is
  366|       |          // '\U00000000' to '\U0010FFFF' (excluding surrogates).
  367|  2.23k|          char32_t cp = 0;
  368|  2.23k|          const char* hex_start = p;
  369|  2.23k|          if (p + 8 >= end) {
  ------------------
  |  Branch (369:15): [True: 0, False: 2.23k]
  ------------------
  370|      0|            if (error) {
  ------------------
  |  Branch (370:17): [True: 0, False: 0]
  ------------------
  371|      0|              *error =
  372|      0|                  "Illegal escape sequence: \\U must be followed by 8 hex "
  373|      0|                  "digits but saw: \\" +
  374|      0|                  std::string(hex_start, end - p);
  375|      0|            }
  376|       |            // Error offset was set to the start of the escape above the switch.
  377|      0|            return false;
  378|      0|          }
  379|  17.7k|          for (int i = 0; i < 8; ++i) {
  ------------------
  |  Branch (379:27): [True: 16.2k, False: 1.42k]
  ------------------
  380|       |            // Look one char ahead.
  381|  16.2k|            if (absl::ascii_isxdigit(p[1])) {
  ------------------
  |  Branch (381:17): [True: 16.2k, False: 0]
  ------------------
  382|  16.2k|              cp = (cp << 4) + HexDigitToInt(*++p);
  383|  16.2k|              if (cp > 0x10FFFF) {
  ------------------
  |  Branch (383:19): [True: 809, False: 15.4k]
  ------------------
  384|    809|                if (error) {
  ------------------
  |  Branch (384:21): [True: 809, False: 0]
  ------------------
  385|    809|                  *error = "Illegal escape sequence: Value of \\" +
  386|    809|                           std::string(hex_start, 9) +
  387|    809|                           " exceeds Unicode limit (0x0010FFFF)";
  388|    809|                }
  389|       |                // Error offset was set to the start of the escape above the
  390|       |                // switch.
  391|    809|                return false;
  392|    809|              }
  393|  16.2k|            } else {
  394|      0|              if (error) {
  ------------------
  |  Branch (394:19): [True: 0, False: 0]
  ------------------
  395|      0|                *error =
  396|      0|                    "Illegal escape sequence: \\U must be followed by 8 "
  397|      0|                    "hex digits but saw: \\" +
  398|      0|                    std::string(hex_start, 9);
  399|      0|              }
  400|       |              // Error offset was set to the start of the escape above the
  401|       |              // switch.
  402|      0|              return false;
  403|      0|            }
  404|  16.2k|          }
  405|  1.42k|          if (!UnicodeIsValid(cp)) {
  ------------------
  |  Branch (405:15): [True: 500, False: 927]
  ------------------
  406|    500|            if (error) {
  ------------------
  |  Branch (406:17): [True: 500, False: 0]
  ------------------
  407|    500|              *error = "Illegal escape sequence: Unicode value \\" +
  408|    500|                       std::string(hex_start, 9) + " is invalid";
  409|    500|            }
  410|       |            // Error offset was set to the start of the escape above the switch.
  411|    500|            return false;
  412|    500|          }
  413|    927|          Utf8Encode(dest, cp);
  414|    927|          break;
  415|  1.42k|        }
  416|      0|        case '\r':
  ------------------
  |  Branch (416:9): [True: 0, False: 29.7k]
  ------------------
  417|      0|          ABSL_FALLTHROUGH_INTENDED;
  ------------------
  |  |  644|      0|#define ABSL_FALLTHROUGH_INTENDED [[fallthrough]]
  ------------------
  418|      0|        case '\n': {
  ------------------
  |  Branch (418:9): [True: 0, False: 29.7k]
  ------------------
  419|      0|          if (error) {
  ------------------
  |  Branch (419:15): [True: 0, False: 0]
  ------------------
  420|      0|            *error = "Illegal escaped newline";
  421|      0|          }
  422|       |          // Error offset was set to the start of the escape above the switch.
  423|      0|          return false;
  424|      0|        }
  425|      0|        default: {
  ------------------
  |  Branch (425:9): [True: 0, False: 29.7k]
  ------------------
  426|      0|          if (error) {
  ------------------
  |  Branch (426:15): [True: 0, False: 0]
  ------------------
  427|      0|            *error = std::string("Illegal escape sequence: \\") + *p;
  428|      0|          }
  429|       |          // Error offset was set to the start of the escape above the switch.
  430|      0|          return false;
  431|      0|        }
  432|  29.7k|      }
  433|  26.5k|      p++;  // read past letter we escaped
  434|  26.5k|    }
  435|  5.32M|  }
  436|       |
  437|   496k|  dest->shrink_to_fit();
  438|       |
  439|   496k|  return true;
  440|   499k|}
strings.cc:_ZN3cel8internal12_GLOBAL__N_121CheckForClosingStringENSt3__117basic_string_viewIcNS2_11char_traitsIcEEEES6_PNS2_12basic_stringIcS5_NS2_9allocatorIcEEEE:
   52|   501k|                           absl::string_view closing_str, std::string* error) {
   53|   501k|  if (closing_str.empty()) return true;
  ------------------
  |  Branch (53:7): [True: 0, False: 501k]
  ------------------
   54|       |
   55|   501k|  const char* p = source.data();
   56|   501k|  const char* end = source.end();
   57|       |
   58|   501k|  bool is_closed = false;
   59|  6.79M|  while (p + closing_str.length() <= end) {
  ------------------
  |  Branch (59:10): [True: 6.28M, False: 501k]
  ------------------
   60|  6.28M|    if (*p != '\\') {
  ------------------
  |  Branch (60:9): [True: 6.23M, False: 50.0k]
  ------------------
   61|  6.23M|      size_t cur_pos = p - source.begin();
   62|  6.23M|      bool is_closing =
   63|  6.23M|          absl::StartsWith(absl::ClippedSubstr(source, cur_pos), closing_str);
   64|  6.23M|      if (is_closing && p + closing_str.length() < end) {
  ------------------
  |  Branch (64:11): [True: 499k, False: 5.74M]
  |  Branch (64:25): [True: 0, False: 499k]
  ------------------
   65|      0|        if (error) {
  ------------------
  |  Branch (65:13): [True: 0, False: 0]
  ------------------
   66|      0|          *error =
   67|      0|              absl::StrCat("String cannot contain unescaped ", closing_str);
   68|      0|        }
   69|      0|        return false;
   70|      0|      }
   71|  6.23M|      is_closed = is_closing && (p + closing_str.length() == end);
  ------------------
  |  Branch (71:19): [True: 499k, False: 5.74M]
  |  Branch (71:33): [True: 499k, False: 0]
  ------------------
   72|  6.23M|    } else {
   73|  50.0k|      p++;  // Read past the escaped character.
   74|  50.0k|    }
   75|  6.28M|    p++;
   76|  6.28M|  }
   77|       |
   78|   501k|  if (!is_closed) {
  ------------------
  |  Branch (78:7): [True: 2.20k, False: 499k]
  ------------------
   79|  2.20k|    if (error) {
  ------------------
  |  Branch (79:9): [True: 2.20k, False: 0]
  ------------------
   80|  2.20k|      *error = absl::StrCat("String must end with ", closing_str);
   81|  2.20k|    }
   82|  2.20k|    return false;
   83|  2.20k|  }
   84|       |
   85|   499k|  return true;
   86|   501k|}
strings.cc:_ZN3cel8internal12_GLOBAL__N_112IsOctalDigitEc:
   42|  7.56k|constexpr bool IsOctalDigit(char x) { return x >= '0' && x <= '7'; }
  ------------------
  |  Branch (42:46): [True: 7.56k, False: 0]
  |  Branch (42:58): [True: 7.56k, False: 0]
  ------------------
strings.cc:_ZN3cel8internal12_GLOBAL__N_113HexDigitToIntEc:
   35|  34.8k|constexpr int HexDigitToInt(char x) {
   36|  34.8k|  if (x > '9') {
  ------------------
  |  Branch (36:7): [True: 9.75k, False: 25.0k]
  ------------------
   37|  9.75k|    x += 9;
   38|  9.75k|  }
   39|  34.8k|  return x & 0xf;
   40|  34.8k|}
strings.cc:_ZN3cel8internal12_GLOBAL__N_118MayBeStringLiteralENSt3__117basic_string_viewIcNS2_11char_traitsIcEEEE:
  504|   497k|bool MayBeStringLiteral(absl::string_view str) {
  505|   497k|  return (str.size() >= 2 && str[0] == str[str.size() - 1] &&
  ------------------
  |  Branch (505:11): [True: 497k, False: 0]
  |  Branch (505:30): [True: 495k, False: 2.50k]
  ------------------
  506|   497k|          (str[0] == '\'' || str[0] == '"'));
  ------------------
  |  Branch (506:12): [True: 780, False: 494k]
  |  Branch (506:30): [True: 494k, False: 0]
  ------------------
  507|   497k|}
strings.cc:_ZN3cel8internal12_GLOBAL__N_121MayBeRawStringLiteralENSt3__117basic_string_viewIcNS2_11char_traitsIcEEEE:
  514|   497k|bool MayBeRawStringLiteral(absl::string_view str) {
  515|   497k|  return (str.size() >= 3 && absl::StartsWithIgnoreCase(str, "r") &&
  ------------------
  |  Branch (515:11): [True: 7.71k, False: 490k]
  |  Branch (515:30): [True: 2.50k, False: 5.21k]
  ------------------
  516|   497k|          str[1] == str[str.size() - 1] && (str[1] == '\'' || str[1] == '"'));
  ------------------
  |  Branch (516:11): [True: 2.50k, False: 0]
  |  Branch (516:45): [True: 541, False: 1.96k]
  |  Branch (516:63): [True: 1.96k, False: 0]
  ------------------
  517|   497k|}
strings.cc:_ZN3cel8internal12_GLOBAL__N_123MayBeTripleQuotedStringENSt3__117basic_string_viewIcNS2_11char_traitsIcEEEE:
  498|   501k|bool MayBeTripleQuotedString(absl::string_view str) {
  499|   501k|  return (str.size() >= 6 &&
  ------------------
  |  Branch (499:11): [True: 7.04k, False: 494k]
  ------------------
  500|   501k|          ((absl::StartsWith(str, "\"\"\"") && absl::EndsWith(str, "\"\"\"")) ||
  ------------------
  |  Branch (500:13): [True: 680, False: 6.36k]
  |  Branch (500:48): [True: 680, False: 0]
  ------------------
  501|  7.04k|           (absl::StartsWith(str, "'''") && absl::EndsWith(str, "'''"))));
  ------------------
  |  Branch (501:13): [True: 624, False: 5.74k]
  |  Branch (501:45): [True: 624, False: 0]
  ------------------
  502|   501k|}
strings.cc:_ZN3cel8internal12_GLOBAL__N_117MayBeBytesLiteralENSt3__117basic_string_viewIcNS2_11char_traitsIcEEEE:
  509|  3.89k|bool MayBeBytesLiteral(absl::string_view str) {
  510|  3.89k|  return (str.size() >= 3 && absl::StartsWithIgnoreCase(str, "b") &&
  ------------------
  |  Branch (510:11): [True: 3.89k, False: 0]
  |  Branch (510:30): [True: 3.89k, False: 0]
  ------------------
  511|  3.89k|          str[1] == str[str.size() - 1] && (str[1] == '\'' || str[1] == '"'));
  ------------------
  |  Branch (511:11): [True: 2.75k, False: 1.13k]
  |  Branch (511:45): [True: 1.68k, False: 1.07k]
  |  Branch (511:63): [True: 1.07k, False: 0]
  ------------------
  512|  3.89k|}
strings.cc:_ZN3cel8internal12_GLOBAL__N_120MayBeRawBytesLiteralENSt3__117basic_string_viewIcNS2_11char_traitsIcEEEE:
  519|  3.89k|bool MayBeRawBytesLiteral(absl::string_view str) {
  520|  3.89k|  return (str.size() >= 4 &&
  ------------------
  |  Branch (520:11): [True: 3.42k, False: 465]
  ------------------
  521|  3.89k|          (absl::StartsWithIgnoreCase(str, "rb") ||
  ------------------
  |  Branch (521:12): [True: 0, False: 3.42k]
  ------------------
  522|  3.42k|           absl::StartsWithIgnoreCase(str, "br")) &&
  ------------------
  |  Branch (522:12): [True: 1.13k, False: 2.29k]
  ------------------
  523|  3.89k|          (str[2] == str[str.size() - 1]) && (str[2] == '\'' || str[2] == '"'));
  ------------------
  |  Branch (523:11): [True: 1.13k, False: 0]
  |  Branch (523:47): [True: 863, False: 269]
  |  Branch (523:65): [True: 269, False: 0]
  ------------------
  524|  3.89k|}

_ZN3cel8internal14UnicodeIsValidEDi:
   22|  14.6M|constexpr bool UnicodeIsValid(char32_t code_point) {
   23|  14.6M|  return code_point < 0xd800 || (code_point > 0xdfff && code_point <= 0x10ffff);
  ------------------
  |  Branch (23:10): [True: 14.6M, False: 7.74k]
  |  Branch (23:34): [True: 6.62k, False: 1.12k]
  |  Branch (23:57): [True: 6.62k, False: 0]
  ------------------
   24|  14.6M|}

_ZN3cel8internal11Utf8IsValidENSt3__117basic_string_viewIcNS1_11char_traitsIcEEEE:
  312|   495k|bool Utf8IsValid(absl::string_view str) {
  313|   495k|  StringReader reader(str);
  314|   495k|  bool valid = Utf8IsValidImpl(&reader);
  315|   495k|  ABSL_ASSERT((reader.Reset(str), valid == Utf8ValidateImpl(&reader).second));
  ------------------
  |  |   95|   495k|  (false ? static_cast<void>(expr) : static_cast<void>(0))
  |  |  ------------------
  |  |  |  Branch (95:4): [Folded - Ignored]
  |  |  ------------------
  ------------------
  316|   495k|  return valid;
  317|   495k|}
_ZN3cel8internal10Utf8DecodeENSt3__117basic_string_viewIcNS1_11char_traitsIcEEEE:
  350|   100M|std::pair<char32_t, size_t> Utf8Decode(absl::string_view str) {
  351|   100M|  ABSL_ASSERT(!str.empty());
  ------------------
  |  |   95|   100M|  (false ? static_cast<void>(expr) : static_cast<void>(0))
  |  |  ------------------
  |  |  |  Branch (95:4): [Folded - Ignored]
  |  |  ------------------
  ------------------
  352|   100M|  const auto b = static_cast<uint8_t>(str.front());
  353|   100M|  str.remove_prefix(1);
  354|   100M|  if (b < kUtf8RuneSelf) {
  ------------------
  |  Branch (354:7): [True: 99.9M, False: 19.8k]
  ------------------
  355|  99.9M|    return {static_cast<char32_t>(b), 1};
  356|  99.9M|  }
  357|  19.8k|  const auto leading = kLeading[b];
  358|  19.8k|  if (leading == kXX) {
  ------------------
  |  Branch (358:7): [True: 163, False: 19.6k]
  ------------------
  359|    163|    return {kUnicodeReplacementCharacter, 1};
  360|    163|  }
  361|  19.6k|  auto size = static_cast<size_t>(leading & 7) - 1;
  362|  19.6k|  if (size > str.size()) {
  ------------------
  |  Branch (362:7): [True: 25, False: 19.6k]
  ------------------
  363|     25|    return {kUnicodeReplacementCharacter, 1};
  364|     25|  }
  365|  19.6k|  const auto& accept = kAccept[leading >> 4];
  366|  19.6k|  const auto b1 = static_cast<uint8_t>(str.front());
  367|  19.6k|  str.remove_prefix(1);
  368|  19.6k|  if (b1 < accept.first || b1 > accept.second) {
  ------------------
  |  Branch (368:7): [True: 36, False: 19.5k]
  |  Branch (368:28): [True: 42, False: 19.5k]
  ------------------
  369|     78|    return {kUnicodeReplacementCharacter, 1};
  370|     78|  }
  371|  19.5k|  if (size <= 1) {
  ------------------
  |  Branch (371:7): [True: 7.36k, False: 12.1k]
  ------------------
  372|  7.36k|    return {(static_cast<char32_t>(b & kMask2) << 6) |
  373|  7.36k|                static_cast<char32_t>(b1 & kMaskX),
  374|  7.36k|            2};
  375|  7.36k|  }
  376|  12.1k|  const auto b2 = static_cast<uint8_t>(str.front());
  377|  12.1k|  str.remove_prefix(1);
  378|  12.1k|  if (b2 < kLow || b2 > kHigh) {
  ------------------
  |  Branch (378:7): [True: 8, False: 12.1k]
  |  Branch (378:20): [True: 9, False: 12.1k]
  ------------------
  379|     17|    return {kUnicodeReplacementCharacter, 1};
  380|     17|  }
  381|  12.1k|  if (size <= 2) {
  ------------------
  |  Branch (381:7): [True: 7.12k, False: 5.03k]
  ------------------
  382|  7.12k|    return {(static_cast<char32_t>(b & kMask3) << 12) |
  383|  7.12k|                (static_cast<char32_t>(b1 & kMaskX) << 6) |
  384|  7.12k|                static_cast<char32_t>(b2 & kMaskX),
  385|  7.12k|            3};
  386|  7.12k|  }
  387|  5.03k|  const auto b3 = static_cast<uint8_t>(str.front());
  388|  5.03k|  str.remove_prefix(1);
  389|  5.03k|  if (b3 < kLow || b3 > kHigh) {
  ------------------
  |  Branch (389:7): [True: 4, False: 5.02k]
  |  Branch (389:20): [True: 8, False: 5.02k]
  ------------------
  390|     12|    return {kUnicodeReplacementCharacter, 1};
  391|     12|  }
  392|  5.02k|  return {(static_cast<char32_t>(b & kMask4) << 18) |
  393|  5.02k|              (static_cast<char32_t>(b1 & kMaskX) << 12) |
  394|  5.02k|              (static_cast<char32_t>(b2 & kMaskX) << 6) |
  395|  5.02k|              static_cast<char32_t>(b3 & kMaskX),
  396|  5.02k|          4};
  397|  5.03k|}
_ZN3cel8internal10Utf8EncodeEPNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEDi:
  399|  14.6M|std::string& Utf8Encode(std::string* buffer, char32_t code_point) {
  400|  14.6M|  ABSL_ASSERT(buffer != nullptr);
  ------------------
  |  |   95|  14.6M|  (false ? static_cast<void>(expr) : static_cast<void>(0))
  |  |  ------------------
  |  |  |  Branch (95:4): [Folded - Ignored]
  |  |  ------------------
  ------------------
  401|  14.6M|  if (!UnicodeIsValid(code_point)) {
  ------------------
  |  Branch (401:7): [True: 0, False: 14.6M]
  ------------------
  402|      0|    code_point = kUnicodeReplacementCharacter;
  403|      0|  }
  404|  14.6M|  if (code_point <= 0x7f) {
  ------------------
  |  Branch (404:7): [True: 14.6M, False: 18.9k]
  ------------------
  405|  14.6M|    buffer->push_back(static_cast<char>(static_cast<uint8_t>(code_point)));
  406|  14.6M|  } else if (code_point <= 0x7ff) {
  ------------------
  |  Branch (406:14): [True: 7.12k, False: 11.8k]
  ------------------
  407|  7.12k|    buffer->push_back(
  408|  7.12k|        static_cast<char>(kT2 | static_cast<uint8_t>(code_point >> 6)));
  409|  7.12k|    buffer->push_back(
  410|  7.12k|        static_cast<char>(kTX | (static_cast<uint8_t>(code_point) & kMaskX)));
  411|  11.8k|  } else if (code_point <= 0xffff) {
  ------------------
  |  Branch (411:14): [True: 7.09k, False: 4.73k]
  ------------------
  412|  7.09k|    buffer->push_back(
  413|  7.09k|        static_cast<char>(kT3 | static_cast<uint8_t>(code_point >> 12)));
  414|  7.09k|    buffer->push_back(static_cast<char>(
  415|  7.09k|        kTX | (static_cast<uint8_t>(code_point >> 6) & kMaskX)));
  416|  7.09k|    buffer->push_back(
  417|  7.09k|        static_cast<char>(kTX | (static_cast<uint8_t>(code_point) & kMaskX)));
  418|  7.09k|  } else {
  419|  4.73k|    buffer->push_back(
  420|  4.73k|        static_cast<char>(kT4 | static_cast<uint8_t>(code_point >> 18)));
  421|  4.73k|    buffer->push_back(static_cast<char>(
  422|  4.73k|        kTX | (static_cast<uint8_t>(code_point >> 12) & kMaskX)));
  423|  4.73k|    buffer->push_back(static_cast<char>(
  424|  4.73k|        kTX | (static_cast<uint8_t>(code_point >> 6) & kMaskX)));
  425|  4.73k|    buffer->push_back(
  426|  4.73k|        static_cast<char>(kTX | (static_cast<uint8_t>(code_point) & kMaskX)));
  427|  4.73k|  }
  428|  14.6M|  return *buffer;
  429|  14.6M|}
utf8.cc:_ZN3cel8internal12_GLOBAL__N_112StringReaderC2ENSt3__117basic_string_viewIcNS3_11char_traitsIcEEEE:
   93|   495k|  constexpr explicit StringReader(absl::string_view input) : input_(input) {}
utf8.cc:_ZN3cel8internal12_GLOBAL__N_115Utf8IsValidImplINS1_12StringReaderEEEbPT_:
  201|   495k|bool Utf8IsValidImpl(BufferedByteReader* reader) {
  202|  5.35M|  while (reader->HasRemaining()) {
  ------------------
  |  Branch (202:10): [True: 4.86M, False: 495k]
  ------------------
  203|  4.86M|    const auto b = static_cast<uint8_t>(reader->Read());
  204|  4.86M|    if (b < kUtf8RuneSelf) {
  ------------------
  |  Branch (204:9): [True: 4.85M, False: 6.64k]
  ------------------
  205|  4.85M|      continue;
  206|  4.85M|    }
  207|  6.64k|    const auto leading = kLeading[b];
  208|  6.64k|    if (leading == kXX) {
  ------------------
  |  Branch (208:9): [True: 0, False: 6.64k]
  ------------------
  209|      0|      return false;
  210|      0|    }
  211|  6.64k|    const auto size = static_cast<size_t>(leading & 7) - 1;
  212|  6.64k|    if (size > reader->Remaining()) {
  ------------------
  |  Branch (212:9): [True: 0, False: 6.64k]
  ------------------
  213|      0|      return false;
  214|      0|    }
  215|  6.64k|    const absl::string_view segment = reader->Peek(size);
  216|  6.64k|    const auto& accept = kAccept[leading >> 4];
  217|  6.64k|    if (static_cast<uint8_t>(segment[0]) < accept.first ||
  ------------------
  |  Branch (217:9): [True: 0, False: 6.64k]
  ------------------
  218|  6.64k|        static_cast<uint8_t>(segment[0]) > accept.second) {
  ------------------
  |  Branch (218:9): [True: 0, False: 6.64k]
  ------------------
  219|      0|      return false;
  220|  6.64k|    } else if (size == 1) {
  ------------------
  |  Branch (220:16): [True: 1.48k, False: 5.16k]
  ------------------
  221|  5.16k|    } else if (static_cast<uint8_t>(segment[1]) < kLow ||
  ------------------
  |  Branch (221:16): [True: 0, False: 5.16k]
  ------------------
  222|  5.16k|               static_cast<uint8_t>(segment[1]) > kHigh) {
  ------------------
  |  Branch (222:16): [True: 0, False: 5.16k]
  ------------------
  223|      0|      return false;
  224|  5.16k|    } else if (size == 2) {
  ------------------
  |  Branch (224:16): [True: 3.78k, False: 1.38k]
  ------------------
  225|  3.78k|    } else if (static_cast<uint8_t>(segment[2]) < kLow ||
  ------------------
  |  Branch (225:16): [True: 0, False: 1.38k]
  ------------------
  226|  1.38k|               static_cast<uint8_t>(segment[2]) > kHigh) {
  ------------------
  |  Branch (226:16): [True: 0, False: 1.38k]
  ------------------
  227|      0|      return false;
  228|      0|    }
  229|  6.64k|    reader->Advance(size);
  230|  6.64k|  }
  231|   495k|  return true;
  232|   495k|}
utf8.cc:_ZNK3cel8internal12_GLOBAL__N_112StringReader12HasRemainingEv:
   97|  5.35M|  bool HasRemaining() const { return !input_.empty(); }
utf8.cc:_ZN3cel8internal12_GLOBAL__N_112StringReader4ReadEv:
  104|  4.86M|  char Read() {
  105|  4.86M|    ABSL_ASSERT(HasRemaining());
  ------------------
  |  |   95|  4.86M|  (false ? static_cast<void>(expr) : static_cast<void>(0))
  |  |  ------------------
  |  |  |  Branch (95:4): [Folded - Ignored]
  |  |  ------------------
  ------------------
  106|  4.86M|    char value = input_.front();
  107|  4.86M|    input_.remove_prefix(1);
  108|  4.86M|    return value;
  109|  4.86M|  }
utf8.cc:_ZNK3cel8internal12_GLOBAL__N_112StringReader9RemainingEv:
   95|  6.64k|  size_t Remaining() const { return input_.size(); }
utf8.cc:_ZN3cel8internal12_GLOBAL__N_112StringReader4PeekEm:
   99|  6.64k|  absl::string_view Peek(size_t n) {
  100|  6.64k|    ABSL_ASSERT(n <= Remaining());
  ------------------
  |  |   95|  6.64k|  (false ? static_cast<void>(expr) : static_cast<void>(0))
  |  |  ------------------
  |  |  |  Branch (95:4): [Folded - Ignored]
  |  |  ------------------
  ------------------
  101|  6.64k|    return input_.substr(0, n);
  102|  6.64k|  }
utf8.cc:_ZN3cel8internal12_GLOBAL__N_112StringReader7AdvanceEm:
  111|  6.64k|  void Advance(size_t n) {
  112|  6.64k|    ABSL_ASSERT(n <= Remaining());
  ------------------
  |  |   95|  6.64k|  (false ? static_cast<void>(expr) : static_cast<void>(0))
  |  |  ------------------
  |  |  |  Branch (95:4): [Folded - Ignored]
  |  |  ------------------
  ------------------
  113|  6.64k|    input_.remove_prefix(n);
  114|  6.64k|  }

_ZN3cel5Macro9AllMacrosEv:
   85|  9.61k|std::vector<Macro> Macro::AllMacros() {
   86|  9.61k|  return {
   87|       |      // The macro "has(m.f)" which tests the presence of a field, avoiding the
   88|       |      // need to specify the field as a string.
   89|  9.61k|      Macro(CelOperator::HAS, 1,
   90|  9.61k|            [](const std::shared_ptr<SourceFactory>& sf, int64_t macro_id,
   91|  9.61k|               const Expr& target, const std::vector<Expr>& args) {
   92|  9.61k|              if (!args.empty() && args[0].has_select_expr()) {
   93|  9.61k|                const auto& sel_expr = args[0].select_expr();
   94|  9.61k|                return sf->NewPresenceTestForMacro(macro_id, sel_expr.operand(),
   95|  9.61k|                                                   sel_expr.field());
   96|  9.61k|              } else {
   97|       |                // error
   98|  9.61k|                return Expr();
   99|  9.61k|              }
  100|  9.61k|            }),
  101|       |
  102|       |      // The macro "range.all(var, predicate)", which is true if for all
  103|       |      // elements
  104|       |      // in range the predicate holds.
  105|  9.61k|      Macro(
  106|  9.61k|          CelOperator::ALL, 2,
  107|  9.61k|          [](const std::shared_ptr<SourceFactory>& sf, int64_t macro_id,
  108|  9.61k|             const Expr& target, const std::vector<Expr>& args) {
  109|  9.61k|            return sf->NewQuantifierExprForMacro(SourceFactory::QUANTIFIER_ALL,
  110|  9.61k|                                                 macro_id, target, args);
  111|  9.61k|          },
  112|  9.61k|          /* receiver style*/ true),
  113|       |
  114|       |      // The macro "range.exists(var, predicate)", which is true if for at least
  115|       |      // one element in range the predicate holds.
  116|  9.61k|      Macro(
  117|  9.61k|          CelOperator::EXISTS, 2,
  118|  9.61k|          [](const std::shared_ptr<SourceFactory>& sf, int64_t macro_id,
  119|  9.61k|             const Expr& target, const std::vector<Expr>& args) {
  120|  9.61k|            return sf->NewQuantifierExprForMacro(
  121|  9.61k|                SourceFactory::QUANTIFIER_EXISTS, macro_id, target, args);
  122|  9.61k|          },
  123|  9.61k|          /* receiver style*/ true),
  124|       |
  125|       |      // The macro "range.exists_one(var, predicate)", which is true if for
  126|       |      // exactly one element in range the predicate holds.
  127|  9.61k|      Macro(
  128|  9.61k|          CelOperator::EXISTS_ONE, 2,
  129|  9.61k|          [](const std::shared_ptr<SourceFactory>& sf, int64_t macro_id,
  130|  9.61k|             const Expr& target, const std::vector<Expr>& args) {
  131|  9.61k|            return sf->NewQuantifierExprForMacro(
  132|  9.61k|                SourceFactory::QUANTIFIER_EXISTS_ONE, macro_id, target, args);
  133|  9.61k|          },
  134|  9.61k|          /* receiver style*/ true),
  135|       |
  136|       |      // The macro "range.map(var, function)", applies the function to the vars
  137|       |      // in
  138|       |      // the range.
  139|  9.61k|      Macro(
  140|  9.61k|          CelOperator::MAP, 2,
  141|  9.61k|          [](const std::shared_ptr<SourceFactory>& sf, int64_t macro_id,
  142|  9.61k|             const Expr& target, const std::vector<Expr>& args) {
  143|  9.61k|            return sf->NewMapForMacro(macro_id, target, args);
  144|  9.61k|          },
  145|  9.61k|          /* receiver style*/ true),
  146|       |
  147|       |      // The macro "range.map(var, predicate, function)", applies the function
  148|       |      // to
  149|       |      // the vars in the range for which the predicate holds true. The other
  150|       |      // variables are filtered out.
  151|  9.61k|      Macro(
  152|  9.61k|          CelOperator::MAP, 3,
  153|  9.61k|          [](const std::shared_ptr<SourceFactory>& sf, int64_t macro_id,
  154|  9.61k|             const Expr& target, const std::vector<Expr>& args) {
  155|  9.61k|            return sf->NewMapForMacro(macro_id, target, args);
  156|  9.61k|          },
  157|  9.61k|          /* receiver style*/ true),
  158|       |
  159|       |      // The macro "range.filter(var, predicate)", filters out the variables for
  160|       |      // which the
  161|       |      // predicate is false.
  162|  9.61k|      Macro(
  163|  9.61k|          CelOperator::FILTER, 2,
  164|  9.61k|          [](const std::shared_ptr<SourceFactory>& sf, int64_t macro_id,
  165|  9.61k|             const Expr& target, const std::vector<Expr>& args) {
  166|  9.61k|            return sf->NewFilterExprForMacro(macro_id, target, args);
  167|  9.61k|          },
  168|  9.61k|          /* receiver style*/ true),
  169|  9.61k|  };
  170|  9.61k|}
macro.cc:_ZZN3cel5Macro9AllMacrosEvENK3$_0clERKNSt3__110shared_ptrIN6google3api4expr6parser13SourceFactoryEEElRKNS6_8v1alpha14ExprERKNS2_6vectorISD_NS2_9allocatorISD_EEEE:
   91|    551|               const Expr& target, const std::vector<Expr>& args) {
   92|    551|              if (!args.empty() && args[0].has_select_expr()) {
  ------------------
  |  Branch (92:19): [True: 551, False: 0]
  |  Branch (92:36): [True: 379, False: 172]
  ------------------
   93|    379|                const auto& sel_expr = args[0].select_expr();
   94|    379|                return sf->NewPresenceTestForMacro(macro_id, sel_expr.operand(),
   95|    379|                                                   sel_expr.field());
   96|    379|              } else {
   97|       |                // error
   98|    172|                return Expr();
   99|    172|              }
  100|    551|            }),
macro.cc:_ZZN3cel5Macro9AllMacrosEvENK3$_1clERKNSt3__110shared_ptrIN6google3api4expr6parser13SourceFactoryEEElRKNS6_8v1alpha14ExprERKNS2_6vectorISD_NS2_9allocatorISD_EEEE:
  108|  1.21k|             const Expr& target, const std::vector<Expr>& args) {
  109|  1.21k|            return sf->NewQuantifierExprForMacro(SourceFactory::QUANTIFIER_ALL,
  110|  1.21k|                                                 macro_id, target, args);
  111|  1.21k|          },
macro.cc:_ZZN3cel5Macro9AllMacrosEvENK3$_2clERKNSt3__110shared_ptrIN6google3api4expr6parser13SourceFactoryEEElRKNS6_8v1alpha14ExprERKNS2_6vectorISD_NS2_9allocatorISD_EEEE:
  119|    420|             const Expr& target, const std::vector<Expr>& args) {
  120|    420|            return sf->NewQuantifierExprForMacro(
  121|    420|                SourceFactory::QUANTIFIER_EXISTS, macro_id, target, args);
  122|    420|          },
macro.cc:_ZZN3cel5Macro9AllMacrosEvENK3$_3clERKNSt3__110shared_ptrIN6google3api4expr6parser13SourceFactoryEEElRKNS6_8v1alpha14ExprERKNS2_6vectorISD_NS2_9allocatorISD_EEEE:
  130|    607|             const Expr& target, const std::vector<Expr>& args) {
  131|    607|            return sf->NewQuantifierExprForMacro(
  132|    607|                SourceFactory::QUANTIFIER_EXISTS_ONE, macro_id, target, args);
  133|    607|          },
macro.cc:_ZZN3cel5Macro9AllMacrosEvENK3$_4clERKNSt3__110shared_ptrIN6google3api4expr6parser13SourceFactoryEEElRKNS6_8v1alpha14ExprERKNS2_6vectorISD_NS2_9allocatorISD_EEEE:
  142|    974|             const Expr& target, const std::vector<Expr>& args) {
  143|    974|            return sf->NewMapForMacro(macro_id, target, args);
  144|    974|          },
macro.cc:_ZZN3cel5Macro9AllMacrosEvENK3$_5clERKNSt3__110shared_ptrIN6google3api4expr6parser13SourceFactoryEEElRKNS6_8v1alpha14ExprERKNS2_6vectorISD_NS2_9allocatorISD_EEEE:
  154|    806|             const Expr& target, const std::vector<Expr>& args) {
  155|    806|            return sf->NewMapForMacro(macro_id, target, args);
  156|    806|          },
macro.cc:_ZZN3cel5Macro9AllMacrosEvENK3$_6clERKNSt3__110shared_ptrIN6google3api4expr6parser13SourceFactoryEEElRKNS6_8v1alpha14ExprERKNS2_6vectorISD_NS2_9allocatorISD_EEEE:
  165|    851|             const Expr& target, const std::vector<Expr>& args) {
  166|    851|            return sf->NewFilterExprForMacro(macro_id, target, args);
  167|    851|          },

_ZN3cel5MacroC2ENSt3__117basic_string_viewIcNS1_11char_traitsIcEEEEmNS1_8functionIFN6google3api4expr8v1alpha14ExprERKNS1_10shared_ptrINS9_6parser13SourceFactoryEEElRKSB_RKNS1_6vectorISB_NS1_9allocatorISB_EEEEEEEb:
   80|  67.3k|        var_arg_style_(false) {}
_ZNK3cel5Macro3keyEv:
  111|  64.5k|  absl::string_view key() const { return key_; }
_ZNK3cel5Macro8expanderEv:
  115|  5.42k|  const MacroExpander& expander() const { return *expander_; }
_ZNK3cel5Macro6ExpandERKNSt3__110shared_ptrIN6google3api4expr6parser13SourceFactoryEEElRKNS5_8v1alpha14ExprERKNS1_6vectorISC_NS1_9allocatorISC_EEEE:
  120|  5.42k|      const std::vector<google::api::expr::v1alpha1::Expr>& args) const {
  121|  5.42k|    return (expander())(sf, macro_id, target, args);
  122|  5.42k|  }

_ZN6google3api4expr6parser5ParseENSt3__117basic_string_viewIcNS3_11char_traitsIcEEEES7_RKN3cel13ParserOptionsE:
 1228|  9.61k|                                 const ParserOptions& options) {
 1229|  9.61k|  return ParseWithMacros(expression, Macro::AllMacros(), description, options);
 1230|  9.61k|}
_ZN6google3api4expr6parser15ParseWithMacrosENSt3__117basic_string_viewIcNS3_11char_traitsIcEEEERKNS3_6vectorIN3cel5MacroENS3_9allocatorISA_EEEES7_RKNS9_13ParserOptionsE:
 1235|  9.61k|                                           const ParserOptions& options) {
 1236|  9.61k|  CEL_ASSIGN_OR_RETURN(auto verbose_parsed_expr,
  ------------------
  |  |   39|  2.50k|  CEL_INTERNAL_STATUS_MACROS_GET_VARIADIC_(                         \
  |  |  ------------------
  |  |  |  |   50|  2.50k|  CEL_INTERNAL_STATUS_MACROS_GET_VARIADIC_HELPER_ args
  |  |  |  |  ------------------
  |  |  |  |  |  |   48|  2.50k|  NAME
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   41|  2.50k|       CEL_INTERNAL_STATUS_MACROS_ASSIGN_OR_RETURN_2_))             \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   53|  9.61k|  CEL_INTERNAL_STATUS_MACROS_ASSIGN_OR_RETURN_(                           \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   77|  9.61k|  auto statusor = (rexpr);                                                 \
  |  |  |  |  |  |  |  |  |  |  |  |   78|  9.61k|  if (ABSL_PREDICT_FALSE(!statusor.ok())) {                                \
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  177|  9.61k|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (177:31): [True: 7.11k, False: 2.50k]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (177:58): [True: 7.11k, False: 2.50k]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   79|  7.11k|    error_expression;                                                      \
  |  |  |  |  |  |  |  |  |  |  |  |   80|  7.11k|  }                                                                        \
  |  |  |  |  |  |  |  |  |  |  |  |   81|  9.61k|  CEL_INTERNAL_STATUS_MACROS_UNPARENTHESIZE_IF_PARENTHESIZED(lhs) =        \
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  117|  9.61k|  CEL_INTERNAL_STATUS_MACROS_IF(                                          \
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  118|  9.61k|      CEL_INTERNAL_STATUS_MACROS_IS_PARENTHESIZED(__VA_ARGS__),           \
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  119|  9.61k|      CEL_INTERNAL_STATUS_MACROS_REM, CEL_INTERNAL_STATUS_MACROS_EMPTY()) \
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  120|  9.61k|  __VA_ARGS__
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   82|  2.50k|      std::move(statusor).value()
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   54|  2.50k|      CEL_INTERNAL_STATUS_MACROS_CONCAT(_status_or_value, __LINE__), lhs, \
  |  |  |  |  |  |  |  |  |  |   55|  2.50k|      rexpr,                                                              \
  |  |  |  |  |  |  |  |  |  |   56|  2.50k|      return absl::Status(std::move(CEL_INTERNAL_STATUS_MACROS_CONCAT(    \
  |  |  |  |  |  |  |  |  |  |   57|  2.50k|                                        _status_or_value, __LINE__))      \
  |  |  |  |  |  |  |  |  |  |   58|  2.50k|                              .status()))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   40|  2.50k|      (__VA_ARGS__, CEL_INTERNAL_STATUS_MACROS_ASSIGN_OR_RETURN_3_, \
  |  |   41|  2.50k|       CEL_INTERNAL_STATUS_MACROS_ASSIGN_OR_RETURN_2_))             \
  |  |   42|  2.50k|  (__VA_ARGS__)
  ------------------
 1237|  2.50k|                       EnrichedParse(expression, macros, description, options));
 1238|  2.50k|  return verbose_parsed_expr.parsed_expr();
 1239|  9.61k|}
_ZN6google3api4expr6parser13EnrichedParseENSt3__117basic_string_viewIcNS3_11char_traitsIcEEEERKNS3_6vectorIN3cel5MacroENS3_9allocatorISA_EEEES7_RKNS9_13ParserOptionsE:
 1243|  9.61k|    absl::string_view description, const ParserOptions& options) {
 1244|  9.61k|  try {
 1245|  9.61k|    CEL_ASSIGN_OR_RETURN(auto buffer, MakeCodePointBuffer(expression));
  ------------------
  |  |   39|  9.32k|  CEL_INTERNAL_STATUS_MACROS_GET_VARIADIC_(                         \
  |  |  ------------------
  |  |  |  |   50|  9.32k|  CEL_INTERNAL_STATUS_MACROS_GET_VARIADIC_HELPER_ args
  |  |  |  |  ------------------
  |  |  |  |  |  |   48|  9.32k|  NAME
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   41|  9.32k|       CEL_INTERNAL_STATUS_MACROS_ASSIGN_OR_RETURN_2_))             \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   53|  9.61k|  CEL_INTERNAL_STATUS_MACROS_ASSIGN_OR_RETURN_(                           \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   77|  9.61k|  auto statusor = (rexpr);                                                 \
  |  |  |  |  |  |  |  |  |  |  |  |   78|  9.61k|  if (ABSL_PREDICT_FALSE(!statusor.ok())) {                                \
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  177|  9.61k|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (177:31): [True: 295, False: 9.32k]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Branch (177:58): [True: 295, False: 9.32k]
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   79|    295|    error_expression;                                                      \
  |  |  |  |  |  |  |  |  |  |  |  |   80|    295|  }                                                                        \
  |  |  |  |  |  |  |  |  |  |  |  |   81|  9.61k|  CEL_INTERNAL_STATUS_MACROS_UNPARENTHESIZE_IF_PARENTHESIZED(lhs) =        \
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  117|  9.61k|  CEL_INTERNAL_STATUS_MACROS_IF(                                          \
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  118|  9.61k|      CEL_INTERNAL_STATUS_MACROS_IS_PARENTHESIZED(__VA_ARGS__),           \
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  119|  9.61k|      CEL_INTERNAL_STATUS_MACROS_REM, CEL_INTERNAL_STATUS_MACROS_EMPTY()) \
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  120|  9.61k|  __VA_ARGS__
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   82|  9.32k|      std::move(statusor).value()
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   54|  9.32k|      CEL_INTERNAL_STATUS_MACROS_CONCAT(_status_or_value, __LINE__), lhs, \
  |  |  |  |  |  |  |  |  |  |   55|  9.32k|      rexpr,                                                              \
  |  |  |  |  |  |  |  |  |  |   56|  9.32k|      return absl::Status(std::move(CEL_INTERNAL_STATUS_MACROS_CONCAT(    \
  |  |  |  |  |  |  |  |  |  |   57|  9.32k|                                        _status_or_value, __LINE__))      \
  |  |  |  |  |  |  |  |  |  |   58|  9.32k|                              .status()))
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   40|  9.32k|      (__VA_ARGS__, CEL_INTERNAL_STATUS_MACROS_ASSIGN_OR_RETURN_3_, \
  |  |   41|  9.32k|       CEL_INTERNAL_STATUS_MACROS_ASSIGN_OR_RETURN_2_))             \
  |  |   42|  9.32k|  (__VA_ARGS__)
  ------------------
 1246|  9.32k|    CodePointStream input(&buffer, description);
 1247|  9.32k|    if (input.size() > options.expression_size_codepoint_limit) {
  ------------------
  |  Branch (1247:9): [True: 103, False: 9.21k]
  ------------------
 1248|    103|      return absl::InvalidArgumentError(absl::StrCat(
 1249|    103|          "expression size exceeds codepoint limit.", " input size: ",
 1250|    103|          input.size(), ", limit: ", options.expression_size_codepoint_limit));
 1251|    103|    }
 1252|  9.21k|    CelLexer lexer(&input);
 1253|  9.21k|    CommonTokenStream tokens(&lexer);
 1254|  9.21k|    CelParser parser(&tokens);
 1255|  9.21k|    ExprRecursionListener listener(options.max_recursion_depth);
 1256|  9.21k|    ParserVisitor visitor(description, expression, options.max_recursion_depth,
 1257|  9.21k|                          macros, options.add_macro_calls);
 1258|       |
 1259|  9.21k|    lexer.removeErrorListeners();
 1260|  9.21k|    parser.removeErrorListeners();
 1261|  9.21k|    lexer.addErrorListener(&visitor);
 1262|  9.21k|    parser.addErrorListener(&visitor);
 1263|  9.21k|    parser.addParseListener(&listener);
 1264|       |
 1265|       |    // Limit the number of error recovery attempts to prevent bad expressions
 1266|       |    // from consuming lots of cpu / memory.
 1267|  9.21k|    parser.setErrorHandler(std::make_shared<RecoveryLimitErrorStrategy>(
 1268|  9.21k|        options.error_recovery_limit,
 1269|  9.21k|        options.error_recovery_token_lookahead_limit));
 1270|       |
 1271|  9.21k|    Expr expr;
 1272|  9.21k|    try {
 1273|  9.21k|      expr = std::any_cast<Expr>(visitor.visit(parser.start()));
 1274|  9.21k|    } catch (const ParseCancellationException& e) {
 1275|    623|      if (visitor.HasErrored()) {
  ------------------
  |  Branch (1275:11): [True: 622, False: 1]
  ------------------
 1276|    622|        return absl::InvalidArgumentError(visitor.ErrorMessage());
 1277|    622|      }
 1278|      1|      return absl::CancelledError(e.what());
 1279|    623|    }
 1280|       |
 1281|  8.59k|    if (visitor.HasErrored()) {
  ------------------
  |  Branch (1281:9): [True: 6.09k, False: 2.50k]
  ------------------
 1282|  6.09k|      return absl::InvalidArgumentError(visitor.ErrorMessage());
 1283|  6.09k|    }
 1284|       |
 1285|       |    // root is deleted as part of the parser context
 1286|  2.50k|    ParsedExpr parsed_expr;
 1287|  2.50k|    *(parsed_expr.mutable_expr()) = std::move(expr);
 1288|  2.50k|    auto enriched_source_info = visitor.enriched_source_info();
 1289|  2.50k|    *(parsed_expr.mutable_source_info()) = visitor.source_info();
 1290|  2.50k|    return VerboseParsedExpr(std::move(parsed_expr),
 1291|  2.50k|                             std::move(enriched_source_info));
 1292|  8.59k|  } catch (const std::exception& e) {
 1293|      0|    return absl::AbortedError(e.what());
 1294|      0|  } catch (const char* what) {
 1295|       |    // ANTLRv4 has historically thrown C string literals.
 1296|      0|    return absl::AbortedError(what);
 1297|      0|  } catch (...) {
 1298|       |    // We guarantee to never throw and always return a status.
 1299|      0|    return absl::UnknownError("An unknown exception occurred");
 1300|      0|  }
 1301|  9.61k|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_119MakeCodePointBufferENSt3__117basic_string_viewIcNS4_11char_traitsIcEEEE:
  195|  9.61k|absl::StatusOr<CodePointBuffer> MakeCodePointBuffer(absl::string_view text) {
  196|  9.61k|  size_t index = 0;
  197|  9.61k|  char32_t code_point;
  198|  9.61k|  size_t code_units;
  199|  9.61k|  std::string data8;
  200|  9.61k|  std::u16string data16;
  201|  9.61k|  std::u32string data32;
  202|  48.9M|  while (index < text.size()) {
  ------------------
  |  Branch (202:10): [True: 48.9M, False: 7.51k]
  ------------------
  203|  48.9M|    std::tie(code_point, code_units) =
  204|  48.9M|        cel::internal::Utf8Decode(text.substr(index));
  205|  48.9M|    if (code_point <= 0x7f) {
  ------------------
  |  Branch (205:9): [True: 48.9M, False: 2.10k]
  ------------------
  206|  48.9M|      index += code_units;
  207|  48.9M|      continue;
  208|  48.9M|    }
  209|  2.10k|    if (code_point <= 0xff) {
  ------------------
  |  Branch (209:9): [True: 525, False: 1.57k]
  ------------------
  210|    525|      data8.reserve(text.size());
  211|    525|      data8.append(text.data(), index);
  212|    525|      data8.push_back(static_cast<char>(static_cast<uint8_t>(code_point)));
  213|    525|      index += code_units;
  214|    525|      goto latin1;
  215|    525|    }
  216|  1.57k|    if (code_point == cel::internal::kUnicodeReplacementCharacter &&
  ------------------
  |  Branch (216:9): [True: 55, False: 1.52k]
  ------------------
  217|  1.57k|        code_units == 1) {
  ------------------
  |  Branch (217:9): [True: 39, False: 16]
  ------------------
  218|       |      // Thats an invalid UTF-8 encoding.
  219|     39|      return absl::InvalidArgumentError("Cannot parse malformed UTF-8 input");
  220|     39|    }
  221|  1.54k|    if (code_point <= 0xffff) {
  ------------------
  |  Branch (221:9): [True: 924, False: 616]
  ------------------
  222|    924|      data16.reserve(text.size());
  223|  8.42M|      for (size_t offset = 0; offset < index; offset++) {
  ------------------
  |  Branch (223:31): [True: 8.42M, False: 924]
  ------------------
  224|  8.42M|        data16.push_back(static_cast<uint8_t>(text[offset]));
  225|  8.42M|      }
  226|    924|      data16.push_back(static_cast<char16_t>(code_point));
  227|    924|      index += code_units;
  228|    924|      goto basic;
  229|    924|    }
  230|    616|    data32.reserve(text.size());
  231|  4.45M|    for (size_t offset = 0; offset < index; offset++) {
  ------------------
  |  Branch (231:29): [True: 4.45M, False: 616]
  ------------------
  232|  4.45M|      data32.push_back(static_cast<char32_t>(text[offset]));
  233|  4.45M|    }
  234|    616|    data32.push_back(code_point);
  235|    616|    index += code_units;
  236|    616|    goto supplemental;
  237|  1.54k|  }
  238|  7.51k|  return CodePointBuffer(text);
  239|    525|latin1:
  240|  6.74M|  while (index < text.size()) {
  ------------------
  |  Branch (240:10): [True: 6.74M, False: 185]
  ------------------
  241|  6.74M|    std::tie(code_point, code_units) =
  242|  6.74M|        cel::internal::Utf8Decode(text.substr(index));
  243|  6.74M|    if (code_point <= 0xff) {
  ------------------
  |  Branch (243:9): [True: 6.74M, False: 340]
  ------------------
  244|  6.74M|      data8.push_back(static_cast<char>(static_cast<uint8_t>(code_point)));
  245|  6.74M|      index += code_units;
  246|  6.74M|      continue;
  247|  6.74M|    }
  248|    340|    if (code_point == cel::internal::kUnicodeReplacementCharacter &&
  ------------------
  |  Branch (248:9): [True: 13, False: 327]
  ------------------
  249|    340|        code_units == 1) {
  ------------------
  |  Branch (249:9): [True: 12, False: 1]
  ------------------
  250|       |      // Thats an invalid UTF-8 encoding.
  251|     12|      return absl::InvalidArgumentError("Cannot parse malformed UTF-8 input");
  252|     12|    }
  253|    328|    if (code_point <= 0xffff) {
  ------------------
  |  Branch (253:9): [True: 183, False: 145]
  ------------------
  254|    183|      data16.reserve(text.size());
  255|  2.92M|      for (const auto& value : data8) {
  ------------------
  |  Branch (255:30): [True: 2.92M, False: 183]
  ------------------
  256|  2.92M|        data16.push_back(static_cast<uint8_t>(value));
  257|  2.92M|      }
  258|    183|      std::string().swap(data8);
  259|    183|      data16.push_back(static_cast<char16_t>(code_point));
  260|    183|      index += code_units;
  261|    183|      goto basic;
  262|    183|    }
  263|    145|    data32.reserve(text.size());
  264|  4.38M|    for (const auto& value : data8) {
  ------------------
  |  Branch (264:28): [True: 4.38M, False: 145]
  ------------------
  265|  4.38M|      data32.push_back(static_cast<uint8_t>(value));
  266|  4.38M|    }
  267|    145|    std::string().swap(data8);
  268|    145|    data32.push_back(code_point);
  269|    145|    index += code_units;
  270|    145|    goto supplemental;
  271|    328|  }
  272|    185|  return CodePointBuffer(std::move(data8));
  273|  1.10k|basic:
  274|  12.6M|  while (index < text.size()) {
  ------------------
  |  Branch (274:10): [True: 12.6M, False: 727]
  ------------------
  275|  12.6M|    std::tie(code_point, code_units) =
  276|  12.6M|        cel::internal::Utf8Decode(text.substr(index));
  277|  12.6M|    if (code_point == cel::internal::kUnicodeReplacementCharacter &&
  ------------------
  |  Branch (277:9): [True: 325, False: 12.6M]
  ------------------
  278|  12.6M|        code_units == 1) {
  ------------------
  |  Branch (278:9): [True: 80, False: 245]
  ------------------
  279|       |      // Thats an invalid UTF-8 encoding.
  280|     80|      return absl::InvalidArgumentError("Cannot parse malformed UTF-8 input");
  281|     80|    }
  282|  12.6M|    if (code_point <= 0xffff) {
  ------------------
  |  Branch (282:9): [True: 12.6M, False: 300]
  ------------------
  283|  12.6M|      data16.push_back(static_cast<char16_t>(code_point));
  284|  12.6M|      index += code_units;
  285|  12.6M|      continue;
  286|  12.6M|    }
  287|    300|    data32.reserve(text.size());
  288|  5.78M|    for (const auto& value : data16) {
  ------------------
  |  Branch (288:28): [True: 5.78M, False: 300]
  ------------------
  289|  5.78M|      data32.push_back(static_cast<char32_t>(value));
  290|  5.78M|    }
  291|    300|    std::u16string().swap(data16);
  292|    300|    data32.push_back(code_point);
  293|    300|    index += code_units;
  294|    300|    goto supplemental;
  295|  12.6M|  }
  296|    727|  return CodePointBuffer(std::move(data16));
  297|  1.06k|supplemental:
  298|  31.7M|  while (index < text.size()) {
  ------------------
  |  Branch (298:10): [True: 31.7M, False: 897]
  ------------------
  299|  31.7M|    std::tie(code_point, code_units) =
  300|  31.7M|        cel::internal::Utf8Decode(text.substr(index));
  301|  31.7M|    if (code_point == cel::internal::kUnicodeReplacementCharacter &&
  ------------------
  |  Branch (301:9): [True: 449, False: 31.7M]
  ------------------
  302|  31.7M|        code_units == 1) {
  ------------------
  |  Branch (302:9): [True: 164, False: 285]
  ------------------
  303|       |      // Thats an invalid UTF-8 encoding.
  304|    164|      return absl::InvalidArgumentError("Cannot parse malformed UTF-8 input");
  305|    164|    }
  306|  31.7M|    data32.push_back(code_point);
  307|  31.7M|    index += code_units;
  308|  31.7M|  }
  309|    897|  return CodePointBuffer(std::move(data32));
  310|  1.06k|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_115CodePointBufferC2ENSt3__117basic_string_viewIcNS5_11char_traitsIcEEEE:
   79|  7.51k|      : storage_(absl::in_place_index<0>, data) {}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_115CodePointBufferC2ENSt3__112basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEE:
   82|    185|      : storage_(absl::in_place_index<1>, std::move(data)) {}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_115CodePointBufferC2ENSt3__112basic_stringIDsNS5_11char_traitsIDsEENS5_9allocatorIDsEEEE:
   85|    727|      : storage_(absl::in_place_index<2>, std::move(data)) {}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_115CodePointBufferC2ENSt3__112basic_stringIDiNS5_11char_traitsIDiEENS5_9allocatorIDiEEEE:
   88|    897|      : storage_(absl::in_place_index<3>, std::move(data)) {}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_115CodePointStreamC2EPNS3_15CodePointBufferENSt3__117basic_string_viewIcNS7_11char_traitsIcEEEE:
  318|  9.32k|        index_(0) {}
parser.cc:_ZNK6google3api4expr6parser12_GLOBAL__N_115CodePointBuffer4sizeEv:
   90|  9.32k|  size_t size() const { return absl::visit(SizeVisitor{}, storage_); }
parser.cc:_ZNK6google3api4expr6parser12_GLOBAL__N_115CodePointBuffer11SizeVisitorclENSt3__117basic_string_viewIcNS6_11char_traitsIcEEEE:
  106|  7.51k|    size_t operator()(absl::string_view ascii) const { return ascii.size(); }
parser.cc:_ZNK6google3api4expr6parser12_GLOBAL__N_115CodePointBuffer11SizeVisitorclERKNSt3__112basic_stringIcNS6_11char_traitsIcEENS6_9allocatorIcEEEE:
  108|    185|    size_t operator()(const std::string& latin1) const { return latin1.size(); }
parser.cc:_ZNK6google3api4expr6parser12_GLOBAL__N_115CodePointBuffer11SizeVisitorclERKNSt3__112basic_stringIDsNS6_11char_traitsIDsEENS6_9allocatorIDsEEEE:
  110|    727|    size_t operator()(const std::u16string& basic) const {
  111|    727|      return basic.size();
  112|    727|    }
parser.cc:_ZNK6google3api4expr6parser12_GLOBAL__N_115CodePointBuffer11SizeVisitorclERKNSt3__112basic_stringIDiNS6_11char_traitsIDiEENS6_9allocatorIDiEEEE:
  114|    897|    size_t operator()(const std::u32string& supplemental) const {
  115|    897|      return supplemental.size();
  116|    897|    }
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_115CodePointStream7consumeEv:
  320|  57.9M|  void consume() override {
  321|  57.9M|    if (ABSL_PREDICT_FALSE(index_ >= size_)) {
  ------------------
  |  |  177|  57.9M|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (177:31): [True: 0, False: 57.9M]
  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  Branch (177:58): [True: 0, False: 57.9M]
  |  |  ------------------
  ------------------
  322|      0|      ABSL_ASSERT(LA(1) == IntStream::EOF);
  ------------------
  |  |   95|      0|  (false ? static_cast<void>(expr) : static_cast<void>(0))
  |  |  ------------------
  |  |  |  Branch (95:4): [Folded - Ignored]
  |  |  ------------------
  ------------------
  323|      0|      throw antlr4::IllegalStateException("cannot consume EOF");
  324|      0|    }
  325|  57.9M|    index_++;
  326|  57.9M|  }
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_115CodePointStream2LAEl:
  328|   134M|  size_t LA(ssize_t i) override {
  329|   134M|    if (ABSL_PREDICT_FALSE(i == 0)) {
  ------------------
  |  |  177|   134M|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (177:31): [True: 0, False: 134M]
  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  Branch (177:58): [True: 0, False: 134M]
  |  |  ------------------
  ------------------
  330|      0|      return 0;
  331|      0|    }
  332|   134M|    auto p = static_cast<ssize_t>(index_);
  333|   134M|    if (i < 0) {
  ------------------
  |  Branch (333:9): [True: 0, False: 134M]
  ------------------
  334|      0|      i++;
  335|      0|      if (p + i - 1 < 0) {
  ------------------
  |  Branch (335:11): [True: 0, False: 0]
  ------------------
  336|      0|        return IntStream::EOF;
  337|      0|      }
  338|      0|    }
  339|   134M|    if (p + i - 1 >= static_cast<ssize_t>(size_)) {
  ------------------
  |  Branch (339:9): [True: 19.4k, False: 134M]
  ------------------
  340|  19.4k|      return IntStream::EOF;
  341|  19.4k|    }
  342|   134M|    return buffer_->at(static_cast<size_t>(p + i - 1));
  343|   134M|  }
parser.cc:_ZNK6google3api4expr6parser12_GLOBAL__N_115CodePointBuffer2atEm:
   92|   134M|  char32_t at(size_t index) const {
   93|   134M|    ABSL_ASSERT(index < size());
  ------------------
  |  |   95|   134M|  (false ? static_cast<void>(expr) : static_cast<void>(0))
  |  |  ------------------
  |  |  |  Branch (95:4): [Folded - Ignored]
  |  |  ------------------
  ------------------
   94|   134M|    return absl::visit(AtVisitor{index}, storage_);
   95|   134M|  }
parser.cc:_ZNK6google3api4expr6parser12_GLOBAL__N_115CodePointBuffer9AtVisitorclENSt3__117basic_string_viewIcNS6_11char_traitsIcEEEE:
  122|  72.3M|    size_t operator()(absl::string_view ascii) const {
  123|  72.3M|      return static_cast<uint8_t>(ascii[index]);
  124|  72.3M|    }
parser.cc:_ZNK6google3api4expr6parser12_GLOBAL__N_115CodePointBuffer9AtVisitorclERKNSt3__112basic_stringIcNS6_11char_traitsIcEENS6_9allocatorIcEEEE:
  126|  2.76M|    size_t operator()(const std::string& latin1) const {
  127|  2.76M|      return static_cast<uint8_t>(latin1[index]);
  128|  2.76M|    }
parser.cc:_ZNK6google3api4expr6parser12_GLOBAL__N_115CodePointBuffer9AtVisitorclERKNSt3__112basic_stringIDsNS6_11char_traitsIDsEENS6_9allocatorIDsEEEE:
  130|  10.1M|    size_t operator()(const std::u16string& basic) const {
  131|  10.1M|      return basic[index];
  132|  10.1M|    }
parser.cc:_ZNK6google3api4expr6parser12_GLOBAL__N_115CodePointBuffer9AtVisitorclERKNSt3__112basic_stringIDiNS6_11char_traitsIDiEENS6_9allocatorIDiEEEE:
  134|  49.5M|    size_t operator()(const std::u32string& supplemental) const {
  135|  49.5M|      return supplemental[index];
  136|  49.5M|    }
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_115CodePointStream4markEv:
  345|  16.9M|  ssize_t mark() override { return -1; }
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_115CodePointStream7releaseEl:
  347|  16.9M|  void release(ssize_t marker) override {}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_115CodePointStream5indexEv:
  349|  46.8M|  size_t index() override { return index_; }
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_115CodePointStream4seekEm:
  351|  7.51M|  void seek(size_t index) override { index_ = std::min(index, size_); }
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_115CodePointStream7getTextERKN6antlr44misc8IntervalE:
  360|  6.56M|  std::string getText(const antlr4::misc::Interval& interval) override {
  361|  6.56M|    if (ABSL_PREDICT_FALSE(interval.a < 0 || interval.b < 0)) {
  ------------------
  |  |  177|  13.1M|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (177:31): [True: 0, False: 6.56M]
  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  Branch (177:59): [True: 0, False: 6.56M]
  |  |  |  Branch (177:59): [True: 0, False: 6.56M]
  |  |  ------------------
  ------------------
  362|      0|      return std::string();
  363|      0|    }
  364|  6.56M|    size_t start = static_cast<size_t>(interval.a);
  365|  6.56M|    if (ABSL_PREDICT_FALSE(start >= size_)) {
  ------------------
  |  |  177|  6.56M|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (177:31): [True: 0, False: 6.56M]
  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  Branch (177:58): [True: 0, False: 6.56M]
  |  |  ------------------
  ------------------
  366|      0|      return std::string();
  367|      0|    }
  368|  6.56M|    size_t stop = static_cast<size_t>(interval.b);
  369|  6.56M|    if (ABSL_PREDICT_FALSE(stop >= size_)) {
  ------------------
  |  |  177|  6.56M|#define ABSL_PREDICT_FALSE(x) (__builtin_expect(false || (x), false))
  |  |  ------------------
  |  |  |  Branch (177:31): [True: 571, False: 6.56M]
  |  |  |  Branch (177:49): [Folded - Ignored]
  |  |  |  Branch (177:58): [True: 571, False: 6.56M]
  |  |  ------------------
  ------------------
  370|    571|      stop = size_ - 1;
  371|    571|    }
  372|  6.56M|    return buffer_->ToString(start, stop + 1);
  373|  6.56M|  }
parser.cc:_ZNK6google3api4expr6parser12_GLOBAL__N_115CodePointBuffer8ToStringEmm:
   97|  6.56M|  std::string ToString(size_t begin, size_t end) const {
   98|  6.56M|    ABSL_ASSERT(begin <= end);
  ------------------
  |  |   95|  6.56M|  (false ? static_cast<void>(expr) : static_cast<void>(0))
  |  |  ------------------
  |  |  |  Branch (95:4): [Folded - Ignored]
  |  |  ------------------
  ------------------
   99|  6.56M|    ABSL_ASSERT(begin < size());
  ------------------
  |  |   95|  6.56M|  (false ? static_cast<void>(expr) : static_cast<void>(0))
  |  |  ------------------
  |  |  |  Branch (95:4): [Folded - Ignored]
  |  |  ------------------
  ------------------
  100|  6.56M|    ABSL_ASSERT(end <= size());
  ------------------
  |  |   95|  6.56M|  (false ? static_cast<void>(expr) : static_cast<void>(0))
  |  |  ------------------
  |  |  |  Branch (95:4): [Folded - Ignored]
  |  |  ------------------
  ------------------
  101|  6.56M|    return absl::visit(ToStringVisitor{begin, end}, storage_);
  102|  6.56M|  }
parser.cc:_ZNK6google3api4expr6parser12_GLOBAL__N_115CodePointBuffer15ToStringVisitorclENSt3__117basic_string_viewIcNS6_11char_traitsIcEEEE:
  143|  3.20M|    std::string operator()(absl::string_view ascii) const {
  144|  3.20M|      return std::string(ascii.substr(begin, end - begin));
  145|  3.20M|    }
parser.cc:_ZNK6google3api4expr6parser12_GLOBAL__N_115CodePointBuffer15ToStringVisitorclERKNSt3__112basic_stringIcNS6_11char_traitsIcEENS6_9allocatorIcEEEE:
  147|  82.0k|    std::string operator()(const std::string& latin1) const {
  148|  82.0k|      std::string result;
  149|  82.0k|      result.reserve((end - begin) *
  150|  82.0k|                     2);  // Worst case is 2 code units per code point.
  151|  1.54M|      for (size_t index = begin; index < end; index++) {
  ------------------
  |  Branch (151:34): [True: 1.46M, False: 82.0k]
  ------------------
  152|  1.46M|        cel::internal::Utf8Encode(
  153|  1.46M|            &result,
  154|  1.46M|            static_cast<char32_t>(static_cast<uint8_t>(latin1[index])));
  155|  1.46M|      }
  156|  82.0k|      result.shrink_to_fit();
  157|  82.0k|      return result;
  158|  82.0k|    }
parser.cc:_ZNK6google3api4expr6parser12_GLOBAL__N_115CodePointBuffer15ToStringVisitorclERKNSt3__112basic_stringIDsNS6_11char_traitsIDsEENS6_9allocatorIDsEEEE:
  160|   858k|    std::string operator()(const std::u16string& basic) const {
  161|   858k|      std::string result;
  162|   858k|      result.reserve((end - begin) *
  163|   858k|                     3);  // Worst case is 3 code units per code point.
  164|  4.19M|      for (size_t index = begin; index < end; index++) {
  ------------------
  |  Branch (164:34): [True: 3.33M, False: 858k]
  ------------------
  165|  3.33M|        cel::internal::Utf8Encode(&result, static_cast<char32_t>(basic[index]));
  166|  3.33M|      }
  167|   858k|      result.shrink_to_fit();
  168|   858k|      return result;
  169|   858k|    }
parser.cc:_ZNK6google3api4expr6parser12_GLOBAL__N_115CodePointBuffer15ToStringVisitorclERKNSt3__112basic_stringIDiNS6_11char_traitsIDiEENS6_9allocatorIDiEEEE:
  171|  2.41M|    std::string operator()(const std::u32string& supplemental) const {
  172|  2.41M|      std::string result;
  173|  2.41M|      result.reserve((end - begin) *
  174|  2.41M|                     4);  // Worst case is 4 code units per code point.
  175|  12.2M|      for (size_t index = begin; index < end; index++) {
  ------------------
  |  Branch (175:34): [True: 9.81M, False: 2.41M]
  ------------------
  176|  9.81M|        cel::internal::Utf8Encode(&result, supplemental[index]);
  177|  9.81M|      }
  178|  2.41M|      result.shrink_to_fit();
  179|  2.41M|      return result;
  180|  2.41M|    }
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_115CodePointStream4sizeEv:
  353|  4.64M|  size_t size() override { return size_; }
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_121ExprRecursionListenerC2Ei:
 1128|  9.21k|      : max_recursion_depth_(max_recursion_depth), recursion_depth_(0) {}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_121ExprRecursionListener13visitTerminalEPN6antlr44tree12TerminalNodeE:
 1131|  7.24M|  void visitTerminal(TerminalNode* node) override{};
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_121ExprRecursionListener14visitErrorNodeEPN6antlr44tree9ErrorNodeE:
 1132|   145k|  void visitErrorNode(ErrorNode* error) override{};
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_121ExprRecursionListener14enterEveryRuleEPN6antlr417ParserRuleContextE:
 1141|  25.1M|void ExprRecursionListener::enterEveryRule(ParserRuleContext* ctx) {
 1142|       |  // Throw a ParseCancellationException since the parsing would otherwise
 1143|       |  // continue if this were treated as a syntax error and the problem would
 1144|       |  // continue to manifest.
 1145|  25.1M|  if (ctx->getRuleIndex() == CelParser::RuleExpr) {
  ------------------
  |  Branch (1145:7): [True: 2.39M, False: 22.8M]
  ------------------
 1146|  2.39M|    if (recursion_depth_ >= max_recursion_depth_) {
  ------------------
  |  Branch (1146:9): [True: 5, False: 2.39M]
  ------------------
 1147|      5|      throw ParseCancellationException(
 1148|      5|          absl::StrFormat("Expression recursion limit exceeded. limit: %d",
 1149|      5|                          max_recursion_depth_));
 1150|      5|    }
 1151|  2.39M|    recursion_depth_++;
 1152|  2.39M|  }
 1153|  25.1M|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_121ExprRecursionListener13exitEveryRuleEPN6antlr417ParserRuleContextE:
 1155|  25.1M|void ExprRecursionListener::exitEveryRule(ParserRuleContext* ctx) {
 1156|  25.1M|  if (ctx->getRuleIndex() == CelParser::RuleExpr) {
  ------------------
  |  Branch (1156:7): [True: 2.39M, False: 22.8M]
  ------------------
 1157|  2.39M|    recursion_depth_--;
 1158|  2.39M|  }
 1159|  25.1M|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_113ParserVisitorC2ENSt3__117basic_string_viewIcNS5_11char_traitsIcEEEES9_iRKNS5_6vectorIN3cel5MacroENS5_9allocatorISC_EEEEb:
  562|  9.21k|      add_macro_calls_(add_macro_calls) {
  563|  64.5k|  for (const auto& m : macros) {
  ------------------
  |  Branch (563:22): [True: 64.5k, False: 9.21k]
  ------------------
  564|  64.5k|    macros_.emplace(m.key(), m);
  565|  64.5k|  }
  566|  9.21k|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_113ParserVisitor10visitStartEPN19cel_parser_internal9CelParser12StartContextE:
  660|  8.59k|antlrcpp::Any ParserVisitor::visitStart(CelParser::StartContext* ctx) {
  661|  8.59k|  return visit(ctx->expr());
  662|  8.59k|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_113ParserVisitor9visitExprEPN19cel_parser_internal9CelParser11ExprContextE:
  664|  2.14M|antlrcpp::Any ParserVisitor::visitExpr(CelParser::ExprContext* ctx) {
  665|  2.14M|  auto result = std::any_cast<Expr>(visit(ctx->e));
  666|  2.14M|  if (!ctx->op) {
  ------------------
  |  Branch (666:7): [True: 2.14M, False: 1.97k]
  ------------------
  667|  2.14M|    return result;
  668|  2.14M|  }
  669|  1.97k|  int64_t op_id = sf_->Id(ctx->op);
  670|  1.97k|  Expr if_true = std::any_cast<Expr>(visit(ctx->e1));
  671|  1.97k|  Expr if_false = std::any_cast<Expr>(visit(ctx->e2));
  672|       |
  673|  1.97k|  return GlobalCallOrMacro(op_id, CelOperator::CONDITIONAL,
  674|  1.97k|                           {result, if_true, if_false});
  675|  2.14M|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_113ParserVisitor17GlobalCallOrMacroElRKNSt3__112basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEERKNS5_6vectorINS1_8v1alpha14ExprENS9_ISG_EEEE:
 1033|   674k|                                      const std::vector<Expr>& args) {
 1034|   674k|  Expr macro_expr;
 1035|   674k|  if (ExpandMacro(expr_id, function, Expr::default_instance(), args,
  ------------------
  |  Branch (1035:7): [True: 379, False: 674k]
  ------------------
 1036|   674k|                  &macro_expr)) {
 1037|    379|    return macro_expr;
 1038|    379|  }
 1039|       |
 1040|   674k|  return sf_->NewGlobalCall(expr_id, function, args);
 1041|   674k|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_113ParserVisitor11ExpandMacroElRKNSt3__112basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEERKNS1_8v1alpha14ExprERKNS5_6vectorISF_NS9_ISF_EEEEPSF_:
 1058|   681k|                                Expr* macro_expr) {
 1059|   681k|  std::string macro_key = absl::StrFormat("%s:%d:%s", function, args.size(),
 1060|   681k|                                          target.id() != 0 ? "true" : "false");
  ------------------
  |  Branch (1060:43): [True: 6.62k, False: 674k]
  ------------------
 1061|   681k|  auto m = macros_.find(macro_key);
 1062|   681k|  if (m == macros_.end()) {
  ------------------
  |  Branch (1062:7): [True: 675k, False: 5.42k]
  ------------------
 1063|   675k|    std::string var_arg_macro_key = absl::StrFormat(
 1064|   675k|        "%s:*:%s", function, target.id() != 0 ? "true" : "false");
  ------------------
  |  Branch (1064:30): [True: 1.75k, False: 673k]
  ------------------
 1065|   675k|    m = macros_.find(var_arg_macro_key);
 1066|   675k|    if (m == macros_.end()) {
  ------------------
  |  Branch (1066:9): [True: 675k, False: 0]
  ------------------
 1067|   675k|      return false;
 1068|   675k|    }
 1069|   675k|  }
 1070|       |
 1071|  5.42k|  Expr expr = m->second.Expand(sf_, expr_id, target, args);
 1072|  5.42k|  if (expr.expr_kind_case() != Expr::EXPR_KIND_NOT_SET) {
  ------------------
  |  Branch (1072:7): [True: 4.04k, False: 1.38k]
  ------------------
 1073|  4.04k|    *macro_expr = std::move(expr);
 1074|  4.04k|    if (add_macro_calls_) {
  ------------------
  |  Branch (1074:9): [True: 0, False: 4.04k]
  ------------------
 1075|       |      // If the macro is nested, the full expression id is used as an argument
 1076|       |      // id in the tree. Using this ID instead of expr_id allows argument id
 1077|       |      // lookups in macro_calls when building the map and iterating
 1078|       |      // the AST.
 1079|      0|      sf_->AddMacroCall(macro_expr->id(), target, args, function);
 1080|      0|    }
 1081|  4.04k|    return true;
 1082|  4.04k|  }
 1083|  1.38k|  return false;
 1084|  5.42k|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_113ParserVisitor18visitConditionalOrEPN19cel_parser_internal9CelParser20ConditionalOrContextE:
  678|  2.14M|    CelParser::ConditionalOrContext* ctx) {
  679|  2.14M|  auto result = std::any_cast<Expr>(visit(ctx->e));
  680|  2.14M|  if (ctx->ops.empty()) {
  ------------------
  |  Branch (680:7): [True: 2.14M, False: 1.07k]
  ------------------
  681|  2.14M|    return result;
  682|  2.14M|  }
  683|  1.07k|  ExpressionBalancer b(sf_, CelOperator::LOGICAL_OR, result);
  684|  88.0k|  for (size_t i = 0; i < ctx->ops.size(); ++i) {
  ------------------
  |  Branch (684:22): [True: 87.0k, False: 1.07k]
  ------------------
  685|  87.0k|    auto op = ctx->ops[i];
  686|  87.0k|    if (i >= ctx->e1.size()) {
  ------------------
  |  Branch (686:9): [True: 0, False: 87.0k]
  ------------------
  687|      0|      return sf_->ReportError(ctx, "unexpected character, wanted '||'");
  688|      0|    }
  689|  87.0k|    auto next = std::any_cast<Expr>(visit(ctx->e1[i]));
  690|  87.0k|    int64_t op_id = sf_->Id(op);
  691|  87.0k|    b.AddTerm(op_id, next);
  692|  87.0k|  }
  693|  1.07k|  return b.Balance();
  694|  1.07k|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_118ExpressionBalancerC2ENSt3__110shared_ptrINS2_13SourceFactoryEEENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEENS1_8v1alpha14ExprE:
  438|  1.97k|      ops_{} {}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_118ExpressionBalancer7AddTermElNS1_8v1alpha14ExprE:
  440|   145k|void ExpressionBalancer::AddTerm(int64_t op, Expr term) {
  441|   145k|  terms_.push_back(std::move(term));
  442|   145k|  ops_.push_back(op);
  443|   145k|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_118ExpressionBalancer7BalanceEv:
  445|  1.97k|Expr ExpressionBalancer::Balance() {
  446|  1.97k|  if (terms_.size() == 1) {
  ------------------
  |  Branch (446:7): [True: 0, False: 1.97k]
  ------------------
  447|      0|    return terms_[0];
  448|      0|  }
  449|  1.97k|  return BalancedTree(0, ops_.size() - 1);
  450|  1.97k|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_118ExpressionBalancer12BalancedTreeEii:
  452|   145k|Expr ExpressionBalancer::BalancedTree(int lo, int hi) {
  453|   145k|  int mid = (lo + hi + 1) / 2;
  454|       |
  455|   145k|  Expr left;
  456|   145k|  if (mid == lo) {
  ------------------
  |  Branch (456:7): [True: 64.4k, False: 81.0k]
  ------------------
  457|  64.4k|    left = terms_[mid];
  458|  81.0k|  } else {
  459|  81.0k|    left = BalancedTree(lo, mid - 1);
  460|  81.0k|  }
  461|       |
  462|   145k|  Expr right;
  463|   145k|  if (mid == hi) {
  ------------------
  |  Branch (463:7): [True: 83.0k, False: 62.4k]
  ------------------
  464|  83.0k|    right = terms_[mid + 1];
  465|  83.0k|  } else {
  466|  62.4k|    right = BalancedTree(mid + 1, hi);
  467|  62.4k|  }
  468|   145k|  return sf_->NewGlobalCall(ops_[mid], function_,
  469|   145k|                            {std::move(left), std::move(right)});
  470|   145k|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_113ParserVisitor19visitConditionalAndEPN19cel_parser_internal9CelParser21ConditionalAndContextE:
  697|  2.23M|    CelParser::ConditionalAndContext* ctx) {
  698|  2.23M|  auto result = std::any_cast<Expr>(visit(ctx->e));
  699|  2.23M|  if (ctx->ops.empty()) {
  ------------------
  |  Branch (699:7): [True: 2.23M, False: 909]
  ------------------
  700|  2.23M|    return result;
  701|  2.23M|  }
  702|    909|  ExpressionBalancer b(sf_, CelOperator::LOGICAL_AND, result);
  703|  59.4k|  for (size_t i = 0; i < ctx->ops.size(); ++i) {
  ------------------
  |  Branch (703:22): [True: 58.5k, False: 909]
  ------------------
  704|  58.5k|    auto op = ctx->ops[i];
  705|  58.5k|    if (i >= ctx->e1.size()) {
  ------------------
  |  Branch (705:9): [True: 0, False: 58.5k]
  ------------------
  706|      0|      return sf_->ReportError(ctx, "unexpected character, wanted '&&'");
  707|      0|    }
  708|  58.5k|    auto next = std::any_cast<Expr>(visit(ctx->e1[i]));
  709|  58.5k|    int64_t op_id = sf_->Id(op);
  710|  58.5k|    b.AddTerm(op_id, next);
  711|  58.5k|  }
  712|    909|  return b.Balance();
  713|    909|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_113ParserVisitor13visitRelationEPN19cel_parser_internal9CelParser15RelationContextE:
  715|  2.31M|antlrcpp::Any ParserVisitor::visitRelation(CelParser::RelationContext* ctx) {
  716|  2.31M|  if (ctx->calc()) {
  ------------------
  |  Branch (716:7): [True: 2.30M, False: 8.03k]
  ------------------
  717|  2.30M|    return visit(ctx->calc());
  718|  2.30M|  }
  719|  8.03k|  std::string op_text;
  720|  8.03k|  if (ctx->op) {
  ------------------
  |  Branch (720:7): [True: 8.03k, False: 0]
  ------------------
  721|  8.03k|    op_text = ctx->op->getText();
  722|  8.03k|  }
  723|  8.03k|  auto op = ReverseLookupOperator(op_text);
  724|  8.03k|  if (op) {
  ------------------
  |  Branch (724:7): [True: 8.03k, False: 0]
  ------------------
  725|  8.03k|    auto lhs = std::any_cast<Expr>(visit(ctx->relation(0)));
  726|  8.03k|    int64_t op_id = sf_->Id(ctx->op);
  727|  8.03k|    auto rhs = std::any_cast<Expr>(visit(ctx->relation(1)));
  728|  8.03k|    return GlobalCallOrMacro(op_id, *op, {lhs, rhs});
  729|  8.03k|  }
  730|      0|  return sf_->ReportError(ctx, "operator not found");
  731|  8.03k|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_113ParserVisitor9visitCalcEPN19cel_parser_internal9CelParser11CalcContextE:
  733|  3.50M|antlrcpp::Any ParserVisitor::visitCalc(CelParser::CalcContext* ctx) {
  734|  3.50M|  if (ctx->unary()) {
  ------------------
  |  Branch (734:7): [True: 2.90M, False: 599k]
  ------------------
  735|  2.90M|    return visit(ctx->unary());
  736|  2.90M|  }
  737|   599k|  std::string op_text;
  738|   599k|  if (ctx->op) {
  ------------------
  |  Branch (738:7): [True: 599k, False: 0]
  ------------------
  739|   599k|    op_text = ctx->op->getText();
  740|   599k|  }
  741|   599k|  auto op = ReverseLookupOperator(op_text);
  742|   599k|  if (op) {
  ------------------
  |  Branch (742:7): [True: 599k, False: 0]
  ------------------
  743|   599k|    auto lhs = std::any_cast<Expr>(visit(ctx->calc(0)));
  744|   599k|    int64_t op_id = sf_->Id(ctx->op);
  745|   599k|    auto rhs = std::any_cast<Expr>(visit(ctx->calc(1)));
  746|   599k|    return GlobalCallOrMacro(op_id, *op, {lhs, rhs});
  747|   599k|  }
  748|      0|  return sf_->ReportError(ctx, "operator not found");
  749|   599k|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_113ParserVisitor15visitMemberExprEPN19cel_parser_internal9CelParser17MemberExprContextE:
  646|  2.83M|    CelParser::MemberExprContext* mctx) {
  647|  2.83M|  CelParser::MemberContext* member = mctx->member();
  648|  2.83M|  if (auto* ctx = tree_as<CelParser::PrimaryExprContext>(member)) {
  ------------------
  |  Branch (648:13): [True: 2.81M, False: 13.2k]
  ------------------
  649|  2.81M|    return visitPrimaryExpr(ctx);
  650|  2.81M|  } else if (auto* ctx = tree_as<CelParser::SelectOrCallContext>(member)) {
  ------------------
  |  Branch (650:20): [True: 8.24k, False: 4.99k]
  ------------------
  651|  8.24k|    return visitSelectOrCall(ctx);
  652|  8.24k|  } else if (auto* ctx = tree_as<CelParser::IndexContext>(member)) {
  ------------------
  |  Branch (652:20): [True: 1.39k, False: 3.60k]
  ------------------
  653|  1.39k|    return visitIndex(ctx);
  654|  3.60k|  } else if (auto* ctx = tree_as<CelParser::CreateMessageContext>(member)) {
  ------------------
  |  Branch (654:20): [True: 3.60k, False: 0]
  ------------------
  655|  3.60k|    return visitCreateMessage(ctx);
  656|  3.60k|  }
  657|      0|  return sf_->ReportError(mctx, "unsupported simple expression");
  658|  2.83M|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_17tree_asIN19cel_parser_internal9CelParser18PrimaryExprContextEvEEPT_PN6antlr44tree9ParseTreeE:
  572|  5.81M|T* tree_as(antlr4::tree::ParseTree* tree) {
  573|  5.81M|  return dynamic_cast<T*>(tree);
  574|  5.81M|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_17tree_asIN19cel_parser_internal9CelParser19SelectOrCallContextEvEEPT_PN6antlr44tree9ParseTreeE:
  572|  94.1k|T* tree_as(antlr4::tree::ParseTree* tree) {
  573|  94.1k|  return dynamic_cast<T*>(tree);
  574|  94.1k|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_17tree_asIN19cel_parser_internal9CelParser12IndexContextEvEEPT_PN6antlr44tree9ParseTreeE:
  572|  20.9k|T* tree_as(antlr4::tree::ParseTree* tree) {
  573|  20.9k|  return dynamic_cast<T*>(tree);
  574|  20.9k|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_17tree_asIN19cel_parser_internal9CelParser20CreateMessageContextEvEEPT_PN6antlr44tree9ParseTreeE:
  572|  5.49k|T* tree_as(antlr4::tree::ParseTree* tree) {
  573|  5.49k|  return dynamic_cast<T*>(tree);
  574|  5.49k|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_113ParserVisitor15visitLogicalNotEPN19cel_parser_internal9CelParser17LogicalNotContextE:
  756|  3.00k|    CelParser::LogicalNotContext* ctx) {
  757|  3.00k|  if (ctx->ops.size() % 2 == 0) {
  ------------------
  |  Branch (757:7): [True: 131, False: 2.87k]
  ------------------
  758|    131|    return visit(ctx->member());
  759|    131|  }
  760|  2.87k|  int64_t op_id = sf_->Id(ctx->ops[0]);
  761|  2.87k|  auto target = std::any_cast<Expr>(visit(ctx->member()));
  762|  2.87k|  return GlobalCallOrMacro(op_id, CelOperator::LOGICAL_NOT, {target});
  763|  3.00k|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_113ParserVisitor11visitNegateEPN19cel_parser_internal9CelParser13NegateContextE:
  765|  57.8k|antlrcpp::Any ParserVisitor::visitNegate(CelParser::NegateContext* ctx) {
  766|  57.8k|  if (ctx->ops.size() % 2 == 0) {
  ------------------
  |  Branch (766:7): [True: 3.96k, False: 53.8k]
  ------------------
  767|  3.96k|    return visit(ctx->member());
  768|  3.96k|  }
  769|  53.8k|  int64_t op_id = sf_->Id(ctx->ops[0]);
  770|  53.8k|  auto target = std::any_cast<Expr>(visit(ctx->member()));
  771|  53.8k|  return GlobalCallOrMacro(op_id, CelOperator::NEGATE, {target});
  772|  57.8k|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_113ParserVisitor17visitSelectOrCallEPN19cel_parser_internal9CelParser19SelectOrCallContextE:
  775|  15.4k|    CelParser::SelectOrCallContext* ctx) {
  776|  15.4k|  auto operand = std::any_cast<Expr>(visit(ctx->member()));
  777|       |  // Handle the error case where no valid identifier is specified.
  778|  15.4k|  if (!ctx->id) {
  ------------------
  |  Branch (778:7): [True: 147, False: 15.2k]
  ------------------
  779|    147|    return sf_->NewExpr(ctx);
  780|    147|  }
  781|  15.2k|  auto id = ctx->id->getText();
  782|  15.2k|  if (ctx->open) {
  ------------------
  |  Branch (782:7): [True: 6.62k, False: 8.66k]
  ------------------
  783|  6.62k|    int64_t op_id = sf_->Id(ctx->open);
  784|  6.62k|    return ReceiverCallOrMacro(op_id, id, operand, visitList(ctx->args));
  785|  6.62k|  }
  786|  8.66k|  return sf_->NewSelect(ctx, operand, id);
  787|  15.2k|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_113ParserVisitor19ReceiverCallOrMacroElRKNSt3__112basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEERKNS1_8v1alpha14ExprERKNS5_6vectorISF_NS9_ISF_EEEE:
 1046|  6.62k|                                        const std::vector<Expr>& args) {
 1047|  6.62k|  Expr macro_expr;
 1048|  6.62k|  if (ExpandMacro(expr_id, function, target, args, &macro_expr)) {
  ------------------
  |  Branch (1048:7): [True: 3.66k, False: 2.96k]
  ------------------
 1049|  3.66k|    return macro_expr;
 1050|  3.66k|  }
 1051|       |
 1052|  2.96k|  return sf_->NewReceiverCall(expr_id, function, target, args);
 1053|  6.62k|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_113ParserVisitor9visitListEPN19cel_parser_internal9CelParser15ExprListContextE:
  865|  14.3k|std::vector<Expr> ParserVisitor::visitList(CelParser::ExprListContext* ctx) {
  866|  14.3k|  std::vector<Expr> rv;
  867|  14.3k|  if (!ctx) return rv;
  ------------------
  |  Branch (867:7): [True: 2.59k, False: 11.7k]
  ------------------
  868|  11.7k|  std::transform(ctx->e.begin(), ctx->e.end(), std::back_inserter(rv),
  869|  11.7k|                 [this](CelParser::ExprContext* expr_ctx) {
  870|  11.7k|                   return std::any_cast<Expr>(visitExpr(expr_ctx));
  871|  11.7k|                 });
  872|  11.7k|  return rv;
  873|  14.3k|}
parser.cc:_ZZN6google3api4expr6parser12_GLOBAL__N_113ParserVisitor9visitListEPN19cel_parser_internal9CelParser15ExprListContextEENK3$_0clEPNS6_11ExprContextE:
  869|  1.14M|                 [this](CelParser::ExprContext* expr_ctx) {
  870|  1.14M|                   return std::any_cast<Expr>(visitExpr(expr_ctx));
  871|  1.14M|                 });
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_113ParserVisitor16visitPrimaryExprEPN19cel_parser_internal9CelParser18PrimaryExprContextE:
  628|  2.89M|    CelParser::PrimaryExprContext* pctx) {
  629|  2.89M|  CelParser::PrimaryContext* primary = pctx->primary();
  630|  2.89M|  if (auto* ctx = tree_as<CelParser::NestedContext>(primary)) {
  ------------------
  |  Branch (630:13): [True: 1.57k, False: 2.89M]
  ------------------
  631|  1.57k|    return visitNested(ctx);
  632|  2.89M|  } else if (auto* ctx =
  ------------------
  |  Branch (632:20): [True: 1.10M, False: 1.78M]
  ------------------
  633|  2.89M|                 tree_as<CelParser::IdentOrGlobalCallContext>(primary)) {
  634|  1.10M|    return visitIdentOrGlobalCall(ctx);
  635|  1.78M|  } else if (auto* ctx = tree_as<CelParser::CreateListContext>(primary)) {
  ------------------
  |  Branch (635:20): [True: 5.53k, False: 1.78M]
  ------------------
  636|  5.53k|    return visitCreateList(ctx);
  637|  1.78M|  } else if (auto* ctx = tree_as<CelParser::CreateStructContext>(primary)) {
  ------------------
  |  Branch (637:20): [True: 659k, False: 1.12M]
  ------------------
  638|   659k|    return visitCreateStruct(ctx);
  639|  1.12M|  } else if (auto* ctx = tree_as<CelParser::ConstantLiteralContext>(primary)) {
  ------------------
  |  Branch (639:20): [True: 1.12M, False: 1.27k]
  ------------------
  640|  1.12M|    return visitConstantLiteral(ctx);
  641|  1.12M|  }
  642|  1.27k|  return sf_->ReportError(pctx, "invalid primary expression");
  643|  2.89M|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_17tree_asIN19cel_parser_internal9CelParser13NestedContextEvEEPT_PN6antlr44tree9ParseTreeE:
  572|  2.89M|T* tree_as(antlr4::tree::ParseTree* tree) {
  573|  2.89M|  return dynamic_cast<T*>(tree);
  574|  2.89M|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_17tree_asIN19cel_parser_internal9CelParser24IdentOrGlobalCallContextEvEEPT_PN6antlr44tree9ParseTreeE:
  572|  2.89M|T* tree_as(antlr4::tree::ParseTree* tree) {
  573|  2.89M|  return dynamic_cast<T*>(tree);
  574|  2.89M|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_17tree_asIN19cel_parser_internal9CelParser17CreateListContextEvEEPT_PN6antlr44tree9ParseTreeE:
  572|  1.78M|T* tree_as(antlr4::tree::ParseTree* tree) {
  573|  1.78M|  return dynamic_cast<T*>(tree);
  574|  1.78M|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_17tree_asIN19cel_parser_internal9CelParser19CreateStructContextEvEEPT_PN6antlr44tree9ParseTreeE:
  572|  1.78M|T* tree_as(antlr4::tree::ParseTree* tree) {
  573|  1.78M|  return dynamic_cast<T*>(tree);
  574|  1.78M|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_17tree_asIN19cel_parser_internal9CelParser22ConstantLiteralContextEvEEPT_PN6antlr44tree9ParseTreeE:
  572|  1.12M|T* tree_as(antlr4::tree::ParseTree* tree) {
  573|  1.12M|  return dynamic_cast<T*>(tree);
  574|  1.12M|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_113ParserVisitor10visitIndexEPN19cel_parser_internal9CelParser12IndexContextE:
  789|  5.65k|antlrcpp::Any ParserVisitor::visitIndex(CelParser::IndexContext* ctx) {
  790|  5.65k|  auto target = std::any_cast<Expr>(visit(ctx->member()));
  791|  5.65k|  int64_t op_id = sf_->Id(ctx->op);
  792|  5.65k|  auto index = std::any_cast<Expr>(visit(ctx->index));
  793|  5.65k|  return GlobalCallOrMacro(op_id, CelOperator::INDEX, {target, index});
  794|  5.65k|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_113ParserVisitor18visitCreateMessageEPN19cel_parser_internal9CelParser20CreateMessageContextE:
  797|  4.69k|    CelParser::CreateMessageContext* ctx) {
  798|  4.69k|  auto target = std::any_cast<Expr>(visit(ctx->member()));
  799|  4.69k|  int64_t obj_id = sf_->Id(ctx->op);
  800|  4.69k|  std::string message_name = ExtractQualifiedName(ctx, &target);
  801|  4.69k|  if (!message_name.empty()) {
  ------------------
  |  Branch (801:7): [True: 3.46k, False: 1.22k]
  ------------------
  802|  3.46k|    auto entries = std::any_cast<std::vector<Expr::CreateStruct::Entry>>(
  803|  3.46k|        visitFieldInitializerList(ctx->entries));
  804|  3.46k|    return sf_->NewObject(obj_id, message_name, entries);
  805|  3.46k|  } else {
  806|  1.22k|    return sf_->NewExpr(obj_id);
  807|  1.22k|  }
  808|  4.69k|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_113ParserVisitor20ExtractQualifiedNameEPN6antlr417ParserRuleContextEPKNS1_8v1alpha14ExprE:
 1087|  9.29k|                                                const Expr* e) {
 1088|  9.29k|  if (!e) {
  ------------------
  |  Branch (1088:7): [True: 0, False: 9.29k]
  ------------------
 1089|      0|    return "";
 1090|      0|  }
 1091|       |
 1092|  9.29k|  switch (e->expr_kind_case()) {
 1093|  3.46k|    case Expr::kIdentExpr:
  ------------------
  |  Branch (1093:5): [True: 3.46k, False: 5.82k]
  ------------------
 1094|  3.46k|      return e->ident_expr().name();
 1095|  4.60k|    case Expr::kSelectExpr: {
  ------------------
  |  Branch (1095:5): [True: 4.60k, False: 4.69k]
  ------------------
 1096|  4.60k|      auto& s = e->select_expr();
 1097|  4.60k|      std::string prefix = ExtractQualifiedName(ctx, &s.operand());
 1098|  4.60k|      if (!prefix.empty()) {
  ------------------
  |  Branch (1098:11): [True: 2.59k, False: 2.00k]
  ------------------
 1099|  2.59k|        return prefix + "." + s.field();
 1100|  2.59k|      }
 1101|  4.60k|    } break;
 1102|  2.00k|    default:
  ------------------
  |  Branch (1102:5): [True: 1.22k, False: 8.06k]
  ------------------
 1103|  1.22k|      break;
 1104|  9.29k|  }
 1105|  3.23k|  sf_->ReportError(sf_->GetSourceLocation(e->id()),
 1106|  3.23k|                   "expected a qualified name");
 1107|  3.23k|  return "";
 1108|  9.29k|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_113ParserVisitor22visitIdentOrGlobalCallEPN19cel_parser_internal9CelParser24IdentOrGlobalCallContextE:
  834|  1.10M|    CelParser::IdentOrGlobalCallContext* ctx) {
  835|  1.10M|  std::string ident_name;
  836|  1.10M|  if (ctx->leadingDot) {
  ------------------
  |  Branch (836:7): [True: 1.83k, False: 1.10M]
  ------------------
  837|  1.83k|    ident_name = ".";
  838|  1.83k|  }
  839|  1.10M|  if (!ctx->id) {
  ------------------
  |  Branch (839:7): [True: 209, False: 1.10M]
  ------------------
  840|    209|    return sf_->NewExpr(ctx);
  841|    209|  }
  842|  1.10M|  if (sf_->IsReserved(ctx->id->getText())) {
  ------------------
  |  Branch (842:7): [True: 534, False: 1.10M]
  ------------------
  843|    534|    return sf_->ReportError(
  844|    534|        ctx, absl::StrFormat("reserved identifier: %s", ctx->id->getText()));
  845|    534|  }
  846|       |  // check if ID is in reserved identifiers
  847|  1.10M|  ident_name += ctx->id->getText();
  848|  1.10M|  if (ctx->op) {
  ------------------
  |  Branch (848:7): [True: 2.22k, False: 1.09M]
  ------------------
  849|  2.22k|    int64_t op_id = sf_->Id(ctx->op);
  850|  2.22k|    return GlobalCallOrMacro(op_id, ident_name, visitList(ctx->args));
  851|  2.22k|  }
  852|  1.09M|  return sf_->NewIdent(ctx->id, ident_name);
  853|  1.10M|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_113ParserVisitor11visitNestedEPN19cel_parser_internal9CelParser13NestedContextE:
  855|  1.57k|antlrcpp::Any ParserVisitor::visitNested(CelParser::NestedContext* ctx) {
  856|  1.57k|  return visit(ctx->e);
  857|  1.57k|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_113ParserVisitor15visitCreateListEPN19cel_parser_internal9CelParser17CreateListContextE:
  860|  5.53k|    CelParser::CreateListContext* ctx) {
  861|  5.53k|  int64_t list_id = sf_->Id(ctx->op);
  862|  5.53k|  return sf_->NewList(list_id, visitList(ctx->elems));
  863|  5.53k|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_113ParserVisitor17visitCreateStructEPN19cel_parser_internal9CelParser19CreateStructContextE:
  876|   659k|    CelParser::CreateStructContext* ctx) {
  877|   659k|  int64_t struct_id = sf_->Id(ctx->op);
  878|   659k|  std::vector<Expr::CreateStruct::Entry> entries;
  879|   659k|  if (ctx->entries) {
  ------------------
  |  Branch (879:7): [True: 479k, False: 179k]
  ------------------
  880|   479k|    entries = std::any_cast<std::vector<Expr::CreateStruct::Entry>>(
  881|   479k|        visitMapInitializerList(ctx->entries));
  882|   479k|  }
  883|   659k|  return sf_->NewMap(struct_id, entries);
  884|   659k|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_113ParserVisitor20visitConstantLiteralEPN19cel_parser_internal9CelParser22ConstantLiteralContextE:
  887|  1.12M|    CelParser::ConstantLiteralContext* clctx) {
  888|  1.12M|  CelParser::LiteralContext* literal = clctx->literal();
  889|  1.12M|  if (auto* ctx = tree_as<CelParser::IntContext>(literal)) {
  ------------------
  |  Branch (889:13): [True: 596k, False: 525k]
  ------------------
  890|   596k|    return visitInt(ctx);
  891|   596k|  } else if (auto* ctx = tree_as<CelParser::UintContext>(literal)) {
  ------------------
  |  Branch (891:20): [True: 2.20k, False: 523k]
  ------------------
  892|  2.20k|    return visitUint(ctx);
  893|   523k|  } else if (auto* ctx = tree_as<CelParser::DoubleContext>(literal)) {
  ------------------
  |  Branch (893:20): [True: 19.9k, False: 503k]
  ------------------
  894|  19.9k|    return visitDouble(ctx);
  895|   503k|  } else if (auto* ctx = tree_as<CelParser::StringContext>(literal)) {
  ------------------
  |  Branch (895:20): [True: 497k, False: 5.58k]
  ------------------
  896|   497k|    return visitString(ctx);
  897|   497k|  } else if (auto* ctx = tree_as<CelParser::BytesContext>(literal)) {
  ------------------
  |  Branch (897:20): [True: 3.89k, False: 1.69k]
  ------------------
  898|  3.89k|    return visitBytes(ctx);
  899|  3.89k|  } else if (auto* ctx = tree_as<CelParser::BoolFalseContext>(literal)) {
  ------------------
  |  Branch (899:20): [True: 524, False: 1.17k]
  ------------------
  900|    524|    return visitBoolFalse(ctx);
  901|  1.17k|  } else if (auto* ctx = tree_as<CelParser::BoolTrueContext>(literal)) {
  ------------------
  |  Branch (901:20): [True: 353, False: 819]
  ------------------
  902|    353|    return visitBoolTrue(ctx);
  903|    819|  } else if (auto* ctx = tree_as<CelParser::NullContext>(literal)) {
  ------------------
  |  Branch (903:20): [True: 259, False: 560]
  ------------------
  904|    259|    return visitNull(ctx);
  905|    259|  }
  906|    560|  return sf_->ReportError(clctx, "invalid constant literal expression");
  907|  1.12M|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_17tree_asIN19cel_parser_internal9CelParser10IntContextEvEEPT_PN6antlr44tree9ParseTreeE:
  572|  1.12M|T* tree_as(antlr4::tree::ParseTree* tree) {
  573|  1.12M|  return dynamic_cast<T*>(tree);
  574|  1.12M|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_17tree_asIN19cel_parser_internal9CelParser11UintContextEvEEPT_PN6antlr44tree9ParseTreeE:
  572|   525k|T* tree_as(antlr4::tree::ParseTree* tree) {
  573|   525k|  return dynamic_cast<T*>(tree);
  574|   525k|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_17tree_asIN19cel_parser_internal9CelParser13DoubleContextEvEEPT_PN6antlr44tree9ParseTreeE:
  572|   523k|T* tree_as(antlr4::tree::ParseTree* tree) {
  573|   523k|  return dynamic_cast<T*>(tree);
  574|   523k|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_17tree_asIN19cel_parser_internal9CelParser13StringContextEvEEPT_PN6antlr44tree9ParseTreeE:
  572|   503k|T* tree_as(antlr4::tree::ParseTree* tree) {
  573|   503k|  return dynamic_cast<T*>(tree);
  574|   503k|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_17tree_asIN19cel_parser_internal9CelParser12BytesContextEvEEPT_PN6antlr44tree9ParseTreeE:
  572|  5.58k|T* tree_as(antlr4::tree::ParseTree* tree) {
  573|  5.58k|  return dynamic_cast<T*>(tree);
  574|  5.58k|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_17tree_asIN19cel_parser_internal9CelParser16BoolFalseContextEvEEPT_PN6antlr44tree9ParseTreeE:
  572|  1.69k|T* tree_as(antlr4::tree::ParseTree* tree) {
  573|  1.69k|  return dynamic_cast<T*>(tree);
  574|  1.69k|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_17tree_asIN19cel_parser_internal9CelParser15BoolTrueContextEvEEPT_PN6antlr44tree9ParseTreeE:
  572|  1.17k|T* tree_as(antlr4::tree::ParseTree* tree) {
  573|  1.17k|  return dynamic_cast<T*>(tree);
  574|  1.17k|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_17tree_asIN19cel_parser_internal9CelParser11NullContextEvEEPT_PN6antlr44tree9ParseTreeE:
  572|    819|T* tree_as(antlr4::tree::ParseTree* tree) {
  573|    819|  return dynamic_cast<T*>(tree);
  574|    819|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_113ParserVisitor25visitFieldInitializerListEPN19cel_parser_internal9CelParser27FieldInitializerListContextE:
  811|  3.46k|    CelParser::FieldInitializerListContext* ctx) {
  812|  3.46k|  std::vector<Expr::CreateStruct::Entry> res;
  813|  3.46k|  if (!ctx || ctx->fields.empty()) {
  ------------------
  |  Branch (813:7): [True: 2.78k, False: 685]
  |  Branch (813:15): [True: 0, False: 685]
  ------------------
  814|  2.78k|    return res;
  815|  2.78k|  }
  816|       |
  817|    685|  res.resize(ctx->fields.size());
  818|  3.87k|  for (size_t i = 0; i < ctx->fields.size(); ++i) {
  ------------------
  |  Branch (818:22): [True: 3.33k, False: 546]
  ------------------
  819|  3.33k|    if (i >= ctx->cols.size() || i >= ctx->values.size()) {
  ------------------
  |  Branch (819:9): [True: 139, False: 3.19k]
  |  Branch (819:34): [True: 0, False: 3.19k]
  ------------------
  820|       |      // This is the result of a syntax error detected elsewhere.
  821|    139|      return res;
  822|    139|    }
  823|  3.19k|    const auto& f = ctx->fields[i];
  824|  3.19k|    int64_t init_id = sf_->Id(ctx->cols[i]);
  825|  3.19k|    auto value = std::any_cast<Expr>(visit(ctx->values[i]));
  826|  3.19k|    auto field = sf_->NewObjectField(init_id, f->getText(), value);
  827|  3.19k|    res[i] = field;
  828|  3.19k|  }
  829|       |
  830|    546|  return res;
  831|    685|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_113ParserVisitor23visitMapInitializerListEPN19cel_parser_internal9CelParser25MapInitializerListContextE:
  910|   479k|    CelParser::MapInitializerListContext* ctx) {
  911|   479k|  std::vector<Expr::CreateStruct::Entry> res;
  912|   479k|  if (!ctx || ctx->keys.empty()) {
  ------------------
  |  Branch (912:7): [True: 0, False: 479k]
  |  Branch (912:15): [True: 0, False: 479k]
  ------------------
  913|      0|    return res;
  914|      0|  }
  915|       |
  916|   479k|  res.resize(ctx->cols.size());
  917|   971k|  for (size_t i = 0; i < ctx->cols.size(); ++i) {
  ------------------
  |  Branch (917:22): [True: 492k, False: 479k]
  ------------------
  918|   492k|    int64_t col_id = sf_->Id(ctx->cols[i]);
  919|   492k|    auto key = std::any_cast<Expr>(visit(ctx->keys[i]));
  920|   492k|    auto value = std::any_cast<Expr>(visit(ctx->values[i]));
  921|   492k|    res[i] = sf_->NewMapEntry(col_id, key, value);
  922|   492k|  }
  923|   479k|  return res;
  924|   479k|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_113ParserVisitor8visitIntEPN19cel_parser_internal9CelParser10IntContextE:
  926|   596k|antlrcpp::Any ParserVisitor::visitInt(CelParser::IntContext* ctx) {
  927|   596k|  std::string value;
  928|   596k|  if (ctx->sign) {
  ------------------
  |  Branch (928:7): [True: 7.42k, False: 589k]
  ------------------
  929|  7.42k|    value = ctx->sign->getText();
  930|  7.42k|  }
  931|   596k|  value += ctx->tok->getText();
  932|   596k|  int64_t int_value;
  933|   596k|  if (absl::StartsWith(ctx->tok->getText(), "0x")) {
  ------------------
  |  Branch (933:7): [True: 719, False: 595k]
  ------------------
  934|    719|    if (absl::SimpleHexAtoi(value, &int_value)) {
  ------------------
  |  Branch (934:9): [True: 475, False: 244]
  ------------------
  935|    475|      return sf_->NewLiteralInt(ctx, int_value);
  936|    475|    } else {
  937|    244|      return sf_->ReportError(ctx, "invalid hex int literal");
  938|    244|    }
  939|    719|  }
  940|   595k|  if (absl::SimpleAtoi(value, &int_value)) {
  ------------------
  |  Branch (940:7): [True: 593k, False: 2.30k]
  ------------------
  941|   593k|    return sf_->NewLiteralInt(ctx, int_value);
  942|   593k|  } else {
  943|  2.30k|    return sf_->ReportError(ctx, "invalid int literal");
  944|  2.30k|  }
  945|   595k|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_113ParserVisitor9visitUintEPN19cel_parser_internal9CelParser11UintContextE:
  947|  2.20k|antlrcpp::Any ParserVisitor::visitUint(CelParser::UintContext* ctx) {
  948|  2.20k|  std::string value = ctx->tok->getText();
  949|       |  // trim the 'u' designator included in the uint literal.
  950|  2.20k|  if (!value.empty()) {
  ------------------
  |  Branch (950:7): [True: 2.20k, False: 0]
  ------------------
  951|  2.20k|    value.resize(value.size() - 1);
  952|  2.20k|  }
  953|  2.20k|  uint64_t uint_value;
  954|  2.20k|  if (absl::StartsWith(ctx->tok->getText(), "0x")) {
  ------------------
  |  Branch (954:7): [True: 527, False: 1.67k]
  ------------------
  955|    527|    if (absl::SimpleHexAtoi(value, &uint_value)) {
  ------------------
  |  Branch (955:9): [True: 176, False: 351]
  ------------------
  956|    176|      return sf_->NewLiteralUint(ctx, uint_value);
  957|    351|    } else {
  958|    351|      return sf_->ReportError(ctx, "invalid hex uint literal");
  959|    351|    }
  960|    527|  }
  961|  1.67k|  if (absl::SimpleAtoi(value, &uint_value)) {
  ------------------
  |  Branch (961:7): [True: 867, False: 811]
  ------------------
  962|    867|    return sf_->NewLiteralUint(ctx, uint_value);
  963|    867|  } else {
  964|    811|    return sf_->ReportError(ctx, "invalid uint literal");
  965|    811|  }
  966|  1.67k|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_113ParserVisitor11visitDoubleEPN19cel_parser_internal9CelParser13DoubleContextE:
  968|  19.9k|antlrcpp::Any ParserVisitor::visitDouble(CelParser::DoubleContext* ctx) {
  969|  19.9k|  std::string value;
  970|  19.9k|  if (ctx->sign) {
  ------------------
  |  Branch (970:7): [True: 1.24k, False: 18.6k]
  ------------------
  971|  1.24k|    value = ctx->sign->getText();
  972|  1.24k|  }
  973|  19.9k|  value += ctx->tok->getText();
  974|  19.9k|  double double_value;
  975|  19.9k|  if (absl::SimpleAtod(value, &double_value)) {
  ------------------
  |  Branch (975:7): [True: 19.9k, False: 0]
  ------------------
  976|  19.9k|    return sf_->NewLiteralDouble(ctx, double_value);
  977|  19.9k|  } else {
  978|      0|    return sf_->ReportError(ctx, "invalid double literal");
  979|      0|  }
  980|  19.9k|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_113ParserVisitor11visitStringEPN19cel_parser_internal9CelParser13StringContextE:
  982|   497k|antlrcpp::Any ParserVisitor::visitString(CelParser::StringContext* ctx) {
  983|   497k|  auto status_or_value = cel::internal::ParseStringLiteral(ctx->tok->getText());
  984|   497k|  if (!status_or_value.ok()) {
  ------------------
  |  Branch (984:7): [True: 3.75k, False: 493k]
  ------------------
  985|  3.75k|    return sf_->ReportError(ctx, status_or_value.status().message());
  986|  3.75k|  }
  987|   493k|  return sf_->NewLiteralString(ctx, status_or_value.value());
  988|   497k|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_113ParserVisitor10visitBytesEPN19cel_parser_internal9CelParser12BytesContextE:
  990|  3.89k|antlrcpp::Any ParserVisitor::visitBytes(CelParser::BytesContext* ctx) {
  991|  3.89k|  auto status_or_value = cel::internal::ParseBytesLiteral(ctx->tok->getText());
  992|  3.89k|  if (!status_or_value.ok()) {
  ------------------
  |  Branch (992:7): [True: 1.59k, False: 2.29k]
  ------------------
  993|  1.59k|    return sf_->ReportError(ctx, status_or_value.status().message());
  994|  1.59k|  }
  995|  2.29k|  return sf_->NewLiteralBytes(ctx, status_or_value.value());
  996|  3.89k|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_113ParserVisitor13visitBoolTrueEPN19cel_parser_internal9CelParser15BoolTrueContextE:
  998|    353|antlrcpp::Any ParserVisitor::visitBoolTrue(CelParser::BoolTrueContext* ctx) {
  999|    353|  return sf_->NewLiteralBool(ctx, true);
 1000|    353|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_113ParserVisitor14visitBoolFalseEPN19cel_parser_internal9CelParser16BoolFalseContextE:
 1002|    524|antlrcpp::Any ParserVisitor::visitBoolFalse(CelParser::BoolFalseContext* ctx) {
 1003|    524|  return sf_->NewLiteralBool(ctx, false);
 1004|    524|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_113ParserVisitor9visitNullEPN19cel_parser_internal9CelParser11NullContextE:
 1006|    259|antlrcpp::Any ParserVisitor::visitNull(CelParser::NullContext* ctx) {
 1007|    259|  return sf_->NewLiteralNull(ctx);
 1008|    259|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_113ParserVisitor11syntaxErrorEPN6antlr410RecognizerEPNS5_5TokenEmmRKNSt3__112basic_stringIcNSA_11char_traitsIcEENSA_9allocatorIcEEEESt13exception_ptr:
 1021|  1.97M|                                std::exception_ptr e) {
 1022|  1.97M|  sf_->ReportError(line, col, "Syntax error: " + msg);
 1023|  1.97M|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_113ParserVisitor5visitEPN6antlr44tree9ParseTreeE:
  576|  14.2M|antlrcpp::Any ParserVisitor::visit(antlr4::tree::ParseTree* tree) {
  577|  14.2M|  ScopedIncrement inc(recursion_depth_);
  578|  14.2M|  if (recursion_depth_ > max_recursion_depth_) {
  ------------------
  |  Branch (578:7): [True: 1.01k, False: 14.2M]
  ------------------
  579|  1.01k|    return sf_->ReportError(
  580|  1.01k|        SourceFactory::NoLocation(),
  581|  1.01k|        absl::StrFormat("Exceeded max recursion depth of %d when parsing.",
  582|  1.01k|                        max_recursion_depth_));
  583|  1.01k|  }
  584|  14.2M|  if (auto* ctx = tree_as<CelParser::StartContext>(tree)) {
  ------------------
  |  Branch (584:13): [True: 8.59k, False: 14.1M]
  ------------------
  585|  8.59k|    return visitStart(ctx);
  586|  14.1M|  } else if (auto* ctx = tree_as<CelParser::ExprContext>(tree)) {
  ------------------
  |  Branch (586:20): [True: 1.00M, False: 13.1M]
  ------------------
  587|  1.00M|    return visitExpr(ctx);
  588|  13.1M|  } else if (auto* ctx = tree_as<CelParser::ConditionalAndContext>(tree)) {
  ------------------
  |  Branch (588:20): [True: 2.23M, False: 10.9M]
  ------------------
  589|  2.23M|    return visitConditionalAnd(ctx);
  590|  10.9M|  } else if (auto* ctx = tree_as<CelParser::ConditionalOrContext>(tree)) {
  ------------------
  |  Branch (590:20): [True: 2.14M, False: 8.80M]
  ------------------
  591|  2.14M|    return visitConditionalOr(ctx);
  592|  8.80M|  } else if (auto* ctx = tree_as<CelParser::RelationContext>(tree)) {
  ------------------
  |  Branch (592:20): [True: 2.31M, False: 6.49M]
  ------------------
  593|  2.31M|    return visitRelation(ctx);
  594|  6.49M|  } else if (auto* ctx = tree_as<CelParser::CalcContext>(tree)) {
  ------------------
  |  Branch (594:20): [True: 3.50M, False: 2.98M]
  ------------------
  595|  3.50M|    return visitCalc(ctx);
  596|  3.50M|  } else if (auto* ctx = tree_as<CelParser::LogicalNotContext>(tree)) {
  ------------------
  |  Branch (596:20): [True: 3.00k, False: 2.98M]
  ------------------
  597|  3.00k|    return visitLogicalNot(ctx);
  598|  2.98M|  } else if (auto* ctx = tree_as<CelParser::PrimaryExprContext>(tree)) {
  ------------------
  |  Branch (598:20): [True: 73.5k, False: 2.91M]
  ------------------
  599|  73.5k|    return visitPrimaryExpr(ctx);
  600|  2.91M|  } else if (auto* ctx = tree_as<CelParser::MemberExprContext>(tree)) {
  ------------------
  |  Branch (600:20): [True: 2.83M, False: 80.9k]
  ------------------
  601|  2.83M|    return visitMemberExpr(ctx);
  602|  2.83M|  } else if (auto* ctx = tree_as<CelParser::SelectOrCallContext>(tree)) {
  ------------------
  |  Branch (602:20): [True: 7.19k, False: 73.7k]
  ------------------
  603|  7.19k|    return visitSelectOrCall(ctx);
  604|  73.7k|  } else if (auto* ctx = tree_as<CelParser::MapInitializerListContext>(tree)) {
  ------------------
  |  Branch (604:20): [True: 0, False: 73.7k]
  ------------------
  605|      0|    return visitMapInitializerList(ctx);
  606|  73.7k|  } else if (auto* ctx = tree_as<CelParser::NegateContext>(tree)) {
  ------------------
  |  Branch (606:20): [True: 57.8k, False: 15.9k]
  ------------------
  607|  57.8k|    return visitNegate(ctx);
  608|  57.8k|  } else if (auto* ctx = tree_as<CelParser::IndexContext>(tree)) {
  ------------------
  |  Branch (608:20): [True: 4.26k, False: 11.6k]
  ------------------
  609|  4.26k|    return visitIndex(ctx);
  610|  11.6k|  } else if (auto* ctx = tree_as<CelParser::UnaryContext>(tree)) {
  ------------------
  |  Branch (610:20): [True: 9.78k, False: 1.88k]
  ------------------
  611|  9.78k|    return visitUnary(ctx);
  612|  9.78k|  } else if (auto* ctx = tree_as<CelParser::CreateListContext>(tree)) {
  ------------------
  |  Branch (612:20): [True: 0, False: 1.88k]
  ------------------
  613|      0|    return visitCreateList(ctx);
  614|  1.88k|  } else if (auto* ctx = tree_as<CelParser::CreateMessageContext>(tree)) {
  ------------------
  |  Branch (614:20): [True: 1.08k, False: 801]
  ------------------
  615|  1.08k|    return visitCreateMessage(ctx);
  616|  1.08k|  } else if (auto* ctx = tree_as<CelParser::CreateStructContext>(tree)) {
  ------------------
  |  Branch (616:20): [True: 0, False: 801]
  ------------------
  617|      0|    return visitCreateStruct(ctx);
  618|      0|  }
  619|       |
  620|    801|  if (tree) {
  ------------------
  |  Branch (620:7): [True: 0, False: 801]
  ------------------
  621|      0|    return sf_->ReportError(tree_as<antlr4::ParserRuleContext>(tree),
  622|      0|                            "unknown parsetree type");
  623|      0|  }
  624|    801|  return sf_->ReportError(SourceFactory::NoLocation(), "<<nil>> parsetree");
  625|    801|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_115ScopedIncrementC2ERi:
  389|  14.2M|      : recursion_depth_(recursion_depth) {
  390|  14.2M|    ++recursion_depth_;
  391|  14.2M|  }
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_17tree_asIN19cel_parser_internal9CelParser12StartContextEvEEPT_PN6antlr44tree9ParseTreeE:
  572|  14.2M|T* tree_as(antlr4::tree::ParseTree* tree) {
  573|  14.2M|  return dynamic_cast<T*>(tree);
  574|  14.2M|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_17tree_asIN19cel_parser_internal9CelParser11ExprContextEvEEPT_PN6antlr44tree9ParseTreeE:
  572|  14.1M|T* tree_as(antlr4::tree::ParseTree* tree) {
  573|  14.1M|  return dynamic_cast<T*>(tree);
  574|  14.1M|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_17tree_asIN19cel_parser_internal9CelParser21ConditionalAndContextEvEEPT_PN6antlr44tree9ParseTreeE:
  572|  13.1M|T* tree_as(antlr4::tree::ParseTree* tree) {
  573|  13.1M|  return dynamic_cast<T*>(tree);
  574|  13.1M|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_17tree_asIN19cel_parser_internal9CelParser20ConditionalOrContextEvEEPT_PN6antlr44tree9ParseTreeE:
  572|  10.9M|T* tree_as(antlr4::tree::ParseTree* tree) {
  573|  10.9M|  return dynamic_cast<T*>(tree);
  574|  10.9M|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_17tree_asIN19cel_parser_internal9CelParser15RelationContextEvEEPT_PN6antlr44tree9ParseTreeE:
  572|  8.80M|T* tree_as(antlr4::tree::ParseTree* tree) {
  573|  8.80M|  return dynamic_cast<T*>(tree);
  574|  8.80M|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_17tree_asIN19cel_parser_internal9CelParser11CalcContextEvEEPT_PN6antlr44tree9ParseTreeE:
  572|  6.49M|T* tree_as(antlr4::tree::ParseTree* tree) {
  573|  6.49M|  return dynamic_cast<T*>(tree);
  574|  6.49M|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_17tree_asIN19cel_parser_internal9CelParser17LogicalNotContextEvEEPT_PN6antlr44tree9ParseTreeE:
  572|  2.98M|T* tree_as(antlr4::tree::ParseTree* tree) {
  573|  2.98M|  return dynamic_cast<T*>(tree);
  574|  2.98M|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_17tree_asIN19cel_parser_internal9CelParser17MemberExprContextEvEEPT_PN6antlr44tree9ParseTreeE:
  572|  2.91M|T* tree_as(antlr4::tree::ParseTree* tree) {
  573|  2.91M|  return dynamic_cast<T*>(tree);
  574|  2.91M|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_17tree_asIN19cel_parser_internal9CelParser25MapInitializerListContextEvEEPT_PN6antlr44tree9ParseTreeE:
  572|  73.7k|T* tree_as(antlr4::tree::ParseTree* tree) {
  573|  73.7k|  return dynamic_cast<T*>(tree);
  574|  73.7k|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_17tree_asIN19cel_parser_internal9CelParser13NegateContextEvEEPT_PN6antlr44tree9ParseTreeE:
  572|  73.7k|T* tree_as(antlr4::tree::ParseTree* tree) {
  573|  73.7k|  return dynamic_cast<T*>(tree);
  574|  73.7k|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_17tree_asIN19cel_parser_internal9CelParser12UnaryContextEvEEPT_PN6antlr44tree9ParseTreeE:
  572|  11.6k|T* tree_as(antlr4::tree::ParseTree* tree) {
  573|  11.6k|  return dynamic_cast<T*>(tree);
  574|  11.6k|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_113ParserVisitor10visitUnaryEPN19cel_parser_internal9CelParser12UnaryContextE:
  751|  9.78k|antlrcpp::Any ParserVisitor::visitUnary(CelParser::UnaryContext* ctx) {
  752|  9.78k|  return sf_->NewLiteralString(ctx, "<<error>>");
  753|  9.78k|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_115ScopedIncrementD2Ev:
  393|  14.2M|  ~ScopedIncrement() { --recursion_depth_; }
parser.cc:_ZNK6google3api4expr6parser12_GLOBAL__N_113ParserVisitor10HasErroredEv:
 1025|  9.21k|bool ParserVisitor::HasErrored() const { return !sf_->errors().empty(); }
parser.cc:_ZNK6google3api4expr6parser12_GLOBAL__N_113ParserVisitor12ErrorMessageEv:
 1027|  6.71k|std::string ParserVisitor::ErrorMessage() const {
 1028|  6.71k|  return sf_->ErrorMessage(description_, expression_);
 1029|  6.71k|}
parser.cc:_ZNK6google3api4expr6parser12_GLOBAL__N_113ParserVisitor20enriched_source_infoEv:
 1014|  2.50k|EnrichedSourceInfo ParserVisitor::enriched_source_info() const {
 1015|  2.50k|  return sf_->enriched_source_info();
 1016|  2.50k|}
parser.cc:_ZNK6google3api4expr6parser12_GLOBAL__N_113ParserVisitor11source_infoEv:
 1010|  2.50k|google::api::expr::v1alpha1::SourceInfo ParserVisitor::source_info() const {
 1011|  2.50k|  return sf_->source_info();
 1012|  2.50k|}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_113ParserVisitorD2Ev:
  568|  9.21k|ParserVisitor::~ParserVisitor() {}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_126RecoveryLimitErrorStrategyC2Eii:
 1169|  9.21k|        recovery_token_lookahead_limit_(recovery_token_lookahead_limit) {}
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_126RecoveryLimitErrorStrategy13recoverInlineEPN6antlr46ParserE:
 1176|  28.9k|  Token* recoverInline(Parser* recognizer) override {
 1177|  28.9k|    checkRecoveryLimit(recognizer);
 1178|  28.9k|    return DefaultErrorStrategy::recoverInline(recognizer);
 1179|  28.9k|  }
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_126RecoveryLimitErrorStrategy18checkRecoveryLimitEPN6antlr46ParserE:
 1210|  61.9k|  void checkRecoveryLimit(Parser* recognizer) {
 1211|  61.9k|    if (recovery_attempts_++ >= recovery_limit_) {
  ------------------
  |  Branch (1211:9): [True: 615, False: 61.3k]
  ------------------
 1212|    615|      std::string too_many_errors =
 1213|    615|          absl::StrFormat("More than %d parse errors.", recovery_limit_);
 1214|    615|      recognizer->notifyErrorListeners(too_many_errors);
 1215|    615|      throw ParseCancellationException(too_many_errors);
 1216|    615|    }
 1217|  61.9k|  }
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_126RecoveryLimitErrorStrategy7recoverEPN6antlr46ParserESt13exception_ptr:
 1171|  33.0k|  void recover(Parser* recognizer, std::exception_ptr e) override {
 1172|  33.0k|    checkRecoveryLimit(recognizer);
 1173|  33.0k|    DefaultErrorStrategy::recover(recognizer, e);
 1174|  33.0k|  }
parser.cc:_ZNK6google3api4expr6parser12_GLOBAL__N_126RecoveryLimitErrorStrategy16escapeWSAndQuoteERKNSt3__112basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEE:
 1201|  45.8k|  std::string escapeWSAndQuote(const std::string& s) const override {
 1202|  45.8k|    std::string result;
 1203|  45.8k|    result.reserve(s.size() + 2);
 1204|  45.8k|    absl::StrAppend(&result, kSingleQuote, s, kSingleQuote);
 1205|  45.8k|    absl::StrReplaceAll(kStandardReplacements, &result);
 1206|  45.8k|    return result;
 1207|  45.8k|  }
parser.cc:_ZN6google3api4expr6parser12_GLOBAL__N_126RecoveryLimitErrorStrategy12consumeUntilEPN6antlr46ParserERKNS5_4misc11IntervalSetE:
 1186|  37.0k|  void consumeUntil(Parser* recognizer, const IntervalSet& set) override {
 1187|  37.0k|    size_t ttype = recognizer->getInputStream()->LA(1);
 1188|  37.0k|    int recovery_search_depth = 0;
 1189|   161k|    while (ttype != Token::EOF && !set.contains(ttype) &&
  ------------------
  |  Branch (1189:12): [True: 144k, False: 16.4k]
  |  Branch (1189:35): [True: 124k, False: 20.4k]
  ------------------
 1190|   161k|           recovery_search_depth++ < recovery_token_lookahead_limit_) {
  ------------------
  |  Branch (1190:12): [True: 124k, False: 139]
  ------------------
 1191|   124k|      recognizer->consume();
 1192|   124k|      ttype = recognizer->getInputStream()->LA(1);
 1193|   124k|    }
 1194|       |    // Halt all parsing if the lookahead limit is reached during error recovery.
 1195|  37.0k|    if (recovery_search_depth == recovery_token_lookahead_limit_) {
  ------------------
  |  Branch (1195:9): [True: 3, False: 37.0k]
  ------------------
 1196|      3|      throw ParseCancellationException("Unable to find a recovery token");
 1197|      3|    }
 1198|  37.0k|  }

_ZN6google3api4expr6parser17VerboseParsedExprC2ENS1_8v1alpha110ParsedExprENS2_18EnrichedSourceInfoE:
   32|  2.50k|        enriched_source_info_(std::move(enriched_source_info)) {}
_ZNK6google3api4expr6parser17VerboseParsedExpr11parsed_exprEv:
   34|  2.50k|  const google::api::expr::v1alpha1::ParsedExpr& parsed_expr() const {
   35|  2.50k|    return parsed_expr_;
   36|  2.50k|  }

_ZN6google3api4expr6parser13SourceFactoryC2ENSt3__117basic_string_viewIcNS4_11char_traitsIcEEEE:
   47|  9.21k|    : next_id_(1), num_errors_(0) {
   48|  9.21k|  CalcLineOffsets(expression);
   49|  9.21k|}
_ZN6google3api4expr6parser13SourceFactory2IdEPKN6antlr45TokenE:
   51|  4.23M|int64_t SourceFactory::Id(const antlr4::Token* token) {
   52|  4.23M|  int64_t new_id = next_id_;
   53|  4.23M|  positions_.emplace(
   54|  4.23M|      new_id, SourceLocation{
   55|  4.23M|                  static_cast<int32_t>(token->getLine()),
   56|  4.23M|                  static_cast<int32_t>(token->getCharPositionInLine()),
   57|  4.23M|                  static_cast<int32_t>(token->getStopIndex()), line_offsets_});
   58|  4.23M|  next_id_ += 1;
   59|  4.23M|  return new_id;
   60|  4.23M|}
_ZNK6google3api4expr6parser13SourceFactory17GetSourceLocationEl:
   63|  32.2k|    int64_t id) const {
   64|  32.2k|  return positions_.at(id);
   65|  32.2k|}
_ZN6google3api4expr6parser13SourceFactory10NoLocationEv:
   67|  1.81k|const SourceFactory::SourceLocation SourceFactory::NoLocation() {
   68|  1.81k|  return SourceLocation(-1, -1, -1, {});
   69|  1.81k|}
_ZN6google3api4expr6parser13SourceFactory2IdEPN6antlr417ParserRuleContextE:
   71|  1.13M|int64_t SourceFactory::Id(antlr4::ParserRuleContext* ctx) {
   72|  1.13M|  return Id(ctx->getStart());
   73|  1.13M|}
_ZN6google3api4expr6parser13SourceFactory2IdERKNS3_14SourceLocationE:
   75|  2.00M|int64_t SourceFactory::Id(const SourceLocation& location) {
   76|  2.00M|  int64_t new_id = next_id_;
   77|  2.00M|  positions_.emplace(new_id, location);
   78|  2.00M|  next_id_ += 1;
   79|  2.00M|  return new_id;
   80|  2.00M|}
_ZN6google3api4expr6parser13SourceFactory11NextMacroIdEl:
   82|  27.7k|int64_t SourceFactory::NextMacroId(int64_t macro_id) {
   83|  27.7k|  return Id(GetSourceLocation(macro_id));
   84|  27.7k|}
_ZN6google3api4expr6parser13SourceFactory7NewExprEl:
   86|  5.74M|Expr SourceFactory::NewExpr(int64_t id) {
   87|  5.74M|  Expr expr;
   88|  5.74M|  expr.set_id(id);
   89|  5.74M|  return expr;
   90|  5.74M|}
_ZN6google3api4expr6parser13SourceFactory7NewExprEPN6antlr417ParserRuleContextE:
   92|  1.12M|Expr SourceFactory::NewExpr(antlr4::ParserRuleContext* ctx) {
   93|  1.12M|  return NewExpr(Id(ctx));
   94|  1.12M|}
_ZN6google3api4expr6parser13SourceFactory7NewExprEPKN6antlr45TokenE:
   96|  1.10M|Expr SourceFactory::NewExpr(const antlr4::Token* token) {
   97|  1.10M|  return NewExpr(Id(token));
   98|  1.10M|}
_ZN6google3api4expr6parser13SourceFactory13NewGlobalCallElRKNSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEERKNS4_6vectorINS1_8v1alpha14ExprENS8_ISF_EEEE:
  101|   827k|                                  const std::vector<Expr>& args) {
  102|   827k|  Expr expr = NewExpr(id);
  103|   827k|  auto call_expr = expr.mutable_call_expr();
  104|   827k|  call_expr->set_function(function);
  105|   827k|  std::for_each(args.begin(), args.end(),
  106|   827k|                [&call_expr](const Expr& e) { *call_expr->add_args() = e; });
  107|   827k|  return expr;
  108|   827k|}
_ZN6google3api4expr6parser13SourceFactory21NewGlobalCallForMacroElRKNSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEERKNS4_6vectorINS1_8v1alpha14ExprENS8_ISF_EEEE:
  112|  7.87k|                                          const std::vector<Expr>& args) {
  113|  7.87k|  return NewGlobalCall(NextMacroId(macro_id), function, args);
  114|  7.87k|}
_ZN6google3api4expr6parser13SourceFactory15NewReceiverCallElRKNSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEERKNS1_8v1alpha14ExprERKNS4_6vectorISE_NS8_ISE_EEEE:
  118|  2.96k|                                    const std::vector<Expr>& args) {
  119|  2.96k|  Expr expr = NewExpr(id);
  120|  2.96k|  auto call_expr = expr.mutable_call_expr();
  121|  2.96k|  call_expr->set_function(function);
  122|  2.96k|  *call_expr->mutable_target() = target;
  123|  2.96k|  std::for_each(args.begin(), args.end(),
  124|  2.96k|                [&call_expr](const Expr& e) { *call_expr->add_args() = e; });
  125|  2.96k|  return expr;
  126|  2.96k|}
_ZN6google3api4expr6parser13SourceFactory8NewIdentEPKN6antlr45TokenERKNSt3__112basic_stringIcNS8_11char_traitsIcEENS8_9allocatorIcEEEE:
  129|  1.09M|                             const std::string& ident_name) {
  130|  1.09M|  Expr expr = NewExpr(token);
  131|  1.09M|  expr.mutable_ident_expr()->set_name(ident_name);
  132|  1.09M|  return expr;
  133|  1.09M|}
_ZN6google3api4expr6parser13SourceFactory16NewIdentForMacroElRKNSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEE:
  136|  7.18k|                                     const std::string& ident_name) {
  137|  7.18k|  Expr expr = NewExpr(NextMacroId(macro_id));
  138|  7.18k|  expr.mutable_ident_expr()->set_name(ident_name);
  139|  7.18k|  return expr;
  140|  7.18k|}
_ZN6google3api4expr6parser13SourceFactory9NewSelectEPN19cel_parser_internal9CelParser19SelectOrCallContextERNS1_8v1alpha14ExprERKNSt3__112basic_stringIcNSB_11char_traitsIcEENSB_9allocatorIcEEEE:
  144|  8.66k|    const std::string& field) {
  145|  8.66k|  Expr expr = NewExpr(ctx->op);
  146|  8.66k|  auto select_expr = expr.mutable_select_expr();
  147|  8.66k|  *select_expr->mutable_operand() = operand;
  148|  8.66k|  select_expr->set_field(field);
  149|  8.66k|  return expr;
  150|  8.66k|}
_ZN6google3api4expr6parser13SourceFactory23NewPresenceTestForMacroElRKNS1_8v1alpha14ExprERKNSt3__112basic_stringIcNS8_11char_traitsIcEENS8_9allocatorIcEEEE:
  163|    379|                                            const std::string& field) {
  164|    379|  Expr expr = NewExpr(NextMacroId(macro_id));
  165|    379|  auto select_expr = expr.mutable_select_expr();
  166|    379|  *select_expr->mutable_operand() = operand;
  167|    379|  select_expr->set_field(field);
  168|    379|  select_expr->set_test_only(true);
  169|    379|  return expr;
  170|    379|}
_ZN6google3api4expr6parser13SourceFactory9NewObjectElRKNSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEERKNS4_6vectorINS1_8v1alpha123Expr_CreateStruct_EntryENS8_ISF_EEEE:
  174|  3.46k|    const std::vector<Expr::CreateStruct::Entry>& entries) {
  175|  3.46k|  auto expr = NewExpr(obj_id);
  176|  3.46k|  auto struct_expr = expr.mutable_struct_expr();
  177|  3.46k|  struct_expr->set_message_name(type_name);
  178|  3.46k|  std::for_each(entries.begin(), entries.end(),
  179|  3.46k|                [struct_expr](const Expr::CreateStruct::Entry& e) {
  180|  3.46k|                  struct_expr->add_entries()->CopyFrom(e);
  181|  3.46k|                });
  182|  3.46k|  return expr;
  183|  3.46k|}
_ZN6google3api4expr6parser13SourceFactory14NewObjectFieldElRKNSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEERKNS1_8v1alpha14ExprE:
  186|  3.19k|    int64_t field_id, const std::string& field, const Expr& value) {
  187|  3.19k|  Expr::CreateStruct::Entry entry;
  188|  3.19k|  entry.set_id(field_id);
  189|  3.19k|  entry.set_field_key(field);
  190|  3.19k|  *entry.mutable_value() = value;
  191|  3.19k|  return entry;
  192|  3.19k|}
_ZN6google3api4expr6parser13SourceFactory16NewComprehensionElRKNSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEERKNS1_8v1alpha14ExprESC_SG_SG_SG_SG_:
  199|  3.66k|                                     const Expr& result) {
  200|  3.66k|  Expr expr = NewExpr(id);
  201|  3.66k|  auto comp_expr = expr.mutable_comprehension_expr();
  202|  3.66k|  comp_expr->set_iter_var(iter_var);
  203|  3.66k|  *comp_expr->mutable_iter_range() = iter_range;
  204|  3.66k|  comp_expr->set_accu_var(accu_var);
  205|  3.66k|  *comp_expr->mutable_accu_init() = accu_init;
  206|  3.66k|  *comp_expr->mutable_loop_condition() = condition;
  207|  3.66k|  *comp_expr->mutable_loop_step() = step;
  208|  3.66k|  *comp_expr->mutable_result() = result;
  209|  3.66k|  return expr;
  210|  3.66k|}
_ZN6google3api4expr6parser13SourceFactory12FoldForMacroElRKNSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEERKNS1_8v1alpha14ExprESC_SG_SG_SG_SG_:
  216|  3.66k|                                 const Expr& step, const Expr& result) {
  217|  3.66k|  return NewComprehension(NextMacroId(macro_id), iter_var, iter_range, accu_var,
  218|  3.66k|                          accu_init, condition, step, result);
  219|  3.66k|}
_ZN6google3api4expr6parser13SourceFactory7NewListElRKNSt3__16vectorINS1_8v1alpha14ExprENS4_9allocatorIS7_EEEE:
  221|  9.33k|Expr SourceFactory::NewList(int64_t list_id, const std::vector<Expr>& elems) {
  222|  9.33k|  auto expr = NewExpr(list_id);
  223|  9.33k|  auto list_expr = expr.mutable_list_expr();
  224|  9.33k|  std::for_each(elems.begin(), elems.end(),
  225|  9.33k|                [list_expr](const Expr& e) { *list_expr->add_elements() = e; });
  226|  9.33k|  return expr;
  227|  9.33k|}
_ZN6google3api4expr6parser13SourceFactory25NewQuantifierExprForMacroENS3_14QuantifierKindElRKNS1_8v1alpha14ExprERKNSt3__16vectorIS6_NS9_9allocatorIS6_EEEE:
  231|  2.24k|    const std::vector<Expr>& args) {
  232|  2.24k|  if (args.empty()) {
  ------------------
  |  Branch (232:7): [True: 0, False: 2.24k]
  ------------------
  233|      0|    return Expr();
  234|      0|  }
  235|  2.24k|  if (!args[0].has_ident_expr()) {
  ------------------
  |  Branch (235:7): [True: 485, False: 1.76k]
  ------------------
  236|    485|    auto loc = GetSourceLocation(args[0].id());
  237|    485|    return ReportError(loc, "argument must be a simple name");
  238|    485|  }
  239|  1.76k|  std::string v = args[0].ident_expr().name();
  240|       |
  241|       |  // traditional variable name assigned to the fold accumulator variable.
  242|  1.76k|  const std::string AccumulatorName = "__result__";
  243|       |
  244|  1.76k|  auto accu_ident = [this, &macro_id, &AccumulatorName]() {
  245|  1.76k|    return NewIdentForMacro(macro_id, AccumulatorName);
  246|  1.76k|  };
  247|       |
  248|  1.76k|  Expr init;
  249|  1.76k|  Expr condition;
  250|  1.76k|  Expr step;
  251|  1.76k|  Expr result;
  252|  1.76k|  switch (kind) {
  ------------------
  |  Branch (252:11): [True: 0, False: 1.76k]
  ------------------
  253|    741|    case QUANTIFIER_ALL:
  ------------------
  |  Branch (253:5): [True: 741, False: 1.01k]
  ------------------
  254|    741|      init = NewLiteralBoolForMacro(macro_id, true);
  255|    741|      condition = NewGlobalCallForMacro(
  256|    741|          macro_id, CelOperator::NOT_STRICTLY_FALSE, {accu_ident()});
  257|    741|      step = NewGlobalCallForMacro(macro_id, CelOperator::LOGICAL_AND,
  258|    741|                                   {accu_ident(), args[1]});
  259|    741|      result = accu_ident();
  260|    741|      break;
  261|       |
  262|    418|    case QUANTIFIER_EXISTS:
  ------------------
  |  Branch (262:5): [True: 418, False: 1.34k]
  ------------------
  263|    418|      init = NewLiteralBoolForMacro(macro_id, false);
  264|    418|      condition = NewGlobalCallForMacro(
  265|    418|          macro_id, CelOperator::NOT_STRICTLY_FALSE,
  266|    418|          {NewGlobalCallForMacro(macro_id, CelOperator::LOGICAL_NOT,
  267|    418|                                 {accu_ident()})});
  268|    418|      step = NewGlobalCallForMacro(macro_id, CelOperator::LOGICAL_OR,
  269|    418|                                   {accu_ident(), args[1]});
  270|    418|      result = accu_ident();
  271|    418|      break;
  272|       |
  273|    601|    case QUANTIFIER_EXISTS_ONE: {
  ------------------
  |  Branch (273:5): [True: 601, False: 1.15k]
  ------------------
  274|    601|      Expr zero_expr = NewLiteralIntForMacro(macro_id, 0);
  275|    601|      Expr one_expr = NewLiteralIntForMacro(macro_id, 1);
  276|    601|      init = zero_expr;
  277|    601|      condition = NewLiteralBoolForMacro(macro_id, true);
  278|    601|      step = NewGlobalCallForMacro(
  279|    601|          macro_id, CelOperator::CONDITIONAL,
  280|    601|          {args[1],
  281|    601|           NewGlobalCallForMacro(macro_id, CelOperator::ADD,
  282|    601|                                 {accu_ident(), one_expr}),
  283|    601|           accu_ident()});
  284|    601|      result = NewGlobalCallForMacro(macro_id, CelOperator::EQUALS,
  285|    601|                                     {accu_ident(), one_expr});
  286|    601|      break;
  287|      0|    }
  288|  1.76k|  }
  289|  1.76k|  return FoldForMacro(macro_id, v, target, AccumulatorName, init, condition,
  290|  1.76k|                      step, result);
  291|  1.76k|}
_ZN6google3api4expr6parser13SourceFactory21NewFilterExprForMacroElRKNS1_8v1alpha14ExprERKNSt3__16vectorIS5_NS8_9allocatorIS5_EEEE:
  360|    851|                                          const std::vector<Expr>& args) {
  361|    851|  if (args.empty()) {
  ------------------
  |  Branch (361:7): [True: 0, False: 851]
  ------------------
  362|      0|    return Expr();
  363|      0|  }
  364|    851|  if (!args[0].has_ident_expr()) {
  ------------------
  |  Branch (364:7): [True: 206, False: 645]
  ------------------
  365|    206|    auto loc = GetSourceLocation(args[0].id());
  366|    206|    return ReportError(loc, "argument is not an identifier");
  367|    206|  }
  368|    645|  std::string v = args[0].ident_expr().name();
  369|       |
  370|       |  // traditional variable name assigned to the fold accumulator variable.
  371|    645|  const std::string AccumulatorName = "__result__";
  372|       |
  373|    645|  Expr filter = args[1];
  374|    645|  Expr accu_expr = NewIdentForMacro(macro_id, AccumulatorName);
  375|    645|  Expr init = NewListForMacro(macro_id, {});
  376|    645|  Expr condition = NewLiteralBoolForMacro(macro_id, true);
  377|    645|  Expr step =
  378|    645|      NewGlobalCallForMacro(macro_id, CelOperator::ADD,
  379|    645|                            {accu_expr, NewListForMacro(macro_id, {args[0]})});
  380|    645|  step = NewGlobalCallForMacro(macro_id, CelOperator::CONDITIONAL,
  381|    645|                               {filter, step, accu_expr});
  382|    645|  return FoldForMacro(macro_id, v, target, AccumulatorName, init, condition,
  383|    645|                      step, accu_expr);
  384|    851|}
_ZN6google3api4expr6parser13SourceFactory15NewListForMacroElRKNSt3__16vectorINS1_8v1alpha14ExprENS4_9allocatorIS7_EEEE:
  387|  3.80k|                                    const std::vector<Expr>& elems) {
  388|  3.80k|  return NewList(NextMacroId(macro_id), elems);
  389|  3.80k|}
_ZN6google3api4expr6parser13SourceFactory6NewMapElRKNSt3__16vectorINS1_8v1alpha123Expr_CreateStruct_EntryENS4_9allocatorIS7_EEEE:
  392|   659k|    int64_t map_id, const std::vector<Expr::CreateStruct::Entry>& entries) {
  393|   659k|  auto expr = NewExpr(map_id);
  394|   659k|  auto struct_expr = expr.mutable_struct_expr();
  395|   659k|  std::for_each(entries.begin(), entries.end(),
  396|   659k|                [struct_expr](const Expr::CreateStruct::Entry& e) {
  397|   659k|                  struct_expr->add_entries()->CopyFrom(e);
  398|   659k|                });
  399|   659k|  return expr;
  400|   659k|}
_ZN6google3api4expr6parser13SourceFactory14NewMapForMacroElRKNS1_8v1alpha14ExprERKNSt3__16vectorIS5_NS8_9allocatorIS5_EEEE:
  403|  1.78k|                                   const std::vector<Expr>& args) {
  404|  1.78k|  if (args.empty()) {
  ------------------
  |  Branch (404:7): [True: 0, False: 1.78k]
  ------------------
  405|      0|    return Expr();
  406|      0|  }
  407|  1.78k|  if (!args[0].has_ident_expr()) {
  ------------------
  |  Branch (407:7): [True: 521, False: 1.25k]
  ------------------
  408|    521|    auto loc = GetSourceLocation(args[0].id());
  409|    521|    return ReportError(loc, "argument is not an identifier");
  410|    521|  }
  411|  1.25k|  std::string v = args[0].ident_expr().name();
  412|       |
  413|  1.25k|  Expr fn;
  414|  1.25k|  Expr filter;
  415|  1.25k|  bool has_filter = false;
  416|  1.25k|  if (args.size() == 3) {
  ------------------
  |  Branch (416:7): [True: 788, False: 471]
  ------------------
  417|    788|    filter = args[1];
  418|    788|    has_filter = true;
  419|    788|    fn = args[2];
  420|    788|  } else {
  421|    471|    fn = args[1];
  422|    471|  }
  423|       |
  424|       |  // traditional variable name assigned to the fold accumulator variable.
  425|  1.25k|  const std::string AccumulatorName = "__result__";
  426|       |
  427|  1.25k|  Expr accu_expr = NewIdentForMacro(macro_id, AccumulatorName);
  428|  1.25k|  Expr init = NewListForMacro(macro_id, {});
  429|  1.25k|  Expr condition = NewLiteralBoolForMacro(macro_id, true);
  430|  1.25k|  Expr step = NewGlobalCallForMacro(
  431|  1.25k|      macro_id, CelOperator::ADD, {accu_expr, NewListForMacro(macro_id, {fn})});
  432|  1.25k|  if (has_filter) {
  ------------------
  |  Branch (432:7): [True: 788, False: 471]
  ------------------
  433|    788|    step = NewGlobalCallForMacro(macro_id, CelOperator::CONDITIONAL,
  434|    788|                                 {filter, step, accu_expr});
  435|    788|  }
  436|  1.25k|  return FoldForMacro(macro_id, v, target, AccumulatorName, init, condition,
  437|  1.25k|                      step, accu_expr);
  438|  1.78k|}
_ZN6google3api4expr6parser13SourceFactory11NewMapEntryElRKNS1_8v1alpha14ExprES7_:
  442|   492k|                                                     const Expr& value) {
  443|   492k|  Expr::CreateStruct::Entry entry;
  444|   492k|  entry.set_id(entry_id);
  445|   492k|  *entry.mutable_map_key() = key;
  446|   492k|  *entry.mutable_value() = value;
  447|   492k|  return entry;
  448|   492k|}
_ZN6google3api4expr6parser13SourceFactory13NewLiteralIntEPN6antlr417ParserRuleContextEl:
  451|   594k|                                  int64_t value) {
  452|   594k|  Expr expr = NewExpr(ctx);
  453|   594k|  expr.mutable_const_expr()->set_int64_value(value);
  454|   594k|  return expr;
  455|   594k|}
_ZN6google3api4expr6parser13SourceFactory21NewLiteralIntForMacroEll:
  457|  1.20k|Expr SourceFactory::NewLiteralIntForMacro(int64_t macro_id, int64_t value) {
  458|  1.20k|  Expr expr = NewExpr(NextMacroId(macro_id));
  459|  1.20k|  expr.mutable_const_expr()->set_int64_value(value);
  460|  1.20k|  return expr;
  461|  1.20k|}
_ZN6google3api4expr6parser13SourceFactory14NewLiteralUintEPN6antlr417ParserRuleContextEm:
  464|  1.04k|                                   uint64_t value) {
  465|  1.04k|  Expr expr = NewExpr(ctx);
  466|  1.04k|  expr.mutable_const_expr()->set_uint64_value(value);
  467|  1.04k|  return expr;
  468|  1.04k|}
_ZN6google3api4expr6parser13SourceFactory16NewLiteralDoubleEPN6antlr417ParserRuleContextEd:
  471|  19.9k|                                     double value) {
  472|  19.9k|  Expr expr = NewExpr(ctx);
  473|  19.9k|  expr.mutable_const_expr()->set_double_value(value);
  474|  19.9k|  return expr;
  475|  19.9k|}
_ZN6google3api4expr6parser13SourceFactory16NewLiteralStringEPN6antlr417ParserRuleContextERKNSt3__112basic_stringIcNS7_11char_traitsIcEENS7_9allocatorIcEEEE:
  478|   503k|                                     const std::string& s) {
  479|   503k|  Expr expr = NewExpr(ctx);
  480|   503k|  expr.mutable_const_expr()->set_string_value(s);
  481|   503k|  return expr;
  482|   503k|}
_ZN6google3api4expr6parser13SourceFactory15NewLiteralBytesEPN6antlr417ParserRuleContextERKNSt3__112basic_stringIcNS7_11char_traitsIcEENS7_9allocatorIcEEEE:
  485|  2.29k|                                    const std::string& b) {
  486|  2.29k|  Expr expr = NewExpr(ctx);
  487|  2.29k|  expr.mutable_const_expr()->set_bytes_value(b);
  488|  2.29k|  return expr;
  489|  2.29k|}
_ZN6google3api4expr6parser13SourceFactory14NewLiteralBoolEPN6antlr417ParserRuleContextEb:
  491|    877|Expr SourceFactory::NewLiteralBool(antlr4::ParserRuleContext* ctx, bool b) {
  492|    877|  Expr expr = NewExpr(ctx);
  493|    877|  expr.mutable_const_expr()->set_bool_value(b);
  494|    877|  return expr;
  495|    877|}
_ZN6google3api4expr6parser13SourceFactory22NewLiteralBoolForMacroElb:
  497|  3.66k|Expr SourceFactory::NewLiteralBoolForMacro(int64_t macro_id, bool b) {
  498|  3.66k|  Expr expr = NewExpr(NextMacroId(macro_id));
  499|  3.66k|  expr.mutable_const_expr()->set_bool_value(b);
  500|  3.66k|  return expr;
  501|  3.66k|}
_ZN6google3api4expr6parser13SourceFactory14NewLiteralNullEPN6antlr417ParserRuleContextE:
  503|    259|Expr SourceFactory::NewLiteralNull(antlr4::ParserRuleContext* ctx) {
  504|    259|  Expr expr = NewExpr(ctx);
  505|    259|  expr.mutable_const_expr()->set_null_value(::google::protobuf::NULL_VALUE);
  506|    259|  return expr;
  507|    259|}
_ZN6google3api4expr6parser13SourceFactory11ReportErrorElNSt3__117basic_string_viewIcNS4_11char_traitsIcEEEE:
  509|  11.4k|Expr SourceFactory::ReportError(int64_t expr_id, absl::string_view msg) {
  510|  11.4k|  num_errors_ += 1;
  511|  11.4k|  Expr expr = NewExpr(expr_id);
  512|  11.4k|  if (errors_truncated_.size() < kMaxErrorsToReport) {
  ------------------
  |  Branch (512:7): [True: 8.28k, False: 3.13k]
  ------------------
  513|  8.28k|    errors_truncated_.emplace_back(std::string(msg), positions_.at(expr_id));
  514|  8.28k|  }
  515|  11.4k|  return expr;
  516|  11.4k|}
_ZN6google3api4expr6parser13SourceFactory11ReportErrorEPN6antlr417ParserRuleContextENSt3__117basic_string_viewIcNS7_11char_traitsIcEEEE:
  519|  11.4k|                                absl::string_view msg) {
  520|  11.4k|  return ReportError(Id(ctx), msg);
  521|  11.4k|}
_ZN6google3api4expr6parser13SourceFactory11ReportErrorEiiNSt3__117basic_string_viewIcNS4_11char_traitsIcEEEE:
  524|  1.97M|                                absl::string_view msg) {
  525|  1.97M|  num_errors_ += 1;
  526|  1.97M|  SourceLocation loc(line, col, /*offset_end=*/-1, line_offsets_);
  527|  1.97M|  if (errors_truncated_.size() < kMaxErrorsToReport) {
  ------------------
  |  Branch (527:7): [True: 99.3k, False: 1.87M]
  ------------------
  528|  99.3k|    errors_truncated_.emplace_back(std::string(msg), loc);
  529|  99.3k|  }
  530|  1.97M|  return NewExpr(Id(loc));
  531|  1.97M|}
_ZN6google3api4expr6parser13SourceFactory11ReportErrorERKNS3_14SourceLocationENSt3__117basic_string_viewIcNS7_11char_traitsIcEEEE:
  534|  6.25k|                                absl::string_view msg) {
  535|  6.25k|  num_errors_ += 1;
  536|  6.25k|  if (errors_truncated_.size() < kMaxErrorsToReport) {
  ------------------
  |  Branch (536:7): [True: 4.47k, False: 1.78k]
  ------------------
  537|  4.47k|    errors_truncated_.emplace_back(std::string(msg), loc);
  538|  4.47k|  }
  539|  6.25k|  return NewExpr(Id(loc));
  540|  6.25k|}
_ZNK6google3api4expr6parser13SourceFactory12ErrorMessageENSt3__117basic_string_viewIcNS4_11char_traitsIcEEEES8_:
  543|  6.71k|                                        absl::string_view expression) const {
  544|       |  // Errors are collected as they are encountered, not by their location within
  545|       |  // the source. To have a more stable error message as implementation
  546|       |  // details change, we sort the collected errors by their source location
  547|       |  // first.
  548|       |
  549|       |  // Use pointer arithmetic to avoid making unnecessary copies of Error when
  550|       |  // sorting.
  551|  6.71k|  std::vector<const Error*> errors_sorted;
  552|  6.71k|  errors_sorted.reserve(errors_truncated_.size());
  553|   112k|  for (auto& error : errors_truncated_) {
  ------------------
  |  Branch (553:20): [True: 112k, False: 6.71k]
  ------------------
  554|   112k|    errors_sorted.push_back(&error);
  555|   112k|  }
  556|  6.71k|  std::stable_sort(errors_sorted.begin(), errors_sorted.end(),
  557|  6.71k|                   [](const Error* lhs, const Error* rhs) {
  558|       |                     // SourceLocation::noLocation uses -1 and we ideally want
  559|       |                     // those to be last.
  560|  6.71k|                     auto lhs_line = PositiveOrMax(lhs->location.line);
  561|  6.71k|                     auto lhs_col = PositiveOrMax(lhs->location.col);
  562|  6.71k|                     auto rhs_line = PositiveOrMax(rhs->location.line);
  563|  6.71k|                     auto rhs_col = PositiveOrMax(rhs->location.col);
  564|       |
  565|  6.71k|                     return lhs_line < rhs_line ||
  566|  6.71k|                            (lhs_line == rhs_line && lhs_col < rhs_col);
  567|  6.71k|                   });
  568|       |
  569|       |  // Build the summary error message using the sorted errors.
  570|  6.71k|  bool errors_truncated = num_errors_ > kMaxErrorsToReport;
  571|  6.71k|  std::vector<std::string> messages;
  572|  6.71k|  messages.reserve(
  573|  6.71k|      errors_sorted.size() +
  574|  6.71k|      errors_truncated);  // Reserve space for the transform and an
  575|       |                          // additional element when truncation occurs.
  576|  6.71k|  std::transform(
  577|  6.71k|      errors_sorted.begin(), errors_sorted.end(), std::back_inserter(messages),
  578|  6.71k|      [this, &description, &expression](const SourceFactory::Error* error) {
  579|  6.71k|        std::string s = absl::StrFormat(
  580|  6.71k|            "ERROR: %s:%zu:%zu: %s", description, error->location.line,
  581|       |            // add one to the 0-based column
  582|  6.71k|            error->location.col + 1, error->message);
  583|  6.71k|        std::string snippet = GetSourceLine(error->location.line, expression);
  584|  6.71k|        std::string::size_type pos = 0;
  585|  6.71k|        while ((pos = snippet.find('\t', pos)) != std::string::npos) {
  586|  6.71k|          snippet.replace(pos, 1, " ");
  587|  6.71k|        }
  588|  6.71k|        std::string src_line = "\n | " + snippet;
  589|  6.71k|        std::string ind_line = "\n | ";
  590|  6.71k|        for (int i = 0; i < error->location.col; ++i) {
  591|  6.71k|          ind_line += ".";
  592|  6.71k|        }
  593|  6.71k|        ind_line += "^";
  594|  6.71k|        s += src_line + ind_line;
  595|  6.71k|        return s;
  596|  6.71k|      });
  597|  6.71k|  if (errors_truncated) {
  ------------------
  |  Branch (597:7): [True: 459, False: 6.25k]
  ------------------
  598|    459|    messages.emplace_back(absl::StrCat(num_errors_ - kMaxErrorsToReport,
  599|    459|                                       " more errors were truncated."));
  600|    459|  }
  601|  6.71k|  return absl::StrJoin(messages, "\n");
  602|  6.71k|}
_ZN6google3api4expr6parser13SourceFactory10IsReservedENSt3__117basic_string_viewIcNS4_11char_traitsIcEEEE:
  604|  1.10M|bool SourceFactory::IsReserved(absl::string_view ident_name) {
  605|  1.10M|  static const auto* reserved_words = new absl::flat_hash_set<std::string>(
  606|  1.10M|      {"as",        "break", "const",  "continue", "else", "false", "for",
  607|  1.10M|       "function",  "if",    "import", "in",       "let",  "loop",  "package",
  608|  1.10M|       "namespace", "null",  "return", "true",     "var",  "void",  "while"});
  609|  1.10M|  return reserved_words->find(ident_name) != reserved_words->end();
  610|  1.10M|}
_ZNK6google3api4expr6parser13SourceFactory11source_infoEv:
  612|  2.50k|google::api::expr::v1alpha1::SourceInfo SourceFactory::source_info() const {
  613|  2.50k|  google::api::expr::v1alpha1::SourceInfo source_info;
  614|  2.50k|  source_info.set_location("<input>");
  615|  2.50k|  auto positions = source_info.mutable_positions();
  616|  2.50k|  std::for_each(positions_.begin(), positions_.end(),
  617|  2.50k|                [positions](const std::pair<int64_t, SourceLocation>& loc) {
  618|  2.50k|                  positions->insert({loc.first, loc.second.offset});
  619|  2.50k|                });
  620|  2.50k|  std::for_each(
  621|  2.50k|      line_offsets_.begin(), line_offsets_.end(),
  622|  2.50k|      [&source_info](int32_t offset) { source_info.add_line_offsets(offset); });
  623|  2.50k|  std::for_each(macro_calls_.begin(), macro_calls_.end(),
  624|  2.50k|                [&source_info](const std::pair<int64_t, Expr>& macro_call) {
  625|  2.50k|                  source_info.mutable_macro_calls()->insert(
  626|  2.50k|                      {macro_call.first, macro_call.second});
  627|  2.50k|                });
  628|  2.50k|  return source_info;
  629|  2.50k|}
_ZNK6google3api4expr6parser13SourceFactory20enriched_source_infoEv:
  631|  2.50k|EnrichedSourceInfo SourceFactory::enriched_source_info() const {
  632|  2.50k|  std::map<int64_t, std::pair<int32_t, int32_t>> offset;
  633|  2.50k|  std::for_each(
  634|  2.50k|      positions_.begin(), positions_.end(),
  635|  2.50k|      [&offset](const std::pair<int64_t, SourceLocation>& loc) {
  636|  2.50k|        offset.insert({loc.first, {loc.second.offset, loc.second.offset_end}});
  637|  2.50k|      });
  638|  2.50k|  return EnrichedSourceInfo(std::move(offset));
  639|  2.50k|}
_ZN6google3api4expr6parser13SourceFactory15CalcLineOffsetsENSt3__117basic_string_viewIcNS4_11char_traitsIcEEEE:
  641|  9.21k|void SourceFactory::CalcLineOffsets(absl::string_view expression) {
  642|  9.21k|  std::vector<absl::string_view> lines = absl::StrSplit(expression, '\n');
  643|  9.21k|  int offset = 0;
  644|  9.21k|  line_offsets_.resize(lines.size());
  645|  3.67M|  for (size_t i = 0; i < lines.size(); ++i) {
  ------------------
  |  Branch (645:22): [True: 3.66M, False: 9.21k]
  ------------------
  646|  3.66M|    offset += lines[i].size() + 1;
  647|  3.66M|    line_offsets_[i] = offset;
  648|  3.66M|  }
  649|  9.21k|}
_ZNK6google3api4expr6parser13SourceFactory14FindLineOffsetEi:
  651|   223k|absl::optional<int32_t> SourceFactory::FindLineOffset(int32_t line) const {
  652|       |  // note that err.line is 1-based,
  653|       |  // while we need the 0-based index
  654|   223k|  if (line == 1) {
  ------------------
  |  Branch (654:7): [True: 92.9k, False: 130k]
  ------------------
  655|  92.9k|    return 0;
  656|   130k|  } else if (line > 1 && line <= static_cast<int32_t>(line_offsets_.size())) {
  ------------------
  |  Branch (656:14): [True: 128k, False: 1.12k]
  |  Branch (656:26): [True: 38.4k, False: 90.5k]
  ------------------
  657|  38.4k|    return line_offsets_[line - 2];
  658|  38.4k|  }
  659|  91.6k|  return {};
  660|   223k|}
_ZNK6google3api4expr6parser13SourceFactory13GetSourceLineEiNSt3__117basic_string_viewIcNS4_11char_traitsIcEEEE:
  663|   112k|                                         absl::string_view expression) const {
  664|   112k|  auto char_start = FindLineOffset(line);
  665|   112k|  if (!char_start) {
  ------------------
  |  Branch (665:7): [True: 1.12k, False: 110k]
  ------------------
  666|  1.12k|    return "";
  667|  1.12k|  }
  668|   110k|  auto char_end = FindLineOffset(line + 1);
  669|   110k|  if (char_end) {
  ------------------
  |  Branch (669:7): [True: 20.4k, False: 90.5k]
  ------------------
  670|  20.4k|    return std::string(
  671|  20.4k|        expression.substr(*char_start, *char_end - *char_end - 1));
  672|  90.5k|  } else {
  673|  90.5k|    return std::string(expression.substr(*char_start));
  674|  90.5k|  }
  675|   110k|}
source_factory.cc:_ZZN6google3api4expr6parser13SourceFactory25NewQuantifierExprForMacroENS3_14QuantifierKindElRKNS1_8v1alpha14ExprERKNSt3__16vectorIS6_NS9_9allocatorIS6_EEEEENK3$_4clEv:
  244|  5.28k|  auto accu_ident = [this, &macro_id, &AccumulatorName]() {
  245|  5.28k|    return NewIdentForMacro(macro_id, AccumulatorName);
  246|  5.28k|  };
source_factory.cc:_ZZN6google3api4expr6parser13SourceFactory13NewGlobalCallElRKNSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEERKNS4_6vectorINS1_8v1alpha14ExprENS8_ISF_EEEEENK3$_0clERKSF_:
  106|  1.60M|                [&call_expr](const Expr& e) { *call_expr->add_args() = e; });
source_factory.cc:_ZZN6google3api4expr6parser13SourceFactory15NewReceiverCallElRKNSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEERKNS1_8v1alpha14ExprERKNS4_6vectorISE_NS8_ISE_EEEEENK3$_1clESG_:
  124|   429k|                [&call_expr](const Expr& e) { *call_expr->add_args() = e; });
source_factory.cc:_ZZN6google3api4expr6parser13SourceFactory9NewObjectElRKNSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEERKNS4_6vectorINS1_8v1alpha123Expr_CreateStruct_EntryENS8_ISF_EEEEENK3$_2clERKSF_:
  179|  3.33k|                [struct_expr](const Expr::CreateStruct::Entry& e) {
  180|  3.33k|                  struct_expr->add_entries()->CopyFrom(e);
  181|  3.33k|                });
source_factory.cc:_ZZN6google3api4expr6parser13SourceFactory7NewListElRKNSt3__16vectorINS1_8v1alpha14ExprENS4_9allocatorIS7_EEEEENK3$_3clERKS7_:
  225|   694k|                [list_expr](const Expr& e) { *list_expr->add_elements() = e; });
source_factory.cc:_ZZN6google3api4expr6parser13SourceFactory6NewMapElRKNSt3__16vectorINS1_8v1alpha123Expr_CreateStruct_EntryENS4_9allocatorIS7_EEEEENK3$_5clERKS7_:
  396|   492k|                [struct_expr](const Expr::CreateStruct::Entry& e) {
  397|   492k|                  struct_expr->add_entries()->CopyFrom(e);
  398|   492k|                });
source_factory.cc:_ZZNK6google3api4expr6parser13SourceFactory12ErrorMessageENSt3__117basic_string_viewIcNS4_11char_traitsIcEEEES8_ENK3$_6clEPKNS3_5ErrorESC_:
  557|   225k|                   [](const Error* lhs, const Error* rhs) {
  558|       |                     // SourceLocation::noLocation uses -1 and we ideally want
  559|       |                     // those to be last.
  560|   225k|                     auto lhs_line = PositiveOrMax(lhs->location.line);
  561|   225k|                     auto lhs_col = PositiveOrMax(lhs->location.col);
  562|   225k|                     auto rhs_line = PositiveOrMax(rhs->location.line);
  563|   225k|                     auto rhs_col = PositiveOrMax(rhs->location.col);
  564|       |
  565|   225k|                     return lhs_line < rhs_line ||
  ------------------
  |  Branch (565:29): [True: 5.22k, False: 220k]
  ------------------
  566|   225k|                            (lhs_line == rhs_line && lhs_col < rhs_col);
  ------------------
  |  Branch (566:30): [True: 217k, False: 3.20k]
  |  Branch (566:54): [True: 115k, False: 101k]
  ------------------
  567|   225k|                   });
source_factory.cc:_ZN6google3api4expr6parser12_GLOBAL__N_113PositiveOrMaxEi:
   40|   902k|int32_t PositiveOrMax(int32_t value) {
   41|   902k|  return value >= 0 ? value : std::numeric_limits<int32_t>::max();
  ------------------
  |  Branch (41:10): [True: 895k, False: 6.88k]
  ------------------
   42|   902k|}
source_factory.cc:_ZZNK6google3api4expr6parser13SourceFactory12ErrorMessageENSt3__117basic_string_viewIcNS4_11char_traitsIcEEEES8_ENK3$_7clEPKNS3_5ErrorE:
  578|   112k|      [this, &description, &expression](const SourceFactory::Error* error) {
  579|   112k|        std::string s = absl::StrFormat(
  580|   112k|            "ERROR: %s:%zu:%zu: %s", description, error->location.line,
  581|       |            // add one to the 0-based column
  582|   112k|            error->location.col + 1, error->message);
  583|   112k|        std::string snippet = GetSourceLine(error->location.line, expression);
  584|   112k|        std::string::size_type pos = 0;
  585|   978k|        while ((pos = snippet.find('\t', pos)) != std::string::npos) {
  ------------------
  |  Branch (585:16): [True: 866k, False: 112k]
  ------------------
  586|   866k|          snippet.replace(pos, 1, " ");
  587|   866k|        }
  588|   112k|        std::string src_line = "\n | " + snippet;
  589|   112k|        std::string ind_line = "\n | ";
  590|   162M|        for (int i = 0; i < error->location.col; ++i) {
  ------------------
  |  Branch (590:25): [True: 162M, False: 112k]
  ------------------
  591|   162M|          ind_line += ".";
  592|   162M|        }
  593|   112k|        ind_line += "^";
  594|   112k|        s += src_line + ind_line;
  595|   112k|        return s;
  596|   112k|      });
source_factory.cc:_ZZNK6google3api4expr6parser13SourceFactory11source_infoEvENK3$_8clERKNSt3__14pairIlNS3_14SourceLocationEEE:
  617|  2.32M|                [positions](const std::pair<int64_t, SourceLocation>& loc) {
  618|  2.32M|                  positions->insert({loc.first, loc.second.offset});
  619|  2.32M|                });
source_factory.cc:_ZZNK6google3api4expr6parser13SourceFactory11source_infoEvENK3$_9clEi:
  622|   671k|      [&source_info](int32_t offset) { source_info.add_line_offsets(offset); });
source_factory.cc:_ZZNK6google3api4expr6parser13SourceFactory20enriched_source_infoEvENK4$_11clERKNSt3__14pairIlNS3_14SourceLocationEEE:
  635|  2.32M|      [&offset](const std::pair<int64_t, SourceLocation>& loc) {
  636|  2.32M|        offset.insert({loc.first, {loc.second.offset, loc.second.offset_end}});
  637|  2.32M|      });

_ZN6google3api4expr6parser18EnrichedSourceInfoC2ENSt3__13mapIlNS4_4pairIiiEENS4_4lessIlEENS4_9allocatorINS6_IKlS7_EEEEEE:
   37|  2.50k|      : offsets_(std::move(offsets)) {}
_ZN6google3api4expr6parser13SourceFactory14SourceLocationC2EiiiRKNSt3__16vectorIiNS5_9allocatorIiEEEE:
   56|  6.20M|        : line(line), col(col), offset_end(offset_end) {
   57|  6.20M|      if (line == 1) {
  ------------------
  |  Branch (57:11): [True: 5.82M, False: 384k]
  ------------------
   58|  5.82M|        offset = col;
   59|  5.82M|      } else if (line > 1) {
  ------------------
  |  Branch (59:18): [True: 382k, False: 1.81k]
  ------------------
   60|   382k|        offset = line_offsets[line - 2] + col;
   61|   382k|      } else {
   62|  1.81k|        offset = -1;
   63|  1.81k|      }
   64|  6.20M|    }
_ZN6google3api4expr6parser13SourceFactory5ErrorC2ENSt3__112basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEENS3_14SourceLocationE:
   73|   112k|        : message(std::move(message)), location(location) {}
_ZNK6google3api4expr6parser13SourceFactory6errorsEv:
  159|  9.21k|  const std::vector<Error>& errors() const { return errors_truncated_; }

