public function testNestingGroupsBuildsCorrectCompositeStructure()
 {
     $builder = new PredicateBuilder();
     $builder->startOrGroup();
     $builder->startAndGroup();
     $builder->andWhere('bacon');
     $builder->andWhere('eggs');
     $builder->endGroup();
     $builder->startAndGroup();
     $builder->andWhere('steak');
     $builder->andWhere('fries');
     $builder->endGroup();
     $builder->endGroup();
     $this->assertQuery('((bacon AND eggs) OR (steak AND fries))', $builder);
 }
 private function buildQueryTerm()
 {
     if (!$this->conditionBuilder) {
         return $this->query;
     }
     $compiler = new QueryPredicateVisitor();
     $this->conditionBuilder->endAllGroups();
     $this->conditionBuilder->andWhere($this->query);
     return $compiler->compile($this->conditionBuilder->getPredicate());
 }