@MemoMismatches
    Rule SelectorGroup() {
        return Sequence(
                Selector(), push(new SelectorGroupNode(pop())), Ws0Nodes(),
                ZeroOrMore(
                        ',', Ws0Nodes(),
                        Selector(), peek(1).addChild(pop())
                ),
                Ws0Nodes()
        );
    }
@MemoMismatches
    Rule SelectorGroup() {
        return Sequence(
                Selector(), push(new SelectorGroupNode(pop())), Ws0Nodes(),
                ZeroOrMore(
                        ',', Ws0Nodes(),
                        Selector(), peek(1).addChild(pop())
                ),
                Ws0Nodes()
        );
    }
@ MemoMismatches Rule SelectorGroup ( ) { return Sequence ( Selector ( ) , push ( new SelectorGroupNode ( pop ( ) ) ) , Ws0Nodes ( ) , ZeroOrMore ( ' ' , Ws0Nodes ( ) , Selector ( ) , peek ( 1 ) . addChild ( pop ( ) ) ) , Ws0Nodes ( ) ) ; }
Selector Ws0 (',' Ws0 Selector)* Ws0
Selector Ws0 ( Ws0 Selector ) * Ws0