in core/src/main/java/org/adoptopenjdk/jitwatch/util/ParseUtil.java [828:903]
public static int findBestLineMatchForMemberSignature(IMetaMember member, List<String> lines)
{
int bestScoreLine = 0;
if (lines != null)
{
String memberName = member.getMemberName();
int modifier = member.getModifier();
String returnTypeName = member.getReturnTypeName();
String[] paramTypeNames = member.getParamTypeNames();
int bestScore = 0;
for (int i = 0; i < lines.size(); i++)
{
String line = lines.get(i);
int score = 0;
if (line.contains(memberName))
{
if (DEBUG_LOGGING_SIG_MATCH)
{
logger.debug("Comparing {} with {}", line, member);
}
MemberSignatureParts msp =
MemberSignatureParts.fromBytecodeSignature(member.getMetaClass().getFullyQualifiedName(), line, null);
if (!memberName.equals(msp.getMemberName()))
{
continue;
}
// modifiers matched
if (msp.getModifier() != modifier)
{
continue;
}
List<String> mspParamTypes = msp.getParamTypes();
if (mspParamTypes.size() != paramTypeNames.length)
{
continue;
}
int pos = 0;
for (String memberParamType : paramTypeNames)
{
String mspParamType = msp.getParamTypes().get(pos++);
if (compareTypeEquality(memberParamType, mspParamType))
{
score++;
}
}
// return type matched
if (compareTypeEquality(returnTypeName, msp.getReturnType()))
{
score++;
}
if (score > bestScore)
{
bestScoreLine = i;
bestScore = score;
}
}
}
}
return bestScoreLine;
}