Java 8 in Action ― Lambdas, Streams, and Functional-style Programming