    FOLLY_ALWAYS_INLINE bool advanceToNextField(
        NimbleProtocolReader* /* iprot */,
        int32_t /* currFieldId */,
        int32_t nextFieldId,
        TType nextFieldType) {
      detail::nimble::FieldBytes expected = fieldBeginBytes(
          detail::nimble::ttypeToNimbleType(nextFieldType), nextFieldId);
      // This is technically UB; it's legal to form a pointer to one past the
      // end of an array, but not two or three past.
      // TODO(davidgoldblatt): Fix this.
      if (LIKELY(fieldCur + expected.len < fieldEnd)) {
        if (LIKELY(std::memcmp(fieldCur, expected.bytes, expected.len) == 0)) {
          fieldCur += expected.len;
          return true;
        }
      }
      return false;
    }
    FOLLY_ALWAYS_INLINE bool advanceToNextField(
        NimbleProtocolReader*  ,
        int32_t  ,
        int32_t nextFieldId,
        TType nextFieldType) {
      detail::nimble::FieldBytes expected = fieldBeginBytes(
          detail::nimble::ttypeToNimbleType(nextFieldType), nextFieldId);
       
       
       
      if (LIKELY(fieldCur + expected.len < fieldEnd)) {
        if (LIKELY(std::memcmp(fieldCur, expected.bytes, expected.len) == 0)) {
          fieldCur += expected.len;
          return true;
        }
      }
      return false;
    }