protected function factor()
    {
        $combinator = null;

        if ($combinator = $this->is("combinator")) {
            if (!$element = $this->is("element")) {
                throw new TextParserException("Invalid expression", $this);
            }
        } elseif ($element = $this->is("element")) {
            // 'descendant' is the default combinator
            $combinator = CssParserCombinatorFactory::getInstance(
                "CssParserCombinatorDescendant"
            );
        } else {
            return false;
        }

        return new CssParserModelFactor($combinator, $element);
    }