public static <Request extends AbstractRequest, Response extends AbstractResponse>
  ClientSocketConnection<Request, Response> createConnection(final @Nullable InetAddress host, int initialPort,
                                                             int portsNumberToTry,
                                                             RequestResponseExternalizerFactory<Request, Response> factory) {
    return new SocketConnectionImpl<>(host, initialPort, portsNumberToTry, factory);
  }
public static <Request extends AbstractRequest, Response extends AbstractResponse>
  ClientSocketConnection<Request, Response> createConnection(final @Nullable InetAddress host, int initialPort,
                                                             int portsNumberToTry,
                                                             RequestResponseExternalizerFactory<Request, Response> factory)