@Override
    public String toString() {
        final StringBuilder sb = new StringBuilder("ThreadPoolBulkheadConfig{");
        sb.append("maxThreadPoolSize=").append(maxThreadPoolSize);
        sb.append(", coreThreadPoolSize=").append(coreThreadPoolSize);
        sb.append(", queueCapacity=").append(queueCapacity);
        sb.append(", keepAliveDuration=").append(keepAliveDuration);
        sb.append(", writableStackTraceEnabled=").append(writableStackTraceEnabled);
        sb.append(", contextPropagators=").append(contextPropagators);
        sb.append(", rejectExecutionHandle=").append(rejectedExecutionHandler.getClass().getSimpleName());
        sb.append('}');
        return sb.toString();
    }
@Test
    public void testToString() {
        int maxThreadPoolSize = 20;
        int coreThreadPoolSize = 2;
        long maxWait = 555;
        int queueCapacity = 50;

        ThreadPoolBulkheadConfig config = ThreadPoolBulkheadConfig.custom()
            .maxThreadPoolSize(maxThreadPoolSize)
            .coreThreadPoolSize(coreThreadPoolSize)
            .queueCapacity(queueCapacity)
            .keepAliveDuration(Duration.ofMillis(maxWait))
            .writableStackTraceEnabled(false)
            .contextPropagator(TestCtxPropagator2.class)
            .build();

        String result = config.toString();
        assertThat(result).startsWith("ThreadPoolBulkheadConfig{");
        assertThat(result).contains("maxThreadPoolSize=20");
        assertThat(result).contains("coreThreadPoolSize=2");
        assertThat(result).contains("queueCapacity=50");
        assertThat(result).contains("keepAliveDuration=PT0.555S");
        assertThat(result).contains("writableStackTraceEnabled=false");
        assertThat(result).contains("contextPropagators=[io.github.resilience4j.bulkhead.ThreadPoolBulkheadConfigTest$TestCtxPropagator2");
        assertThat(result).endsWith("}");
    }