public function setShortName($shortName)
    {
        if (null !== $shortName) {
            Assert::string($shortName, 'The short command name must be a string or null. Got: %s');
            Assert::notEmpty($shortName, 'The short command name must not be empty.');
            Assert::regex($shortName, '~^[a-zA-Z]$~', 'The short command name must contain a single letter. Got: %s');
        }

        // Reset short name preference when unsetting the short name
        if (null === $shortName && false === $this->longNamePreferred) {
            $this->longNamePreferred = null;
        }

        $this->shortName = $shortName;

        return $this;
    }