public static function decamelize($value)
    {
        if (isset(self::$decamelized[$value])) {
            return self::$decamelized[$value];
        }

        return self::$decamelized[$value] = strtolower(preg_replace('/(.)(?=[A-Z])/u', '$1_', $value));
    }