A statically typed binary tree in Go without casts or reflection