anchor.diff:      RecCtl = gb_sets:new(),
       Result = case var_dump_fmt(Context, Line, Value, <<?SPACES_VD>>, RecCtl) of
           Elements when is_list(Elements) ->
  -            Data = iolist_to_binary(Elements),
               case Value of
                   Value when ?IS_ARRAY(Value) ->
  -                    Size = ephp_data:to_bin(ephp_array:size(Value)),
  -                    <<"array(", Size/binary, ") {\n", Data/binary, "}\n">>;
  -                #obj_ref{pid = Objects, ref = ObjectId} ->
  -                    #ephp_object{class = #class{name = ClassName, attrs = Attrs}} =
  -                        ephp_object:get(Objects, ObjectId),
  -                    Size = ephp_data:to_bin(length(Attrs)),
  -                    ID = integer_to_binary(ObjectId),
  -                    <<"object(", (ClassName)/binary, ")#", ID/binary,
  -                      " (", Size/binary, ") {\n", Data/binary, "}\n">>
  +                    iolist_to_binary(var_dump_array(<<>>, Context, Line, Value,
  +                                                    Elements, <<>>));
  +                Value when ?IS_OBJECT(Value) ->
  +                    iolist_to_binary(var_dump_object(<<>>, Value, Elements, <<>>))
               end;
           Element ->
               Element
  
positive.code:                 ];
              V when is_list(V) andalso ?IS_MEM(Val) ->
                  {#ephp_array{} = Data, 1} = ephp_mem:get_with_links(Val),
                  Size = ephp_array:size(Data),
                  Elements = ephp_data:to_bin(Context, Line, Size),
                  [<<Spaces/binary, "[", KeyBin/binary, "]=>\n",
                     Spaces/binary,"array(", Elements/binary, ") {\n",
                     (iolist_to_binary(V))/binary, Spaces/binary,
                     "}\n">>];
              V when is_list(V) andalso ?IS_ARRAY(Val) ->
                  Elements = ephp_data:to_bin(Context, Line, ephp_array:size(Val)),
                  [
                      <<Spaces/binary, "[", KeyBin/binary, "]=>\n",
                        Spaces/binary,"array(", Elements/binary, ") {\n",
                        (iolist_to_binary(V))/binary, Spaces/binary,
                        "}\n">>];
              V when is_list(V) andalso ?IS_OBJECT(Val) ->
                  #ephp_object{id = InstanceID,
                               class = Class
                                     = #class{attrs=Attrs}} = ephp_object:get(Val),
                  Size = ephp_data:to_bin(length(Attrs)),
                  ID = integer_to_binary(InstanceID),
                  [
                      <<Spaces/binary, "[", KeyBin/binary, "]=>\n",
                        Spaces/binary, "object(", (Class#class.name)/binary, ")#",
                        ID/binary, " (", Size/binary, ") {\n">>
                  ] ++ V ++ [
                      <<Spaces/binary, "}\n">>
                  ]
          end
      end, [], Value).
  
  print_r_fmt(Context, #var_ref{pid = VarPID, ref = VarRef}, Spaces, RecCtl) ->
      case gb_sets:is_member(VarRef, RecCtl) of
  
negative.code:             end,
              Output ++ if
                  is_list(ValDumped) andalso ?IS_ARRAY(Value) ->
                      Prefix = <<Spaces/binary, "[", CompleteName/binary, "]=>\n">>,
                      var_dump_array(Prefix, Context, Line, Value, ValDumped, Spaces);
                  is_list(ValDumped) andalso ?IS_OBJECT(Value) ->
                      Prefix = <<Spaces/binary, "[", CompleteName/binary, "]=>\n">>,
                      var_dump_object(Prefix, Value, ValDumped, Spaces);
                  true ->
                      [<<Spaces/binary, "[", CompleteName/binary, "]=>\n",
                         Spaces/binary, ValDumped/binary>>]
              end
          end, [], VisAttrs);
      undefined ->
          <<"NULL\n">>
      end;
  