code: def _update_extension(
      self, name, libraries, define_macros=None, sources=None
  ):
      for extension in self.extensions:
          if extension.name == name:
              extension.libraries += libraries
              if define_macros is not None:
                  extension.define_macros += define_macros
              if sources is not None:
                  extension.sources += sources
              if FUZZING_BUILD:
                  extension.language = "c++"
                  extension.extra_link_args = ["--stdlib=libc++"]
              break
  
imports: from __future__ import annotations
  import os
  import re
  import shutil
  import struct
  import subprocess
  import sys
  import warnings
  from setuptools import Extension, setup
  from setuptools.command.build_ext import build_ext
label_desc: Use image node_id 3 for calling the pil_build_ext obj's underlying member method code with example usage: obj._update_extension(name, libraries, define_macros, sources) without return types