// NewSectionSelectionNodeTexter returns a new instance of SectionSelectionNodeTexter.
func NewSectionSelectionNodeTexter(node *viewmodel.SectionSelectionNode, listener ViewModelListener) *SectionSelectionNodeTexter {
	texter := &SectionSelectionNodeTexter{
		selectionTexter: NewValueSelectionNodeTexter(node.Selection(), listener),
		subTexter:       make(map[string]ViewModelNodeTexter),
		node:            node}

	sections := node.Sections()
	for key, section := range sections {
		visitor := NewViewModelTexterVisitor(listener)
		section.Specialize(visitor)
		texter.subTexter[key] = visitor.instance
	}

	return texter
}
func (filler *viewModelFiller) SectionSelection(node *viewmodel.SectionSelectionNode) {
	filler.ValueSelection(node.Selection())
	filler.object.Set("type", "sectionSelection")
	filler.object.Set("label", node.Label())

	nodeSections := node.Sections()
	objSections := js.Global.Get("Object").New()
	for key, section := range nodeSections {
		sectionFiller := newViewModelFiller()
		section.Specialize(sectionFiller)
		objSections.Set(key, sectionFiller.object)
	}
	filler.object.Set("sections", objSections)
}