protected override void EndProcessing() { if (First != null && Second != null) { var shouldOr = Operation == SearchOperation.Or; var predicate = shouldOr ? PredicateBuilder.False <SearchResultItem>() : PredicateBuilder.True <SearchResultItem>(); if (shouldOr) { var joinedPredicate = First.Or(Second); predicate = predicate.Or(joinedPredicate); WriteObject(predicate, true); } else { var joinedPredicate = First.And(Second); predicate = predicate.And(joinedPredicate); WriteObject(predicate, true); } } if (Criteria != null) { var predicate = ProcessCriteria(Criteria, Operation); if (predicate != null) { WriteObject(predicate, true); } } }