// not including <> as they are ambiguous (< is also a comparison operator) static S testBracketHygiene_op = "([{"; static S testBracketHygiene_close = ")]}"; static bool testBracketHygiene(S s) { ret testBracketHygiene(s, testBracketHygiene_op, testBracketHygiene_close, null); } static bool testBracketHygiene(S s, Var msg) { ret testBracketHygiene(s, testBracketHygiene_op, testBracketHygiene_close, msg); } static bool testBracketHygiene(S s, S op, S close, Var msg) { Pair p = testBracketHygiene2(s, op, close); if (p == null) { if (msg != null) msg.set("Hygiene OK!"); true; } if (msg != null) msg.set(p.b); false; }