@Test(expected = IllegalStateException.class)
  public void wrapping_must_be_done_only_once() {
    // ARRANGE
    CachedObject wrapped = new CachedObject();
    DummyCachedObjectWrapper wrapper = new DummyCachedObjectWrapper();

    // ACT
    wrapper.wrap(wrapped);
    wrapper.wrap(wrapped);
  }
  @Test
  public void should_return_reconstructed_object() {
    // ARRANGE
    CachedObject wrapped = new CachedObject();
    DummyCachedObjectWrapper wrapper = new DummyCachedObjectWrapper();
    wrapper.wrap(wrapped);

    // ACT
    CachedObject reconstructed = wrapper.reconstruct();

    // ASSERT
    assertEquals(wrapped, reconstructed);
  }