private function createInputProperty()
    {
        $prop  = $this->property();
        $type  = $this->inputType();
        $input = $this->propertyInputFactory()->create($type);

        if ($this->formGroup() && ($input instanceof FormInputInterface)) {
            $input->setFormGroup($this->formGroup());
        }

        if ($input instanceof ViewableInterface) {
            $input->setViewController($this->viewController());
        }

        $metadata = $prop->metadata();
        $data = $prop->data();

        if (isset($metadata['admin'])) {
            $data = array_replace_recursive($metadata['admin'], $data);
        }

        $input->setInputType($type);
        $input->setProperty($prop);
        $input->setPropertyVal($this->propertyVal());
        $input->setData($data);

        return $input;
    }