Requirement of both local_map & map

Hi Forum,
I am trying to understand the following quote from UVM 1.2 Class Reference Manual

// Within class uvm_reg_item ::
uvm_reg_map  local_map

"The local map used to obtain addresses. Users may customize address-translation using
this map. Access to the sequencer and bus adapter can be obtained by getting this
map’s root map, then calling uvm_reg_map::get_sequencer and uvm_reg_map::get_adapter."

uvm_reg_map  map ::
"The original map specified for the operation. The actual map used may differ when a
test or sequence written at the block level is reused at the system level."

(1) I am not clear on why two register maps would be required

When a user calls uvm_reg::write or uvm_reg::read, I see that UVM library creates an object of type ‘uvm_reg_item’ and assigns it’s property rw.map the actual value of 4th argument ‘map’.

UVM library then assigns property ‘local_map’ the return value of uvm_reg_map:: get_local_map

Here is the definition from uvm_reg_map class, An address map is a collection of registers and memories accessible via a specific physical interface. Address maps can be composed into higher-level address maps.

In some cases, the hardware register space can be accessed by more than one bus interface e.g. SPI and AHB, and then the register block can contain multiple address maps to support alternative address maps
If you want to look more into it, I recommend reading the following section in UVM cookbook, you will find good examples there. Complex Address Maps

I believe my original question is unrelated to the link you shared.
UVM library internally creates object of type ‘uvm_reg_item’ and assigns properties ‘map’ & ‘local_map’