__init__(values, choices, options) {
		if (!Array.isArray(values))
			values = (values != null && values != '') ? [ values ] : [];

		if (typeof(choices) != 'object')
			choices = null;

		this.values = values;
		this.choices = choices;
		this.options = Object.assign({}, options, {
			multiple: false,
			optional: true
		});
	}
In case choices are passed to the dynamic list constructor, the widget
supports the same properties as [Dropdown.InitOptions]{@link LuCI.ui.Dropdown.InitOptions}
but enforces specific values for some dropdown properties.

@typedef {LuCI.ui.Dropdown.InitOptions} InitOptions
@memberof LuCI.ui.DynamicList

@property {boolean} multiple=false
Since dynamic lists never allow selecting multiple choices when adding
another list item, this property is forcibly set to `false`.

@property {boolean} optional=true
Since dynamic lists use an embedded dropdown to present a list of
predefined choice values, the dropdown must be made optional to allow
it to remain unselected.