final protected function _setProperty(
        $propName,
        $value)
    {
        // Check if the property exists in class/data and get its definition.
        $propDef = $this->_getPropertyDefinition($propName); // Throws.

        // Map the value to the appropriate type and validate it.
        ValueConverter::convert( // Throws.
            ValueConverter::CONVERT_TO_INTERNAL,
            $value, $propDef->arrayDepth, $propName, $propDef
        );

        // Assign the new value for the property.
        $this->_objectData[$propName] = $value;

        return $this;
    }