anchor.diff:  -spec new_bpi(MaxItems::non_neg_integer(), BitsPerItem::float(), ?REP_HFS:hfs())
           -> bloom_filter().
   new_bpi(MaxItems, BitPerItem, Hfs) ->
  -    new_(resize(util:ceil(BitPerItem * MaxItems), 8), MaxItems, Hfs).
  +    new_(resize(util:ceil(BitPerItem * MaxItems), 8), Hfs).
   
   %% @doc Creates a new bloom filter.
  --spec new_(BitSize::pos_integer(), MaxItems::non_neg_integer(), ?REP_HFS:hfs()) -> bloom_filter().
  -new_(BitSize, MaxItems, Hfs) when (BitSize rem 8) =:= 0 ->
  -    #bloom{
  -           size = BitSize,
  -           max_items = MaxItems,
  -           hfs = Hfs,
  -           items_count = 0
  -          };
  -new_(BitSize, MaxItems, Hfs) ->
  -    new_(resize(BitSize, 8), MaxItems, Hfs).
  +-spec new_(BitSize::pos_integer(), ?REP_HFS:hfs()) -> bloom_filter().
  +new_(BitSize, Hfs) when (BitSize rem 8) =:= 0 ->
  +    #bloom{size = BitSize, hfs = Hfs, items_count = 0};
  +new_(BitSize, Hfs) ->
  +    new_(resize(BitSize, 8), Hfs).
   
   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   
  
positive.code: 
  %% @doc Return bloom filter debug information.
  -spec print(bloom_filter()) -> [{atom(), any()}].
  print(#bloom{max_items = MaxItems, size = Size, hfs = Hfs,
               items_count = NumItems} = Bloom) ->
      HCount = ?REP_HFS:size(Hfs),
      [{filter_bit_size, Size},
       {struct_byte_size, byte_size(term_to_binary(Bloom))},
       {hash_fun_num, HCount},
       {max_items, MaxItems},
       {items_inserted, NumItems},
       {act_fpr, get_property(Bloom, fpr)},
       {compression_rate, ?IIF(MaxItems =:= 0, 0.0, Size / MaxItems)}].
  
  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  
  
negative.code: 
  %% @doc joins two bloom filter, returned bloom filter represents their union
  -spec join(bloom_filter(), bloom_filter()) -> bloom_filter().
  join(#bloom{size = Size, items_count = Items1,
              filter = <<>>, hfs = Hfs},
       #bloom{size = Size, items_count = Items2,
              filter = F2}) ->
      #bloom{size = Size, filter = F2, hfs = Hfs,
             items_count = Items1 + Items2 %approximation
             };
  join(#bloom{size = Size, items_count = Items1, filter = F1, hfs = Hfs},
       #bloom{size = Size, items_count = Items2, filter = <<>>}) ->
      #bloom{size = Size, filter = F1, hfs = Hfs,
             items_count = Items1 + Items2 %approximation
             };
  join(#bloom{size = Size, items_count = Items1, filter = F1, hfs = Hfs},
       #bloom{size = Size, items_count = Items2, filter = F2}) ->
      <<F1Val : Size>> = F1,
      <<F2Val : Size>> = F2,
      NewFVal = F1Val bor F2Val,
      #bloom{size = Size, filter = <<NewFVal:Size>>, hfs = Hfs,
             items_count = Items1 + Items2 %approximation
             }.
  
  