public function exclude()
    {
        $removeUs = $this->normaliseFilterArgs(...func_get_args());

        $hitsRequiredToRemove = count($removeUs);
        $matches = [];
        foreach ($removeUs as $column => $excludeValue) {
            foreach ($this->items as $key => $item) {
                if (!is_array($excludeValue) && $this->extractValue($item, $column) == $excludeValue) {
                    $matches[$key] = isset($matches[$key]) ? $matches[$key] + 1 : 1;
                } elseif (is_array($excludeValue) && in_array($this->extractValue($item, $column), $excludeValue)) {
                    $matches[$key] = isset($matches[$key]) ? $matches[$key] + 1 : 1;
                }
            }
        }

        $keysToRemove = array_keys($matches, $hitsRequiredToRemove);

        $itemsToKeep = [];
        foreach ($this->items as $key => $value) {
            if (!in_array($key, $keysToRemove)) {
                $itemsToKeep[] = $value;
            }
        }

        $list = clone $this;
        $list->items = $itemsToKeep;
        return $list;
    }