docs: function() {
  
                          var newVal = this.options.value();
  
                          // When given a string, try to extract all the options from it (i.e. "a;b;c;d")
                          if (typeof newVal === 'string') {
                              newVal = newVal.split(this.delimiter);
                              this.isString = true;
                          }
                          // When given something else, try to make it an array and deal with it
                          else if (newVal) {
                              newVal = can.makeArray(newVal);
                          }
  
                          // Make an object containing all the options passed in for convenient lookup
                          var isSelected = {};
                          can.each(newVal, function(val) {
                              isSelected[val] = true;
                          });
  
                          // Go through each &lt;option/&gt; element, if it has a value property (its a valid option), then 
                          // set its selected property if it was in the list of vals that were just set.
                          can.each(this.element[0].childNodes, function(option) {
                              if (option.value) {
                                  option.selected = !! isSelected[option.value];
                              }
  
                          });
  
                      }