in legacy/java/piranha/src/main/java/com/uber/piranha/XPFlagCleaner.java [382:412]
private boolean methodRecordMatcher(
MethodRecord methodRecord, VisitorState state, MethodInvocationTree mit) {
// Method's receiver must match record's receiver type (if any)
boolean receiverTypeMatches =
!methodRecord.getReceiverType().isPresent()
|| receiverOfInvocation(
(receiver, st) ->
isSameType(methodRecord.getReceiverType().get()).matches(receiver, st))
.matches(mit, state);
if (!receiverTypeMatches) {
return false;
}
// Method must have flag at argument index specified by record (if any)
boolean argumentMatchesFlagName =
!methodRecord.getArgumentIdx().isPresent()
|| argument(
methodRecord.getArgumentIdx().get(),
(arg, st) ->
isArgumentMatchesFlagName(arg, state) || isArgumentMatchesFlagMethod(arg))
.matches(mit, state);
if (!argumentMatchesFlagName) {
return false;
}
// Method's return must match record's return type (if any)
boolean returnTypeMatches =
!methodRecord.getReturnType().isPresent()
|| isSameType(methodRecord.getReturnType().get()).matches(mit, state);
return returnTypeMatches;
}