  Line 59) ctClass.isInterface() ==> javassist.CtClass.isInterface()
  Line 59) ctClass.isAnnotation() ==> javassist.CtClass.isAnnotation()
  Line 59) ctClass.isPrimitive() ==> javassist.CtClass.isPrimitive()
  Line 59) ctClass.isEnum() ==> javassist.CtClass.isEnum()
  Line 60) ctClass.toString() ==> javassist.CtClass.toString()
  Line 69) typeSolver.solveType(Object.class.getCanonicalName()) ==> com.github.javaparser.symbolsolver.model.resolution.TypeSolver.solveType(java.lang.String)
  Line 69) Object.class.getCanonicalName() ==> java.lang.Class.getCanonicalName()
  Line 79) javassistTypeDeclarationAdapter.getDeclaredMethods() ==> com.github.javaparser.symbolsolver.javassistmodel.JavassistTypeDeclarationAdapter.getDeclaredMethods()
  Line 84) isAssignableBy(new ReferenceTypeImpl(other, typeSolver)) ==> com.github.javaparser.symbolsolver.javassistmodel.JavassistClassDeclaration.isAssignableBy(com.github.javaparser.symbolsolver.model.typesystem.Type)
  Line 90) getClass() ==> java.lang.Object.getClass()
  Line 90) o.getClass() ==> java.lang.Object.getClass()
  Line 94) ctClass.equals(that.ctClass) ==> java.lang.Object.equals(java.lang.Object)
  Line 101) ctClass.hashCode() ==> java.lang.Object.hashCode()
  Line 106) ctClass.getPackageName() ==> javassist.CtClass.getPackageName()
  Line 111) ctClass.getName().replace('$', '.') ==> java.lang.String.replace(char, char)
  Line 111) ctClass.getName() ==> javassist.CtClass.getName()
  Line 112) getPackageName() ==> com.github.javaparser.symbolsolver.javassistmodel.JavassistClassDeclaration.getPackageName()
  Line 113) className.substring(getPackageName().length() + 1, className.length()) ==> java.lang.String.substring(int, int)
  Line 113) getPackageName().length() ==> java.lang.String.length()
  Line 113) getPackageName() ==> com.github.javaparser.symbolsolver.javassistmodel.JavassistClassDeclaration.getPackageName()
  Line 113) className.length() ==> java.lang.String.length()
  Line 120) ctClass.getName().replace('$', '.') ==> java.lang.String.replace(char, char)
  Line 120) ctClass.getName() ==> javassist.CtClass.getName()
  Line 125) JavassistUtils.getMethodUsage(ctClass, name, argumentsTypes, typeSolver, invokationContext) ==> com.github.javaparser.symbolsolver.javassistmodel.JavassistUtils.getMethodUsage(javassist.CtClass, java.lang.String, java.util.List<com.github.javaparser.symbolsolver.model.typesystem.Type>, com.github.javaparser.symbolsolver.model.resolution.TypeSolver, com.github.javaparser.symbolsolver.core.resolution.Context)
  Line 130) ctClass.getDeclaredFields() ==> javassist.CtClass.getDeclaredFields()
  Line 131) field.getName().equals(name) ==> java.lang.String.equals(java.lang.Object)
  Line 131) field.getName() ==> javassist.CtField.getName()
  Line 132) SymbolReference.solved(new JavassistFieldDeclaration(field, typeSolver)) ==> com.github.javaparser.symbolsolver.model.resolution.SymbolReference.solved(S2)
  Line 137) ctClass.getSuperclass() ==> javassist.CtClass.getSuperclass()
  Line 139) new JavassistClassDeclaration(superClass, typeSolver).solveSymbol(name, typeSolver) ==> com.github.javaparser.symbolsolver.javassistmodel.JavassistClassDeclaration.solveSymbol(java.lang.String, com.github.javaparser.symbolsolver.model.resolution.TypeSolver)
  Line 140) ref.isSolved() ==> com.github.javaparser.symbolsolver.model.resolution.SymbolReference.isSolved()
  Line 149) ctClass.getInterfaces() ==> javassist.CtClass.getInterfaces()
  Line 150) new JavassistInterfaceDeclaration(interfaze, typeSolver).solveSymbol(name, typeSolver) ==> com.github.javaparser.symbolsolver.javassistmodel.JavassistInterfaceDeclaration.solveSymbol(java.lang.String, com.github.javaparser.symbolsolver.model.resolution.TypeSolver)
  Line 151) ref.isSolved() ==> com.github.javaparser.symbolsolver.model.resolution.SymbolReference.isSolved()
  Line 159) SymbolReference.unsolved(ValueDeclaration.class) ==> com.github.javaparser.symbolsolver.model.resolution.SymbolReference.unsolved(java.lang.Class<S2>)
  Line 165) getSuperClass() ==> com.github.javaparser.symbolsolver.javassistmodel.JavassistClassDeclaration.getSuperClass()
  Line 166) ancestors.add(getSuperClass()) ==> java.util.List.add(E)
  Line 166) getSuperClass() ==> com.github.javaparser.symbolsolver.javassistmodel.JavassistClassDeclaration.getSuperClass()
  Line 168) ancestors.addAll(getInterfaces()) ==> java.util.List.addAll(java.util.Collection<? extends E>)
  Line 168) getInterfaces() ==> com.github.javaparser.symbolsolver.javassistmodel.JavassistClassDeclaration.getInterfaces()
  Line 175) Modifier.isStatic(m.getModifiers()) ==> java.lang.reflect.Modifier.isStatic(int)
  Line 175) m.getModifiers() ==> javassist.CtBehavior.getModifiers()
  Line 176) ctClass.getDeclaredMethods() ==> javassist.CtClass.getDeclaredMethods()
  Line 177) method.getMethodInfo().getAttribute(SyntheticAttribute.tag) ==> javassist.bytecode.MethodInfo.getAttribute(java.lang.String)
  Line 177) method.getMethodInfo() ==> javassist.CtBehavior.getMethodInfo()
  Line 178) method.getMethodInfo().getAccessFlags() ==> javassist.bytecode.MethodInfo.getAccessFlags()
  Line 178) method.getMethodInfo() ==> javassist.CtBehavior.getMethodInfo()
  Line 179) method.getName().equals(name) ==> java.lang.String.equals(java.lang.Object)
  Line 179) method.getName() ==> javassist.CtMethod.getName()
  Line 179) staticOnlyCheck.test(method) ==> java.util.function.Predicate.test(T)
  Line 180) candidates.add(new JavassistMethodDeclaration(method, typeSolver)) ==> java.util.List.add(E)
  Line 185) ctClass.getSuperclass() ==> javassist.CtClass.getSuperclass()
  Line 187) new JavassistClassDeclaration(superClass, typeSolver).solveMethod(name, argumentsTypes, staticOnly) ==> com.github.javaparser.symbolsolver.javassistmodel.JavassistClassDeclaration.solveMethod(java.lang.String, java.util.List<com.github.javaparser.symbolsolver.model.typesystem.Type>, boolean)
  Line 188) ref.isSolved() ==> com.github.javaparser.symbolsolver.model.resolution.SymbolReference.isSolved()
  Line 189) candidates.add(ref.getCorrespondingDeclaration()) ==> java.util.List.add(E)
  Line 189) ref.getCorrespondingDeclaration() ==> com.github.javaparser.symbolsolver.model.resolution.SymbolReference.getCorrespondingDeclaration()
  Line 197) ctClass.getInterfaces() ==> javassist.CtClass.getInterfaces()
  Line 198) new JavassistInterfaceDeclaration(interfaze, typeSolver).solveMethod(name, argumentsTypes, staticOnly) ==> com.github.javaparser.symbolsolver.javassistmodel.JavassistInterfaceDeclaration.solveMethod(java.lang.String, java.util.List<com.github.javaparser.symbolsolver.model.typesystem.Type>, boolean)
  Line 199) ref.isSolved() ==> com.github.javaparser.symbolsolver.model.resolution.SymbolReference.isSolved()
  Line 200) candidates.add(ref.getCorrespondingDeclaration()) ==> java.util.List.add(E)
  Line 200) ref.getCorrespondingDeclaration() ==> com.github.javaparser.symbolsolver.model.resolution.SymbolReference.getCorrespondingDeclaration()
  Line 207) MethodResolutionLogic.findMostApplicable(candidates, name, argumentsTypes, typeSolver) ==> com.github.javaparser.symbolsolver.resolution.MethodResolutionLogic.findMostApplicable(java.util.List<com.github.javaparser.symbolsolver.model.declarations.MethodDeclaration>, java.lang.String, java.util.List<com.github.javaparser.symbolsolver.model.typesystem.Type>, com.github.javaparser.symbolsolver.model.resolution.TypeSolver)
  Line 216) type.isNull() ==> com.github.javaparser.symbolsolver.model.typesystem.Type.isNull()
  Line 221) isFunctionalInterface() ==> com.github.javaparser.symbolsolver.logic.AbstractTypeDeclaration.isFunctionalInterface()
  Line 225) type.describe().equals(this.getQualifiedName()) ==> java.lang.String.equals(java.lang.Object)
  Line 225) type.describe() ==> com.github.javaparser.symbolsolver.model.typesystem.Type.describe()
  Line 225) this.getQualifiedName() ==> com.github.javaparser.symbolsolver.javassistmodel.JavassistClassDeclaration.getQualifiedName()
  Line 229) this.ctClass.getSuperclass() ==> javassist.CtClass.getSuperclass()
  Line 230) new JavassistClassDeclaration(this.ctClass.getSuperclass(), typeSolver).isAssignableBy(type) ==> com.github.javaparser.symbolsolver.javassistmodel.JavassistClassDeclaration.isAssignableBy(com.github.javaparser.symbolsolver.model.typesystem.Type)
  Line 230) this.ctClass.getSuperclass() ==> javassist.CtClass.getSuperclass()
  Line 233) ctClass.getInterfaces() ==> javassist.CtClass.getInterfaces()
  Line 234) new JavassistInterfaceDeclaration(interfaze, typeSolver).isAssignableBy(type) ==> com.github.javaparser.symbolsolver.javassistmodel.JavassistInterfaceDeclaration.isAssignableBy(com.github.javaparser.symbolsolver.model.typesystem.Type)
  Line 251) javassistTypeDeclarationAdapter.getDeclaredFields() ==> com.github.javaparser.symbolsolver.javassistmodel.JavassistTypeDeclarationAdapter.getDeclaredFields()
  Line 256) ctClass.getSimpleName().replace('$', '.').split("\\.") ==> java.lang.String.split(java.lang.String)
  Line 256) ctClass.getSimpleName().replace('$', '.') ==> java.lang.String.replace(char, char)
  Line 256) ctClass.getSimpleName() ==> javassist.CtClass.getSimpleName()
  Line 277) ctClass.isInterface() ==> javassist.CtClass.isInterface()
  Line 283) ctClass.getSuperclass() ==> javassist.CtClass.getSuperclass()
  Line 284) typeSolver.solveType(Object.class.getCanonicalName()) ==> com.github.javaparser.symbolsolver.model.resolution.TypeSolver.solveType(java.lang.String)
  Line 284) Object.class.getCanonicalName() ==> java.lang.Class.getCanonicalName()
  Line 286) ctClass.getGenericSignature() ==> javassist.CtClass.getGenericSignature()
  Line 287) ctClass.getSuperclass() ==> javassist.CtClass.getSuperclass()
  Line 290) SignatureAttribute.toClassSignature(ctClass.getGenericSignature()) ==> javassist.bytecode.SignatureAttribute.toClassSignature(java.lang.String)
  Line 290) ctClass.getGenericSignature() ==> javassist.CtClass.getGenericSignature()
  Line 291) JavassistUtils.signatureTypeToType(classSignature.getSuperClass(), typeSolver, this).asReferenceType() ==> com.github.javaparser.symbolsolver.model.typesystem.Type.asReferenceType()
  Line 291) JavassistUtils.signatureTypeToType(classSignature.getSuperClass(), typeSolver, this) ==> com.github.javaparser.symbolsolver.javassistmodel.JavassistUtils.signatureTypeToType(javassist.bytecode.SignatureAttribute.Type, com.github.javaparser.symbolsolver.model.resolution.TypeSolver, com.github.javaparser.symbolsolver.model.declarations.TypeParametrizable)
  Line 291) classSignature.getSuperClass() ==> javassist.bytecode.SignatureAttribute.ClassSignature.getSuperClass()
  Line 302) ctClass.getGenericSignature() ==> javassist.CtClass.getGenericSignature()
  Line 303) Arrays.stream(ctClass.getInterfaces()).map(i -> new JavassistInterfaceDeclaration(i, typeSolver)).map(i -> new ReferenceTypeImpl(i, typeSolver)).collect(Collectors.toList()) ==> java.util.stream.Stream.collect(java.util.stream.Collector<? super T, A, R>)
  Line 303) Arrays.stream(ctClass.getInterfaces()).map(i -> new JavassistInterfaceDeclaration(i, typeSolver)).map(i -> new ReferenceTypeImpl(i, typeSolver)) ==> java.util.stream.Stream.map(java.util.function.Function<? super T, ? extends R>)
  Line 303) Arrays.stream(ctClass.getInterfaces()).map(i -> new JavassistInterfaceDeclaration(i, typeSolver)) ==> java.util.stream.Stream.map(java.util.function.Function<? super T, ? extends R>)
  Line 303) Arrays.stream(ctClass.getInterfaces()) ==> java.util.Arrays.stream(T[])
  Line 303) ctClass.getInterfaces() ==> javassist.CtClass.getInterfaces()
  Line 306) Collectors.toList() ==> java.util.stream.Collectors.toList()
  Line 308) SignatureAttribute.toClassSignature(ctClass.getGenericSignature()) ==> javassist.bytecode.SignatureAttribute.toClassSignature(java.lang.String)
  Line 308) ctClass.getGenericSignature() ==> javassist.CtClass.getGenericSignature()
  Line 309) Arrays.stream(classSignature.getInterfaces()).map(i -> JavassistUtils.signatureTypeToType(i, typeSolver, this).asReferenceType()).collect(Collectors.toList()) ==> java.util.stream.Stream.collect(java.util.stream.Collector<? super T, A, R>)
  Line 309) Arrays.stream(classSignature.getInterfaces()).map(i -> JavassistUtils.signatureTypeToType(i, typeSolver, this).asReferenceType()) ==> java.util.stream.Stream.map(java.util.function.Function<? super T, ? extends R>)
  Line 309) Arrays.stream(classSignature.getInterfaces()) ==> java.util.Arrays.stream(T[])
  Line 309) classSignature.getInterfaces() ==> javassist.bytecode.SignatureAttribute.ClassSignature.getInterfaces()
  Line 310) JavassistUtils.signatureTypeToType(i, typeSolver, this).asReferenceType() ==> com.github.javaparser.symbolsolver.model.typesystem.Type.asReferenceType()
  Line 310) JavassistUtils.signatureTypeToType(i, typeSolver, this) ==> com.github.javaparser.symbolsolver.javassistmodel.JavassistUtils.signatureTypeToType(javassist.bytecode.SignatureAttribute.Type, com.github.javaparser.symbolsolver.model.resolution.TypeSolver, com.github.javaparser.symbolsolver.model.declarations.TypeParametrizable)
  Line 311) Collectors.toList() ==> java.util.stream.Collectors.toList()
  Line 322) ctClass.isInterface() ==> javassist.CtClass.isInterface()
  Line 327) ctClass.getName() ==> javassist.CtClass.getName()
  Line 332) javassistTypeDeclarationAdapter.getTypeParameters() ==> com.github.javaparser.symbolsolver.javassistmodel.JavassistTypeDeclarationAdapter.getTypeParameters()
  Line 337) JavassistFactory.modifiersToAccessLevel(ctClass.getModifiers()) ==> com.github.javaparser.symbolsolver.javassistmodel.JavassistFactory.modifiersToAccessLevel(int)
  Line 337) ctClass.getModifiers() ==> javassist.CtClass.getModifiers()
  Line 342) javassistTypeDeclarationAdapter.getConstructors() ==> com.github.javaparser.symbolsolver.javassistmodel.JavassistTypeDeclarationAdapter.getConstructors()
  Line 347) javassistTypeDeclarationAdapter.containerType() ==> com.github.javaparser.symbolsolver.javassistmodel.JavassistTypeDeclarationAdapter.containerType()
  Line 357) Arrays.stream(ctClass.getDeclaredClasses()).map(itype -> JavassistFactory.toTypeDeclaration(itype, typeSolver)).collect(Collectors.toSet()) ==> java.util.stream.Stream.collect(java.util.stream.Collector<? super T, A, R>)
  Line 357) Arrays.stream(ctClass.getDeclaredClasses()).map(itype -> JavassistFactory.toTypeDeclaration(itype, typeSolver)) ==> java.util.stream.Stream.map(java.util.function.Function<? super T, ? extends R>)
  Line 357) Arrays.stream(ctClass.getDeclaredClasses()) ==> java.util.Arrays.stream(T[])
  Line 357) ctClass.getDeclaredClasses() ==> javassist.CtClass.getDeclaredClasses()
  Line 357) JavassistFactory.toTypeDeclaration(itype, typeSolver) ==> com.github.javaparser.symbolsolver.javassistmodel.JavassistFactory.toTypeDeclaration(javassist.CtClass, com.github.javaparser.symbolsolver.model.resolution.TypeSolver)
  Line 357) Collectors.toSet() ==> java.util.stream.Collectors.toSet()
  Line 370) this.internalTypes().stream().filter(f -> f.getName().endsWith(name)).findFirst() ==> java.util.stream.Stream.findFirst()
  Line 370) this.internalTypes().stream().filter(f -> f.getName().endsWith(name)) ==> java.util.stream.Stream.filter(java.util.function.Predicate<? super T>)
  Line 370) this.internalTypes().stream() ==> java.util.Collection.stream()
  Line 370) this.internalTypes() ==> com.github.javaparser.symbolsolver.javassistmodel.JavassistClassDeclaration.internalTypes()
  Line 370) f.getName().endsWith(name) ==> java.lang.String.endsWith(java.lang.String)
  Line 370) f.getName() ==> com.github.javaparser.symbolsolver.model.declarations.Declaration.getName()
  Line 371) type.orElseThrow(() -> new UnsolvedSymbolException("Internal type not found: " + name)) ==> java.util.Optional.orElseThrow(java.util.function.Supplier<? extends X>)
  Line 381) this.internalTypes().stream().anyMatch(f -> f.getName().endsWith(name)) ==> java.util.stream.Stream.anyMatch(java.util.function.Predicate<? super T>)
  Line 381) this.internalTypes().stream() ==> java.util.Collection.stream()
  Line 381) this.internalTypes() ==> com.github.javaparser.symbolsolver.javassistmodel.JavassistClassDeclaration.internalTypes()
  Line 381) f.getName().endsWith(name) ==> java.lang.String.endsWith(java.lang.String)
  Line 381) f.getName() ==> com.github.javaparser.symbolsolver.model.declarations.Declaration.getName()
