FilteredLogEntryReader implements LogEntryReader<ACCESSTYPE> { public static <ACCESSTYPE extends LogRawAccess<? extends LogInputStream>> LogEntryReader<ACCESSTYPE> wrappIfNeeded( final LogEntryReader<ACCESSTYPE> targetReader, final List<FieldsFilter> filters) { if (filters != null && !filters.isEmpty()) { return new FilteredLogEntryReader<>(targetReader, filters); } return targetReader; } FilteredLogEntryReader(); @SuppressWarnings("unchecked")  FilteredLogEntryReader(final LogEntryReader<ACCESSTYPE> targetReader, final List<FieldsFilter> filters); static LogEntryReader<ACCESSTYPE> wrappIfNeeded(
			final LogEntryReader<ACCESSTYPE> targetReader, final List<FieldsFilter> filters); @JsonProperty LogEntryReader<ACCESSTYPE> getTargetReader(); List<FieldsFilter> getFilters(); @Override void readEntries(final Log log, final ACCESSTYPE logAccess, final LogPointer startOffset,
			final LogEntryConsumer consumer); @Override @JsonView(Views.Info.class) List<SeverityLevel> getSupportedSeverities(); @Override @JsonView(Views.Info.class) LinkedHashMap<String, FieldBaseTypes> getFieldTypes(); void setFilters(final List<FieldsFilter> filters); void setTargetReader(final LogEntryReader<ACCESSTYPE> targetReader); @Override void readEntriesReverse(final Log log, final ACCESSTYPE logAccess, final LogPointer startOffset,
			final com.logsniffer.reader.LogEntryReader.LogEntryConsumer consumer);  }
@Test public void testNotWrapping() { Assert.assertEquals(targetReader, FilteredLogEntryReader.wrappIfNeeded(targetReader, null)); Assert.assertEquals(targetReader, FilteredLogEntryReader.wrappIfNeeded(targetReader, new ArrayList<FieldsFilter>())); }