docs: function(in_argument_hash){    
      this._is_a = 'bbop-widget-set.drop_select_shield';
  
      var anchor = this;
  
      // Per-UI logger.
      var logger = new bbop.logger();
      logger.DEBUG = true;
      function ll(str){ logger.kvetch('W (drop_select_shield): ' + str); }
  
      // Our argument default hash.
      var default_hash = {
  	'title': '',
  	'blurb': '',
  	'pool_list': [],
  	'selected_list': [],
  	'action_label': 'Select',
  	'action': function(){},
  	'width': 800
      };
      var folding_hash = in_argument_hash || {};
      var arg_hash = bbop.fold(default_hash, folding_hash);
      var title = arg_hash['title'];
      var blurb = arg_hash['blurb'];
      var pool_list = arg_hash['pool_list'];
      var selected_list = arg_hash['selected_list'];
      var action_label = arg_hash['action_label'];
      var action = arg_hash['action'];
      var width = arg_hash['width'];
  
      // Create a random class that we'll use as a connector later.
      var rclass = 'bbop-js-ui-dss-rclass-'+ bbop.randomness(20);
  
      // Get the pool and selected lists into html form for loading into
      // the frame table.
      var li_attrs = {
  	'class': 'ui-state-default bbop-js-ui-hoverable'
  	//'class': 'bbop-js-ui-hoverable'
      };
      var ul_src_list_attrs = {
      	'generate_id': true,
  	'class': 'bbop-js-ui-drop-select-shield ' + rclass
      };
      var pool_ul_list = new html.list([], ul_src_list_attrs);
      us.each(pool_list, function(item){	     
      	var lbl = item[0];
      	var val = item[1];
      	//ll('lbl: ' + lbl);
      	//ll('val: ' + val);
  	li_attrs['value'] = val;
  	var cntnt = '' +
  		'<span class="ui-icon ui-icon-arrow-4"></span> ' +
  		'' + lbl + ' (' + val + ')' + 
  		'';
  	var li_elt = new html.tag('li', li_attrs, cntnt);
  	pool_ul_list.add_to(li_elt);
      });
      var ul_target_list_attrs = {
      	'generate_id': true,
  	'class':
  	'bbop-js-ui-drop-select-shield bbop-js-ui-drop-select-shield-target ' +
  	    rclass
      };
      var selected_ul_list = new html.list([], ul_target_list_attrs);
      us.each(selected_list, function(item){
      	var lbl = item[0];
      	var val = item[1];
      	//ll('lbl: ' + lbl);
      	//ll('val: ' + val);
  	li_attrs['value'] = val;
  	var cntnt = '' +
  		'<span class="ui-icon ui-icon-arrow-4"></span> ' +
  		'' + lbl + ' (' + val + ')' + 
  		'';
  	var li_elt = new html.tag('li', li_attrs, cntnt);
  	selected_ul_list.add_to(li_elt);
      });
  
      // Append super container div to body.
      var div = new html.tag('div', {'generate_id': true});
      var div_id = div.get_id();
      jQuery('body').append(div.to_string());
  
      // Add title and blurb to div.
      jQuery('#' + div_id).append('<p>' + blurb + '</p>');
      
      // Add the table frame to the div.
      var tbl = new html.table(['Available pool', 'Selected fields'],
  			     [[pool_ul_list, selected_ul_list]],
  			     {'class':
  			      'bbop-js-ui-drop-select-shield-frame'});
      jQuery('#' + div_id).append(tbl.to_string());
      
      // Make the lists operable.
      var pul_id = pool_ul_list.get_id();
      var sul_id = selected_ul_list.get_id();
      jQuery('#'+pul_id+',#'+sul_id ).sortable(
  	{connectWith: '.' + rclass}
      ).disableSelection();
  
      // Helper function to pull the values.
      // Currently, JQuery adds a lot of extra non-attributes li
      // tags when it creates the DnD, so filter those out to
      // get just the fields ids.
      function _get_selected(){
      	var ret_list = [];
  	var selected_strings =
  	    jQuery('#'+ sul_id).sortable('toArray', {'attribute': 'value'});
      	us.each(selected_strings, function(in_thing){
  	    if( in_thing && in_thing !== '' ){
  		ret_list.push(in_thing);
  	    }
  	});
  	return ret_list;
      }
  
      // Buttons for final dialog.
      var mod_buttons = {};
      mod_buttons[action_label] =	function(event){
      	var final_selected = _get_selected();
  	
      	// Calls those values with our action function.
      	action(final_selected);
  	
      	// And destroy ourself.
      	jQuery('#' + div_id).remove();
      };
      mod_buttons['Cancel'] = function(event, selected_items){
      	jQuery('#' + div_id).remove();
      };
      
      // Modal dialogify div; include self-destruct.
      var diargs = {
  	'title': title,
  	'modal': true,
  	'draggable': false,
  	'width': width,
  	'buttons': mod_buttons,
  	'close':
  	function(){
  	    //jQuery(this).dialog('destroy');
  	    jQuery(this).remove();
  	}	    
      };
      var dia = jQuery('#' + div_id).dialog(diargs);    
  }