protected function _getLastTrace($trace)
    {
        // current filename info
        $curFile       = pathinfo(__FILE__, PATHINFO_BASENAME);
        $curFileLength = $this->_strlen($curFile);

        $meta = array();
        $j    = 0;
        for ($i = 0; $trace && $i < sizeof($trace); $i++) {
            $j = $i;
            if (isset($trace[$i]['class'])
                && isset($trace[$i]['file'])
                && ($trace[$i]['class'] == 'JBDump')
                && (substr($trace[$i]['file'], -$curFileLength, $curFileLength) == $curFile)
            ) {

            } elseif (isset($trace[$i]['class'])
                && isset($trace[$i + 1]['file'])
                && isset($trace[$i]['file'])
                && $trace[$i]['class'] == 'JBDump'
                && (substr($trace[$i]['file'], -$curFileLength, $curFileLength) == $curFile)
            ) {

            } elseif (isset($trace[$i]['file'])
                && (substr($trace[$i]['file'], -$curFileLength, $curFileLength) == $curFile)
            ) {

            } else {
                // found!
                $meta['file'] = isset($trace[$i]['file']) ? $trace[$i]['file'] : '';
                $meta['line'] = isset($trace[$i]['line']) ? $trace[$i]['line'] : '';
                break;
            }
        }

        // get functions
        if (isset($trace[$j + 1])) {
            $result         = $trace[$j + 1];
            $result['line'] = $meta['line'];
            $result['file'] = $meta['file'];
        } else {
            $result = $meta;
        }

        return $result;
    }