code: @Override
      public List<SingleSwapMove> getAllMoves(PermutationSolution solution) {
          // initialize list
          List<SingleSwapMove> moves = new ArrayList<>();
          int n = solution.size();
          for(int i=0; i<n; i++){
              for(int j=i+1; j<n; j++){
                  moves.add(new SingleSwapMove(i, j));
              }
          }
          return moves;
      }
docs: Create a list of all possible single swap moves. A move is generated
  for each pair of distinct positions i,j (i&lt;j) in the given permutation.
  
  @param solution permutation solution to which the move is to be applied
  @return list of all possible single swap moves