docs: private Observable<List<Mail>> getFilteredMailList(Func1<Mail, Boolean> filterFnc,
        final boolean withDelayAndError) {
      return Observable.defer(new Func0<Observable<Mail>>() {
        @Override public Observable<Mail> call() {
  
          if (withDelayAndError) {
            delay();
            Observable o = checkExceptions();
            if (o != null) {
              return o;
            }
          }
  
          return Observable.from(mails);
        }
      }).filter(filterFnc).collect(new Func0<List<Mail>>() {
        @Override public List<Mail> call() {
          return new ArrayList<Mail>();
        }
      }, new Action2<List<Mail>, Mail>() {
        @Override public void call(List<Mail> mails, Mail mail) {
          mails.add(mail);
        }
      }).map(new Func1<List<Mail>, List<Mail>>() {
        @Override public List<Mail> call(List<Mail> mails) {
          Collections.sort(mails, MailComparator.INSTANCE);
          return mails;
        }
      });
    }