An example in uvm 1.2 user guide about RAL has error

In the uvm users guide 1.2 , chapter User-defined Field Access Policy:

I tried to apply this example in my project which has some private registers that can only be written when a password register is written with correct password.

But when I compiled, the following error occurs:

Incompatible complex type assignment
  Type of source expression is incompatible with type of target expression. 
  Mismatching types cannot be used in assignments, initializations and 
  instantiations. The type of the target is 'bit[63:0]$[]', while the type of 
  the source is 'bit[63:0]'.

After some checking, the member “value” in uvm_reg_field is uvm_reg_data_t but the member “value” of uvm_reg_item is actually uvm_reg_data_t.

So to apply the example, can I just change rw.value to rw.value[0]?
and why rw.value is a dynamic array instead of just one value?