code: def test_shape(self):
      rt = ragged_tensor.RaggedTensor.from_row_lengths(
          ["a", "b", "c"], [1, 2]
      )
      st = StructuredTensor.from_fields_and_rank({"r": rt}, rank=2)
      actual = array_ops.shape(
          st, out_type=dtypes.int64
      ).static_lengths()
      actual_v2 = array_ops.shape_v2(
          st, out_type=dtypes.int64
      ).static_lengths()
      expected = [2, (1, 2)]
      self.assertAllEqual(expected, actual)
      self.assertAllEqual(expected, actual_v2)
  
imports: from absl.testing import parameterized
  from tensorflow.python.eager import def_function
  from tensorflow.python.framework import dtypes
  from tensorflow.python.framework import random_seed
  from tensorflow.python.framework import tensor
  from tensorflow.python.framework import tensor_shape
  from tensorflow.python.framework import test_util
  from tensorflow.python.ops import array_ops
  from tensorflow.python.ops import math_ops
  from tensorflow.python.ops import random_ops
  from tensorflow.python.ops.ragged import ragged_factory_ops
  from tensorflow.python.ops.ragged import ragged_tensor
  from tensorflow.python.ops.ragged import row_partition
  from tensorflow.python.ops.ragged.dynamic_ragged_shape import DynamicRaggedShape
  from tensorflow.python.ops.structured import structured_array_ops
  from tensorflow.python.ops.structured import structured_tensor
  from tensorflow.python.ops.structured.structured_tensor import StructuredTensor
  from tensorflow.python.platform import googletest
  from tensorflow.python.util import nest
label_desc: Use image node_id 9 for calling the StructuredArrayOpsTest obj's underlying member method code with example usage: obj.test_shape() without return types