def delete_if
      old_root = @root
      clear
      old_root.each do |k, v|
        if !yield(k, v)
          insert(k, v)
        end
      end
    end
def delete_if
      old_root = @root
      clear
      old_root.each do |k, v|
        if !yield(k, v)
          insert(k, v)
        end
      end
    end
Delete all entries for which the passed block yields true. The
 implementation is optimized for large bulk deletes. It rebuilds a new
 BTree for the elements to keep. If only few elements are deleted the
 overhead of rebuilding the BTree is rather high.
 @yield [key, value]