public void AddWindowManager <DataType>(DataType data, string name) where DataType : class
        {
            WindowPreferenceManager manager = new WindowPreferenceManager()
            {
                Properties = new BasicObjectFlattener().Flatten(data, typeof(DataType)),
                ItemName   = name
            };

            if (childs.Contains(manager)) // WPM implements IQuatable
            {
                WindowPreferenceManager currentManager = null;
                foreach (var child in childs)
                {
                    if (child.ItemName.Equals(manager.ItemName))
                    {
                        currentManager = child;
                    }
                }
                if (currentManager != null && !currentManager.IsEquivalentTo(manager))
                {
                    childs.Remove(currentManager);
                    childs.Add(manager);
                }
            }
            else
            {
                childs.Add(manager);
            }
        }