def self.best_diff(obj1, obj2, options = {}, &block)
options[:comparison] = block if block_given?
opts = { :similarity => 0.3 }.merge!(options)
diffs_1 = diff(obj1, obj2, opts)
count_1 = count_diff diffs_1
opts = { :similarity => 0.5 }.merge!(options)
diffs_2 = diff(obj1, obj2, opts)
count_2 = count_diff diffs_2
opts = { :similarity => 0.8 }.merge!(options)
diffs_3 = diff(obj1, obj2, opts)
count_3 = count_diff diffs_3
count, diffs = count_1 < count_2 ? [count_1, diffs_1] : [count_2, diffs_2]
diffs = count < count_3 ? diffs : diffs_3
end