Need help to understand array method 'unique(expression)' followed by 'with' clause

In reply to poojanm2002:

The unique array method returns element not the expression enclosed in with clause.Concider following example


 module top();
  int q[$];
  int result[$];

  initial begin
 
     q={1,2,3,4,4,5};
     $display("queue 'q' : %p", q);

     result.delete();
    
     result = q.unique(item)with(item>3);
     $display("using unique: %p", result);
    
     result.delete();
    
     result = q.unique(item)with((item>3)*item);
     $display("using unique *item : %p", result);
    
    end
endmodule : top

================
queue ‘q’ : '{1, 2, 3, 4, 4, 5}
using unique: '{1, 4} //**Few simulators treats 1,2,3 as 1’s ,others treat them as 0’s
using unique *item : '{1, 4, 5}