public static function GetNewInstance($sData = null, $sLanguage = null)
    {
        $canBeCached = false;
        $cacheKey = null;
        if (false === is_array($sData)) {
            $canBeCached = true;
            $cacheKey = "$sData|$sLanguage";
            if (isset(self::$cache[$cacheKey])) {
                return clone self::$cache[$cacheKey];
            }
        }
        $oObject = parent:: GetNewInstance($sData, $sLanguage);
        if ($oObject && false !== $oObject->sqlData && isset($oObject->sqlData['class']) && !empty($oObject->sqlData['class'])) {
            $sClassName = $oObject->sqlData['class'];
            $oNewObject = new $sClassName();
            $oNewObject->LoadFromRow($oObject->sqlData);

            if ($canBeCached) {
                self::$cache[$cacheKey] = $oNewObject;
            }

            return $oNewObject;
        }

        return $oObject;
    }