public function remove(string $group = "", string $key = ""): ArrayCache
    {
        $isGroupEmpty = ($group === "");
        $isKeyEmpty = ($key === "");

        if ($isGroupEmpty && !$isKeyEmpty) {
            throw new \LogicException(
                "removing a value by key is only possible when a group ".
                "is provided"
            );
        }

        if ($isKeyEmpty) {
            unset($this->values[$group]);
        } else {
            unset($this->values[$group][$key]);
        }

        return $this;
    }