final public function traverse(array &$arr)
    {
        if (!$this->isReady()) {
            throw new \RuntimeException("The traverser is not ready, no valid item callback has been set.");
        }

        return static::run($arr, $this->itemCallback, $this->resultCallback);
    }