code: public function setErrorCaller($caller = null, $offset = 0)
      {
          if ($caller === null) {
              $backtrace = \version_compare(PHP_VERSION, '5.4.0', '>=')
                  ? \debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, $offset + 3)
                  : \debug_backtrace(false);   // don't provide object
              $i = isset($backtrace[$offset+1])
                  ? $offset + 1
                  : \count($backtrace) - 1;
              $caller = isset($backtrace[$i]['file'])
                  ? $backtrace[$i]
                  : $backtrace[$i+1]; // likely called via call_user_func.. need to go one more to get calling file & line
              $caller = array(
                  'file' => $caller['file'],
                  'line' => $caller['line'],
              );
          } elseif (empty($caller)) {
              // clear errorCaller
              $caller = array();
          }
          $this->data['errorCaller'] = $caller;
          return;
      }
docs: Set the calling file/line for next error
  this override will apply until cleared or error occurs
  
  Example:  some wrapper function that is called often:
  Rather than reporting that an error occurred within the wrapper, you can use
  setErrorCaller() to report the error originating from the file/line that called the function
  
  @param array   $caller (default) null : determine automatically
  empty value (false, "", 0, array(): clear current value
  array() : manually set value
  @param integer $offset (optional) if determining automatically : adjust how many frames to go back
  
  @return void