Make EnumIterator 'immutable'. This also turns reset() into a method which will return a new EnumIterator instance & allows skipping the reflection aspect if you already have the enum array.