final private static function getMemberInstance($enumeration, $member)
    {
        if (! isset(self::$instances[$enumeration]) ||
            ! isset(self::$instances[$enumeration][$member])
        ) {
            // Instance of this enumeration member does not exist yet - let's create one
            self::$instances[$enumeration][$member] =
                new $enumeration($member, static::getValue($member));
        }

        return self::$instances[$enumeration][$member];
    }