docs: def enroll(self, experiment_name, alternatives, force_alternative=None):
          """
          Enroll this user in the experiment if they are not already part of it. Returns the selected alternative
  
          force_alternative: Optionally force a user in an alternative at enrollment time
          """
          chosen_alternative = conf.CONTROL_GROUP
  
          experiment = experiment_manager.get_experiment(experiment_name)
  
          if experiment:
              if experiment.is_displaying_alternatives():
                  if isinstance(alternatives, collections.Mapping):
                      if conf.CONTROL_GROUP not in alternatives:
                          experiment.ensure_alternative_exists(conf.CONTROL_GROUP, 1)
                      for alternative, weight in alternatives.items():
                          experiment.ensure_alternative_exists(alternative, weight)
                  else:
                      alternatives_including_control = alternatives + [conf.CONTROL_GROUP]
                      for alternative in alternatives_including_control:
                          experiment.ensure_alternative_exists(alternative)
  
                  assigned_alternative = self._get_enrollment(experiment)
                  if assigned_alternative:
                      chosen_alternative = assigned_alternative
                  elif experiment.is_accepting_new_users():
                      if force_alternative:
                          chosen_alternative = force_alternative
                      else:
                          chosen_alternative = experiment.random_alternative()
                      self._set_enrollment(experiment, chosen_alternative)
              else:
                  chosen_alternative = experiment.default_alternative
  
          return chosen_alternative