https://medium.com/@AlexanderObregon/what-happens-when-the-java-compiler-handles-lambdas-and-functional-interfaces-51ca1d36e98b