https://9dok.net/document/yr3jop88-pattern-matching.html