@VisibleForTesting
 static ManagedChannelProvider load(ClassLoader classLoader) {
   ServiceLoader<ManagedChannelProvider> providers =
       ServiceLoader.load(ManagedChannelProvider.class, classLoader);
   List<ManagedChannelProvider> list = new ArrayList<ManagedChannelProvider>();
   for (ManagedChannelProvider current : providers) {
     if (!current.isAvailable()) {
       continue;
     }
     list.add(current);
   }
   if (list.isEmpty()) {
     return null;
   } else {
     return Collections.max(
         list,
         new Comparator<ManagedChannelProvider>() {
           @Override
           public int compare(ManagedChannelProvider f1, ManagedChannelProvider f2) {
             return f1.priority() - f2.priority();
           }
         });
   }
 }
 public static ManagedChannelBuilder<?> forAddress(String name, int port) {
   return ManagedChannelProvider.provider().builderForAddress(name, port);
 }
 /**
  * Creates a channel with a target string, which can be either a valid {@link
  * NameResolver}-compliant URI, or an authority string.
  *
  * <p>A {@code NameResolver}-compliant URI is an absolute hierarchical URI as defined by {@link
  * java.net.URI}. Example URIs:
  *
  * <ul>
  *   <li>{@code "dns:///foo.googleapis.com:8080"}
  *   <li>{@code "dns:///foo.googleapis.com"}
  *   <li>{@code "dns:///%5B2001:db8:85a3:8d3:1319:8a2e:370:7348%5D:443"}
  *   <li>{@code "dns://8.8.8.8/foo.googleapis.com:8080"}
  *   <li>{@code "dns://8.8.8.8/foo.googleapis.com"}
  *   <li>{@code "zookeeper://zk.example.com:9900/example_service"}
  * </ul>
  *
  * <p>An authority string will be converted to a {@code NameResolver}-compliant URI, which has
  * {@code "dns"} as the scheme, no authority, and the original authority string as its path after
  * properly escaped. Example authority strings:
  *
  * <ul>
  *   <li>{@code "localhost"}
  *   <li>{@code "127.0.0.1"}
  *   <li>{@code "localhost:8080"}
  *   <li>{@code "foo.googleapis.com:8080"}
  *   <li>{@code "127.0.0.1:8080"}
  *   <li>{@code "[2001:db8:85a3:8d3:1319:8a2e:370:7348]"}
  *   <li>{@code "[2001:db8:85a3:8d3:1319:8a2e:370:7348]:443"}
  * </ul>
  */
 @ExperimentalApi("https://github.com/grpc/grpc-java/issues/1773")
 public static ManagedChannelBuilder<?> forTarget(String target) {
   return ManagedChannelProvider.provider().builderForTarget(target);
 }