def METHOD_NAME(self, confidence_level=0.95):
    # We get the MMW right term, then xhat, then the MMW left term.
    #Compute the nonant xhat (the one used in the left term of MMW (9) ) using
    #                                                        the first scenarios
    ############### get the parameters
    start = self.start
    scenario_denouement = self.refmodel.scenario_denouement
    #Introducing batches otpions
    num_batches = self.num_batches
    batch_size = self.batch_size
    sample_cfg = self.cfg()  # ephemeral changes
    #Some options are specific to 2-stage or multi-stage problems
    if self.multistage:
        sampling_branching_factors = ciutils.branching_factors_from_numscens(batch_size,self.numstages)
        #TODO: Change this to get a more logical way to compute branching_factors
        batch_size = np.prod(sampling_branching_factors)
    else:
        if batch_size == 0:
            raise RuntimeError("batch size can't be zero for two stage problems")
    sample_cfg.quick_assign('num_scens', int, batch_size)
    sample_cfg.quick_assign('_mpisppy_probability', float, 1/batch_size)
    #Solver settings
    solver_name = self.cfg['EF_solver_name']
    solver_options = self.cfg.get('EF_solver_options')
    solver_options = remove_None(solver_options)
    #Now we compute for each batch the whole Gn term from MMW (9)
    G = np.zeros(num_batches) #the Gbar of MMW (10)
    #we will compute the mean via a loop (to be parallelized ?)
    for i in range(num_batches) :
        scenstart = None if self.multistage else start
        gap_options = {'seed':start,'branching_factors':sampling_branching_factors} if self.multistage else None
        scenario_names = self.refmodel.scenario_names_creator(batch_size,start=scenstart)
        estim = ciutils.gap_estimators(self.xhat_one, self.refmodelname,
                                       solving_type=self.type,
                                       scenario_names=scenario_names,
                                       sample_options=gap_options,
                                       ArRP=1,
                                       cfg=sample_cfg,
                                       scenario_denouement=scenario_denouement,
                                       solver_name=solver_name,
                                       solver_options=solver_options,
                                       mpicomm=self.mpicomm
                                       )
        Gn = estim['G']
        start = estim['seed']
        #objective_gap removed Sept.29th 2022
        if(self.verbose):
            global_toc(f"Gn={Gn} for the batch {i}")  # Left term of LHS of (9)
        G[i]=Gn 
    s_g = np.std(G) #Standard deviation of gap
    Gbar = np.mean(G)
    t_g = scipy.stats.t.ppf(confidence_level,num_batches-1)
    epsilon_g = t_g*s_g/np.sqrt(num_batches)
    gap_inner_bound =  Gbar + epsilon_g
    gap_outer_bound = 0
    self.result={"gap_inner_bound": gap_inner_bound,
                  "gap_outer_bound": gap_outer_bound,
                  "Gbar": Gbar,
                  "std": s_g,
                  "Glist": G}
    return(self.result)