https://medium.com/@arvindcarpenter94/understanding-pass-by-value-vs-pass-by-reference-in-java-a-common-misconception-6196b31b704e