docs: public void setCellValues(Integer[][] cellValues) {
          if (session != null) {
              session.removeEventListener(workingMemoryListener);
              session.dispose();
              steppingFactHandle = null;
          }
          
          this.session = kc.newKieSession("SudokuKS");
          session.setGlobal("explain", explain);
          session.addEventListener(workingMemoryListener);
  
          Setting s000 = new Setting(0, 0, 0);
          FactHandle fh000 = this.session.insert(s000);
          this.create();
  
          int initial = 0;
          for (int iRow = 0; iRow < 9; iRow++) {
              for (int iCol = 0; iCol < 9; iCol++) {
                  Integer value = cellValues[iRow][iCol];
                  if (value != null) {
                      session.insert(new Setting(iRow, iCol, value));
                      initial++;
                  }
              }
          }
          this.counter = new Counter(initial);
          this.session.insert(counter);
          this.session.delete(fh000);
          this.session.fireAllRules();
      }