/// <summary>
 /// Retrieves a pooled label used for displaying stored objects.
 /// </summary>
 /// <param name="parent">The parent panel to add new labels.</param>
 /// <param name="id">The name of the label to be added or created.</param>
 /// <returns>A label which can be used to display stored items, pooled if possible.</returns>
 private CachedStorageLabel GetStorageLabel(GameObject parent, string id)
 {
     if (labelCache.TryGetValue(id, out CachedStorageLabel result))
     {
         result.Reset();
     }
     else
     {
         result         = new CachedStorageLabel(sis, parent, id);
         labelCache[id] = result;
     }
     result.SetActive(true);
     return(result);
 }
        /// <summary>
        /// Updates the text to be displayed for a single stored item.
        /// </summary>
        /// <param name="label">The label to be updated.</param>
        /// <param name="item">The item to be displayed.</param>
        /// <param name="freeze">true to freeze the labels, or false to leave as pending.</param>
        /// <param name="pe">The item's primary element, or null if it has none.</param>
        private void SetItemDescription(CachedStorageLabel label, GameObject item, bool freeze,
                                        PrimaryElement pe)
        {
            var defaultStyle = PluginAssets.Instance.defaultTextStyleSetting;
            var text         = CACHED_BUILDER;
            var rottable     = item.GetSMI <Rottable.Instance>();
            var tooltip      = label.tooltip;
            int lines        = 1;

            text.Clear();
            tooltip.ClearMultiStringTooltip();
            if (item.TryGetComponent(out HighEnergyParticleStorage hepStorage))
            {
                // Radbolts
                text.Append(STRINGS.ITEMS.RADIATION.HIGHENERGYPARITCLE.NAME).Append(": ").
                Append(GameUtil.GetFormattedHighEnergyParticles(hepStorage.Particles));
            }
            else if (pe != null)
            {
                // Element
                var properName = item.GetProperName();
                if (item.TryGetComponent(out KPrefabID id) && Assets.IsTagCountable(id.
                                                                                    PrefabTag))
                {
                    FormatStringPatches.GetUnitFormattedName(text, properName, pe.Units);
                }
                else
                {
                    text.Append(properName);
                }
                text.Append(": ");
                FormatStringPatches.GetFormattedMass(text, pe.Mass);
                if (optimizedStorageTemp != null)
                {
                    text.Append(optimizedStorageTemp);
                    FormatStringPatches.GetFormattedTemperature(text, pe.Temperature);
                }
                else
                {
                    string mass = text.ToString();
                    text.Clear().Append(DETAILTABS.DETAILS.CONTENTS_TEMPERATURE).Replace("{1}",
                                                                                         GameUtil.GetFormattedTemperature(pe.Temperature)).Replace("{0}", mass);
                }
            }