code: def testGroupByDisjointLineage_ChainingIsConnected(self):
      a1, a2, b1, b2, c1, c2 = self._prepare_tfx_artifacts(6)
      self._put_lineage(a1, b1, c1)
      self._put_lineage(a2, b2, c2)
      result = self._group_by_disjoint_lineage(
          {"a": [a1, a2], "b": [b1, b2], "c": [c1, c2]}
      )
      self.assertEqual(
          result,
          [
              {"a": [a1], "b": [b1], "c": [c1]},
              {"a": [a2], "b": [b2], "c": [c2]},
          ],
      )
  
imports: import random
  from absl.testing import parameterized
  import tensorflow
  from tfx.dsl.input_resolution.ops import group_by_lineage_op
  from tfx.dsl.input_resolution.ops import test_utils
  from tfx.orchestration.portable.input_resolution import exceptions
  from tfx.types import artifact_utils
  from tfx.utils import test_case_utils
label_desc: Use image node_id 8 for calling the GroupByDisjointLineageTest obj's underlying member method code with example usage: obj.testGroupByDisjointLineage_ChainingIsConnected() without return types