public function createCommand($name, $type, $extension = null, $vendor = null)
    {
        // Prepare the component name
        $name = GeneralUtility::trimExplode('/', $name, true);
        if (!count($name)) {
            throw new CommandException('Empty / invalid component name', 1507996606);
        }

        // Prepare the component type
        $type = strtolower($type);
        if (!in_array($type, ComponentInterface::TYPES)) {
            throw new CommandException(sprintf('Invalid component type "%s"', $type), 1507996917);
        }

        // Prepare the provider extension name
        $extension = trim($extension ?: $GLOBALS['TYPO3_CONF_VARS']['EXT']['extParams']['tw_componentlibrary']['defaultextension']);
        if (!strlen($extension) || !ExtensionManagementUtility::isLoaded($extension)) {
            throw new CommandException(sprintf('Invalid provider extension "%s"', $extension), 1507997408);
        }

        // Prepare the provider extension vendor name
        $vendor = trim($vendor ?: $GLOBALS['TYPO3_CONF_VARS']['EXT']['extParams']['tw_componentlibrary']['defaultvendor']);
        if (!strlen($vendor)) {
            throw new CommandException(sprintf('Invalid provider extension vendor name "%s"', $vendor), 1507998569);
        }

        Kickstarter::create($name, $type, $extension, $vendor);
    }