code: def _straight_evaluate(self, operator, eval_left, eval_right, clause):
      def evaluate(obj):
          left_val = eval_left(obj)
          right_val = eval_right(obj)
          if (
              left_val is _EXPIRED_OBJECT
              or right_val is _EXPIRED_OBJECT
          ):
              return _EXPIRED_OBJECT
          elif left_val is None or right_val is None:
              return None
  
          return operator(eval_left(obj), eval_right(obj))
  
      return evaluate
  
imports: from __future__ import annotations
  from typing import Type
  from .None import exc
  from .base import LoaderCallableStatus
  from .base import PassiveFlag
  from ..None import exc
  from ..None import inspect
  from ..sql import and_
  from ..sql import operators
  from ..sql.sqltypes import Integer
  from ..sql.sqltypes import Numeric
  from ..util import warn_deprecated
label_desc: Use image node_id 18 for calling the _EvaluatorCompiler obj's underlying member method code with example usage: obj._straight_evaluate(operator, eval_left, eval_right, clause) and returns: evaluate, operator, _EXPIRED_OBJECT, None