public function takeAllUntil(string $ends): string
    {
        $ends = self::split($ends);

        $ends[] = self::END;

        $taken = "";

        while (!in_array($this->peek(), $ends)) {
            $char = $this->take();

            $taken .= $char;
        }

        return $taken;
    }