code: def testAttrsSupertype(self):
      attrs_a = default_types.Attrs.from_type_and_attributes(
          TestAttrsClass,
          (
              MockSupertypes2With3(1),
              MockSupertypes2With3(2),
              MockSupertypes2With3(3),
          ),
      )
      attrs_b = default_types.Attrs.from_type_and_attributes(
          TestAttrsClass,
          (
              MockSupertypes2With3(2),
              MockSupertypes2With3(2),
              MockSupertypes2With3(2),
          ),
      )
  
      self.assertEqual(
          str(attrs_a),
          "TestAttrsClass[['a', MockSupertypes2With3], ['b',"
          " MockSupertypes2With3]]",
      )
      self.assertEqual(
          attrs_a, attrs_a.most_specific_common_supertype([])
      )
      self.assertIsNone(
          attrs_a.most_specific_common_supertype([attrs_b])
      )
      self.assertEqual(
          attrs_b.most_specific_common_supertype([attrs_a]),
          default_types.Attrs.from_type_and_attributes(
              TestAttrsClass,
              (
                  MockSupertypes2With3(3),
                  MockSupertypes2With3(3),
                  MockSupertypes2With3(3),
              ),
          ),
      )
  
imports: import collections
  from tensorflow.core.function.trace_type import default_types
  from tensorflow.core.function.trace_type import serialization
  from tensorflow.python.platform import test
  from tensorflow.python.types import trace
label_desc: Use image node_id 9 for calling the DefaultTypesTest obj's underlying member method code with example usage: obj.testAttrsSupertype() without return types