I tried writing a generic “FirstNonNil” function, but got stuck at the "== nil" part.
First I thought to maybe add a type list enumerating all of the nillable types, but I don't have a way to enumerate all of the possible interface types as part of that list, and there is no constraint for “any interface type”.
Then I thought I could use a `var zero T` variable and compare `== zero` instead of `== nil`. But that doesn't work either: I need the `comparable` constraint to get `==`, but not every nillable type is comparable with an arbitrary variable (slices, maps, and functions are not).
So it seems that the best I can do is to write a generic `First` function and make the caller write out `func (x T) bool { return x != nil }` explicitly at every call site. Did I miss a better option?