whole_func_string: function (selected) {
              var val = this.getVal(),
                  data,
                  index;
  
              selected = selected.closest(".select2-search-choice");
  
              if (selected.length === 0) {
                  throw "Invalid argument: " + selected + ". Must be .select2-search-choice";
              }
  
              data = selected.data("select2-data");
  
              if (!data) {
                  // prevent a race condition when the 'x' is clicked really fast repeatedly the event can be queued
                  // and invoked on an element already removed
                  return;
              }
  
              index = indexOf(this.id(data), val);
  
              if (index >= 0) {
                  val.splice(index, 1);
                  this.setVal(val);
                  if (this.select) this.postprocessResults();
              }
              selected.remove();
  
              this.opts.element.trigger({ type: "removed", val: this.id(data), choice: data });
              this.triggerChange({ removed: data });
          }
func_code_string: function (selected) {
              var val = this.getVal(),
                  data,
                  index;
  
              selected = selected.closest(".select2-search-choice");
  
              if (selected.length === 0) {
                  throw "Invalid argument: " + selected + ". Must be .select2-search-choice";
              }
  
              data = selected.data("select2-data");
  
              if (!data) {
                  // prevent a race condition when the 'x' is clicked really fast repeatedly the event can be queued
                  // and invoked on an element already removed
                  return;
              }
  
              index = indexOf(this.id(data), val);
  
              if (index >= 0) {
                  val.splice(index, 1);
                  this.setVal(val);
                  if (this.select) this.postprocessResults();
              }
              selected.remove();
  
              this.opts.element.trigger({ type: "removed", val: this.id(data), choice: data });
              this.triggerChange({ removed: data });
          }
func_documentation_string: multi