void followRedirectPredicate(BiPredicate<HttpClientRequest, HttpClientResponse> predicate) {
		this.followRedirectPredicate = predicate;
	}
@Test
	void testConstructorWithProvidedReplacement() {
		EmbeddedChannel channel = new EmbeddedChannel();
		channel.pipeline().addFirst(NettyPipeline.SslHandler, new ChannelHandlerAdapter() {
		});

		HttpClientOperations ops1 = new HttpClientOperations(() -> channel,
				ConnectionObserver.emptyListener(),
				ClientCookieEncoder.STRICT, ClientCookieDecoder.STRICT, ReactorNettyHttpMessageLogFactory.INSTANCE);
		ops1.followRedirectPredicate((req, res) -> true);
		ops1.started = true;
		ops1.retrying = true;
		ops1.redirecting = new RedirectClientException(new DefaultHttpHeaders().add(HttpHeaderNames.LOCATION, "/"),
				HttpResponseStatus.MOVED_PERMANENTLY);

		HttpClientOperations ops2 = new HttpClientOperations(ops1);

		assertThat(ops1.channel()).isSameAs(ops2.channel());
		assertThat(ops1.started).isSameAs(ops2.started);
		assertThat(ops1.retrying).isSameAs(ops2.retrying);
		assertThat(ops1.redirecting).isSameAs(ops2.redirecting);
		assertThat(ops1.redirectedFrom).isSameAs(ops2.redirectedFrom);
		assertThat(ops1.isSecure).isSameAs(ops2.isSecure);
		assertThat(ops1.nettyRequest).isSameAs(ops2.nettyRequest);
		assertThat(ops1.responseState).isSameAs(ops2.responseState);
		assertThat(ops1.followRedirectPredicate).isSameAs(ops2.followRedirectPredicate);
		assertThat(ops1.requestHeaders).isSameAs(ops2.requestHeaders);
	}