public function seek($index)
    {
        try {
            if ($this->getWalkFlag() & self::WALK_X) {
                return $this->seekX($index);
            } elseif ($this->getWalkFlag() & self::WALK_Y) {
                return $this->seekY($index);
            } else {
                return $this->seekXY($index);
            }
        } catch (InvalidArgumentException $e) {
            throw $e;
        } catch (OutOfRangeException $e) {
            throw $e;
        }
    }