private bool MatchNew(NewExpression pattern, NewExpression expr) { return (pattern .Maybe(x => x.Constructor == expr.Constructor) .Where(x => x.Arguments.Count == expr.Arguments.Count) .Select(x => x.Arguments.Zip(expr.Arguments, Match).All(y => y)) .OrDefault()); }