final public static function getValueOf($rawValue)
    {
        $values = static::getValues();
        if (!array_key_exists($rawValue, $values)) {
            throw new OutOfBoundsException(
                sprintf('Enum "%s" has no value with raw value "%s".', get_called_class(), $rawValue)
            );
        }

        return $values[$rawValue];
    }