anchor.diff:  
   list_bodyc([], _Max, _Options, _Tuple) -> {[], 0};
   list_bodyc(_, Max, _Options, _Tuple) when Max < 5 -> {",...", 4};
  +list_bodyc([B], _Max, _Options, _Tuple) when is_bitstring(B) ->
  +    Size = bit_size(B),
  +    <<Value:Size>> = B,
  +    ValueStr = integer_to_list(Value),
  +    SizeStr = integer_to_list(Size),
  +    {[$, , ValueStr, $:, SizeStr], length(ValueStr) + length(SizeStr) +2};
   list_bodyc([H|T], Max, #print_options{depth=Depth} = Options, Tuple) -> 
       {List, Len} = print(H, Max, dec_depth(Options)),
       {Final, FLen} = list_bodyc(T, Max - Len - 1, Options, Tuple),
  
positive.code:             {["<<", Res, ">>"], Length+4}
      end;
  
  print(Float, _Max, _Options) when is_float(Float) ->
      %% use the same function io_lib:format uses to print floats
      %% float_to_list is way too verbose.
  
negative.code:     ?assertEqual("hello\nworld", lists:flatten(format("~s", [<<"hello\nworld">>], 50))),
      ?assertEqual("<<\"hello\\nworld\">>", lists:flatten(format("~p", [<<"hello\nworld">>], 50))),
      ?assertEqual("     hello", lists:flatten(format("~10s", [<<"hello">>], 50))),
      ok.
  
  bitstring_printing_test() ->
      ?assertEqual("<<1,2,3,1:7>>", lists:flatten(format("~p",
                  [<<1, 2, 3, 1:7>>], 100))),
      ?assertEqual("<<1:7>>", lists:flatten(format("~p",
                  [<<1:7>>], 100))),
      ?assertEqual("<<1,2,3,...>>", lists:flatten(format("~p",
                  [<<1, 2, 3, 1:7>>], 12))),
      ?assertEqual("<<1,2,3,...>>", lists:flatten(format("~p",
                  [<<1, 2, 3, 1:7>>], 13))),
      ?assertEqual("<<1,2,3,1:7>>", lists:flatten(format("~p",
                  [<<1, 2, 3, 1:7>>], 14))),
      ?assertEqual("<<..>>", lists:flatten(format("~p", [<<1:7>>], 0))),
      ?assertEqual("<<...>>", lists:flatten(format("~p", [<<1:7>>], 1))),
      ok.
  
  list_printing_test() ->
  