/** Given a zooCache and instanceId, look up the instance name. */
 public static String lookupInstanceName(ZooCache zooCache, UUID instanceId) {
   ArgumentChecker.notNull(zooCache, instanceId);
   for (String name : zooCache.getChildren(Constants.ZROOT + Constants.ZINSTANCES)) {
     String instanceNamePath = Constants.ZROOT + Constants.ZINSTANCES + "/" + name;
     byte[] bytes = zooCache.get(instanceNamePath);
     UUID iid = UUID.fromString(new String(bytes, Constants.UTF8));
     if (iid.equals(instanceId)) {
       return name;
     }
   }
   return null;
 }
 /**
  * @param config Client configuration for specifying connection options. See {@link
  *     ClientConfiguration} which extends Configuration with convenience methods specific to
  *     Accumulo.
  * @since 1.6.0
  */
 public ZooKeeperInstance(Configuration config) {
   ArgumentChecker.notNull(config);
   if (config instanceof ClientConfiguration) {
     this.clientConf = (ClientConfiguration) config;
   } else {
     this.clientConf = new ClientConfiguration(config);
   }
   this.instanceId = clientConf.get(ClientProperty.INSTANCE_ID);
   this.instanceName = clientConf.get(ClientProperty.INSTANCE_NAME);
   if ((instanceId == null) == (instanceName == null))
     throw new IllegalArgumentException(
         "Expected exactly one of instanceName and instanceId to be set");
   this.zooKeepers = clientConf.get(ClientProperty.INSTANCE_ZK_HOST);
   this.zooKeepersSessionTimeOut =
       (int)
           AccumuloConfiguration.getTimeInMillis(
               clientConf.get(ClientProperty.INSTANCE_ZK_TIMEOUT));
   zooCache = ZooCache.getInstance(zooKeepers, zooKeepersSessionTimeOut);
 }