public static void DrawStatsReport(Rect rect, Thing thing)
 {
     if (StatsReportUtility.cachedDrawEntries.NullOrEmpty <StatDrawEntry>())
     {
         StatsReportUtility.cachedDrawEntries.AddRange(thing.def.SpecialDisplayStats(StatRequest.For(thing)));
         StatsReportUtility.cachedDrawEntries.AddRange(from r in StatsReportUtility.StatsToDraw(thing)
                                                       where r.ShouldDisplay
                                                       select r);
         StatsReportUtility.cachedDrawEntries.RemoveAll((StatDrawEntry de) => de.stat != null && !de.stat.showNonAbstract);
         StatsReportUtility.FinalizeCachedDrawEntries(StatsReportUtility.cachedDrawEntries);
     }
     StatsReportUtility.DrawStatsWorker(rect, thing, null);
 }
 public static void DrawStatsReport(Rect rect, Def def, ThingDef stuff)
 {
     if (StatsReportUtility.cachedDrawEntries.NullOrEmpty <StatDrawEntry>())
     {
         BuildableDef buildableDef = def as BuildableDef;
         StatRequest  req          = (buildableDef == null) ? StatRequest.ForEmpty() : StatRequest.For(buildableDef, stuff, QualityCategory.Normal);
         StatsReportUtility.cachedDrawEntries.AddRange(def.SpecialDisplayStats(req));
         StatsReportUtility.cachedDrawEntries.AddRange(from r in StatsReportUtility.StatsToDraw(def, stuff)
                                                       where r.ShouldDisplay
                                                       select r);
         StatsReportUtility.FinalizeCachedDrawEntries(StatsReportUtility.cachedDrawEntries);
     }
     StatsReportUtility.DrawStatsWorker(rect, null, null);
 }