private void NettoyerTransitionsEtEtatsOrigine()
        {
            try
            {
                var nbreNavigations = navigations.Count;

                if (nbreNavigations > 1)
                {
                    var avantDerniereNavigation = navigations
                                                  .ElementAt(
                        nbreNavigations - 2);
                    var derniereNavigation = NavigationCourante;

                    if (avantDerniereNavigation.EtatsCourants.Count() > derniereNavigation.EtatsOrigine.Count())
                    {
                        var transitionsPrecedentes = navigations
                                                     .SelectMany((n, i) =>
                                                                 i + 1 < nbreNavigations ?
                                                                 n.Transitions :
                                                                 Enumerable.Empty <Transition>())
                                                     .Distinct();
                        var transitionsAAnalyser = avantDerniereNavigation
                                                   .Transitions
                                                   .Where(t =>
                                                          t.Symbole.HasValue);

                        // Note : on aurait pu englober la dernière navigation mais on aurait dû mettre ne place une récupération des transactions avec symbole sur la dernière navigation pour une utilisation sur le prochain nettoyage
                        var navigationOptimisee = new Navigation1Symbole(
                            navigations.First().EtatsOrigine,
                            NavigationCourante.EtatsOrigine,
                            transitionsPrecedentes);
                        navigationOptimisee
                        .Nettoyer(
                            transitionsAAnalyser);

                        navigations
                        .Clear();
                        navigations
                        .Add(navigationOptimisee);
                        // Ajout de la dernière navigation, cela permettra d'avoir les dernières transitions avec symbole sur le prochain nettoyage
                        navigations
                        .Add(derniereNavigation);
                    }
                }
            }
            catch (Exception ex)
            {
                throw EncapsulerEtGererException <ExceptionTechnique>(
                          ex);
            }
        }
        internal INavigation1Symbole RecupererNavigateurSur(
            IEnumerable <Etat> etatsOrigine)
        {
            try
            {
                var navigateur = new Navigation1Symbole(
                    this);
                navigateur
                .DefinirEtatsOrigine(etatsOrigine);

                return(navigateur);
            }
            catch (Exception ex)
            {
                throw EncapsulerEtGererException <ExceptionTechniqueArbreConstruction>(
                          ex);
            }
        }