Why push_back in queue is working as shallow copy

hi,
anyone can help me with below code that how to stop replicating the values in element.

class mon extended uvm_monitor;
  trans_item xtn, xtn_container[$];
  .
  .
  function build_phase(...);
    xtn = new();
  endfunction

  function push_in_queue(pkt);
   if(pkt.tail == 1) begin
     container.push_back(pkt);
     pkt.payload = 'b0;         //changing this pkt here is changing the element of container as well.
   end
  endfunction

endclass

In reply to suny:

The push_back() function, by design, will put the class handle at the end of the queue. The handle is still valid in other locations where it is assigned.

As a rule, you should always clone an object prior to storing it in a queue to prevent what you are seeing.

thanks cgales.
tried and it is working now.

thanks