protected function doClean($values)
 {
     if (null === $values) {
         $values = array();
     }
     if (!is_array($values)) {
         throw new InvalidArgumentException('You must pass an array parameter to the clean() method');
     }
     $leftValueSet = $this->_isValueSet($values, $this->getOption('left_field'));
     $rightValueSet = $this->_isValueSet($values, $this->getOption('right_field'));
     $skipIfBothEmpty = $this->getOption('skip_if_both_empty');
     $skipIfOneEmpty = $this->getOption('skip_if_one_empty');
     $skip = false;
     if ($skipIfOneEmpty && (!$leftValueSet || !$rightValueSet)) {
         $skip = true;
     } else {
         if ($skipIfBothEmpty && !$leftValueSet && !$rightValueSet) {
             $skip = true;
         }
     }
     return $skip ? $values : parent::doClean($values);
 }