@Test
public void testInitialValue() {

	// By override
	Object object = new Object();
	CentralizedThreadLocal<?> centralizedThreadLocal =
		new CentralizedThreadLocal<Object>(false) {
			@Override
			protected Object initialValue() {
				return object;
			}
		};
	Assert.assertSame(object, centralizedThreadLocal.get());
	centralizedThreadLocal.remove();
	// By Supplier
	centralizedThreadLocal = new CentralizedThreadLocal<>(
		null, () -> object);
	Assert.assertSame(object, centralizedThreadLocal.get());
	centralizedThreadLocal.remove();
	// By null Supplier
	centralizedThreadLocal = new CentralizedThreadLocal<>(null, null);
	Assert.assertNull(centralizedThreadLocal.get());
	centralizedThreadLocal.remove();
}