src/main/java/com/bazaarvoice/jless/parser/Parser.java
Rule MediaType() {
        return Sequence(
            push(new MediaTypeNode()),
            MediaTypeName(),
            peek(1).addChild(pop()),
            FirstOf(
                Sequence(
                    MediaTypeRestriction(),
                    peek(1).addChild(pop())
                ),
                Optional(Ws0(), push(new SpacingNode(" ")), peek(1).addChild(pop()))
            ),
            peek(1).addChild(pop())
        );
    }
Rule MediaType() {
        return Sequence(
            push(new MediaTypeNode()),
            MediaTypeName(),
            peek(1).addChild(pop()),
            FirstOf(
                Sequence(
                    MediaTypeRestriction(),
                    peek(1).addChild(pop())
                ),
                Optional(Ws0(), push(new SpacingNode(" ")), peek(1).addChild(pop()))
            ),
            peek(1).addChild(pop())
        );
    }
Rule MediaType ( ) { return Sequence ( push ( new MediaTypeNode ( ) ) , MediaTypeName ( ) , peek ( 1 ) . addChild ( pop ( ) ) , FirstOf ( Sequence ( MediaTypeRestriction ( ) , peek ( 1 ) . addChild ( pop ( ) ) ) , Optional ( Ws0 ( ) , push ( new SpacingNode ( " " ) ) , peek ( 1 ) . addChild ( pop ( ) ) ) ) , peek ( 1 ) . addChild ( pop ( ) ) ) ; }
media type name Optional( and "(" Css property ")")
media type name Optional ( and ( Css property ) )