/// <summary>
        /// Gets the icon of the achievement, waits for it to load if we have to
        /// </summary>
        public async Task <Image?> GetIconAsync(int timeout = 5000)
        {
            var i = SteamUserStats.Internal.GetAchievementIcon(Value);

            if (i != 0)
            {
                return(SteamUtils.GetImage(i));
            }

            var  ident       = Identifier;
            bool gotCallback = false;

            void f(string x, int icon)
            {
                if (x != ident)
                {
                    return;
                }
                i           = icon;
                gotCallback = true;
            }

            try
            {
                SteamUserStats.OnAchievementIconFetched += f;

                int waited = 0;
                while (!gotCallback)
                {
                    await Task.Delay(10);

                    waited += 10;

                    // Time out after x milliseconds
                    if (waited > timeout)
                    {
                        return(null);
                    }
                }

                if (i == 0)
                {
                    return(null);
                }
                return(SteamUtils.GetImage(i));
            }
            finally
            {
                SteamUserStats.OnAchievementIconFetched -= f;
            }
        }
 /// <summary>
 /// Gets the icon of the achievement. This can return a null image even though the image exists if the image
 /// hasn't been downloaded by Steam yet. You can use GetIconAsync if you want to wait for the image to be downloaded.
 /// </summary>
 public Image?GetIcon()
 {
     return(SteamUtils.GetImage(SteamUserStats.Internal.GetAchievementIcon(Value)));
 }
        public Image?GetIcon()
        {
            Image?image = SteamUtils.GetImage(SteamUserStats.Internal.GetAchievementIcon(this.Value));

            return(image);
        }