I’ve found generics useful at handling database-backed objects at the write boundary. Since the layout of those objects is generally pretty important, having middleware-ish things that handle interface/supertypes but return generic concrete types saves on a lot of reflection and casting.