you could probably generate Extension functions on...
# announcements
n
you could probably generate Extension functions on the Classes to convert between them, seems like it would be well suited for annotation processing