public function get(string $name) : ICommand
    {
        if (!$this->has($name)) {
            throw new InvalidArgumentException("No command with name \"$name\" exists");
        }

        return $this->commands[$name];
    }