code: function SelectionField(type, options) {
    Field.call(this, type, options);
  
    this.items = [];
  
    this.element = util.createElement(this.document, 'select');
    this.element.classList.add('gcli-field');
    this._addOption({
      name: l10n.lookupFormat('fieldSelectionSelect', [ options.name ])
    });
  
    Promise.resolve(this.type.getLookup()).then(function(lookup) {
      lookup.forEach(this._addOption, this);
    }.bind(this), console.error);
  
    this.onInputChange = this.onInputChange.bind(this);
    this.element.addEventListener('change', this.onInputChange, false);
  
    this.onFieldChange = util.createEvent('SelectionField.onFieldChange');
  }
docs: Model an instanceof SelectionType as a select input box.
  <p>There are 3 slightly overlapping concepts to be aware of:
  <ul>
  <li>value: This is the (probably non-string) value, known as a value by the
  assignment
  <li>optValue: This is the text value as known by the DOM option element, as
  in &lt;option value=???%gt...
  <li>optText: This is the contents of the DOM option element.
  </ul>