### Question:
SourceProvider extends AbstractConfigurableProvider implements
    MessageBodyReader<T>, MessageBodyWriter<T> { public boolean isReadable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mt) { return Source.class.isAssignableFrom(type) || XMLSource.class.isAssignableFrom(type) || Document.class.isAssignableFrom(type); }  boolean isWriteable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mt); boolean isReadable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mt); T readFrom(Class<T> source, Type genericType, Annotation[] annotations, MediaType m,
        MultivaluedMap<String, String> headers, InputStream is); void writeTo(T source, Class<?> clazz, Type genericType, Annotation[] annotations,
        MediaType mt, MultivaluedMap<String, Object> headers, OutputStream os); long getSize(T source, Class<?> type, Type genericType, Annotation[] annotations,
                        MediaType mt);  }### Answer:
@Test public void testIsReadable() { SourceProvider<Source> p = new SourceProvider<>(); assertTrue(p.isReadable(StreamSource.class, null, null, null) && p.isReadable(DOMSource.class, null, null, null) && p.isReadable(Source.class, null, null, null)); }