sbool mmo_match_parsedPattern(MMOPattern pattern, S s) { s = trim(s); if (pattern == null) false; if (pattern cast MMOPattern.Phrase) { S p = pattern.phrase; ret startsWith(p, "#") ? eqic(p, s) : find3(p, s); } 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); }