private void RecacheSelectedModRequirements()
 {
     anyReqsCached            = false;
     anyReqsInfoToShowCached  = false;
     anyUnfulfilledReqsCached = false;
     anyOrderingIssuesCached  = false;
     visibleReqsCached.Clear();
     if (selectedMod == null)
     {
         return;
     }
     foreach (ModRequirement item in (from r in selectedMod.GetRequirements()
                                      orderby r.IsSatisfied, r.RequirementTypeLabel
                                      select r).ToList())
     {
         bool isSatisfied = item.IsSatisfied;
         if (!isSatisfied || displayFullfilledRequirements)
         {
             visibleReqsCached.Add(item);
             if (!isSatisfied)
             {
                 anyUnfulfilledReqsCached = true;
             }
         }
         anyReqsCached           = true;
         anyReqsInfoToShowCached = true;
     }
     anyOrderingIssuesCached = ModsConfig.ModHasAnyOrderingIssues(selectedMod);
     if (visibleReqsCached.Any() || anyOrderingIssuesCached)
     {
         anyReqsInfoToShowCached     = true;
         modRequirementsHeightCached = (float)visibleReqsCached.Count * 26f + (float)(visibleReqsCached.Count - 1) * 4f + 20f + 1f;
         if (anyOrderingIssuesCached)
         {
             modRequirementsHeightCached += Text.LineHeight * 2f + 4f;
         }
     }
     else
     {
         modRequirementsHeightCached = 0f;
     }
 }