def uniq!(*arguments, &block)
      select_duplicates_by(*arguments, &block).each do |dupes|
        dupes.shift
        dupes.each do |dupe|
          self.remove dupe
        end
      end

      self
    end
def uniq!(*arguments, &block)
      select_duplicates_by(*arguments, &block).each do |dupes|
        dupes.shift
        dupes.each do |dupe|
          self.remove dupe
        end
      end

      self
    end
call-seq:
   bib.uniq!                                 -> bib
   bib.uniq!(:title, :year)                  -> bib
   bib.uniq! { |digest, entry| ... }         -> bib
   bib.uniq!(:title) { |digest, entry| ... } -> bib

 Removes duplicate entries from the Bibliography.

 All arguments given will be used to calculate a digest
 for each entry. If a block is given, it will be be passed
 the computed digest as well as each entry; the block
 must then yield the final digest that will be used to
 compute duplicates.

 This method will always retain the first entry and will
 discard subsequent duplicates on the basis of each entry's
 digest.

 @see Entry#digest
 @see @duplicates_by