  Line 62) clazz.isInterface() ==> java.lang.Class.isInterface()
  Line 65) clazz.isPrimitive() ==> java.lang.Class.isPrimitive()
  Line 68) clazz.isArray() ==> java.lang.Class.isArray()
  Line 71) clazz.isEnum() ==> java.lang.Class.isEnum()
  Line 85) reflectionClassAdapter.getDeclaredMethods() ==> com.github.javaparser.symbolsolver.reflectionmodel.ReflectionClassAdapter.getDeclaredMethods()
  Line 90) reflectionClassAdapter.getAncestors() ==> com.github.javaparser.symbolsolver.reflectionmodel.ReflectionClassAdapter.getAncestors()
  Line 96) getClass() ==> java.lang.Object.getClass()
  Line 96) o.getClass() ==> java.lang.Object.getClass()
  Line 100) clazz.getCanonicalName().equals(that.clazz.getCanonicalName()) ==> java.lang.String.equals(java.lang.Object)
  Line 100) clazz.getCanonicalName() ==> java.lang.Class.getCanonicalName()
  Line 100) that.clazz.getCanonicalName() ==> java.lang.Class.getCanonicalName()
  Line 107) clazz.hashCode() ==> java.lang.Object.hashCode()
  Line 113) clazz.getPackage() ==> java.lang.Class.getPackage()
  Line 114) clazz.getPackage().getName() ==> java.lang.Package.getName()
  Line 114) clazz.getPackage() ==> java.lang.Class.getPackage()
  Line 121) clazz.getCanonicalName() ==> java.lang.Class.getCanonicalName()
  Line 122) getPackageName() ==> com.github.javaparser.symbolsolver.reflectionmodel.ReflectionClassDeclaration.getPackageName()
  Line 123) canonicalName.substring(getPackageName().length() + 1, canonicalName.length()) ==> java.lang.String.substring(int, int)
  Line 123) getPackageName().length() ==> java.lang.String.length()
  Line 123) getPackageName() ==> com.github.javaparser.symbolsolver.reflectionmodel.ReflectionClassDeclaration.getPackageName()
  Line 123) canonicalName.length() ==> java.lang.String.length()
  Line 130) clazz.getCanonicalName() ==> java.lang.Class.getCanonicalName()
  Line 136) Modifier.isStatic(m.getModifiers()) ==> java.lang.reflect.Modifier.isStatic(int)
  Line 136) m.getModifiers() ==> java.lang.reflect.Method.getModifiers()
  Line 137) Arrays.stream(clazz.getDeclaredMethods()).filter((m) -> m.getName().equals(name)).filter(staticFilter).sorted(new MethodComparator()).collect(Collectors.toList()) ==> java.util.stream.Stream.collect(java.util.stream.Collector<? super T, A, R>)
  Line 137) Arrays.stream(clazz.getDeclaredMethods()).filter((m) -> m.getName().equals(name)).filter(staticFilter).sorted(new MethodComparator()) ==> java.util.stream.Stream.sorted(java.util.Comparator<? super T>)
  Line 137) Arrays.stream(clazz.getDeclaredMethods()).filter((m) -> m.getName().equals(name)).filter(staticFilter) ==> java.util.stream.Stream.filter(java.util.function.Predicate<? super T>)
  Line 137) Arrays.stream(clazz.getDeclaredMethods()).filter((m) -> m.getName().equals(name)) ==> java.util.stream.Stream.filter(java.util.function.Predicate<? super T>)
  Line 137) Arrays.stream(clazz.getDeclaredMethods()) ==> java.util.Arrays.stream(T[])
  Line 137) clazz.getDeclaredMethods() ==> java.lang.Class.getDeclaredMethods()
  Line 137) m.getName().equals(name) ==> java.lang.String.equals(java.lang.Object)
  Line 137) m.getName() ==> java.lang.reflect.Method.getName()
  Line 138) Collectors.toList() ==> java.util.stream.Collectors.toList()
  Line 139) method.isBridge() ==> java.lang.reflect.Method.isBridge()
  Line 139) method.isSynthetic() ==> java.lang.reflect.Method.isSynthetic()
  Line 141) methods.add(methodDeclaration) ==> java.util.List.add(E)
  Line 143) getSuperClass() ==> com.github.javaparser.symbolsolver.reflectionmodel.ReflectionClassDeclaration.getSuperClass()
  Line 144) getSuperClass().getTypeDeclaration() ==> com.github.javaparser.symbolsolver.model.typesystem.ReferenceType.getTypeDeclaration()
  Line 144) getSuperClass() ==> com.github.javaparser.symbolsolver.reflectionmodel.ReflectionClassDeclaration.getSuperClass()
  Line 145) MethodResolutionLogic.solveMethodInType(superClass, name, argumentsTypes, staticOnly, typeSolver) ==> com.github.javaparser.symbolsolver.resolution.MethodResolutionLogic.solveMethodInType(com.github.javaparser.symbolsolver.model.declarations.TypeDeclaration, java.lang.String, java.util.List<com.github.javaparser.symbolsolver.model.typesystem.Type>, boolean, com.github.javaparser.symbolsolver.model.resolution.TypeSolver)
  Line 146) ref.isSolved() ==> com.github.javaparser.symbolsolver.model.resolution.SymbolReference.isSolved()
  Line 147) methods.add(ref.getCorrespondingDeclaration()) ==> java.util.List.add(E)
  Line 147) ref.getCorrespondingDeclaration() ==> com.github.javaparser.symbolsolver.model.resolution.SymbolReference.getCorrespondingDeclaration()
  Line 150) getInterfaces() ==> com.github.javaparser.symbolsolver.reflectionmodel.ReflectionClassDeclaration.getInterfaces()
  Line 151) MethodResolutionLogic.solveMethodInType(interfaceDeclaration.getTypeDeclaration(), name, argumentsTypes, staticOnly, typeSolver) ==> com.github.javaparser.symbolsolver.resolution.MethodResolutionLogic.solveMethodInType(com.github.javaparser.symbolsolver.model.declarations.TypeDeclaration, java.lang.String, java.util.List<com.github.javaparser.symbolsolver.model.typesystem.Type>, boolean, com.github.javaparser.symbolsolver.model.resolution.TypeSolver)
  Line 151) interfaceDeclaration.getTypeDeclaration() ==> com.github.javaparser.symbolsolver.model.typesystem.ReferenceType.getTypeDeclaration()
  Line 152) ref.isSolved() ==> com.github.javaparser.symbolsolver.model.resolution.SymbolReference.isSolved()
  Line 153) methods.add(ref.getCorrespondingDeclaration()) ==> java.util.List.add(E)
  Line 153) ref.getCorrespondingDeclaration() ==> com.github.javaparser.symbolsolver.model.resolution.SymbolReference.getCorrespondingDeclaration()
  Line 156) MethodResolutionLogic.findMostApplicable(methods, 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 162) getId() ==> com.github.javaparser.symbolsolver.model.declarations.TypeDeclaration.getId()
  Line 173) Arrays.stream(clazz.getDeclaredMethods()).filter((m) -> m.getName().equals(name)).sorted(new MethodComparator()).collect(Collectors.toList()) ==> java.util.stream.Stream.collect(java.util.stream.Collector<? super T, A, R>)
  Line 173) Arrays.stream(clazz.getDeclaredMethods()).filter((m) -> m.getName().equals(name)).sorted(new MethodComparator()) ==> java.util.stream.Stream.sorted(java.util.Comparator<? super T>)
  Line 173) Arrays.stream(clazz.getDeclaredMethods()).filter((m) -> m.getName().equals(name)) ==> java.util.stream.Stream.filter(java.util.function.Predicate<? super T>)
  Line 173) Arrays.stream(clazz.getDeclaredMethods()) ==> java.util.Arrays.stream(T[])
  Line 173) clazz.getDeclaredMethods() ==> java.lang.Class.getDeclaredMethods()
  Line 173) m.getName().equals(name) ==> java.lang.String.equals(java.lang.Object)
  Line 173) m.getName() ==> java.lang.reflect.Method.getName()
  Line 173) Collectors.toList() ==> java.util.stream.Collectors.toList()
  Line 174) method.isBridge() ==> java.lang.reflect.Method.isBridge()
  Line 174) method.isSynthetic() ==> java.lang.reflect.Method.isSynthetic()
  Line 177) getTypeParameters().size() ==> java.util.List.size()
  Line 177) getTypeParameters() ==> com.github.javaparser.symbolsolver.reflectionmodel.ReflectionClassDeclaration.getTypeParameters()
  Line 177) typeParameterValues.size() ==> java.util.List.size()
  Line 178) getTypeParameters().get(i) ==> java.util.List.get(int)
  Line 178) getTypeParameters() ==> com.github.javaparser.symbolsolver.reflectionmodel.ReflectionClassDeclaration.getTypeParameters()
  Line 179) typeParameterValues.get(i) ==> java.util.List.get(int)
  Line 180) methodUsage.replaceTypeParameter(tpToReplace, newValue) ==> com.github.javaparser.symbolsolver.model.methods.MethodUsage.replaceTypeParameter(com.github.javaparser.symbolsolver.model.declarations.TypeParameterDeclaration, com.github.javaparser.symbolsolver.model.typesystem.Type)
  Line 182) methods.add(methodUsage) ==> java.util.List.add(E)
  Line 184) getSuperClass() ==> com.github.javaparser.symbolsolver.reflectionmodel.ReflectionClassDeclaration.getSuperClass()
  Line 185) getSuperClass().getTypeDeclaration() ==> com.github.javaparser.symbolsolver.model.typesystem.ReferenceType.getTypeDeclaration()
  Line 185) getSuperClass() ==> com.github.javaparser.symbolsolver.reflectionmodel.ReflectionClassDeclaration.getSuperClass()
  Line 186) ContextHelper.solveMethodAsUsage(superClass, name, argumentsTypes, typeSolver, invokationContext, typeParameterValues) ==> com.github.javaparser.symbolsolver.javaparsermodel.contexts.ContextHelper.solveMethodAsUsage(com.github.javaparser.symbolsolver.model.declarations.TypeDeclaration, 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, java.util.List<com.github.javaparser.symbolsolver.model.typesystem.Type>)
  Line 187) ref.isPresent() ==> java.util.Optional.isPresent()
  Line 188) methods.add(ref.get()) ==> java.util.List.add(E)
  Line 188) ref.get() ==> java.util.Optional.get()
  Line 191) getInterfaces() ==> com.github.javaparser.symbolsolver.reflectionmodel.ReflectionClassDeclaration.getInterfaces()
  Line 192) ContextHelper.solveMethodAsUsage(interfaceDeclaration.getTypeDeclaration(), name, argumentsTypes, typeSolver, invokationContext, typeParameterValues) ==> com.github.javaparser.symbolsolver.javaparsermodel.contexts.ContextHelper.solveMethodAsUsage(com.github.javaparser.symbolsolver.model.declarations.TypeDeclaration, 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, java.util.List<com.github.javaparser.symbolsolver.model.typesystem.Type>)
  Line 192) interfaceDeclaration.getTypeDeclaration() ==> com.github.javaparser.symbolsolver.model.typesystem.ReferenceType.getTypeDeclaration()
  Line 193) ref.isPresent() ==> java.util.Optional.isPresent()
  Line 194) methods.add(ref.get()) ==> java.util.List.add(E)
  Line 194) ref.get() ==> java.util.Optional.get()
  Line 197) MethodResolutionLogic.findMostApplicableUsage(methods, name, argumentsTypes, typeSolver) ==> com.github.javaparser.symbolsolver.resolution.MethodResolutionLogic.findMostApplicableUsage(java.util.List<com.github.javaparser.symbolsolver.model.methods.MethodUsage>, java.lang.String, java.util.List<com.github.javaparser.symbolsolver.model.typesystem.Type>, com.github.javaparser.symbolsolver.model.resolution.TypeSolver)
  Line 204) isFunctionalInterface() ==> com.github.javaparser.symbolsolver.logic.AbstractTypeDeclaration.isFunctionalInterface()
  Line 206) other.getQualifiedName().equals(getQualifiedName()) ==> java.lang.String.equals(java.lang.Object)
  Line 206) other.getQualifiedName() ==> com.github.javaparser.symbolsolver.model.declarations.TypeDeclaration.getQualifiedName()
  Line 206) getQualifiedName() ==> com.github.javaparser.symbolsolver.reflectionmodel.ReflectionClassDeclaration.getQualifiedName()
  Line 209) this.clazz.getSuperclass() ==> java.lang.Class.getSuperclass()
  Line 210) new ReflectionClassDeclaration(clazz.getSuperclass(), typeSolver).canBeAssignedTo(other) ==> com.github.javaparser.symbolsolver.reflectionmodel.ReflectionClassDeclaration.canBeAssignedTo(com.github.javaparser.symbolsolver.model.declarations.ReferenceTypeDeclaration)
  Line 210) clazz.getSuperclass() ==> java.lang.Class.getSuperclass()
  Line 213) clazz.getInterfaces() ==> java.lang.Class.getInterfaces()
  Line 214) new ReflectionInterfaceDeclaration(interfaze, typeSolver).canBeAssignedTo(other) ==> com.github.javaparser.symbolsolver.reflectionmodel.ReflectionInterfaceDeclaration.canBeAssignedTo(com.github.javaparser.symbolsolver.model.declarations.ReferenceTypeDeclaration)
  Line 224) reflectionClassAdapter.isAssignableBy(type) ==> com.github.javaparser.symbolsolver.reflectionmodel.ReflectionClassAdapter.isAssignableBy(com.github.javaparser.symbolsolver.model.typesystem.Type)
  Line 234) reflectionClassAdapter.getField(name) ==> com.github.javaparser.symbolsolver.reflectionmodel.ReflectionClassAdapter.getField(java.lang.String)
  Line 239) reflectionClassAdapter.getAllFields() ==> com.github.javaparser.symbolsolver.reflectionmodel.ReflectionClassAdapter.getAllFields()
  Line 244) clazz.getFields() ==> java.lang.Class.getFields()
  Line 245) field.getName().equals(name) ==> java.lang.String.equals(java.lang.Object)
  Line 245) field.getName() ==> java.lang.reflect.Field.getName()
  Line 246) SymbolReference.solved(new ReflectionFieldDeclaration(field, typeSolver)) ==> com.github.javaparser.symbolsolver.model.resolution.SymbolReference.solved(S2)
  Line 249) SymbolReference.unsolved(ValueDeclaration.class) ==> com.github.javaparser.symbolsolver.model.resolution.SymbolReference.unsolved(java.lang.Class<S2>)
  Line 254) reflectionClassAdapter.hasDirectlyAnnotation(canonicalName) ==> com.github.javaparser.symbolsolver.reflectionmodel.ReflectionClassAdapter.hasDirectlyAnnotation(java.lang.String)
  Line 259) reflectionClassAdapter.hasField(name) ==> com.github.javaparser.symbolsolver.reflectionmodel.ReflectionClassAdapter.hasField(java.lang.String)
  Line 264) isAssignableBy(new ReferenceTypeImpl(other, typeSolver)) ==> com.github.javaparser.symbolsolver.reflectionmodel.ReflectionClassDeclaration.isAssignableBy(com.github.javaparser.symbolsolver.model.typesystem.Type)
  Line 269) clazz.getSimpleName() ==> java.lang.Class.getSimpleName()
  Line 289) clazz.isInterface() ==> java.lang.Class.isInterface()
  Line 294) reflectionClassAdapter.getSuperClass() ==> com.github.javaparser.symbolsolver.reflectionmodel.ReflectionClassAdapter.getSuperClass()
  Line 299) reflectionClassAdapter.getInterfaces() ==> com.github.javaparser.symbolsolver.reflectionmodel.ReflectionClassAdapter.getInterfaces()
  Line 304) clazz.isInterface() ==> java.lang.Class.isInterface()
  Line 309) reflectionClassAdapter.getTypeParameters() ==> com.github.javaparser.symbolsolver.reflectionmodel.ReflectionClassAdapter.getTypeParameters()
  Line 314) ReflectionFactory.modifiersToAccessLevel(this.clazz.getModifiers()) ==> com.github.javaparser.symbolsolver.reflectionmodel.ReflectionFactory.modifiersToAccessLevel(int)
  Line 314) this.clazz.getModifiers() ==> java.lang.Class.getModifiers()
  Line 319) reflectionClassAdapter.getConstructors() ==> com.github.javaparser.symbolsolver.reflectionmodel.ReflectionClassAdapter.getConstructors()
  Line 324) reflectionClassAdapter.containerType() ==> com.github.javaparser.symbolsolver.reflectionmodel.ReflectionClassAdapter.containerType()
  Line 329) Arrays.stream(this.clazz.getDeclaredClasses()).map(ic -> ReflectionFactory.typeDeclarationFor(ic, typeSolver)).collect(Collectors.toSet()) ==> java.util.stream.Stream.collect(java.util.stream.Collector<? super T, A, R>)
  Line 329) Arrays.stream(this.clazz.getDeclaredClasses()).map(ic -> ReflectionFactory.typeDeclarationFor(ic, typeSolver)) ==> java.util.stream.Stream.map(java.util.function.Function<? super T, ? extends R>)
  Line 329) Arrays.stream(this.clazz.getDeclaredClasses()) ==> java.util.Arrays.stream(T[])
  Line 329) this.clazz.getDeclaredClasses() ==> java.lang.Class.getDeclaredClasses()
  Line 330) ReflectionFactory.typeDeclarationFor(ic, typeSolver) ==> com.github.javaparser.symbolsolver.reflectionmodel.ReflectionFactory.typeDeclarationFor(java.lang.Class<?>, com.github.javaparser.symbolsolver.model.resolution.TypeSolver)
  Line 331) Collectors.toSet() ==> java.util.stream.Collectors.toSet()
  Line 340) typeSolver.solveType(Object.class.getCanonicalName()) ==> com.github.javaparser.symbolsolver.model.resolution.TypeSolver.solveType(java.lang.String)
  Line 340) Object.class.getCanonicalName() ==> java.lang.Class.getCanonicalName()
