anchor.diff:  %% Return a piece set where each member is a member of both sets.
   %% If both sets are not of the same size this function exits with badarg.
   %% @end
  +-spec intersection(pieceset(), pieceset()) -> pieceset().
   intersection(Set0, Set1) ->
       #pieceset{size=Size0, elements=Elements0} = Set0,
       #pieceset{size=Size1, elements=Elements1} = Set1,
  
positive.code: %% Create an empty set of piece indexes. The set of pieces
  %% is limited to contain pieces indexes from 0 to Size-1.
  %% @end
  new(Size) ->
      PaddingLen = paddinglen(Size),
      Elements = <<0:Size, 0:PaddingLen>>,
  
negative.code: %% negative or larger than the size of this piece set, this
  %% function exists with the reason badarg.
  %% @end
  -spec insert(pos_integer(), pieceset()) -> pieceset().
  insert(PieceIndex, _) when PieceIndex < 0 ->
      error(badarg);
  insert(PieceIndex, Pieceset) ->
  