/// Implementation of `Widget` trait for `WidgetBox`. We just forward to the inner `Widget`.
impl<D: Data + 'static + Default> Widget<D> for WidgetBox<D> {
    /// Paint the `Widget`
    fn paint(
        &mut self, 
        paint_ctx: &mut PaintCtx, 
        base_state: &BaseState, 
        data: &D, 
        env: &Env
    ) {
        match &mut self.get_widgets()[self.0 as usize] {
            //  TODO: Simplify with `ambassador` https://github.com/hobofan/ambassador
            WidgetType::Align(w)   => w.paint(paint_ctx, base_state, data, env),
            WidgetType::Button(w)  => w.paint(paint_ctx, base_state, data, env),
            WidgetType::Flex(w)    => w.paint(paint_ctx, base_state, data, env),
            WidgetType::Label(w)   => w.paint(paint_ctx, base_state, data, env),
            WidgetType::Padding(w) => w.paint(paint_ctx, base_state, data, env),
            WidgetType::None       => panic!("missing widget")
        };
    }
    ...