https://python.plainenglish.io/mastering-function-interfaces-in-python-unleashing-the-power-of-type-hints-and-protocols-4be19c9283cc