@Test
public void testWithValue() {

  final Key<String> parentKey = Key.of(randomUUID().toString(), String.class);
  final String parentValue = randomUUID().toString();
  final Context parent = new ContextConc(root, parentKey, parentValue);
  final Key<String> childKey = Key.of(randomUUID().toString(), String.class);
  final String childValue = randomUUID().toString();
  final Context child = parent.withValue(childKey, childValue);
  assertEquals(child.get(parentKey), parentValue);
  assertEquals(child.get(childKey), childValue);
}