code: def test_nested_batch_epoch_metrics(self):
      actual = rename_doubles([["a"]], [["a"]])
      expected = [["a1"]], [["a2"]]
      self.assertEqual(expected, actual)
  
      actual = rename_doubles([["a", "b"]], [["c", "a"]])
      expected = [["a1", "b"]], [["c", "a2"]]
      self.assertEqual(expected, actual)
  
      actual = rename_doubles(
          ["a", "b", ["b", "a"], "c", "a", "d"],
          ["e", ["c", "a"], "f", "a"],
      )
      expected = ["a1", "b1", ["b2", "a2"], "c1", "a3", "d"], [
          "e",
          ["c2", "a4"],
          "f",
          "a5",
      ]
      self.assertEqual(expected, actual)
  
imports: import os
  import unittest
  from unittest import skipIf
  from unittest.mock import ANY
  import numpy
  import torch
  import torch.nn
  import torchmetrics
  from poutyne import Metric, Model, do_register_metric_class, rename_doubles, unregister_metric_class
label_desc: Use image node_id 5 for calling the MetricsRenamingTest obj's underlying member method code with example usage: obj.test_nested_batch_epoch_metrics() without return types