code: def testMakeProtoPlaceholder_RepeatedSubmessage(self):
      actual = resolve(
          ph.make_proto(
              pipeline_pb2.StructuralRuntimeParameter(),
              parts=[
                  pipeline_pb2.StructuralRuntimeParameter.StringOrRuntimeParameter(
                      constant_value="foo"
                  ),
                  ph.make_proto(
                      pipeline_pb2.StructuralRuntimeParameter.StringOrRuntimeParameter(),
                      constant_value=ph.execution_invocation().pipeline_run_id,
                  ),
              ],
          )
      )
      self.assertProtoEquals(
          """
          parts {
            constant_value: "foo"
          }
          parts {
            constant_value: "test-run-id"
          }
          """,
          parse_text_proto(
              actual, pipeline_pb2.StructuralRuntimeParameter
          ),
      )
  
imports: import base64
  import functools
  from typing import Any, Dict, Optional, Type, TypeVar
  import tensorflow
  from tfx.dsl.compiler import placeholder_utils
  from tfx.dsl.placeholder import placeholder
  from tfx.dsl.placeholder import proto_placeholder
  from tfx.orchestration.portable import data_types
  from tfx.proto.orchestration import execution_invocation_pb2
  from tfx.proto.orchestration import pipeline_pb2
  from google.protobuf import message
  from google.protobuf import text_format
  from ml_metadata.proto import metadata_store_pb2
label_desc: Use image node_id 25 for calling the ProtoPlaceholderTest obj's underlying member method code with example usage: obj.testMakeProtoPlaceholder_RepeatedSubmessage() without return types