References
Reference NO 1
http://stackoverflow.com/questions/15186267/type-safety-through-inheritance
Reference NO 2
http://stackoverflow.com/questions/2575438/use-inheritance-to-create-a-custom-type-safe-null-safe-collection
Reference NO 3
http://stackoverflow.com/questions/9806785/best-practice-for-enforcing-type-safety-in-polymorphic-inheritance-hierarchies
Reference NO 4
http://se.ethz.ch/~meyer/ongoing/covariance/recast.pdf
Reference NO 5
https://www4.in.tum.de/~nipkow/pubs/oopsla06.pdf
Reference NO 6
http://www.gotw.ca/gotw/060.htm
Reference NO 7
http://www.ics.uci.edu/~lopes/teaching/inf212W12/readings/wasserrab.pdf
Reference NO 8
http://docs.doctrine-project.org/en/2.0.x/reference/inheritance-mapping.html