public override void ApplyOnPawn(Pawn pawn, BodyPartRecord part, Pawn billDoer, List <Thing> ingredients, Bill bill)
        {
            if (billDoer != null)
            {
                if (CheckSurgeryFail(billDoer, pawn, ingredients, part, bill))
                {
                    return;
                }
                TaleRecorder.RecordTale(TaleDefOf.DidSurgery, new object[]
                {
                    billDoer,
                    pawn
                });
            }

            var oldBoobs = pawn.health.hediffSet.hediffs.FirstOrDefault(hediff => hediff.def == bill.recipe.removesHediff);
            var newBoobs = bill.recipe.addsHediff;
            var newSize  = BreastSize_Helper.GetSize(newBoobs);

            GenderHelper.ChangeSex(pawn, () =>
            {
                BreastSize_Helper.HurtBreasts(pawn, part, 3 * (newSize - 1));
                if (pawn.health.hediffSet.PartIsMissing(part))
                {
                    return;
                }
                if (oldBoobs != null)
                {
                    pawn.health.RemoveHediff(oldBoobs);
                }
                pawn.health.AddHediff(newBoobs, part);
            });
        }
        public override IEnumerable <BodyPartRecord> GetPartsToApplyOn(Pawn pawn, RecipeDef recipeDef)
        {
            var chest = Genital_Helper.get_breasts(pawn);

            if (Genital_Helper.breasts_blocked(pawn))
            {
                yield break;
            }

            if (BreastSize_Helper.TryGetBreastSize(pawn, out var size) &&
                size > BreastSize_Helper.GetSize(Genital_Helper.flat_breasts))
            {
                yield return(chest);
            }
        }