@Test
public void shouldDetermineTypeOfAbstractDeferred()
{

    Deferred<String> deferred = new AbstractDeferred<String>()
    {
        @Override
        public String get() throws TemporarilyUnavailableException, PermanentlyUnavailableException
        {
            return "Hello";
        }
    };
    Class<String> classOfDeferred = deferred.getDeferredClass();
    assertThat(classOfDeferred, equalTo(String.class));
}