code: @Implementation(minSdk = P)
    protected static int nativeGetResourceBagValue(long ptr, @AnyRes int resid, int bag_entry_id,
        @NonNull TypedValue typed_value) {
      CppAssetManager2 assetmanager = AssetManagerFromLong(ptr);
      ResolvedBag bag = assetmanager.GetBag(resid);
      if (bag == null) {
        return ApkAssetsCookieToJavaCookie(K_INVALID_COOKIE);
      }
  
      final Ref<Integer> type_spec_flags = new Ref<>(bag.type_spec_flags);
      ApkAssetsCookie cookie = K_INVALID_COOKIE;
      Res_value bag_value = null;
      for (ResolvedBag.Entry entry : bag.entries) {
        if (entry.key == (int) (bag_entry_id)) {
          cookie = entry.cookie;
          bag_value = entry.value;
  
          // Keep searching (the old implementation did that).
        }
      }
  
      if (cookie.intValue() == kInvalidCookie) {
        return ApkAssetsCookieToJavaCookie(K_INVALID_COOKIE);
      }
  
      final Ref<Res_value> value = new Ref<>(bag_value);
      final Ref<Integer> ref = new Ref<>(resid);
      final Ref<ResTable_config> selected_config = new Ref<>(null);
      cookie = assetmanager.ResolveReference(cookie, value, selected_config, type_spec_flags, ref);
      if (cookie.intValue() == kInvalidCookie) {
        return ApkAssetsCookieToJavaCookie(K_INVALID_COOKIE);
      }
      return CopyValue(cookie, value.get(), ref.get(), type_spec_flags.get(), null, typed_value);
    }
docs: jint bag_entry_id, jobject typed_value) {