code: def package_info(self):
      self.cpp_info.libs = []
      if self.options.unified_backend:
          self.cpp_info.libs.extend(
              [
                  f"libaf.so.{ARRAYFIRE_VERSION}",
              ]
          )
      if self.options.graphics:
          self.cpp_info.libs.extend(
              [
                  "libforge.so.1.0.5",
              ]
          )
      if self.options.cuda_backend:
          self.cpp_info.libs.extend(
              [
                  f"libafcuda.so.{ARRAYFIRE_VERSION}",
                  "libnvrtc-builtins.so",
                  f"libcudnn.so.{CUDA_TOOLKIT_VERSION}",
                  f"libcusparse.so.{CUDA_TOOLKIT_VERSION}",
                  f"libcublas.so.{CUDA_TOOLKIT_VERSION}",
                  f"libcusolver.so.{CUDA_TOOLKIT_VERSION}",
                  f"libnvrtc.so.{CUDA_TOOLKIT_VERSION}",
                  f"libcufft.so.{CUDA_TOOLKIT_VERSION}",
              ]
          )
      if self.options.cpu_backend:
          self.cpp_info.libs.extend(
              [
                  f"libafcpu.so.{ARRAYFIRE_VERSION}",
                  "libmkl_avx2.so",
                  "libmkl_mc.so",
                  "libmkl_intel_lp64.so",
                  "libmkl_core.so",
                  "libmkl_avx.so",
                  "libmkl_def.so",
                  "libiomp5.so",
                  "libmkl_avx512.so",
                  "libmkl_intel_thread.so",
                  "libmkl_mc3.so",
              ]
          )
      if self.options.opencl_backend:
          self.cpp_info.libs.extend(
              [
                  f"libafopencl.so.{ARRAYFIRE_VERSION}",
                  "libOpenCL.so.1",
              ]
          )
  
file_path: arrayfire/conanfile.py
imports: from conans import ConanFile, CMake, tools
  import os
label_desc: Use image node_id 8 for calling the ArrayFireConan obj's underlying member method code with example usage: obj.package_info() without return types