public override void Add(Component c)
 {
     throw new ApplicationException("Cannot add to a branch");
 }
 public override void Remove(Component component)
 {
     children.Remove(component);
 }
 public override void Add(Component component)
 {
     children.Add(component);
 }
 public abstract void Remove(Component c);
 public abstract void Add(Component c);
 public override void Remove(Component c)
 {
     throw new ApplicationException("Cannot remove from a branch");
 }