https://medium.com/javarevisited/10-common-mistakes-java-developers-make-and-how-to-avoid-them-5f3e89927de0