anchor.diff:  
     }
   
  +  void _addFetchUrlParam(String name, String value) {
  +    var new_fetch_url = this.fetch_url;
  +    if(!new_fetch_url.contains("?"))
  +      new_fetch_url = new_fetch_url + "?";
  +    if(!new_fetch_url.endsWith("?"))
  +      new_fetch_url = new_fetch_url + "&";
  +    this.fetch_url = new_fetch_url + "${name}=${value}";
  +  }
  +
     @override
     void externalClickCallback() {
       super.externalClickCallback();
  
positive.code:   /** Cleares the select box input and sets it to the previous value. Usually
      * called when user presses ESC key or focus is lost on the select element.
      */
    clearCustomValue([force=false]) {
      if((!this.options.containsKey(this.input_value) && this.allow_custom_value == false) || force) {
        this.input_value = this.input_value;
      }
      this.behave('close');
      this.opened = false;
    }
  
    /** This methd is called not once, but every time we fetch new options from the server,
  
negative.code:     * text presented to the user.
      */
    void fetchOptions() {
  
      _addFetchUrlParam(this.query_param_name, this.input_value);
  
      this.fetching_options = true;
      this.behave('showAjaxIndicator');
      this.ajax_request(this.fetch_url).then((String response) {
        this.options = new LinkedHashMap.from(JSON.decode(response));
        this.behave('hideAjaxIndicator');
  
  