What is uvm_port_base::get_if trying to do?

I couldn’t figure out what uvm_port_base::get_if is trying to do. From the comment, it should return an imp based on index. But what’s the meaning of an int type index in an associative array of string type key?


function uvm_port_base #(IF) get_if(int index=0);
...
  foreach (m_imp_list[nm]) begin
    if (index==0)
      return m_imp_list[nm];
    index--;
  end
endfunction