Der Code macht folgendes :
Zuerst wird in der ersten Zeile der gesamte Inhalt von pGleis1 auf dein neu erstelltes Gleis1 gepackt und gleichzeitig von pgleis1 entfernt, das wird solange gemacth bis pgleis1 leer ist(also alle Elemente von pGleis1 auf Gleis1 sind).
Anschließend wird in der zweiten while Schleife der gesamte Inhalt von deinem neu erstellen Gleis1(also im wesentlichen der anfängliche Inhalt von pgleis1) auf pgleis 2 gepackt und zugleich das Objekt welches in der jeweiligen iteration genommen wird von gleis1 wieder entfernt. Da die While schleife erst terminiert wenn kein Element mehr in Gleis1 vorhanden ist, kannst du sicher sein das jetzt alle Elemente von Gleis1 auf pgleis2 sind. Somit ist am Ende jedes Objekt von pGleis1 auf pGleis2. Das ganze wird jedoch nur ausgeführt wenn pgleis1 und pgleis2 verschiedene Namen besitzen.