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

        // Any buffered text data can go out now.
        $this->flushBuffer();

        $this->scanner->next();

        return $this->markupDeclaration() || $this->endTag() || $this->processingInstruction() || $this->tagName() ||
                /*  This always returns false. */
                $this->parseError("Illegal tag opening") || $this->characterData();
    }