I think it's easy to cast to a int32, when it's needed. Anyway it's almost always converted to an enum.
Others still need to fix their code.
My highlighter SynFacilSyn, doesn't use enumerated., because it can creates token types, dinamically.
You could use a counter, and each object can have a unique number. Or indexOf, if they are in a list (storing the index on the object will be faster).
The numbers should be generated in a way that will give the same results on each run.
That is the token kind for e.g. "procedure" should always have the same number. (casting object to int64 does not do this).
If not then code like saving and restoring folded nodes (if you close the editor, and the editor stores current folds in a session info), will not work, because it stores the token kind (IIRC)
IIRC, foldconfig (and other conf on this) is also based an fixed (and also on continuous) integers.
FAIK, there is some routines in SynEdit, like Markups, that use GetTokenKind.
There are lots of them. And they all expect int.
And foldconfig uses it as an index.
(All written from memory / but hopefully correct)