@Override
  @SuppressWarnings("rawtypes")
  public <K, T> List<URIKeyPair<K>> getUris(Request<T> request, ProtocolVersion version) {
    BatchRequest<T> batchRequest = safeCastRequest(request);
    @SuppressWarnings("unchecked")
    Set<K> keys = (Set<K>) batchRequest.getObjectIds();
    return keys.stream()
        .map(key -> {
          Request unbatchRequestByKey = unbatchRequestByKey(batchRequest, key);
          URI requestUri = RestliUriBuilderUtil.createUriBuilder(unbatchRequestByKey,
                  RestConstants.D2_URI_PREFIX, version).build();
          return new URIKeyPair<>(key, requestUri);
        })
        .collect(Collectors.toList());
  }
@Test(dataProvider = TestConstants.RESTLI_PROTOCOL_1_2_PREFIX + "requestUris")
  @SuppressWarnings("unchecked")
  public void testGetUris(Request<?> request, ProtocolVersion version, List<URIKeyPair<Long>> expectedUris)
  {
    List<URIKeyPair<Long>> uris = _sgStrategy.getUris(request, version);
    Assert.assertNotNull(uris);
    Assert.assertEquals(uris.size(), 4);
    Assert.assertTrue(uris.containsAll(expectedUris));
  }