docs: public Iterable<ServerInstanceLogRecordList> getLogLists(RepositoryPointer after, Date endTime, final LogRecordHeaderFilter filter) {
          if (after instanceof RepositoryPointerImpl) {
              final RepositoryPointerImpl location = (RepositoryPointerImpl) after;
              final long max = endTime == null ? -1 : endTime.getTime();
  
              LogRepositoryBrowser logs = logInstanceBrowser.find(location, false);
              LogRepositoryBrowser traces = null;
              if (traceInstanceBrowser != null) {
                  traces = traceInstanceBrowser.find(location, false);
              }
  
              if (logs == null && traces == null) {
                  return EMPTY_ITERABLE;
              }
  
              // Check that location come from the log.
              if (logs != null) {
                  final RepositoryLogRecord current = new LogRecordBrowser(logs).getRecord(location);
                  if (current != null) {
                      final LogRepositoryBrowser finalLogs = logs;
                      final LogRepositoryBrowser finalTraces = traceInstanceBrowser == null ? null : traceInstanceBrowser.find(location, true);
                      return new Iterable<ServerInstanceLogRecordList>() {
                          @Override
                          public Iterator<ServerInstanceLogRecordList> iterator() {
                              return new ServerInstanceListsIterator(max, finalLogs, finalTraces) {
                                  @Override
                                  protected OnePidRecordListImpl queryResult(
                                                                             LogRepositoryBrowser browser) {
                                      return new LogRecordBrowser(browser).recordsInProcess(-1, max, filter);
                                  }
  
                                  @Override
                                  protected ServerInstanceLogRecordList queryFirstInstance(
                                                                                           LogRepositoryBrowser firstLog,
                                                                                           LogRepositoryBrowser firstTrace) {
                                      return new ServerInstanceLogRecordListHeaderPointerImpl(firstLog, firstTrace, false, location, current, filter, max);
                                  }
                              };
                          }
                      };
                  }
              }
  
              // Check that location come from the trace.
              if (traces != null) {
                  final RepositoryLogRecord current = new LogRecordBrowser(traces).getRecord(location);
                  if (current != null) {
                      final LogRepositoryBrowser finalLogs = logInstanceBrowser.find(location, true);
                      final LogRepositoryBrowser finalTraces = traces;
                      return new Iterable<ServerInstanceLogRecordList>() {
                          @Override
                          public Iterator<ServerInstanceLogRecordList> iterator() {
                              return new ServerInstanceListsIterator(max, finalLogs, finalTraces) {
                                  @Override
                                  protected OnePidRecordListImpl queryResult(
                                                                             LogRepositoryBrowser browser) {
                                      return new LogRecordBrowser(browser).recordsInProcess(-1, max, filter);
                                  }
  
                                  @Override
                                  protected ServerInstanceLogRecordList queryFirstInstance(
                                                                                           LogRepositoryBrowser firstLog,
                                                                                           LogRepositoryBrowser firstTrace) {
                                      return new ServerInstanceLogRecordListHeaderPointerImpl(firstTrace, firstLog, true, location, current, filter, max);
                                  }
                              };
                          }
                      };
                  }
              }
  
              // Neither trace nor log contain the location which means that file containing
              // it was purged already and that we can just return all the records we can find.
              final LogRepositoryBrowser finalLogs = logInstanceBrowser.find(location, true);
              final LogRepositoryBrowser finalTraces = traceInstanceBrowser == null ? null : traceInstanceBrowser.find(location, true);
              return new Iterable<ServerInstanceLogRecordList>() {
                  @Override
                  public Iterator<ServerInstanceLogRecordList> iterator() {
                      return new ServerInstanceListsIterator(max, finalLogs, finalTraces) {
                          @Override
                          protected OnePidRecordListImpl queryResult(
                                                                     LogRepositoryBrowser browser) {
                              return new LogRecordBrowser(browser).recordsInProcess(-1, max, filter);
                          }
                      };
                  }
              };
  
          } else if (after != null) {
              throw new IllegalArgumentException("This method accept only RepositoryPointer instances retrieved from previously read records");
          }
  
          return getLogLists((Date) null, endTime, filter);
      }