### Question:
FailedItemMarshaller implements BytesWriter<ItemSource>, BytesReader<ItemSource>,
        ReadResolvable<FailedItemMarshaller> { @Override public ItemSource read(Bytes in, @Nullable ItemSource using) { try { return objectMapper.readValue(in.inputStream(), ItemSource.class); } catch (Exception e) { LOG.error( "{} deserialization failed: {}. Returning null..", FailedItemSource.class.getSimpleName(), e.getMessage() ); } return null; } FailedItemMarshaller(); ObjectMapper objectMapper(); @Override void writeMarshallable(@NotNull WireOut wire); @Override void readMarshallable(@NotNull WireIn wire); @Override FailedItemMarshaller readResolve(); @Override ItemSource read(Bytes in, @Nullable ItemSource using); @Override void write(Bytes out, @NotNull ItemSource toWrite);  }### Answer:
@Test public void readDoesNotRethrow() { FailedItemMarshaller failedItemMarshaller = new FailedItemMarshaller(); Bytes bytes = mock(Bytes.class); RuntimeException expectedException = spy(new RuntimeException("test exception")); when(bytes.inputStream()).thenThrow(expectedException); failedItemMarshaller.read(bytes, null); verify(expectedException, times(1)).getMessage(); }