private static int queueSrcReferences(List<CodeBlockReference> blockRefQueue, CodeBlock destBlock, 
    	Address destAddr, Address srcAddr, FlowType flowType, TaskMonitor monitor) 
    	throws CancelledException {
    	
    	CodeBlockModel model =  destBlock.getModel();
    	if (model.allowsBlockOverlap()) {
    		CodeBlock[] srcBlocks = model.getCodeBlocksContaining(srcAddr, monitor);
    		int cnt = srcBlocks.length;
    		if (blockRefQueue != null) {
    			for (int i = 0; i < cnt; i++) {
// ?? Non-block references are lost since they don't have a corresponding code block     			
	        		CodeBlockReference blockRef = new CodeBlockReferenceImpl(
	        										srcBlocks[i], 
	        										destBlock, 
	        										flowType, 
	        										destAddr, 
	        										srcAddr);
					blockRefQueue.add(blockRef);
	        	}
    		}
    		if (cnt != 0) {
    			return cnt;
    		}
    	}
    	
    	if (blockRefQueue != null) {
			CodeBlockReference blockRef = new CodeBlockReferenceImpl(
												null,
												destBlock, 
												flowType, 
												destAddr, 
												srcAddr);
	
			blockRefQueue.add(blockRef);
    	}
    	return 1;
    }
Create source block reference and add it to the blockRefQueue if block
is found at specified srcAddr.  A valid block must exist at the srcAddr
for a reference to be added and/or counted.
@param blockRefQueue the CodeBlockReference queue, may be null
@param destBlock the source block associated with the CodeBlockReference(s)
@param destAddr destination address
@param srcAddr source address
@param flowType the flow type to be associated with reference.
@param monitor task monitor which allows user to cancel operation.
@return the number of source references
@throws CancelledException if the monitor cancels the operation.
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/block/SubroutineSourceReferenceIterator.java