https://medium.com/@markgrechanik/why-isomorphism-plays-significant-role-in-self-referential-types-5829d6d12433