def new(cls, value):
    """
        Initializes a new enumerated instance

        Value can either be an integer index or else a recognized label.
        """
    cls.validate(value)
    if isinstance(value, int):
        if value >= 0 and value < len(cls.enumLabels):
            return str.__new__(cls, cls.enumLabels[value])
        else:
            raise ValueError('Invalid index for Enum: %d' % value)
    value = str(value).lower()
    for label in cls.enumLabels:
        if value == label.lower():
            return str.__new__(cls, label)
    raise ValueError('Invalid label for Enum: "%s"' % value)
