protected function _consumeDeclarationBlock($css, $peek, $offset = 0, &$declarationBlockStart = 0)
    {
        $declarationBlockStart = strpos($css, '{', $offset);
        if ($declarationBlockStart === false) {
            throw new \Tollwerk\Squeezr\Exception(sprintf(\Tollwerk\Squeezr\Exception::INVALID_DECLARATION_BLOCK_STR,
                $this->_peekToLine($peek)), \Tollwerk\Squeezr\Exception::INVALID_DECLARATION_BLOCK);
        }

        $declarationBlockBalance = 1;
        $declarationBlockPosition = $declarationBlockStart + 1;
        while ($declarationBlockBalance > 0) {

            // If either a block start or end delimiter is found
            if (preg_match("%[\{\}]%", $css, $declarationBlockDelimiter, PREG_OFFSET_CAPTURE,
                $declarationBlockPosition)) {
                $declarationBlockBalance += ($declarationBlockDelimiter[0][0] == '{') ? 1 : -1;
                $declarationBlockPosition = $declarationBlockDelimiter[0][1] + 1;

                // Else: error
            } else {
                throw new \Tollwerk\Squeezr\Exception(sprintf(\Tollwerk\Squeezr\Exception::UNBALANCED_DECLARATION_BLOCK_STR,
                    $this->_peekToLine($peek)), \Tollwerk\Squeezr\Exception::UNBALANCED_DECLARATION_BLOCK);
            }
        }

        return substr($css, 0, $declarationBlockPosition);
    }