protected override void Dispose(bool beforeDestructor)
{
if (beforeDestructor)
{
foreach (var hookup in Children)
{
var disposeHookup = hookup as IDisposable;
if (disposeHookup != null)
disposeHookup.Dispose();
}
Children.Clear();
}
base.Dispose(beforeDestructor);
}