code: public Map<URI, Config> getConfigs(Collection<URI> configKeyUris)
        throws ConfigStoreFactoryDoesNotExistsException, ConfigStoreCreationException, VersionDoesNotExistException {
      if (configKeyUris == null || configKeyUris.size() == 0)
        return Collections.emptyMap();
  
      Map<URI, Config> result = new HashMap<>();
      Multimap<ConfigStoreAccessor, ConfigKeyPath> partitionedAccessor = ArrayListMultimap.create();
  
      // map contains the mapping between ConfigKeyPath back to original URI , partitioned by ConfigStoreAccessor
      Map<ConfigStoreAccessor, Map<ConfigKeyPath, URI>> reverseMap = new HashMap<>();
  
      // partitioned the ConfigKeyPaths which belongs to the same store to one accessor
      for (URI u : configKeyUris) {
        ConfigStoreAccessor accessor = this.getConfigStoreAccessor(u);
        ConfigKeyPath configKeypath = ConfigClientUtils.buildConfigKeyPath(u, accessor.configStore);
        partitionedAccessor.put(accessor, configKeypath);
  
        if (!reverseMap.containsKey(accessor)) {
          reverseMap.put(accessor, new HashMap<ConfigKeyPath, URI>());
        }
        reverseMap.get(accessor).put(configKeypath, u);
      }
  
      for (Map.Entry<ConfigStoreAccessor, Collection<ConfigKeyPath>> entry : partitionedAccessor.asMap().entrySet()) {
        Map<ConfigKeyPath, Config> batchResult = entry.getKey().valueInspector.getResolvedConfigs(entry.getValue());
  
        for (Map.Entry<ConfigKeyPath, Config> resultEntry : batchResult.entrySet()) {
          // get the original URI from reverseMap
          URI orgURI = reverseMap.get(entry.getKey()).get(resultEntry.getKey());
          result.put(orgURI, resultEntry.getValue());
        }
      }
  
      return result;
    }
docs: batch process for {@link #getConfig(URI)} method
  @param configKeyUris
  @return
  @throws ConfigStoreFactoryDoesNotExistsException
  @throws ConfigStoreCreationException
  @throws VersionDoesNotExistException