https://medium.com/@reetesh043/understanding-sealed-classes-in-java-a-comprehensive-guide-8877e77ed39b