private boolean methodRecordMatcher()

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;
  }