public function addAsset($asset, $state)
    {
        switch ($state) {
            case self::STATE_PUBLIC:
                return $this->addPublicAsset($asset);
            case self::STATE_PROTECTED:
                return $this->addProtectedAsset($asset);
            case self::STATE_DELETED:
                return $this->addDeletedAsset($asset);
            default:
                throw new \InvalidArgumentException("Invalid state {$state}");
        }
    }