/**
 * Enable an asset item to be attached to a Document
 *
 * @param   string  $type  The asset type, script or style
 * @param   string  $name  The asset name
 *
 * @return self
 *
 * @throws  UnknownAssetException  When Asset cannot be found
 * @throws  InvalidActionException When the Manager already attached to a Document
 *
 * @since  4.0.0
 */
public function useAsset(string $type, string $name) : WebAssetManagerInterface
{
    if ($this->locked) {
        throw new InvalidActionException('WebAssetManager is locked, you came late');
    }
    // Check whether asset exists
    $asset = $this->registry->get($type, $name);
    if (empty($this->activeAssets[$type])) {
        $this->activeAssets[$type] = [];
    }
    // For "preset" need to check the dependencies first
    if ($type === 'preset') {
        $this->usePresetItems($name);
    }
    // Asset already enabled
    if (!empty($this->activeAssets[$type][$name])) {
        // Set state to active, in case it was ASSET_STATE_DEPENDENCY
        $this->activeAssets[$type][$name] = static::ASSET_STATE_ACTIVE;
        return $this;
    }
    $this->activeAssets[$type][$name] = static::ASSET_STATE_ACTIVE;
    // To re-check dependencies
    if ($asset->getDependencies()) {
        $this->dependenciesIsActual = false;
    }
    return $this;
}