private OrPredicateSegment MergeOrPredicateSegment()
        {
            OrPredicateSegment result = new OrPredicateSegment();

            result.GetAndPredicates().AddAll(GetAndPredicates(_left));
            result.GetAndPredicates().AddAll(GetAndPredicates(_right));
            return(result);
        }
 private void AddAndPredicates(OrPredicateSegment orPredicateSegment, ICollection <AndPredicateSegment> leftPredicates, ICollection <AndPredicateSegment> rightPredicates)
 {
     if (0 == leftPredicates.Count && 0 == rightPredicates.Count)
     {
         return;
     }
     if (0 == leftPredicates.Count)
     {
         orPredicateSegment.GetAndPredicates().AddAll(rightPredicates);
     }
     if (0 == rightPredicates.Count)
     {
         orPredicateSegment.GetAndPredicates().AddAll(leftPredicates);
     }
     foreach (var leftPredicate in leftPredicates)
     {
         foreach (var rightPredicate in rightPredicates)
         {
             orPredicateSegment.GetAndPredicates().Add(CreateAndPredicate(leftPredicate, rightPredicate));
         }
     }
 }