protected function selector(&$out) {
        $selector = array();

        while (true) {
            if ($this->match('[>+~]+', $m)) {
                $selector[] = array($m[0]);
            } elseif ($this->selectorSingle($part)) {
                $selector[] = $part;
                $this->whitespace();
            } else {
                break;
            }

        }

        if (count($selector) == 0) {
            return false;
        }

        $out = $selector;
        return true;
    }