### Question:
Wrapper implements IMutableWrapper <DATATYPE>, ICloneable <Wrapper <DATATYPE>> { public Wrapper () {} Wrapper();  Wrapper(@Nullable final DATATYPE aObj);  Wrapper(@Nonnull final IWrapper <DATATYPE> aRhs); @Nullable DATATYPE get(); @Nonnull EChange set(@Nullable final DATATYPE aObj); @Nonnull @ReturnsMutableCopy Wrapper <DATATYPE> getClone(); @Override boolean equals(final Object o); @Override int hashCode(); @Override String toString();  }### Answer:
@Test public void testWrapper () { final Wrapper <String> w = new Wrapper <> (); assertNull (w.get ()); w.set ("Hi"); assertNotNull (w.get ()); assertEquals ("Hi", w.get ()); assertNotNull (w.toString ()); final Wrapper <String> w2 = new Wrapper <> ("Ha"); assertEquals ("Ha", w2.get ()); assertNotNull (w2.toString ()); final Wrapper <String> w3 = new Wrapper <> (w); assertEquals (w.get (), w3.get ()); assertEquals ("Hi", w3.get ()); assertTrue (w.set ("Ho").isChanged ()); assertEquals ("Hi", w3.get ()); assertNotNull (w3.toString ()); assertTrue (w.set ("Ho").isUnchanged ()); assertEquals ("Hi", w3.get ()); assertNotNull (w3.toString ()); try { new Wrapper <> ((IWrapper <String>) null); fail (); } catch (final NullPointerException ex) {} CommonsTestHelper.testDefaultImplementationWithEqualContentObject (new Wrapper <> ("any"), new Wrapper <> ("any")); CommonsTestHelper.testDefaultImplementationWithDifferentContentObject (new Wrapper <> ("any"), new Wrapper <> ("other")); }