HttpTagAndSpanNamingStrategy { public final void handleResponseTaggingAndFinalSpanName( @NotNull Span span, @Nullable REQ request, @Nullable RES response, @Nullable Throwable error, @NotNull HttpTagAndSpanNamingAdapter<REQ, RES> adapter ) { if (span == null || adapter == null) { return; } try { doHandleResponseAndErrorTagging(span, request, response, error, adapter); } catch (Throwable t) { logger.error( "An unexpected error occurred while handling response tagging. The error will be swallowed to avoid " + "doing any damage, but your span may be missing some expected tags. This error should be fixed.", t ); } try { doDetermineAndSetFinalSpanName(span, request, response, error, adapter); } catch (Throwable t) { logger.error( "An unexpected error occurred while finalizing the span name. The error will be swallowed to avoid " + "doing any damage, but the final span name may not be what you expect. This error should be fixed.", t ); } try { doExtraWingtipsTagging(span, request, response, error, adapter); } catch (Throwable t) { logger.error( "An unexpected error occurred while doing Wingtips tagging. The error will be swallowed to avoid " + "doing any damage, but the final span name may not be what you expect. This error should be fixed.", t ); } }  final @Nullable String getInitialSpanName(
        @NotNull REQ request,
        @NotNull HttpTagAndSpanNamingAdapter<REQ, ?> adapter
    ); final void handleRequestTagging(
        @NotNull Span span,
        @NotNull REQ request,
        @NotNull HttpTagAndSpanNamingAdapter<REQ, ?> adapter
    ); final void handleResponseTaggingAndFinalSpanName(
        @NotNull Span span,
        @Nullable REQ request,
        @Nullable RES response,
        @Nullable Throwable error,
        @NotNull HttpTagAndSpanNamingAdapter<REQ, RES> adapter
    );  }
@DataProvider(value = { "SPAN_IS_NULL", "ADAPTER_IS_NULL", }, splitBy = "\\|") @Test @SuppressWarnings("ConstantConditions") public void handleResponseTaggingAndFinalSpanName_does_nothing_in_null_arg_corner_cases( NullArgCornerCaseScenario scenario ) { Span spanMock = scenario.spanMock; HttpTagAndSpanNamingAdapter<Object, Object> adapterMock = scenario.adapterMock; implSpy.handleResponseTaggingAndFinalSpanName( spanMock, requestObjectMock, responseObjectMock, errorMock, adapterMock ); verifyZeroInteractions(implSpy); if (spanMock != null) { verifyZeroInteractions(spanMock); } if (adapterMock != null) { verifyZeroInteractions(adapterMock); } verifyZeroInteractions(requestObjectMock, responseObjectMock, errorMock); }