// documentation inherited
  protected void wasRemoved() {
    super.wasRemoved();

    // call wasRemoved() on all of our children
    applyOperation(
        new ChildOp() {
          public void apply(BComponent child) {
            child.wasRemoved();
          }
        });
  }
  // documentation inherited
  protected void wasAdded() {
    super.wasAdded();

    // call wasAdded() on all of our existing children; if they are
    // added later (after we are added), they will automatically have
    // wasAdded() called on them at that time
    applyOperation(
        new ChildOp() {
          public void apply(BComponent child) {
            child.wasAdded();
          }
        });
  }
  // documentation inherited
  public void validate() {
    if (!_valid) {
      // lay ourselves out
      layout();

      // now validate our children
      applyOperation(
          new ChildOp() {
            public void apply(BComponent child) {
              child.validate();
            }
          });

      // finally mark ourselves as valid
      _valid = true;
    }
  }