    # File lib/chef/provider/package/yum.rb, line 543
              def push(*args)
                args.flatten.each do |new_rpm|
                  unless new_rpm.kind_of?(RPMDbPackage)
                    raise ArgumentError, "Expecting an RPMDbPackage object"
                  end

                  @rpms[new_rpm.n] ||= Array.new

                  # we may already have this one, like when the installed list is refreshed
                  idx = @index[new_rpm.nevra]
                  if idx
                    # grab the existing package if it's not
                    curr_rpm = idx
                  else
                    @rpms[new_rpm.n] << new_rpm

                    new_rpm.provides.each do |provide|
                      @provides[provide.name] ||= Array.new
                      @provides[provide.name] << new_rpm
                    end

                    curr_rpm = new_rpm
                  end

                  # Track the nevra -> RPMPackage association to avoid having to compare versions
                  # with @rpms[new_rpm.n] on the next round
                  @index[new_rpm.nevra] = curr_rpm

                  # these are overwritten for existing packages
                  if new_rpm.available
                    @available << curr_rpm
                  end
                  if new_rpm.installed
                    @installed << curr_rpm
                  end
                end
              end