code: protected void backtrack(final int newLevel) {
          assert 0 <= newLevel && newLevel <= this.level;
          if (newLevel == this.level) { return; }
          CLFrame f = this.control.back();
          while (f.level() > newLevel) {
              assert f.level() == this.level;
              assert f.trail() < this.trail.size();
              while (f.trail() < this.trail.size()) {
                  final int lit = this.trail.back();
                  assert var(lit).level() == f.level();
                  this.trail.pop();
                  unassign(lit);
              }
              assert this.level > 0;
              this.level--;
              this.trail.shrinkTo(f.trail());
              this.next = f.trail();
              this.control.pop();
              f = this.control.back();
          }
          assert newLevel == this.level;
      }
docs: Backtracks to a given level
  @param newLevel the level