/**
  * @param string $property
  * @param string|array $value
  * @return array
  */
 protected function _prepareFilter($property, $value)
 {
     $filter = [];
     $comparisons = ['eq', 'seq', 'neq', 'gt', 'ge', 'gte', 'lt', 'le', 'lte', 'ct', 'sw', 'nct', 'ew', 'in', 'nin'];
     if (is_array($value) && !Hash::numeric(array_keys($value))) {
         foreach ($value as $comparison => $_value) {
             if (in_array($comparison, ['in', 'nin'])) {
                 // IN or NOT IN
                 $filter = ['property' => $property, 'value' => $this->_checkPropertyArrayValue($property, is_array($_value) ? $_value : [$_value]), 'comparison' => $comparison];
             } elseif (in_array($comparison, $comparisons)) {
                 // OTHER CLAUSE
                 if ($this->getManager()->checkProperty($property, $_value, true)) {
                     $filter = ['property' => $property, 'value' => $_value, 'comparison' => $comparison];
                 }
             } else {
                 if ($this->_client->isDebugMode()) {
                     throw new Exception("La clause \"{$comparison}\" n'existe pas");
                 }
             }
         }
     } elseif (is_array($value)) {
         // IN
         $filter = ['property' => $property, 'value' => $this->_checkPropertyArrayValue($property, $value)];
     } else {
         // EQUAL
         if ($this->getManager()->checkProperty($property, $value, true)) {
             $filter = ['property' => $property, 'value' => $value];
         }
     }
     return $filter;
 }