### Question:
TracerSdkProvider implements TracerProvider, TracerSdkManagement { public static Builder builder() { return new Builder(); } private  TracerSdkProvider(Clock clock, IdsGenerator idsGenerator, Resource resource); static Builder builder(); @Override Tracer get(String instrumentationName); @Override Tracer get(String instrumentationName, String instrumentationVersion); @Override TraceConfig getActiveTraceConfig(); @Override void updateActiveTraceConfig(TraceConfig traceConfig); @Override void addSpanProcessor(SpanProcessor spanProcessor); @Override void shutdown(); @Override CompletableResultCode forceFlush();  }### Answer:
@Test void builder_HappyPath() { assertThat( TracerSdkProvider.builder() .setClock(mock(Clock.class)) .setResource(mock(Resource.class)) .setIdsGenerator(mock(IdsGenerator.class)) .build()) .isNotNull(); }
@Test void builder_NullClock() { assertThrows( NullPointerException.class, () -> TracerSdkProvider.builder().setClock(null), "clock"); }
@Test void builder_NullResource() { assertThrows( NullPointerException.class, () -> TracerSdkProvider.builder().setResource(null), "resource"); }
@Test void builder_NullIdsGenerator() { assertThrows( NullPointerException.class, () -> TracerSdkProvider.builder().setIdsGenerator(null), "idsGenerator"); }