https://betterprogramming.pub/what-isomorphic-types-are-and-why-you-might-need-them-developing-with-swift-d36df47f051d