public void parseExpression(CharSequence expression, Handler handler) {
        Matcher matcherMeta = EXPR_META.matcher(expression);
        if(matcherMeta.find()) {
            Map<String,String> meta = new HashMap<String, String>();
            String inlined = matcherMeta.group(1);
            parseStyles(meta, inlined);
            handler.emit(meta);
            return;
        }

        Id leftId = null;
        String relationExpr = null;

        Matcher matcher = EXPR_LEFTSIDE.matcher(expression);
        while(matcher.find()) {
            Element element = parseElement(matcher.group(1));
            Id rightId = handler.emit(element);

            if(relationExpr!=null) {
                handler.emit(parseRelation(leftId, rightId, relationExpr));
            }
            relationExpr = matcher.group(2);
            leftId = rightId;
        }
    }