code: function Multiselect(select, options) {
  
          this.$select = $(select);
  
          // Placeholder via data attributes
          if (this.$select.attr("data-placeholder")) {
              options.nonSelectedText = this.$select.data("placeholder");
          }
  
          this.options = this.mergeOptions($.extend({}, options, this.$select.data()));
  
          // Initialization.
          // We have to clone to create a new reference.
          this.originalOptions = this.$select.clone()[0].options;
          this.query = '';
          this.searchTimeout = null;
          this.lastToggledInput = null
  
          this.options.multiple = this.$select.attr('multiple') === "multiple";
          this.options.onChange = $.proxy(this.options.onChange, this);
          this.options.onDropdownShow = $.proxy(this.options.onDropdownShow, this);
          this.options.onDropdownHide = $.proxy(this.options.onDropdownHide, this);
          this.options.onDropdownShown = $.proxy(this.options.onDropdownShown, this);
          this.options.onDropdownHidden = $.proxy(this.options.onDropdownHidden, this);
  
          // Build select all if enabled.
          this.buildContainer();
          this.buildButton();
          this.buildDropdown();
          this.buildSelectAll();
          this.buildDropdownOptions();
          this.buildFilter();
  
          this.updateButtonText();
          this.updateSelectAll();
  
          if (this.options.disableIfEmpty && $('option', this.$select).length <= 0) {
              this.disable();
          }
  
          this.$select.hide().after(this.$container);
      }
docs: Constructor to create a new multiselect using the given select.
  
  @param {jQuery} select
  @param {Object} options
  @returns {Multiselect}