def METHOD_NAME(self, identifier, metric_result):
    per_box_results = []
    for label, per_class_result in metric_result.items():
        if not np.size(per_class_result['scores']):
            continue
        scores = per_class_result['scores']
        dt = per_class_result['dt']
        gt = per_class_result['gt']
        matches_result = self.generate_result_matching(per_class_result, '')
        dt_matched = matches_result.get('prediction_matches', [])
        gt_matched = matches_result.get('annotation_matches', [])
        for dt_id, dt_box in enumerate(dt):
            box_result = {
                'identifier': identifier,
                'label': label,
                'score': scores[dt_id],
                'pred': dt_box,
                'gt': ''
            }
            if dt_matched[dt_id]:
                gt_id = np.where(gt_matched == dt_id + 1)
                box_result['gt'] = np.array(gt)[gt_id]
            per_box_results.append(box_result)
        for gt_id, gt_box in enumerate(gt):
            if gt_matched[gt_id] == -1:
                box_result = {
                    'identifier': identifier,
                    'label': label,
                    'score': '',
                    'pred': '',
                    'gt': gt_box
                }
                per_box_results.append(box_result)
    return per_box_results