func newWidgetB(wi WidgetInfo) *WidgetB {
	w := &WidgetB{}
	w.WidgetInfo = wi
	w.m = make(map[interface{}]struct{})
	var _ Widget_iface = w   
	return w
}
Create WidgetB data (deferred creation of a widget)
package factory_method_with_reuse
type dataB struct {
	m map[interface{}]struct{}
}
type WidgetB struct {
	WidgetInfo
	dataA
}