.add().add() and having add's signature be add<T>(arg: T): Thing<ThingGeneric | T>, but I would like to be able to perform some kind of operation where if add is called with some parameter T, then thing always has been of a type such that it's first generic includes T.