protected function markupDeclaration() {
        if ($this->scanner->current() != '!') {
            return false;
        }

        $tok = $this->scanner->next();

        // Comment:
        if ($tok == '-' && $this->scanner->peek() == '-') {
            $this->scanner->next(); // Consume the other '-'
            $this->scanner->next(); // Next char.
            return $this->comment();
        } elseif ($tok == 'D' || $tok == 'd') { // Doctype
            return $this->doctype('');
        } elseif ($tok == '[') { // CDATA section
            return $this->cdataSection();
        }

        // FINISH
        $this->parseError("Expected <!--, <![CDATA[, or <!DOCTYPE. Got <!%s", $tok);
        $this->bogusComment('<!');
        return true;
    }