  Line 52) ctConstructor.getName() ==> javassist.CtConstructor.getName()
  Line 72) ctConstructor.getDeclaringClass() ==> javassist.CtMember.getDeclaringClass()
  Line 78) ctConstructor.getParameterTypes() ==> javassist.CtBehavior.getParameterTypes()
  Line 88) ctConstructor.getModifiers() ==> javassist.CtBehavior.getModifiers()
  Line 89) ctConstructor.getParameterTypes() ==> javassist.CtBehavior.getParameterTypes()
  Line 91) ctConstructor.getGenericSignature() ==> javassist.CtBehavior.getGenericSignature()
  Line 92) SignatureAttribute.toMethodSignature(ctConstructor.getGenericSignature()) ==> javassist.bytecode.SignatureAttribute.toMethodSignature(java.lang.String)
  Line 92) ctConstructor.getGenericSignature() ==> javassist.CtBehavior.getGenericSignature()
  Line 93) methodSignature.getParameterTypes() ==> javassist.bytecode.SignatureAttribute.MethodSignature.getParameterTypes()
  Line 94) JavassistUtils.signatureTypeToType(signatureType, 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 96) ctConstructor.getParameterTypes() ==> javassist.CtBehavior.getParameterTypes()
  Line 108) ctConstructor.getGenericSignature() ==> javassist.CtBehavior.getGenericSignature()
  Line 109) Collections.emptyList() ==> java.util.Collections.emptyList()
  Line 111) SignatureAttribute.toMethodSignature(ctConstructor.getGenericSignature()) ==> javassist.bytecode.SignatureAttribute.toMethodSignature(java.lang.String)
  Line 111) ctConstructor.getGenericSignature() ==> javassist.CtBehavior.getGenericSignature()
  Line 112) Arrays.stream(methodSignature.getTypeParameters()).map((jasTp) -> new JavassistTypeParameter(jasTp, this, typeSolver)).collect(Collectors.toList()) ==> java.util.stream.Stream.collect(java.util.stream.Collector<? super T, A, R>)
  Line 112) Arrays.stream(methodSignature.getTypeParameters()).map((jasTp) -> new JavassistTypeParameter(jasTp, this, typeSolver)) ==> java.util.stream.Stream.map(java.util.function.Function<? super T, ? extends R>)
  Line 112) Arrays.stream(methodSignature.getTypeParameters()) ==> java.util.Arrays.stream(T[])
  Line 112) methodSignature.getTypeParameters() ==> javassist.bytecode.SignatureAttribute.MethodSignature.getTypeParameters()
  Line 112) Collectors.toList() ==> java.util.stream.Collectors.toList()
  Line 120) JavassistFactory.modifiersToAccessLevel(ctConstructor.getModifiers()) ==> com.github.javaparser.symbolsolver.javassistmodel.JavassistFactory.modifiersToAccessLevel(int)
  Line 120) ctConstructor.getModifiers() ==> javassist.CtBehavior.getModifiers()
