code: protected Solver<NQueens> createSolverByApi() {
          SolverFactory<NQueens> solverFactory = SolverFactory.createEmpty();
          SolverConfig solverConfig = solverFactory.getSolverConfig();
  
          solverConfig.setSolutionClass(NQueens.class);
          solverConfig.setEntityClassList(Collections.<Class<?>>singletonList(Queen.class));
  
          ScoreDirectorFactoryConfig scoreDirectorFactoryConfig = new ScoreDirectorFactoryConfig();
          scoreDirectorFactoryConfig.setScoreDrlList(
                  Arrays.asList("org/optaplanner/examples/nqueens/solver/nQueensScoreRules.drl"));
          solverConfig.setScoreDirectorFactoryConfig(scoreDirectorFactoryConfig);
  
          solverConfig.setTerminationConfig(new TerminationConfig().withBestScoreLimit("0"));
          List<PhaseConfig> phaseConfigList = new ArrayList<>();
  
          ConstructionHeuristicPhaseConfig constructionHeuristicPhaseConfig = new ConstructionHeuristicPhaseConfig();
          constructionHeuristicPhaseConfig.setConstructionHeuristicType(
                  ConstructionHeuristicType.FIRST_FIT_DECREASING);
          phaseConfigList.add(constructionHeuristicPhaseConfig);
  
          LocalSearchPhaseConfig localSearchPhaseConfig = new LocalSearchPhaseConfig();
          ChangeMoveSelectorConfig changeMoveSelectorConfig = new ChangeMoveSelectorConfig();
          changeMoveSelectorConfig.setSelectionOrder(SelectionOrder.ORIGINAL);
          localSearchPhaseConfig.setMoveSelectorConfig(changeMoveSelectorConfig);
          localSearchPhaseConfig.setAcceptorConfig(new AcceptorConfig().withEntityTabuSize(5));
          phaseConfigList.add(localSearchPhaseConfig);
  
          solverConfig.setPhaseConfigList(phaseConfigList);
          return solverFactory.buildSolver();
      }
docs: Unused alternative. Abnormal way to create a {@link Solver}.
  <p>
  Not recommended! It is recommended to use {@link #createSolverByXml()} instead.
  @return never null