Built-in StrEnum

Yes, that’s one way of doing it. IMO it’s not ideal because it requires the cast to FileType everywhere that the enum is passed into a function, potentially adds to or changes the error types thrown by the function, and changes the types of possibly public constants.

The upgrade path isn’t impossible today, it would just be smoother and more consistent with a built-in StrEnum (in my opinion).