### Question:
OpenTracingContext implements TracerContext { @SuppressWarnings("unchecked") @Override public <T> T unwrap(final Class<T> clazz) { if (Tracer.class.equals(clazz)) { return (T)tracer; } else { throw new IllegalArgumentException("The class is '" + clazz + "'not supported and cannot be unwrapped"); } } OpenTracingContext(final Tracer tracer);  OpenTracingContext(final Tracer tracer, final Span continuation); @Override @SuppressWarnings("unchecked") Scope startSpan(final String description); @Override T continueSpan(final Traceable<T> traceable); @Override Callable<T> wrap(final String description, final Traceable<T> traceable); @Override void annotate(String key, String value); @Override void timeline(String message); @SuppressWarnings("unchecked") @Override T unwrap(final Class<T> clazz);  }### Answer:
@Test public void testUnwrapTracer() { assertThat(context.unwrap(Tracer.class), sameInstance(tracer)); }
@Test(expected = IllegalArgumentException.class) public void testUnwrapUnsupportedClass() { context.unwrap(ScopeManager.class); }