code: @Override
      protected void searchStep() {
          // get best valid move with positive delta
          Move<? super SolutionType> move = getBestMove(
                                              getNeighbourhood().getAllMoves(getCurrentSolution()),   // generate all moves
                                              true);                                                  // only improvements
          // found improvement ?
          if(move != null){
              // accept move
              accept(move);
          } else {
              // no improvement found
              stop();
          }
      }
docs: Investigates all neighbours of the current solution and adopts the best one as the new current solution,
  if it is an improvement. If no improvement is found, the search is requested to stop and no further steps
  will be performed.
  
  @throws JamesRuntimeException if depending on malfunctioning components (problem, neighbourhood, ...)