code: def check_unchanged(self, link, x):
      class Checker(object):
          def __init__(self, tester, link, x):
              self.tester = tester
              self.link = link
              self.x = x
  
          def __enter__(self):
              self.expected = self.link(self.x)
  
          def __exit__(self, exc_type, exc_value, traceback):
              if exc_type is not None:
                  return None
  
              self.actual = self.link(self.x)
  
              if isinstance(self.expected, tuple):
                  self.tester.assertEqual(
                      len(self.expected), len(self.actual)
                  )
                  for e, a in zip(self.expected, self.actual):
                      self.tester.assertEqual(
                          type(e.array), type(a.array)
                      )
                      np.testing.assert_equal(
                          to_cpu(e.array), to_cpu(a.array)
                      )
              else:
                  self.tester.assertEqual(
                      type(self.expected.array), type(self.actual.array)
                  )
                  np.testing.assert_equal(
                      to_cpu(self.expected.array),
                      to_cpu(self.actual.array),
                  )
  
      return Checker(self, link, x)
  
imports: import numpy
  import unittest
  import chainer
  from chainer.backends.cuda import to_cpu
  from chainer.function import Function
  from chainer import testing
  from chainer.testing import attr
  from chainercv.links import PickableSequentialChain
  from chainercv.utils.testing import ConstantStubLink
label_desc: Use image node_id 2 for calling the TestCopiedPickableSequentialChain obj's underlying member method code with example usage: obj.check_unchanged(link, x) and returns: Checker, None