HttpTagAndSpanNamingStrategy { public final @Nullable String getInitialSpanName( @NotNull REQ request, @NotNull HttpTagAndSpanNamingAdapter<REQ, ?> adapter ) { if (request == null || adapter == null) { return null; } try { return doGetInitialSpanName(request, adapter); } catch (Throwable t) { logger.error( "An unexpected error occurred while getting the initial span name. The error will be swallowed to " + "avoid doing any damage and null will be returned, but your span name may not be what you expect. " + "This error should be fixed.", t ); return null; } }  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 = { "REQUEST_OBJ_IS_NULL", "ADAPTER_IS_NULL", }, splitBy = "\\|") @Test @SuppressWarnings("ConstantConditions") public void getInitialSpanName_returns_null_in_null_arg_corner_cases(NullArgCornerCaseScenario scenario) { Object requestObjectMock = scenario.requestObjMock; HttpTagAndSpanNamingAdapter<Object, Object> adapterMock = scenario.adapterMock; String result = implSpy.getInitialSpanName(requestObjectMock, adapterMock); assertThat(result).isNull(); verifyZeroInteractions(implSpy); if (requestObjectMock != null) { verifyZeroInteractions(requestObjectMock); } if (adapterMock != null) { verifyZeroInteractions(adapterMock); } }