code: public List<Filter<S>> disjunctiveNormalFormSplit() {
          final List<Filter<S>> list = new ArrayList<Filter<S>>();
  
          disjunctiveNormalForm().accept(new Visitor<S, Object, Object>() {
              @Override
              public Object visit(AndFilter<S> filter, Object param) {
                  list.add(filter);
                  return null;
              }
  
              @Override
              public Object visit(PropertyFilter<S> filter, Object param) {
                  list.add(filter);
                  return null;
              }
  
              @Override
              public Object visit(ExistsFilter<S> filter, Object param) {
                  list.add(filter);
                  return null;
              }
          }, null);
  
          return Collections.unmodifiableList(list);
      }
docs: Splits the filter from its disjunctive normal form. Or'ng the filters
  together produces the full disjunctive normal form.
  
  @return unmodifiable list of sub filters which don't perform any 'or'
  operations
  @since 1.1.1