protected function setValue($value)
    {
        $enumKey = array_search((string) $value, static::$enumConstants[get_class($this)]);
        if ($enumKey === false) {
            throw new Exception\InvalidEnumerationValueException(
                sprintf('Invalid value %s for %s', $value, __CLASS__),
                1381615295
            );
        }
        $this->value = static::$enumConstants[get_class($this)][$enumKey];
    }