https://medium.com/@ruturajjadhav122/mastering-java-essentials-unraveling-the-basics-and-core-concepts-iii-ad4a6c3a2c2b