привет, добавь пожалуйста в этот код публичный метод  для перемещения пешеходов из списка winterPedestrians на позиции пешеходов из списка sharedPedestrians, а предыдущих пешеходов, которые были до этого, перемещает в общий список pedestriansPool
namespace ZarnFramework.Gorod
{
    public class PedestriansPool : MonoBehaviour
    {
        [SerializeField]
        private PedestriansFactory pedestriansFactory;
        [SerializeField]
        private Transform poolPosition;

        [SerializeField]
        private bool debugMode = true;

        public int Maximal = 100;

        public int Residue
        {
            get { return pedestriansPool.Count - sharedPedestrians.Count; }
        }

        private readonly HashSet<PedestrianController> pedestriansPool = new HashSet<PedestrianController>();
        private readonly HashSet<PedestrianController> sharedPedestrians = new HashSet<PedestrianController>();

        private readonly HashSet<PedestrianController> winterPedestrians = new HashSet<PedestrianController>();

        private Rect debugWindowPos = new Rect(0, 0, 200, 120);
        private GUIStyle debugWindowLabelStyle;


        private void Update()
        {
            UpdatePool();
        }

        private void OnGUI()
        {
            if (debugMode)
            {
                if (debugWindowLabelStyle == null)
                {
                    debugWindowLabelStyle = new GUIStyle(GUI.skin.label);
                    debugWindowLabelStyle.normal.textColor = Color.white;
                    debugWindowLabelStyle.alignment = TextAnchor.MiddleCenter;
                }

                debugWindowPos = GUILayout.Window(1, debugWindowPos, DebugWindowCallback, "Pedestrian pool");
            }
        }


        public PedestrianController Pop()
        {
            if (pedestriansPool.Count > 0)
            {
                foreach (PedestrianController clone in pedestriansPool)
                {
                    if (!sharedPedestrians.Contains(clone))
                    {
                        MovePedestrian(clone, sharedPedestrians);
                        return clone;
                    }
                }
            }

            return null;
        }

        public void Push(PedestrianController clone)
        {
            if (clone == null)
            {
                return;
            }

            if (sharedPedestrians.Contains(clone))
            {
                clone.gameObject.SetActive(false);
                MovePedestrian(clone, pedestriansPool);
            }

            if (pedestriansPool.Count > Maximal && pedestriansPool.Contains(clone))
            {
                pedestriansPool.Remove(clone);
                Destroy(clone.gameObject);
            }
        }

        private void MovePedestrian(PedestrianController pedestrian, HashSet<PedestrianController> destination)
        {
            if (pedestrian != null)
            {
                pedestrian.transform.parent = poolPosition;
                pedestrian.transform.localPosition = Vector3.zero;
                pedestrian.transform.localRotation = Quaternion.identity;
                destination.Add(pedestrian);
            }
        }

        private void UpdatePool()
        {
            if (pedestriansPool.Count < Maximal)
            {
                AddPedestrianInPool();
                AddWinterPedestrianInPool();
            }
            else if (pedestriansPool.Count > Maximal)
            {
                RemovePedestrianFromPool();
                RemoveWinterPedestrianFromPool();
            }
        }

        private void AddPedestrianInPool()
        {
            PedestrianController clone = pedestriansFactory.CreatePedestrian();

            if (clone != null)
            {
                MovePedestrian(clone, pedestriansPool);
                clone.gameObject.SetActive(false);
            }
        }

        private void AddWinterPedestrianInPool()
        {
            PedestrianController clone = pedestriansFactory.CreateWinterPedestrian();

            if (clone != null)
            {
                MovePedestrian(clone, winterPedestrians);
                clone.gameObject.SetActive(false);
            }
        }

        private void RemoveWinterPedestrianFromPool()
        {
            if (winterPedestrians.Count == 0)
            {
                return;
            }

            foreach (PedestrianController clone in winterPedestrians)
            {
                if (!sharedPedestrians.Contains(clone))
                {
                    RemovePedestrian(clone);
                    break;
                }
            }
        }

        private void RemovePedestrianFromPool()
        {
            if (pedestriansPool.Count == 0)
            {
                return;
            }

            foreach (PedestrianController clone in pedestriansPool)
            {
                if (!sharedPedestrians.Contains(clone))
                {
                    RemovePedestrian(clone);
                    break;
                }
            }
        }

        private void RemovePedestrian(PedestrianController pedestrian)
        {
            pedestriansPool.Remove(pedestrian);
            Destroy(pedestrian.gameObject);
        }

        private void DebugWindowCallback(int windowID)
        {
            if (windowID == 1)
            {
                GUILayout.BeginHorizontal();
                {
                    GUILayout.BeginVertical();
                    {
                        Maximal = (int)GUILayout.HorizontalSlider(Maximal, 0, 200);

                        GUILayout.Label("Maximal: " + Maximal.ToString(), debugWindowLabelStyle);

                        GUILayout.Label("In pool: " + pedestriansPool.Count.ToString(), debugWindowLabelStyle);

                        GUILayout.Label("Shared: " + sharedPedestrians.Count.ToString(), debugWindowLabelStyle);
                    }
                    GUILayout.EndVertical();
                }
                GUILayout.EndHorizontal();
                GUI.color = Color.gray;
                GUI.DragWindow(new Rect(0, 0, Screen.width, Screen.height));
            }
        }
    }
}