@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);
  }
@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;

        
      }
    }

    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);
  }
@ 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 ) ; }
jint bag_entry_id, jobject typed_value) {
jint bag_entry_id jobject typed_value ) {