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;
}

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 ; }
utility function to retrieve derived blockobjects based on their uris ( e . g , volume or blocksnapshot ) . the block objects need to be of same type
