Transform your Go structs into tiny state machines