private void CollectDependenciesControllerTypesAndBinaryConfigs(IScreenControllerProxy visiting, HashSet <IScreenControllerProxy> visited, HashSet <Type> allControllers, Dictionary <string, BinaryContentUtils.DbBinaryConfig> proxyBinaryConfigs)
            {
                if (visited.Add(visiting))
                {
                    allControllers.Add(visiting.GetControllerType());

                    var newValues = visiting.GetDbBinaryConfigs().Where(kvp => !proxyBinaryConfigs.ContainsKey(kvp.Key));
                    proxyBinaryConfigs.AddRange(newValues);
                    visiting.EnsureInitialized();
                    foreach (var childControllerProxy in visiting.GetChildControllers())
                    {
                        CollectDependenciesControllerTypesAndBinaryConfigs(childControllerProxy, visited, allControllers, proxyBinaryConfigs);
                    }
                }
            }
 protected static void SafeAddChildController(IScreenControllerProxy controllerProxy, HashSet <IScreenControllerProxy> childControllers)
 {
     childControllers.Add(controllerProxy);
 }