public Unparser(Writer stream, boolean highlight) {
fStream = stream;
fHighlight = highlight;
ansiOpen.put(NORMAL, Ansi.ansi().a(Attribute.ITALIC_OFF).a(Attribute.INTENSITY_BOLD_OFF)
.fg(Color.DEFAULT).fgBright(Color.DEFAULT));
ansiClose.put(NORMAL, Ansi.ansi().a(Attribute.ITALIC_OFF).a(Attribute.INTENSITY_BOLD_OFF)
.fg(Color.DEFAULT).fgBright(Color.DEFAULT));
ansiOpen.put(NONTERMINAL_LABEL, Ansi.ansi().a(Attribute.ITALIC).fg(Color.CYAN));
ansiClose.put(NONTERMINAL_LABEL, Ansi.ansi().a(Attribute.ITALIC_OFF).fg(Color.DEFAULT));
ansiOpen.put(META_KEYWORD, Ansi.ansi().fg(Color.MAGENTA));
ansiClose.put(META_KEYWORD, Ansi.ansi().fg(Color.DEFAULT));
ansiOpen.put(META_VARIABLE, Ansi.ansi().a(Attribute.ITALIC).fgBright(Color.GREEN));
ansiClose.put(META_VARIABLE, Ansi.ansi().a(Attribute.ITALIC_OFF).fgBright(Color.DEFAULT));
ansiOpen.put(META_AMBIGUITY, Ansi.ansi().a(Attribute.INTENSITY_BOLD).fgBright(Color.RED));
ansiClose.put(META_AMBIGUITY, Ansi.ansi().a(Attribute.INTENSITY_BOLD_OFF).fgBright(Color.DEFAULT));
ansiOpen.put(META_SKIPPED, Ansi.ansi().bgBright(Color.RED));
ansiClose.put(META_SKIPPED, Ansi.ansi().bgBright(Color.WHITE));
ansiOpen.put(COMMENT, Ansi.ansi().a(Attribute.ITALIC).fg(Color.GREEN));
ansiClose.put(COMMENT, Ansi.ansi().a(Attribute.ITALIC_OFF).fg(Color.DEFAULT));
}