code: public static void apply(Program program, LGP manager, RandEngine randEngine)
     {
        double micro_mutate_operator_rate = manager.getMicroMutateOperatorRate();
        double micro_mutate_register_rate = manager.getMicroMutateRegisterRate();
        double micro_mutate_constant_rate = manager.getMicroMutateConstantRate();
  
        double sum = micro_mutate_constant_rate + micro_mutate_operator_rate + micro_mutate_register_rate;
  
        micro_mutate_register_rate /= sum;
        micro_mutate_operator_rate /= sum;
  
        double operator_sector = micro_mutate_operator_rate;
        double register_sector = operator_sector + micro_mutate_register_rate;
  
        double r = randEngine.uniform();
        if (r < operator_sector)
        {
           mutateInstructionOperator(program, randEngine);
        }
        else if (r < register_sector)
        {
           mutateInstructionRegister(program,randEngine);
        }
        else
        {
           mutateInstructionConstant(program, manager, randEngine);
        }
  
        program.invalidateCost();
     }
docs: / </summary>