code: public FileFilter build() {
          if (filenames.isEmpty() && extensions.isEmpty() && fileFilters.isEmpty()) {
              throw new IllegalStateException("May only be invoked after at least one add... method has been invoked.");
          }
          final OrFileFilter filter = new OrFileFilter();
          if (!filenames.isEmpty()) {
              filter.addFileFilter(new NameFileFilter(new ArrayList<>(filenames)));
          }
          if (!extensions.isEmpty()) {
              filter.addFileFilter(new SuffixFileFilter(new ArrayList<>(extensions), IOCase.INSENSITIVE));
          }
          for (IOFileFilter iof : fileFilters) {
              filter.addFileFilter(iof);
          }
          return filter;
      }
docs: Builds the filter and returns it.
  
  @return a filter that is the logical OR of all the conditions provided by the add... methods
  @throws IllegalStateException if no add... method has been called with one or more arguments