public override ICollection<IParseTree> Evaluate(IParseTree t) { if (invert) { return new List<IParseTree>(); } // !* is weird but valid (empty) return Trees.Descendants(t); }