  Line 42) getDeclaredMethods() ==> com.github.javaparser.symbolsolver.model.declarations.ReferenceTypeDeclaration.getDeclaredMethods()
  Line 43) methods.add(new MethodUsage(methodDeclaration)) ==> java.util.Set.add(E)
  Line 44) methodsSignatures.add(methodDeclaration.getSignature()) ==> java.util.Set.add(E)
  Line 44) methodDeclaration.getSignature() ==> com.github.javaparser.symbolsolver.model.declarations.MethodLikeDeclaration.getSignature()
  Line 47) getAllAncestors() ==> com.github.javaparser.symbolsolver.model.declarations.ReferenceTypeDeclaration.getAllAncestors()
  Line 48) ancestor.getDeclaredMethods() ==> com.github.javaparser.symbolsolver.model.typesystem.ReferenceType.getDeclaredMethods()
  Line 49) mu.getDeclaration().getSignature() ==> com.github.javaparser.symbolsolver.model.declarations.MethodLikeDeclaration.getSignature()
  Line 49) mu.getDeclaration() ==> com.github.javaparser.symbolsolver.model.methods.MethodUsage.getDeclaration()
  Line 50) methodsSignatures.contains(signature) ==> java.util.Set.contains(java.lang.Object)
  Line 51) methodsSignatures.add(signature) ==> java.util.Set.add(E)
  Line 52) methods.add(mu) ==> java.util.Set.add(E)
  Line 62) FunctionalInterfaceLogic.getFunctionalMethod(this).isPresent() ==> java.util.Optional.isPresent()
  Line 62) FunctionalInterfaceLogic.getFunctionalMethod(this) ==> com.github.javaparser.symbolsolver.logic.FunctionalInterfaceLogic.getFunctionalMethod(com.github.javaparser.symbolsolver.model.declarations.ReferenceTypeDeclaration)
