public function setEmptyChoice($choice)
    {
        if (is_string($choice) || ($choice instanceof Translation)) {
            $choice = [
                'label' => $choice
            ];
        }

        if (is_array($choice)) {
            $choice = array_replace_recursive(
                $this->defaultEmptyChoice(),
                $choice
            );
        } else {
            throw new InvalidArgumentException(sprintf(
                'Empty choice must be an array, received %s',
                (is_object($choice) ? get_class($choice) : gettype($choice))
            ));
        }

        if (!$choice['label'] instanceof Translation) {
            $choice['label'] = $this->translator()->translation($choice['label']);
        }

        $this->emptyChoice = $choice;

        return $this;
    }