code: private BitString mutateBitString(BitString bitString, Random rng)
      {
          if (mutationProbability.nextValue().nextEvent(rng))
          {
              BitString mutatedBitString = bitString.clone();
              int mutations = mutationCount.nextValue();
              for (int i = 0; i < mutations; i++)
              {
                  mutatedBitString.flipBit(rng.nextInt(mutatedBitString.getLength()));
              }
              return mutatedBitString;
          }
          return bitString;
      }
docs: Mutate a single bit string.  Zero or more bits may be flipped.  The
  probability of any given bit being flipped is governed by the probability
  generator configured for this mutation operator.
  @param bitString The bit string to mutate.
  @param rng A source of randomness.
  @return The mutated bit string.