code: public static ManagedChannel createNettyChannel(String host,
        BigtableOptions options, ClientInterceptor ... interceptors) throws SSLException {
  
      LOG.info("Creating new channel for %s", host);
      if (LOG.getLog().isDebugEnabled()) {
        LOG.debug(Throwables.getStackTraceAsString(new Throwable()));
      }
  
      // Ideally, this should be ManagedChannelBuilder.forAddress(...) rather than an explicit
      // call to NettyChannelBuilder.  Unfortunately, that doesn't work for shaded artifacts.
      ManagedChannelBuilder<?> builder = ManagedChannelBuilder
          .forAddress(host, options.getPort());
  
      if (options.usePlaintextNegotiation()) {
        // NOTE: usePlaintext(true) is deprecated in newer versions of grpc (1.11.0).
        //       usePlantxext() is the preferred approach, but won't work with older versions.
        //       This means that plaintext negotiation can't be used with Beam.
        builder.usePlaintext();
      }
  
      return builder
          .idleTimeout(Long.MAX_VALUE, TimeUnit.SECONDS)
          .maxInboundMessageSize(MAX_MESSAGE_SIZE)
          .userAgent(BigtableVersionInfo.CORE_USER_AGENT + "," + options.getUserAgent())
          .intercept(interceptors)
          .build();
    }
docs: <p>createNettyChannel.</p>
  
  @param host a {@link String} object.
  @param options a {@link BigtableOptions} object.
  @return a {@link ManagedChannel} object.
  @throws SSLException if any.