private function resolveInputType()
    {
        $type = null;

        /** Attempt input type resolution without instantiating the property, at first. */
        $metadata = $this->propertyData();
        if ($metadata) {
            if (isset($metadata['hidden']) && $metadata['hidden']) {
                $type = static::HIDDEN_FORM_CONTROL;
            }

            if (!$type && isset($metadata['input_type'])) {
                $type = $metadata['input_type'];
            }
        }

        if ($this->propertyType || $this->property) {
            $property = $this->property();
            $metadata = $property->metadata();

            if ($property->hidden()) {
                $type = static::HIDDEN_FORM_CONTROL;
            }

            if (!$type && isset($metadata['input_type'])) {
                $type = $metadata['input_type'];
            }

            if (!$type && isset($metadata['admin']['input_type'])) {
                $type = $metadata['admin']['input_type'];
            }
        }

        if (!$type) {
            $type = static::DEFAULT_FORM_CONTROL;
        }

        return $type;
    }