docs: public static ReasonerQueryImpl create(Set<Atomic> as, TransactionOLTP tx){
          boolean isAtomic = as.stream().filter(Atomic::isSelectable).count() == 1;
          return isAtomic?
                  new ReasonerAtomicQuery(as, tx).inferTypes() :
                  new ReasonerQueryImpl(as, tx).inferTypes();
      }