code: private void refineUpperBound() {
          for (final Integer lit : new ArrayList<>(this.candidates)) {
              final int var = var(lit);
              if (isUPZeroLit(var)) {
                  this.candidates.remove(lit);
                  addBackboneLiteral(lit);
              } else if (this.config.isCheckForComplementModelLiterals() && this.model.get(var) == sign(lit)) {
                  this.candidates.remove(lit);
              } else if (this.config.isCheckForRotatableLiterals() && isRotatable(lit)) {
                  this.candidates.remove(lit);
              }
          }
      }
docs: Refines the upper bound by optional checks (UP zero literal, complement model literal, rotatable literal).