code: def report_settings(self, parameter):
          
          self._save_bm_state()
          report = []
          settings_list = self.bm_settings[parameter][1:]
          unique_values = list(set(settings_list))
          value_frequency = {}
          for value in unique_values:
              value_frequency[settings_list.count(value)] = value
          frequencies = value_frequency.keys()
          frequencies.sort(reverse=True)
          header = "{} value | Selection frequency".format(parameter)
          left_column_width = len(header[:-21])
          right_column_width = 21
          report.append(header)
          report.append("{}|{}".format("-" * left_column_width,
                                      "-" * right_column_width))
          for frequency in frequencies:
              left_column = str(value_frequency[frequency]).center(
                                                               left_column_width)
              right_column = str(frequency).center(right_column_width)
              report.append("{}|{}".format(left_column, right_column))
          # Remove newest settings
          for param in self.block_matcher.parameter_maxima.keys():
              self.bm_settings[param].pop(-1)
          return "\n".join(report)
docs: Report chosen settings for ``parameter`` in ``block_matcher``.
  
          ``bm_settings`` is updated to include the latest state before work is
          begun. This state is removed at the end so that the method has no side
          effects. All settings are reported except for the first one on record,
          which is ``block_matcher``'s default setting.