public function last(callable $fn = null, $default = null)
    {
        if (is_null($fn)) {
            return count($this->items) > 0 ? end($this->items) : $default;
        }

        foreach (array_reverse($this->items) as $value) {
            if (call_user_func($fn, $value)) {
                return $value;
            }
        }

        return $default;
    }