private static function inputData(
        MapsProperty $mapped,
        string $type,
        $input,
        string $message = ''
    ): Throwable {
        if (is_scalar($input)) {
            return new self(trim(sprintf(
                'Cannot assign `%s` to property `%s`: ' .
                'it is not clean for conversion to %s. %s',
                $input, $mapped->name(), $type, $message
            )));
        }
        return new self(trim(sprintf(
            'Cannot assign the %s to property `%s`: ' .
            'it is not clean for conversion to %s. %s',
            gettype($input), $mapped->name(), $type, $message
        )));
    }