/// <summary>
        /// Activates the rules in the dictionary until stabilisation
        /// </summary>
        public void Cycle()
        {
            try
            {
                DataDictionary.Generated.ControllersManager.NamableController.DesactivateNotification();

                LastActivationTime = Time;

                Utils.ModelElement.ErrorCount = 0;

                foreach (Generated.acceptor.RulePriority priority in PRIORITIES_ORDER)
                {
                    // Clears the cache of functions
                    FunctionCacheCleaner.ClearCaches();

                    // Activates the processing engine
                    HashSet <Activation> activations = new HashSet <Activation>();
                    foreach (DataDictionary.Dictionary dictionary in EFSSystem.Dictionaries)
                    {
                        foreach (DataDictionary.Types.NameSpace nameSpace in dictionary.NameSpaces)
                        {
                            SetupNameSpaceActivations(priority, activations, nameSpace);
                        }
                    }

                    ApplyActivations(activations);
                }
                // Clears the cache of functions
                FunctionCacheCleaner.ClearCaches();

                if (Utils.ModelElement.ErrorCount > 0)
                {
                    SubStep subStep = CurrentSubStep();
                    if (subStep != null)
                    {
                        subStep.AddError("Errors were raised while evaluating this sub step. See model view for more informations");
                    }
                    else
                    {
                        Step step = CurrentStep();
                        if (step != null)
                        {
                            step.AddError("Errors were raised while evaluating this step. See model view for more informations");
                        }
                        else
                        {
                            TestCase testCase = CurrentTestCase();
                            if (testCase != null)
                            {
                                testCase.AddError("Errors were raised while evaluating this test case. See model view for more informations");
                            }
                            else
                            {
                                SubSequence.AddError("Errors were raised while evaluating this sub sequence. See model view for more informations");
                            }
                        }
                    }
                }
            }
            finally
            {
                DataDictionary.Generated.ControllersManager.NamableController.ActivateNotification();
            }

            EventTimeLine.CurrentTime += Step;
        }