public function getReturnOrThrown()
    {
        $this->validateInvalidity();
        if ($this->e === null && $this->g->valid() && !$this->valid()) {
            return $this->g->current();
        }
        if ($this->e) {
            return $this->e;
        }
        return method_exists($this->g, 'getReturn') ? $this->g->getReturn() : null;
    }