question: public static List < ? extends BlockObject > fetch ( DbClient dbClient , List < URI > blockURIs ) { List < ? extends BlockObject > blockObjects = null ; if ( URIUtil . isType ( blockURIs . get ( 0 ) , Volume . class ) ) { blockObjects = dbClient . queryObject ( Volume . class , blockURIs ) ; } else if ( URIUtil . isType ( blockURIs . get ( 0 ) , BlockSnapshot . class ) ) { blockObjects = dbClient . queryObject ( BlockSnapshot . class , blockURIs ) ; } else if ( URIUtil . isType ( blockURIs . get ( 0 ) , BlockMirror . class ) ) { blockObjects = dbClient . queryObject ( BlockMirror . class , blockURIs ) ; } return blockObjects ; }
target:  Utility function to retrieve derived BlockObjects based on their URIs (e.g, Volume or BlockSnapshot). The block objects need to be of same type