protected void Init(IOptionGroup delegateItem)
 {
     this.groupDelegate = delegateItem;
     listener           = new WeakGroupListener(this, groupDelegate);
     foreach (var item in delegateItem.Items)
     {
         this.items.Add(CreateCopy(item));
     }
 }
 public override void Dispose()
 {
     base.Dispose();
     if (listener != null)
     {
         listener.Disconnect(groupDelegate);
         listener      = null;
         groupDelegate = null;
     }
 }