You're a bit (~10 years) late to the game of complaining about having to use `interface{}` as a substitute for generics in Go (although it has worked pretty well in most cases). Go 1.18 will have "real" generics, so stuff like this can be expressed more elegantly...