public function openForm($method, $action, array $options = []): Htmlable
    {
        // Initialize the form state
        if ($this->formState !== null || $this->currentForm !== null)
        {
            throw new RuntimeException('You cannot open another form before closing the previous one');
        }
        $this->formState = app()->make(FormState::class);
        $this->formState->setModel($options['model'] ?? null);
        $this->formState->setHideErrors($options['hideErrors'] ?? false);

        // Create a form element with sane defaults
        $this->currentForm = Form::create();

        // Handle form method consequences (token / hidden method field)
        //
        // If Laravel needs to spoof the form's method, we'll append a hidden
        // field containing the actual method
        //
        // On any other method that get, the form needs a CSRF token
        $method = strtoupper($method);

        if (\in_array($method, ['DELETE', 'PATCH', 'PUT'], true))
        {
            $this->currentForm = $this->currentForm->addChild($this->hidden('_method', $method));
            $method = 'POST';
        }

        if ($method !== 'GET')
        {
            $this->currentForm = $this->currentForm->addChild($this->token());
        }

        if ($options['files'] ?? false)
        {
            $this->currentForm = $this->currentForm->acceptsFiles();
        }

        return $this->currentForm
            ->method($method)
            ->action($action)
            ->addClassIf($options['inline'] ?? false, 'form-inline')
            ->attributesIf($options['attributes'] ?? false, $options['attributes'] ?? [])
            ->open();
    }