tools for metaprogramming in go, based on reflect