public static function forName($name)
    {
        $enum = new \ReflectionClass(get_called_class());
        try {
            return $enum->getStaticPropertyValue($name);
        } catch (\ReflectionException $re) {
            throw new \InvalidArgumentException($re->getMessage());
        }
    }