class_docstr: Concrete class that implements an interface to the Borland C/C++
  compiler, as defined by the CCompiler abstract class.
code: def find_library_file(self, dirs, lib, debug=0):
      # List of effective library names to try, in order of preference:
      # xxx_bcpp.lib is better than xxx.lib
      # and xxx_d.lib is better than xxx.lib if debug is set
      #
      # The "_bcpp" suffix is to handle a Python installation for people
      # with multiple compilers (primarily Distutils hackers, I suspect
      # ;-).  The idea is they'd have one static library for each
      # compiler they care about, since (almost?) every Windows compiler
      # seems to have a different format for static libraries.
      if debug:
          dlib = lib + "_d"
          try_names = (dlib + "_bcpp", lib + "_bcpp", dlib, lib)
      else:
          try_names = (lib + "_bcpp", lib)
  
      for dir in dirs:
          for name in try_names:
              libfile = os.path.join(dir, self.library_filename(name))
              if os.path.exists(libfile):
                  return libfile
      else:
          # Oops, didn't find it in *any* of 'dirs'
          return None
  
file_path: catboost/contrib/python/setuptools/py3/setuptools/_distutils/bcppcompiler.py
imports: import os
  import warnings
  from .errors import DistutilsExecError, CompileError, LibError, LinkError, UnknownFileError
  from .ccompiler import CCompiler, gen_preprocess_options
  from .file_util import write_file
  from ._modified import newer
  from ._log import log
label_desc: Use image node_id 5 for calling the BCPPCompiler obj's underlying member method code with example usage: obj.find_library_file(dirs, lib, debug) and returns: None, libfile