code: @Override
      public SubsetMove getRandomMove(SubsetSolution solution, Random rnd) {
          // get set of candidate IDs for addition (fixed IDs are discarded)
          Set<Integer> addCandidates = getAddCandidates(solution);
          // compute maximum number of adds
          int curMaxAdds = maxAdditions(addCandidates, solution);
          // return null if no additions are possible
          if(curMaxAdds == 0){
              return null;
          }
          // pick number of additions (in [1, curMaxAdds])
          int numAdds = rnd.nextInt(curMaxAdds) + 1;
          // pick random IDs to add to selection
          Set<Integer> add = SetUtilities.getRandomSubset(addCandidates, numAdds, rnd);
          // create and return move
          return new GeneralSubsetMove(add, Collections.emptySet());
      }
docs: <p>
  Generates a move for the given subset solution that adds a random subset of currently unselected IDs to the
  selection. Possible fixed IDs are not considered to be selected. The maximum number of additions \(k\) and
  maximum allowed subset size are respected. If no items can be added, <code>null</code> is returned.
  </p>
  <p>
  Note that first, a random number of additions is picked (uniformly distributed) from the valid range and then,
  a random subset of this size is sampled from the currently unselected IDs, to be added (again, all possible
  subsets are uniformly distributed, within the fixed size). Because the amount of possible moves increases with
  the number of performed additions, the probability of generating each specific move thus decreases with the
  number of additions. In other words, randomly generated moves are <b>not</b> uniformly distributed across
  different numbers of performed additions, but each specific move performing fewer additions is more likely
  to be selected than each specific move performing more additions.
  </p>
  
  @param solution solution for which a random multi addition move is generated
  @param rnd source of randomness used to generate random move
  @return random multi addition move, <code>null</code> if no items can be added