code: def _evaluate(self, kw):
      for name, value in kw.items():
          invert = False
          meth = None
          try:
              meth = getattr(self, name)
          except AttributeError:
              if name[:3] == "not":
                  invert = True
                  try:
                      meth = getattr(self, name[3:])
                  except AttributeError:
                      pass
          if meth is None:
              raise TypeError(
                  "no %r checker available for %r" % (name, self.path)
              )
          try:
              if py.code.getrawcode(meth).co_argcount > 1:
                  if (not meth(value)) ^ invert:
                      return False
              else:
                  if bool(value) ^ bool(meth()) ^ invert:
                      return False
          except (py.error.ENOENT, py.error.ENOTDIR, py.error.EBUSY):
              # EBUSY feels not entirely correct,
              # but its kind of necessary since ENOMEDIUM
              # is not accessible in python
              for name in self._depend_on_existence:
                  if name in kw:
                      if kw.get(name):
                          return False
                  name = "not" + name
                  if name in kw:
                      if not kw.get(name):
                          return False
      return True
  
imports: import warnings
  import os
  import sys
  import posixpath
  import fnmatch
  import py
label_desc: Use image node_id 12 for calling the Checkers obj's underlying member method code with example usage: obj._evaluate(kw) and returns: True, False, False, False, False