Constraint issue with multidimensional array of queues

Need to generate a random element which is not present in the 2-D array of queues. Each dimension of the array is random value for each iteration. The constraint c_element_1 is successful but c_element_2 is reporting compile error.
Could you please let me know why the issue is seen with constraint c_element_2


class multi_dim;
  bit [7:0] multi_array[2][4][$];
  rand bit [7:0] element_1, element_2;
  rand bit channel;
  rand bit [1:0] die_addr;
  constraint c_element_1
  {
    foreach(multi_array[i,j]) {
      if((i == channel) && (j == die_addr))
        !(element_1 inside {multi_array[i][j]});
    }
  }

  constraint c_element_2
  {
    !(element_2 inside {multi_array[channel][die_addr]});
  }
  task post_randomize();
    multi_array[channel][die_addr].push_back(element_1); 
    multi_array[channel][die_addr].push_back(element_2);   
  endtask
endclass

module multi_dim_check;
  multi_dim obj;
  logic [7:0] count;
  initial begin
    obj = new();

    for(count = 0; count < 5; count++) begin
      obj.randomize();
      $display("Element_1: %d, Element_2: %d, channel: %b, die: %d,",obj.element_1,obj.element_2,obj.channel,obj.die_addr);
    end
  end
endmodule

Log::
xcelium> run
!(element_2 inside {multi_array[channel][die_addr]});
|
xmsim: *E,RNDCNSTE (./testbench.sv,18|44): Randomization constraint has this error, which will cause the randomize function to return 0 and no new rand values will be set:
A reference to a rand variable in an array index is not currently supported in this context.
obj.randomize();
|
xmsim: *W,SVRNDF (./testbench.sv,32|18): The randomize method call failed. The unique id of the failed randomize call is 0.

In reply to kishore_tavva:
In the below line, local_ch is 0,

foreach(page[local_ch][local_die]) {

Set local_ch to 1, and you will see your expected outcome.

In reply to kishore_tavva:

You constraints do not make much sense. There is no way addr can be equal to all 4 elements of the queue at obj2.page[1][0] when they each have a different value.

Also, the valid way of specifying a foreach loop iterator is with only one set of brackets . Otherwise there is ambiguity to whether you want to create a new loop iterator variable, or use an existing variable as a constant.