Question on uvm_tlm_analysis_fifo API

Hello,
I have a question on uvm_tlm_analysis_fifo API as follows :
the UVM_cookbook gives following code in chapter on Analysis Components and Techniques:


class comparator_inorder extends uvm_component;
`uvm_component_utils(comparator_inorder)
uvm_analysis_export #(alu_txn) before_export;
uvm_analysis_export #(alu_txn) after_export;
uvm_tlm_analysis_fifo #(alu_txn) before_fifo, after_fifo;
int m_matches, m_mismatches;
function new( string name , uvm_component parent) ;
super.new( name , parent );
m_matches = 0;
m_mismatches = 0;
endfunction
function void build_phase( uvm_phase phase );
before_fifo = new("before_fifo", this);
after_fifo = new("after_fifo", this);
before_export = new("before_export", this);
after_export = new("after_export", this);
endfunction
function void connect_phase( uvm_phase phase );
before_export.connect(before_fifo.analysis_export);
after_export.connect(after_fifo.analysis_export);
endfunction
task run_phase( uvm_phase phase );
string s;
alu_txn before_txn, after_txn;
forever begin
before_fifo.get(before_txn);
after_fifo.get(after_txn);
if (!before_txn.compare(after_txn)) begin
$sformat(s, "%s does not match %s", before_txn.convert2string(), after_txn.convert2string());
uvm_report_error("Comparator Mismatch",s);
m_mismatches++;
end else begin
m_matches++;
end
end
endtask
function void report_phase( uvm_phase phase );
uvm_report_info("Inorder Comparator", $sformatf("Matches: %0d", m_matches));
uvm_report_info("Inorder Comparator", $sformatf("Mismatches: %0d", m_mismatches));
endfunction
endclass

The after_fifo and before_fifo are both uvm_tlm_analysis_fifo type. The run_phase uses call to method “get” of uvm_tlm_analysis_fifo. Now the uvm_reference_1.2 does not list get() as one of the methods of uvm_tlm_analysis_fifo. It is also not inherited.
The hierarchy of classes is uvm_tlm_fifo_base → uvm_tlm_fifo → uvm_tlm_analysis_fifo.
The uvm_tlm_fifo_base define get_peeek_export as one of the ports which has “get()” task as one of the methods. The get() task is not method of uvm_tlm_fifo_base also.
So I am not clear how the uvm_tlm_analysis_fifo has “get()” task as one of its APIs
Can someone explain please.
thanks,
sunil puranik

In reply to puranik.sunil@tcs.com:

you can see method declaration here:

https://verificationacademy.com/verification-methodology-reference/uvm/docs_1.2/html/files/tlm1/uvm_tlm_ifs-svh.html#uvm_tlm_if_base#(T1,T2)