docs: def get_mnl_point_est(orig_model_obj,
                        new_df,
                        boot_id_col,
                        num_params,
                        mnl_spec,
                        mnl_names,
                        mnl_init_vals,
                        mnl_fit_kwargs):
      """
      Calculates the MLE for the desired MNL model.
  
      Parameters
      ----------
      orig_model_obj : An MNDC_Model instance.
          The object corresponding to the desired model being bootstrapped.
      new_df : pandas DataFrame.
          The pandas dataframe containing the data to be used to estimate the
          MLE of the MNL model for the current bootstrap sample.
      boot_id_col : str.
          Denotes the new column that specifies the bootstrap observation ids for
          choice model estimation.
      num_params : non-negative int.
          The number of parameters in the MLE of the `orig_model_obj`.
      mnl_spec : OrderedDict or None.
          If `orig_model_obj` is not a MNL model, then `mnl_spec` should be an
          OrderedDict that contains the specification dictionary used to estimate
          the MNL model that will provide starting values for the final estimated
          model. If `orig_model_obj` is a MNL model, then `mnl_spec` may be None.
      mnl_names : OrderedDict or None.
          If `orig_model_obj` is not a MNL model, then `mnl_names` should be an
          OrderedDict that contains the name dictionary used to initialize the
          MNL model that will provide starting values for the final estimated
          model. If `orig_model_obj` is a MNL, then `mnl_names` may be None.
      mnl_init_vals : 1D ndarray or None.
          If `orig_model_obj` is not a MNL model, then `mnl_init_vals` should be
          a 1D ndarray. `mnl_init_vals` should denote the initial values used to
          estimate the MNL model that provides starting values for the final
          desired model. If `orig_model_obj` is a MNL model, then `mnl_init_vals`
          may be None.
      mnl_fit_kwargs : dict or None.
          If `orig_model_obj` is not a MNL model, then `mnl_fit_kwargs` should be
          a dict. `mnl_fit_kwargs` should denote the keyword arguments used when
          calling the `fit_mle` function of the MNL model that will provide
          starting values to the desired choice model. If `orig_model_obj` is a
          MNL model, then `mnl_fit_kwargs` may be None.
  
      Returns
      -------
      mnl_point : dict.
          The dictionary returned by `scipy.optimize` after estimating the
          desired MNL model.
      mnl_obj : An MNL model instance.
          The model object used to estimate the desired MNL model.
      """
      # Get specification and name dictionaries for the mnl model, for the case
      # where the model being bootstrapped is an MNL model. In this case, the
      # the mnl_spec and the mnl_names that are passed to the function are
      # expected to be None.
      if orig_model_obj.model_type == model_type_to_display_name["MNL"]:
          mnl_spec = orig_model_obj.specification
          mnl_names = orig_model_obj.name_spec
          if mnl_init_vals is None:
              mnl_init_vals = np.zeros(num_params)
          if mnl_fit_kwargs is None:
              mnl_fit_kwargs = {}
  
      # Alter the mnl_fit_kwargs to ensure that we only perform point estimation
      mnl_fit_kwargs["just_point"] = True
      # Use BFGS by default to estimate the MNL since it works well for the MNL.
      if "method" not in mnl_fit_kwargs:
          mnl_fit_kwargs["method"] = "BFGS"
  
      # Initialize the mnl model object for the given bootstrap sample.
      mnl_obj = pl.create_choice_model(data=new_df,
                                       alt_id_col=orig_model_obj.alt_id_col,
                                       obs_id_col=boot_id_col,
                                       choice_col=orig_model_obj.choice_col,
                                       specification=mnl_spec,
                                       model_type="MNL",
                                       names=mnl_names)
  
      # Get the MNL point estimate for the parameters of this bootstrap sample.
      mnl_point = mnl_obj.fit_mle(mnl_init_vals, **mnl_fit_kwargs)
      return mnl_point, mnl_obj