def list *val
      return @list if val.empty?
      alist = val[0]
      case alist
      when Array
        @list = alist
        # I possibly should call init_vars in these 3 cases but am doing the minimal 2013-04-10 - 18:27 
        # Based no issue: https://github.com/mare-imbrium/canis/issues/15
        @current_index = @toprow = @pcol = 0
      when NilClass
          @list = [] # or nil ?
          @current_index = @toprow = @pcol = 0
      when Variable
        @list = alist.value
        @current_index = @toprow = @pcol = 0
      else
        raise ArgumentError, "Listbox list(): do not know how to handle #{alist.class} " 
      end
      clear_selection
    
      @repaint_required = true
      @widget_scrolled = true  # 2011-10-15 
      @list
    end
def list *val
      return @list if val.empty?
      alist = val[0]
      case alist
      when Array
        @list = alist
        # I possibly should call init_vars in these 3 cases but am doing the minimal 2013-04-10 - 18:27 
        # Based no issue: https://github.com/mare-imbrium/canis/issues/15
        @current_index = @toprow = @pcol = 0
      when NilClass
          @list = [] # or nil ?
          @current_index = @toprow = @pcol = 0
      when Variable
        @list = alist.value
        @current_index = @toprow = @pcol = 0
      else
        raise ArgumentError, "Listbox list(): do not know how to handle #{alist.class} " 
      end
      clear_selection
    
      @repaint_required = true
      @widget_scrolled = true  # 2011-10-15 
      @list
    end
provide data to List in the form of an Array or Variable or
 ListDataModel. This will create a default ListSelectionModel.

 CHANGE as on 2010-09-21 12:53:
 If explicit nil passed then dummy datamodel and selection model created
 From now on, constructor will call this, so this can always
 happen.

 NOTE: sometimes this can be added much after its painted.
 Do not expect this to be called from constructor, although that
 is the usual case. it can be dependent on some other list or tree.
 @param [Array, Variable, ListDataModel] data to populate list with
 @return [ListDataModel] just created or assigned