protected function element()
    {
        $element = null;
        $filter = null;
        $tagName = "*";

        // ignores left spaces
        $this->match("\s+");

        if (   (list($name) = $this->eq("*"))
            || (list($name) = $this->is("identifier"))
        ) {
            $tagName = $name? $name : "*";
        } elseif (!$filter = $this->is("filter")) {
            return false;
        }

        $element = new CssParserModelElement($tagName);

        // first filter
        if ($filter) {
            $element->addFilter($filter);
        }

        // additional filters
        while ($filter = $this->is("filter")) {
            $element->addFilter($filter);
        }

        return $element;
    }