I was kind of showing off there, but also - mutually recursive generics FTW