  Line 39) getQualifiedName() ==> com.github.javaparser.symbolsolver.model.declarations.TypeDeclaration.getQualifiedName()
  Line 45) getSuperClass() ==> com.github.javaparser.symbolsolver.model.declarations.ClassDeclaration.getSuperClass()
  Line 47) superclasses.add(superClass) ==> java.util.List.add(E)
  Line 48) superclasses.addAll(superClass.getAllClassesAncestors()) ==> java.util.List.addAll(java.util.Collection<? extends E>)
  Line 48) superClass.getAllClassesAncestors() ==> com.github.javaparser.symbolsolver.model.typesystem.ReferenceType.getAllClassesAncestors()
  Line 51) superclasses.removeIf(s -> s.getQualifiedName().equals(Object.class.getCanonicalName())) ==> java.util.Collection.removeIf(java.util.function.Predicate<? super E>)
  Line 51) s.getQualifiedName().equals(Object.class.getCanonicalName()) ==> java.lang.String.equals(java.lang.Object)
  Line 51) s.getQualifiedName() ==> com.github.javaparser.symbolsolver.model.typesystem.ReferenceType.getQualifiedName()
  Line 51) Object.class.getCanonicalName() ==> java.lang.Class.getCanonicalName()
  Line 52) superclasses.add(object()) ==> java.util.List.add(E)
  Line 52) object() ==> com.github.javaparser.symbolsolver.logic.AbstractClassDeclaration.object()
  Line 60) getInterfaces() ==> com.github.javaparser.symbolsolver.model.declarations.ClassDeclaration.getInterfaces()
  Line 61) interfaces.add(interfaceDeclaration) ==> java.util.List.add(E)
  Line 62) interfaces.addAll(interfaceDeclaration.getAllInterfacesAncestors()) ==> java.util.List.addAll(java.util.Collection<? extends E>)
  Line 62) interfaceDeclaration.getAllInterfacesAncestors() ==> com.github.javaparser.symbolsolver.model.typesystem.ReferenceType.getAllInterfacesAncestors()
  Line 64) this.getSuperClass() ==> com.github.javaparser.symbolsolver.model.declarations.ClassDeclaration.getSuperClass()
  Line 66) interfaces.addAll(superClass.getAllInterfacesAncestors()) ==> java.util.List.addAll(java.util.Collection<? extends E>)
  Line 66) superClass.getAllInterfacesAncestors() ==> com.github.javaparser.symbolsolver.model.typesystem.ReferenceType.getAllInterfacesAncestors()
