### Question:
Id implements IdOf<T>, Serializable { private Id(T value) { this.value = checkNonNull(value); } private  Id(T value); Id<R> map(Function1<? super T, ? extends R> map); Id<R> flatMap(Function1<? super T, ? extends Id<? extends R>> map); T get(); @Override int hashCode(); @Override boolean equals(Object obj); @Override String toString(); static Id<T> of(T value);  }### Answer:
@Test public void idTest() { Id<String> id = Id.of("hola mundo!"); assertAll( () -> assertEquals("hola mundo!", id.get()), () -> assertEquals(Id.of("HOLA MUNDO!"), id.map(toUpperCase)), () -> assertEquals(Id.of("HOLA MUNDO!"), id.flatMap(toUpperCase.andThen(Id::of)))); }