The whole DotLabelable mechanism could do with a rethink - for example if your state enum cases have associated values (which mine do, and is an awesomely powerful feature of this approach) then you can't easily create the DotLabelable array (unless your associated values are something simple like strings).