sbool mmo_match_parsedPattern(MMOPattern pattern, S s) { if (pattern cast MMOPattern.Phrase) ret p -> startsWith(p, "#") ? eqic(p, s2) : find3(p, s2); if (pattern cast MMOPattern.And) ret all(pattern.l, pat -> mmo_match_parsedPattern(pat, s)); if (pattern cast MMOPattern.Or) ret any(pattern.l, pat -> mmo_match_parsedPattern(pat, s)); fail("what. " + pattern); }