getSuperclass() returns Object if a Class does not declare any concrete extension. This is also done for the class Object. This may result in an endless loop when transitively traversing getSuperclass()