https://www.scala-lang.org/files/archive/spec/2.11/08-pattern-matching.html
https://docs.scala-lang.org/tour/pattern-matching.html
https://danielwestheide.com/blog/2012/12/12/the-neophytes-guide-to-scala-part-4-pattern-matching-anonymous-functions.html