original_string: public function whereNotInList($field, array $values, array $options = [])
      {
          $options += [
              'types' => [],
              'allowEmpty' => false,
          ];
  
          if ($options['allowEmpty'] && !$values) {
              return $this->where([$field . ' IS NOT' => null]);
          }
  
          return $this->where([$field . ' NOT IN' => $values], $options['types']);
      }
code: public function whereNotInList($field, array $values, array $options = [])
      {
          $options += [
              'types' => [],
              'allowEmpty' => false,
          ];
  
          if ($options['allowEmpty'] && !$values) {
              return $this->where([$field . ' IS NOT' => null]);
          }
  
          return $this->where([$field . ' NOT IN' => $values], $options['types']);
      }
code_tokens: public function whereNotInList ( $ field , array $ values , array $ options = [ ] ) { $ options += [ 'types' => [ ] , 'allowEmpty' => false , ] ; if ( $ options [ 'allowEmpty' ] && ! $ values ) { return $ this -> where ( [ $ field . ' IS NOT' => null ] ) ; } return $ this -> where ( [ $ field . ' NOT IN' => $ values ] , $ options [ 'types' ] ) ; }
docstring: Adds a NOT IN condition or set of conditions to be used in the WHERE clause for this
  query.
  
  This method does allow empty inputs in contrast to where() if you set
  'allowEmpty' to true.
  Be careful about using it without proper sanity checks.
  
  @param string $field Field
  @param array $values Array of values
  @param array $options Options
  @return $this
docstring_tokens: Adds a NOT IN condition or set of conditions to be used in the WHERE clause for this query .