public static void MakePawnsLeave(IEnumerable <Pawn> pawns, bool sendLetter, Quest quest)
        {
            bool        flag = pawns.Any((Pawn x) => x.Faction == Faction.OfPlayer || x.HostFaction == Faction.OfPlayer);
            List <Pawn> list = pawns.Where((Pawn x) => x.Spawned || x.IsCaravanMember()).ToList();

            if (sendLetter && list.Any())
            {
                Pawn   singlePawn;
                string value  = GenLabel.BestGroupLabel(list, definite: false, out singlePawn);
                string value2 = GenLabel.BestGroupLabel(list, definite: true, out singlePawn);
                if (flag)
                {
                    if (singlePawn != null)
                    {
                        Find.LetterStack.ReceiveLetter("LetterLabelPawnLeaving".Translate(value), "LetterPawnLeaving".Translate(value2), LetterDefOf.NeutralEvent, singlePawn, null, quest);
                    }
                    else
                    {
                        Find.LetterStack.ReceiveLetter("LetterLabelPawnsLeaving".Translate(value), "LetterPawnsLeaving".Translate(value2), LetterDefOf.NeutralEvent, list[0], null, quest);
                    }
                }
                else if (singlePawn != null)
                {
                    Messages.Message("MessagePawnLeaving".Translate(value2), singlePawn, MessageTypeDefOf.NeutralEvent);
                }
                else
                {
                    Messages.Message("MessagePawnsLeaving".Translate(value2), list[0], MessageTypeDefOf.NeutralEvent);
                }
            }
            foreach (Pawn pawn2 in pawns)
            {
                MakePawnLeave(pawn2, quest);
            }
            IEnumerable <Pawn> enumerable = pawns.Where((Pawn p) => p.Spawned && !p.Downed);

            if (enumerable.Any())
            {
                Pawn pawn = enumerable.First();
                LordJob_ExitMapBest lordJob = new LordJob_ExitMapBest(LocomotionUrgency.Walk, canDig: true, canDefendSelf: true);
                LordMaker.MakeNewLord(pawn.Faction, lordJob, pawn.MapHeld, enumerable);
            }
        }