docs: def add_fit(self, specimen, name, fmin, fmax, PCA_type="DE-BFL", color=None, suppress_warnings=False, saved=True):
          """
          Goes through the data checks required to add an interpretation to
          the param specimen with the name param name, the bounds param fmin
          and param fmax, and calculation type param PCA_type.
  
          Parameters
          ----------
          specimen : specimen with measurement data to add the
          interpretation to
          name : name of the new interpretation
          fmin : lower bound of new interpretation
          fmax : upper bound of new interpretation
          PCA_type : type of regression or mean for new interpretaion
          (default: DE-BFL or line)
          color : color to plot the new interpretation in
  
          Returns
          -------
          new Fit object or None if fit could not be added
          """
          if specimen not in list(self.Data.keys()) and not suppress_warnings:
              self.user_warning(
                  "there is no measurement data for %s and therefore no interpretation can be created for this specimen" % (specimen))
              return
          if fmax != None and fmax not in self.Data[specimen]['zijdblock_steps'] or fmin != None and fmin not in self.Data[specimen]['zijdblock_steps']:
              return
          if not (specimen in list(self.pmag_results_data['specimens'].keys())):
              self.pmag_results_data['specimens'][specimen] = []
          next_fit = str(len(self.pmag_results_data['specimens'][specimen]) + 1)
          if name == None or name in [x.name for x in self.pmag_results_data['specimens'][specimen]] or name == "" or name.replace(" ", "") == "":
              name = ('Fit ' + next_fit)
              if name in [x.name for x in self.pmag_results_data['specimens'][specimen]]:
                  print('bad name')
                  return
          if color == None:
              color = self.colors[(int(next_fit)-1) % len(self.colors)]
          new_fit = Fit(name, fmax, fmin, color, self, PCA_type, saved)
          if fmin != None and fmax != None:
              new_fit.put(specimen, self.COORDINATE_SYSTEM, self.get_PCA_parameters(
                  specimen, new_fit, fmin, fmax, self.COORDINATE_SYSTEM, PCA_type))
              if ('specimen_dec' not in list(new_fit.get(self.COORDINATE_SYSTEM).keys())
                      or 'specimen_inc' not in list(new_fit.get(self.COORDINATE_SYSTEM).keys()))\
                      and not suppress_warnings:
                  TEXT = "Could not calculate dec or inc for specimen %s component %s with bounds %s and %s in coordinate_system %s, component not added" % (
                      specimen, name, fmin, fmax, self.COORDINATE_SYSTEM)
                  self.user_warning(TEXT)
                  print(TEXT)
                  return
          self.pmag_results_data['specimens'][specimen].append(new_fit)
          samp = self.Data_hierarchy['sample_of_specimen'][specimen]
          if samp in list(self.Data_info['er_samples'].keys()):
              if 'sample_orientation_flag' not in self.Data_info['er_samples'][samp]:
                  self.Data_info['er_samples'][samp]['sample_orientation_flag'] = 'g'
              samp_flag = self.Data_info['er_samples'][samp]['sample_orientation_flag']
              if samp_flag == 'b':
                  self.mark_fit_bad(new_fit)
          self.close_warning = True
          return new_fit