docs: def retrieve_point_est(orig_model_obj,
                         new_df,
                         new_id_col,
                         num_params,
                         mnl_spec,
                         mnl_names,
                         mnl_init_vals,
                         mnl_fit_kwargs,
                         extract_init_vals=None,
                         **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.
      new_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.
      extract_init_vals : callable or None, optional.
          Should accept 3 arguments, in the following order. First, it should
          accept `orig_model_obj`. Second, it should accept a pandas Series of
          the estimated parameters from the MNL model. The index of the Series
          will be the names of the coefficients from `mnl_names`. Thirdly, it
          should accept an int denoting the number of parameters in the desired
          choice model. The callable should return a 1D ndarray of starting
          values for the desired choice model. Default == None.
      fit_kwargs : dict.
          Denotes the keyword arguments to be used when estimating the desired
          choice model using the current bootstrap sample (`new_df`). All such
          kwargs will be directly passed to the `fit_mle` method of the desired
          model object.
  
      Returns
      -------
      final_point : dict.
          The dictionary returned by `scipy.optimize` after estimating the
          desired choice model.
      """
      # Get the MNL point estimate for the parameters of this bootstrap sample.
      mnl_point, mnl_obj = get_mnl_point_est(orig_model_obj,
                                             new_df,
                                             new_id_col,
                                             num_params,
                                             mnl_spec,
                                             mnl_names,
                                             mnl_init_vals,
                                             mnl_fit_kwargs)
      mnl_point_series = pd.Series(mnl_point["x"], index=mnl_obj.ind_var_names)
  
      # Denote the MNL point estimate as our final point estimate if the final
      # model we're interested in is an MNL.
      if orig_model_obj.model_type == model_type_to_display_name["MNL"]:
          final_point = mnl_point
      else:
          # Determine the function to be used when extracting the initial values
          # for the final model from the MNL MLE point estimate.
          if extract_init_vals is None:
              extraction_func = extract_default_init_vals
          else:
              extraction_func = extract_init_vals
  
          # Extract the initial values
          default_init_vals =\
              extraction_func(orig_model_obj, mnl_point_series, num_params)
  
          # Get the keyword arguments needed to initialize the new model object.
          model_kwargs = get_model_creation_kwargs(orig_model_obj)
  
          # Create a new model object
          new_obj =\
              pl.create_choice_model(data=new_df,
                                     alt_id_col=orig_model_obj.alt_id_col,
                                     obs_id_col=new_id_col,
                                     choice_col=orig_model_obj.choice_col,
                                     specification=orig_model_obj.specification,
                                     **model_kwargs)
  
          # Be sure to add 'just_point' to perform pure point estimation.
          if 'just_point' not in fit_kwargs:
              fit_kwargs['just_point'] = True
  
          # Fit the model with new data, and return the point estimate dict.
          final_point = new_obj.fit_mle(default_init_vals, **fit_kwargs)
  
      return final_point