code: public AddressResolver<InetSocketAddress> asAddressResolver() {
          AddressResolver<InetSocketAddress> result = addressResolver;
          if (result == null) {
              synchronized (this) {
                  result = addressResolver;
                  if (result == null) {
                      addressResolver = result = new InetSocketAddressResolver(executor(), this);
                  }
              }
          }
          return result;
      }
docs: Return a {@link AddressResolver} that will use this name resolver underneath.
  It's cached internally, so the same instance is always returned.