public void Start()
        {
            // TODO: schaue ob alle Verarbeitungsschritte in FIs behandelt werden können

            DateTime nächsterSchritt = DateTime.Now;

            while (!IstFertig())
            {
                if (DateTime.Now >= nächsterSchritt.AddSeconds(1 / 4.0))
                {
                    nächsterSchritt = DateTime.Now;

                    Produktionseinrichtung prodEinr = GetAbholbereiteProduktionseinrichtung();
                    // wenn es eine abholbereite produktionseinrichtung gibt
                    if (prodEinr != null)
                    {
                        // hole teil
                        if (prodEinr is EingangsLager)
                        {
                            _AktuellesTeil = ((EingangsLager)prodEinr).TeilAusgeben();
                        }
                        else if (prodEinr is Fertigungsinsel)
                        {
                            _AktuellesTeil = ((Fertigungsinsel)prodEinr).TeilZurueckgeben();
                            //    _aktue
                        }
                        Console.WriteLine(_AktuellesTeil.GetSeriennummer() + " < " + prodEinr.GetName());

                        if (_AktuellesTeil.SelbstTestTeil())
                        {
                            Console.WriteLine(_AktuellesTeil.GetSeriennummer() + " > LagerAus");
                            FindeAusgangsLager().TeilFuerDenVersandEmpfangen(_AktuellesTeil);
                        }
                        else
                        {
                            Fertigungsinsel insel = GetSchnellsteFertigungsinsel();
                            // wenn es keine FI gibt die das teil verarbeiten kann
                            if (insel == null)
                            {
                                Console.WriteLine(_AktuellesTeil.GetSeriennummer() + " > LagerEin");
                                findeEingangsLager().TeilZwischenlagern(_AktuellesTeil);
                            }
                            else
                            {
                                Console.WriteLine(_AktuellesTeil.GetSeriennummer() + " > " + insel.GetName());
                                insel.TeilEntgegennehmen(_AktuellesTeil);
                            }
                        }
                    }
                }
            }
            Console.WriteLine("Robbie ist fertig. " + FindeAusgangsLager().GetBestand().Count + " Teile im Ausgangslager");
        }
        private void GibHistorieAus(Teil t)
        {
            string serienNummer = t.GetSeriennummer();

            Console.Write("LagerAus: " + serienNummer + " ");
            foreach (Tuple <Verarbeitungsschritt, string> historienEintrag in t.LiefereHistorie())
            {
                Console.Write("( " + historienEintrag.Item1 + " - " + historienEintrag.Item2 + " );");
            }
            Console.Write("\n");
        }