### Question:
ContextPropagatingCallable implements Callable<T>, Runnable { public static <T> Callable<T> decorate(final Callable<T> callable) { notNull(callable); return new ContextPropagatingCallable<T>(new Callable<T>() { public T call() throws Exception { return callable.call(); } }); } ContextPropagatingCallable(final Callable<T> decorated); static Callable<T> decorate(final Callable<T> callable); static Runnable decorate(final Runnable runnable); void run(); T call();  }### Answer:
@Test(expected = NullPointerException.class) public void cannotDecorateNullRunnable() { final Runnable runnable = null; ContextPropagatingCallable.decorate(runnable); }
@Test(expected = NullPointerException.class) public void cannotDecorateNullCallable() { final Callable<?> callable = null; ContextPropagatingCallable.decorate(callable); }
@Test public void shouldDecorateRunnable() throws Exception { Context.set(context); WroTestUtils.runConcurrently(ContextPropagatingCallable.decorate(new Callable<Void>() { public Void call() throws Exception { assertTrue(Context.isContextSet()); assertSame(context, Context.get()); return null; } }), 1); }