code: def testGroupByDisjointLineage_ResultOrder(self):
      a_list = self._prepare_tfx_artifacts(10)
      b_list = self._prepare_tfx_artifacts(10)
      c_list = self._prepare_tfx_artifacts(10)
      for a, b in zip(a_list, _shuffle(b_list)):
          self._put_lineage(a, b)
      for b, c in zip(b_list, _shuffle(c_list)):
          self._put_lineage(b, c)
  
      result = self._group_by_disjoint_lineage(
          {
              "a": _shuffle(a_list),
              "b": _shuffle(b_list),
              "c": _shuffle(c_list),
          }
      )
  
      self.assertEqual(
          a_list, [result_item["a"][0] for result_item in result]
      )
  
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 10 for calling the GroupByDisjointLineageTest obj's underlying member method code with example usage: obj.testGroupByDisjointLineage_ResultOrder() without return types