static void CheckParents(LoggerBuilderCollection builders,
                                 LoggerBuilder lb, Logger logger) {

            if (lb.ComputeParent(null).Length == 0) {
                return;
            }

            HashSet<string> ancestors = new HashSet<string>();
            LoggerBuilder current = lb;
            StringBuilder forwards = new StringBuilder(current.Name);

            while (current != null) {
                if (!ancestors.Add(current.ComputeName())) {
                    Traceables.DetectedCycleInLogParents(forwards.ToString());
                    logger.ForwardToParentBlocked = true;
                    break;
                }
                string parent = current.ComputeParent(null);
                if (parent.Length == 0)
                    break;

                // Detect missing parents
                current = builders[parent];
                if (current == null) {
                    Traceables.MissingParentLoggerReference(lb.Name);
                    break;
                }

                forwards.Append(" -> " + parent);
            }
        }
        public void clear_restores_default_root()
        {
            LoggerBuilderCollection unit = new LoggerBuilderCollection();

            unit.Clear();

            Assert.True(unit.Contains("root"));
        }
        public void cannot_remove_root()
        {
            LoggerBuilderCollection unit = new LoggerBuilderCollection();

            unit.Remove("root");
        }