code: def test_heterogeneous_property(self):
      ply_file_ascii = "\n".join(
          [
              "ply",
              "format ascii 1.0",
              "element vertex 8",
              "property float x",
              "property int y",
              "property int z",
              "end_header",
              "0 0 0",
              "0 0 1",
              "0 1 1",
              "0 1 0",
              "1 0 0",
              "1 0 1",
              "1 1 1",
              "1 1 0",
          ]
      )
      ply_file_binary = "\n".join(
          [
              "ply",
              "format binary_little_endian 1.0",
              "element vertex 8",
              "property uchar x",
              "property char y",
              "property char z",
              "end_header",
              "",
          ]
      )
      data = [
          0,
          0,
          0,
          0,
          0,
          1,
          0,
          1,
          1,
          0,
          1,
          0,
          1,
          0,
          0,
          1,
          0,
          1,
          1,
          1,
          1,
          1,
          1,
          0,
      ]
      stream_ascii = StringIO(ply_file_ascii)
      stream_binary = BytesIO(
          ply_file_binary.encode("ascii") + bytes(data)
      )
      X = np.array([[0, 0, 0, 0, 1, 1, 1, 1]]).T
      YZ = np.array([0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0])
      for stream in (stream_ascii, stream_binary):
          header, elements = _load_ply_raw(stream)
          [x, yz] = elements["vertex"]
          self.assertClose(x, X)
          self.assertClose(yz, YZ.reshape(8, 2))
  
imports: import itertools
  import struct
  import unittest
  from io import BytesIO, StringIO
  from tempfile import NamedTemporaryFile, TemporaryFile
  import numpy
  import pytorch3d.io.ply_io
  import torch
  from iopath.common.file_io import PathManager
  from pytorch3d.io import IO
  from pytorch3d.io.ply_io import load_ply, save_ply
  from pytorch3d.renderer.mesh import TexturesVertex
  from pytorch3d.structures import Meshes, Pointclouds
  from pytorch3d.utils import torus
  from .common_testing import get_tests_dir, TestCaseMixin
label_desc: Use image node_id 15 for calling the TestMeshPlyIO obj's underlying member method code with example usage: obj.test_heterogeneous_property() without return types