public static function getArrayItemByPointSeparatedKey(array & $aData, $sKey)
    {
        if (strpos($sKey, '.') !== false) {
            preg_match('/([a-zA-Z0-9_\-]+)\.([a-zA-Z0-9_\-\.]+)/', $sKey, $aKey);
            if (!isset($aData[$aKey[1]])) {
                throw new Exception('Undefined index: '.$aKey[1]);
            }
            if (!is_array($aData[$aKey[1]])) {
                throw new Exception("The element indexed {$aKey[1]} isn't an array.");
            }
            return self::getArrayItemByPointSeparatedKey(
                $aData[$aKey[1]],
                $aKey[2]
            );
        } elseif (isset($aData[$sKey])) {
            return $aData[$sKey];
        } else {
            throw new Exception('Undefined index: '.$sKey);
        }
    }