func (c Children) Find(control Control) *Child {
	for _, child := range c {
		if child.Control == control {
			return child
		}
	}
	return nil
}
Find returns and returns the Child pointer for the given Control, or nil
if the child is not in this Children list.
package gxui
import (
	"fmt"
	"strings"
	"github.com/google/gxui/math"
)
type Child struct {
	Control Control
	Offset  math.Point
}
type Parent interface {
	Children() Children
	Relayout()
	Redraw()
}
type Container interface {
	Parent
	AddChild(child Control) *Child
	AddChildAt(index int, child Control) *Child
	RemoveChild(child Control)
	RemoveChildAt(index int)
	RemoveAll()
	Padding() math.Spacing
	SetPadding(math.Spacing)
}
func (c *Child) String() string {
	return fmt.Sprintf("Type: %T, Bounds: %v", c.Control, c.Bounds())
}
func (c *Child) Bounds() math.Rect {
	return c.Control.Size().Rect().Offset(c.Offset)
}
func (c *Child) Layout(rect math.Rect) {
	c.Offset = rect.Min
	c.Control.SetSize(rect.Size())
}
type Children []*Child
func (c Children) String() string {
	s := make([]string, len(c))
	for i, c := range c {
		s[i] = fmt.Sprintf("%d: %s", i, c.String())
	}
	return strings.Join(s, "\n")
}
func (c Children) IndexOf(control Control) int {
	for i, child := range c {
		if child.Control == control {
			return i
		}
	}
	return -1
}