Java 8 in Action: Lambdas, streams, and functional-style programming (2015)