# File lib/bugzilla/product.rb, line 151
    def _get(cmd, ids, *args)
      # This is still in experimental and apparently the behavior was changed since 4.2.
      # We don't keep the backward-compatibility and just require the proper version here.
      requires_version(cmd, 4.2)

      params = {}

      if ids.kind_of?(Hash) then
        raise ArgumentError, sprintf("Invalid parameter: %s", ids.inspect) unless ids.include?('ids') || ids.include?('names')
        params[:ids] = ids['ids'] || ids['names']
      elsif ids.kind_of?(Array) then
        r = ids.map {|x| x.kind_of?(Integer) ? x : nil}.compact
        if r.length != ids.length then
          params[:names] = ids
        else
          params[:ids] = ids
        end
      else
        if ids.kind_of?(Integer) then
          params[:ids] = [ids]
        else
          params[:names] = [ids]
        end
      end

      @iface.call(cmd, params)
    end