Source:
<code>Default(Builder builder) { this.clock = builder.clock; this.errorParser = builder.errorParser; this.propagationFactory = builder.propagationFactory; this.stringPropagation = builder.propagationFactory.create(Propagation.KeyFactory.STRING); this.currentTraceContext = builder.currentTraceContext; this.sampler = builder.sampler; this.noop = new AtomicBoolean(); FinishedSpanHandler zipkinHandler = builder.spanReporter != Reporter.NOOP ? new ZipkinFinishedSpanHandler(builder.spanReporter, errorParser, builder.localServiceName, builder.localIp, builder.localPort) : FinishedSpanHandler.NOOP; FinishedSpanHandler finishedSpanHandler = zipkinReportingFinishedSpanHandler(builder.finishedSpanHandlers, zipkinHandler, noop); ArrayList<FinishedSpanHandler> orphanedSpanHandlers = new ArrayList<>(); for (FinishedSpanHandler handler : builder.finishedSpanHandlers) { if (handler.supportsOrphans()) orphanedSpanHandlers.add(handler); } FinishedSpanHandler orphanedSpanHandler = finishedSpanHandler; <START> if (!builder.finishedSpanHandlers.equals(orphanedSpanHandlers)) { <END> orphanedSpanHandler = zipkinReportingFinishedSpanHandler(orphanedSpanHandlers, zipkinHandler, noop); } this.tracer = new Tracer( builder.clock, builder.propagationFactory, finishedSpanHandler, new PendingSpans(clock, orphanedSpanHandler, noop), builder.sampler, builder.currentTraceContext, builder.traceId128Bit || propagationFactory.requires128BitTraceId(), builder.supportsJoin && propagationFactory.supportsJoin(), finishedSpanHandler.alwaysSampleLocal(), noop ); maybeSetCurrent(); }</code><technical_language>a double-take (literally a in a review pass) properly understand this comparison for some reason. clearer set a boolean flag notAllHandlersSupportOrphans in loop instead</technical_language>

Target:
Default(Builder builder) { this.clock = builder.clock; this.errorParser = builder.errorParser; this.propagationFactory = builder.propagationFactory; this.stringPropagation = builder.propagationFactory.create(Propagation.KeyFactory.STRING); this.currentTraceContext = builder.currentTraceContext; this.sampler = builder.sampler; this.noop = new AtomicBoolean(); FinishedSpanHandler zipkinHandler = builder.spanReporter != Reporter.NOOP ? new ZipkinFinishedSpanHandler(builder.spanReporter, errorParser, builder.localServiceName, builder.localIp, builder.localPort) : FinishedSpanHandler.NOOP; FinishedSpanHandler finishedSpanHandler = zipkinReportingFinishedSpanHandler(builder.finishedSpanHandlers, zipkinHandler, noop); ArrayList<FinishedSpanHandler> orphanedSpanHandlers = new ArrayList<>(); for (FinishedSpanHandler handler : builder.finishedSpanHandlers) { if (handler.supportsOrphans()) orphanedSpanHandlers.add(handler); } FinishedSpanHandler orphanedSpanHandler = finishedSpanHandler; boolean allHandlersSupportOrphans = builder.finishedSpanHandlers.equals(orphanedSpanHandlers); if (!allHandlersSupportOrphans) { orphanedSpanHandler = zipkinReportingFinishedSpanHandler(orphanedSpanHandlers, zipkinHandler, noop); } this.tracer = new Tracer( builder.clock, builder.propagationFactory, finishedSpanHandler, new PendingSpans(clock, orphanedSpanHandler, noop), builder.sampler, builder.currentTraceContext, builder.traceId128Bit || propagationFactory.requires128BitTraceId(), builder.supportsJoin && propagationFactory.supportsJoin(), finishedSpanHandler.alwaysSampleLocal(), noop ); maybeSetCurrent(); }