static void Postfix(Pawn p, List <JoyKindDef> outJoyKinds, ref Caravan ___caravan)
        {
            if (!p.health.capacities.CapableOf(PawnCapacityDefOf.Hearing) || !p.Awake())
            {
                return;
            }

            if (p.needs.joy.tolerances.BoredOf(JoyKindDefOf_Music.Music))
            {
                return;
            }

            float quality;

            List <Pawn> pawnsTmp = new List <Pawn>();

            pawnsTmp.AddRange(___caravan.pawns);

            Pawn musician;

            while (pawnsTmp.TryRandomElement(out musician))
            {
                if (PerformanceManager.IsPotentialCaravanMusician(musician, out quality))
                {
                    outJoyKinds.Add(JoyKindDefOf_Music.Music);
                    PatchTrySatisfyJoyNeed.MusicQuality = quality;

#if DEBUG
                    Verse.Log.Message(String.Format("Checking caravanner {0} for music availability : yes", p.Label));
#endif
                    return;
                }
                else
                {
                    pawnsTmp.Remove(musician);
                }
            }

#if DEBUG
            Verse.Log.Message(String.Format("Checking caravanner {0} for music availability: no", p.Label));
#endif
        }