/**
  * @param array $entities
  * @param $alias
  * @param string $conditionType
  * @param int $type
  * @param array $mapping
  * @return \Carrooi\Doctrine\Queries\Tree\Condition
  */
 protected function createNestedTreeSearchCondition(array $entities, $alias, $conditionType = SearchType::CONDITION_OR, $type = SearchType::SEARCH_EVERYWHERE, array $mapping = [])
 {
     if ($conditionType === null) {
         $conditionType = SearchType::CONDITION_OR;
     }
     if ($type === null) {
         $type = SearchType::SEARCH_EVERYWHERE;
     }
     $mapping = $this->getMappingConfiguration($mapping);
     $condition = ['condition' => [], 'parameters' => []];
     foreach ($entities as $entity) {
         $entityCondition = $this->createConditionForEntity($type, $entity, $alias, $mapping);
         $condition['condition'][] = $entityCondition['condition'];
         $condition['parameters'] = array_merge($condition['parameters'], $entityCondition['parameters']);
     }
     switch ($conditionType) {
         case SearchType::CONDITION_OR:
             $expr = new Orx();
             break;
         case SearchType::CONDITION_AND:
             $expr = new Andx();
             break;
         default:
             throw new InvalidArgumentException('Unknown condition type ' . $conditionType . '.');
             break;
     }
     $condition['condition'] = $expr->addMultiple($condition['condition']);
     return new Condition($condition['condition'], $condition['parameters']);
 }