protected function setGenericObject($fieldName, $fieldData, $objectName = "object", $nullable = true)
    {
        //====================================================================//
        // Load New Object Id
        $newId = null;
        if ($fieldData && method_exists($fieldData, "getId") && $fieldData->getId()) {
            $newId = $fieldData->getId();
        }
        //====================================================================//
        // Read Current Object Id
        $currentId = $this->getObjectId($fieldName, $objectName);
        //====================================================================//
        // No Changes
        if ($newId == $currentId) {
            return $this;
        }
        //====================================================================//
        // Check Pointed Object Exists & Has an Id
        if (null == $newId) {
            if ($nullable) {
                //====================================================================//
                // Set Pointed Object to Null
                $this->{$objectName}->{ "set".$fieldName}(null);
                $this->needUpdate();
            }

            return $this;
        }
        //====================================================================//
        // Update Pointed Object to New Value
        $this->{$objectName}->{ "set".$fieldName}($fieldData);
        $this->needUpdate();

        return $this;
    }