static bool HealthCardUtility_DrawHediffRow_DestructivePrefix(Rect rect, Pawn pawn, IEnumerable <Hediff> diffs, ref float curY)
 {
     if (CompactHediffsMod.settings.Enabled)
     {
         CustomHealthCardUtility.DrawHediffRow(rect, pawn, diffs, ref curY);
         return(false);
     }
     else
     {
         return(true);
     }
 }
        static IEnumerable <IGrouping <BodyPartRecord, Hediff> > HealthCardUtility_VisibleHediffGroupsInOrder_Postfix(IEnumerable <IGrouping <BodyPartRecord, Hediff> > returned, Pawn pawn, bool showBloodLoss)
        {
            returned = CustomHealthCardUtility.ReorderHediffGroups(returned, pawn, showBloodLoss);
            foreach (var group in returned)
            {
                yield return(group);
            }

            /*var method_getListPriority = Traverse.Create(typeof(HealthCardUtility)).Method("GetListPriority", new Type[] { typeof(BodyPartRecord) });
             * Func<BodyPartRecord, float> getListPriority = (BodyPartRecord rec) => method_getListPriority.GetValue<float>(rec);
             *
             * var method_visibleHediffs = Traverse.Create(typeof(HealthCardUtility)).Method("VisibleHediffs", new Type[] { typeof(Pawn), typeof(bool) });
             * Func<Pawn, bool, IEnumerable<Hediff>> visibleHediffs = (Pawn p, bool s) => method_visibleHediffs.GetValue<IEnumerable<Hediff>>(p, s);
             *
             * var grouping = visibleHediffs(pawn, showBloodLoss).GroupBy(x => x.Part).OrderByDescending(x => getListPriority(x.First().Part));
             * foreach (var group in grouping)
             * {
             *      yield return group;
             * }*/
        }